Dual Boot Mint/Ubuntu avec Fedora en UEFI

Dans la série des dual-boot en UEFI, il est temps de s’intéresser à la cohabitation entre deux versions de Linux différentes. Le test est fait avec une Mint 17 installée en UEFI, à laquelle on ajoute une Fedora 20. Mais l’expérience serait exactement la même avec des versions plus récentes.

L’installation se fait selon le protocole proposé ici :

http://ikewdu.free.fr/dual-boot-windows-8-fedora-20-en-uefi/

Comme pour le dual-boot W8/Fedora du lien précédent, je choisis le partitionnement manuel pour utiliser la même partition efi que pour ma Mint en ajoutant simplement le point de montage /boot/efi à la partition efi pour que mes fichiers grub s’installent au bon endroit. Le résultat sera donc le suivant :

situation

En rouge, la partition efi, en vert, ma Mint, et en orange, ma Fedora.

I)  Tests de démarrage après installation

1) Test de démarrage sur Fedora.

L’installation s’est bien déroulée, et on obtient bien un grub au démarrage, d’un aspect différent de mon grub initial (Fedora a pris la main). Une première exécution confirme que ma Fedora se lance tout à fait proprement.

boot-grub-fedora

Mais, après redémarrage, mauvaise surprise.  Les liens vers Mint aboutissent à des messages d’erreur systématiques :

erreur-grub-fedora

On va donc essayer de redémarrer notre Linux Mint en changeant l’ordre de démarrage (soit directement dans le bios, soit par la commande efibootmgr tapée depuis Fedora). Bien évidemment, il n’est pas installé. On va donc chercher le paquet et l’ajouter.

[essai@localhost ~]$ yum search efibootmgr
Modules complémentaires chargés : langpacks, refresh-packagekit
=========================== N/S matched: efibootmgr ============================
efibootmgr.x86_64 : EFI Boot Manager
Correspondance avec le nom ou le résumé uniquement, utilisez « search all » pour une recherche complète.

[essai@localhost ~]$ yum install efibootmgr.x86_64
Modules complémentaires chargés : langpacks, refresh-packagekit
Vous devez être super-utilisateur pour exécuter cette commande.

[essai@localhost ~]$ su
Mot de passe :
[root@localhost essai]# yum install efibootmgr.x86_64
Modules complémentaires chargés : langpacks, refresh-packagekit
Résolution des dépendances
--> Lancement de la transaction de test
---> Le paquet efibootmgr.x86_64 0:0.5.4-16.fc20 sera mis à jour
---> Le paquet efibootmgr.x86_64 0:0.11.0-1.fc20 sera utilisé
--> Traitement de la dépendance : efivar-libs >= 0.8 pour le paquet : efibootmgr-0.11.0-1.fc20.x86_64

(on saute quelques lignes)
Mis à jour : efibootmgr.x86_64 0:0.11.0-1.fc20
Terminé !

Après tout ce processus, on aboutit enfin à notre commande :

[root@localhost essai]# efibootmgr -v
BootCurrent: 0005
BootOrder: 0005,0004,0000,0001,0002,0003
Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)    ACPI(a0341d0,0)PCI(15,0)PCI(0,0)SCSI(0,0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)    ACPI(a0341d0,0)PCI(11,0)PCI(4,0)SATA(1,0,0)
Boot0002* EFI Network    ACPI(a0341d0,0)PCI(16,0)PCI(0,0)MAC(MAC(000c29b06483,0)
Boot0003* EFI Internal Shell (Unsupported option)    MM(b,3efcb000,3f355fff)FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)
Boot0004* ubuntu    HD(1,800,2f000,08bc25da-d0fc-42f1-8df9-a694e6570d71)File(\EFI\ubuntu\shimx64.efi)
Boot0005* Fedora    HD(1,800,2f000,08bc25da-d0fc-42f1-8df9-a694e6570d71)File(\EFI\fedora\shim.efi)

On voit que c’est Fedora qui a la main sur le démarrage. On va modifier l’ordre pour repasser le grub de Mint en tête de cette manière :

[root@localhost essai]# efibootmgr -o 0004,0005,0000,0001,0002,0003
BootCurrent: 0005
BootOrder: 0004,0005,0000,0001,0002,0003
Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)
Boot0002* EFI Network
Boot0003* EFI Internal Shell (Unsupported option)
Boot0004* ubuntu
Boot0005* Fedora
[root@localhost essai]# ^C
[root@localhost essai]#

C’est bon, on devrait démarrer sur notre Mint. C’est bien le cas.

2) Test de démarrage sur Ubuntu/Mint

On reconnaît effectivement notre grub Ubuntu, mais on n’a pas d’option pour faire démarrer notre nouvelle distribution Fedora. C’est gênant :

boot-grub-Mint

Le plus simple va être de démarrer notre distribution Mint pour régler ça. On va essayer d’ajouter l’entrée Fedora grâce à la commande sudo update-grub. On verra bien si l’entrée s’ajoute.

essai@essai-virtual-machine ~ $ sudo update-grub
[sudo] password for essai: 
Création du fichier de configuration GRUB…
Found linux image: /boot/vmlinuz-3.13.0-96-generic
Found initrd image: /boot/initrd.img-3.13.0-96-generic
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
  No volume groups found
Fedora release 20 (Heisenbug) trouvé sur /dev/sda5
fait
essai@essai-virtual-machine ~ $

Tout va bien. On va en profiter pour lancer un petit boot-info pour regarder comment se présentent les choses.

boot-info-depart

On constate deux ou trois choses notables :

On a bien sur sda1 (la partition efi) des fichiers Ubuntu et des fichiers Fedora.

sda1: Boot sector type:  Windows 8/2012: FAT32

Boot files:        /EFI/BOOT/fallback.efi /EFI/fedora/MokManager.efi
/EFI/fedora/gcdx64.efi /EFI/fedora/grubx64.efi
/EFI/fedora/shim-fedora.efi /EFI/fedora/shim.efi
/EFI/ubuntu/MokManager.efi /EFI/ubuntu/grubx64.efi
/EFI/ubuntu/shimx64.efi

On trouve bien un fichier grub.cfg, mais aucun sur sda5 (où est-il ?). Donc, boot-info ne peut lire qu’un des fichiers de démarrage, celui de sda3.

sda3: File system:       ext4
Operating System:  Ubuntu 14.04 LTS
Boot files:        /boot/grub/grub.cfg /etc/fstab
/boot/grub/i386-pc/core.img

sda5: File system:       ext4
Operating System:  Fedora 20 (Heisenbug)
Boot files:        /etc/fstab

Notre commande efibootmgr a bien été enregistrée.

=================== efibootmgr -v
BootCurrent: 0004
BootOrder: 0004,0005,0000,0001,0002,0003
Boot0004* ubuntu    HD(1,800,2f000,08bc25da-d0fc-42f1-8df9-a694e6570d71)File(EFIubuntushimx64.efi)
Boot0005* Fedora    HD(1,800,2f000,08bc25da-d0fc-42f1-8df9-a694e6570d71)File(EFIfedorashim.efi)

Nous allons donc redémarrer pour voir si notre Fedora se lance correctement.

boot-grub-Min&fedorat

Visiblement, c’est bon…  Essayons.

fedora-codes

Fedora se lance. Mais le joli démarrage graphique de la distribution Fedora est passé à la trappe, pour laisser place à des codes un peu indigestes.

==> Bilan : les deux démarrages sont à réparer.

3) Réparation du démarrage depuis Mint (remise des options vidéo de Fedora).

Puisqu’on y est, autant commencer par ça On redémarre sur notre Mint et on va se mettre en quête du fameux fichier grub.cfg de Mint. En fouillant un peu, on le trouve dans /boot/efi/efi/fedora

grub.cfgfedora

Nous allons donc l’éditer pour observer son contenu:

grub.cfg-fedora

On constate que la section 10_Linux contient tout le démarrage en mode graphique de Fedora. Comparons avec notre section 30_os-prober présente dans le boot-info (en vert, la vidéo, en gris la condition inutile, en bleu le démarrage):

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Fedora release 20 (Heisenbug) (sur /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-8b848441-3bbd-401e-8151-d2b779b294bf' {
insmod part_gpt
insmod ext2
set root='hd0,gpt5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  8b848441-3bbd-401e-8151-d2b779b294bf
else
search --no-floppy --fs-uuid --set=root 8b848441-3bbd-401e-8151-d2b779b294bf
fi
linux /boot/vmlinuz-0-rescue-1312b1fb554f49c0b43bfa6cccf7a543 root=/dev/sda5
initrd /boot/initramfs-0-rescue-1312b1fb554f49c0b43bfa6cccf7a543.img
}
submenu 'Options avancées pour Fedora release 20 (Heisenbug) (sur /dev/sda5)' $menuentry_id_option 'osprober-gnulinux-advanced-8b848441-3bbd-401e-8151-d2b779b294bf' {
menuentry 'Fedora release 20 (Heisenbug) (sur /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-0-rescue-1312b1fb554f49c0b43bfa6cccf7a543--8b848441-3bbd-401e-8151-d2b779b294bf' {
insmod part_gpt
insmod ext2
set root='hd0,gpt5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  8b848441-3bbd-401e-8151-d2b779b294bf
else
search --no-floppy --fs-uuid --set=root 8b848441-3bbd-401e-8151-d2b779b294bf
fi
linux /boot/vmlinuz-0-rescue-1312b1fb554f49c0b43bfa6cccf7a543 root=/dev/sda5
initrd /boot/initramfs-0-rescue-1312b1fb554f49c0b43bfa6cccf7a543.img
}
menuentry 'Fedora release 20 (Heisenbug) (sur /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.11.10-301.fc20.x86_64--8b848441-3bbd-401e-8151-d2b779b294bf' {
insmod part_gpt
insmod ext2
set root='hd0,gpt5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  8b848441-3bbd-401e-8151-d2b779b294bf
else
search --no-floppy --fs-uuid --set=root 8b848441-3bbd-401e-8151-d2b779b294bf
fi
linux /boot/vmlinuz-3.11.10-301.fc20.x86_64 root=/dev/sda5
initrd /boot/initramfs-3.11.10-301.fc20.x86_64.img
}
}

set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
### END /etc/grub.d/30_os-prober ###

Les instructions vidéos sont différentes, de même que les commandes linux et initrd. On va donc éditer le fichier 40_custom pour le modifier et y copier les instructions de la zone 30_os-prober du fichier grub.cfg de Fedora, en modifiant quelques lignes.

sudo gedit /etc/grub.d/40_custom

On y copie les lignes qui nous intéressent… J’en profite pour supprimer les « if…fi » et l’extension efi sur linuxefi et initrdefi (on aurait pu les laisser, grub de Mint accepte ces commandes). Le résultat avec les nouvelles commandes vidéo et les conditions en moins.

Le résultat est le suivant : 40_custom

On continue en désactivant l’exécution de 30_os-prober et on finalise par un sudo update-grub.

essai@essai-virtual-machine ~ $ sudo chmod -x /etc/grub.d/30_os-prober
essai@essai-virtual-machine ~ $ sudo update-grub
Création du fichier de configuration GRUB…
Found linux image: /boot/vmlinuz-3.13.0-96-generic
Found initrd image: /boot/initrd.img-3.13.0-96-generic
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
fait
essai@essai-virtual-machine ~ $

Il ne reste qu’à essayer.

Fedora graphique

Fedora nous propose bien son démarrage graphique. Notre démarrage depuis Mint est opérationnel. On va maintenant réparer notre démarrage depuis Fedora.

4. Réparation du démarrage de Fedora (suppression de l’erreur vers Mint).

On aurait pu s’arrêter là, mais l’idée de savoir que Fedora est incapable de lancer Mint est un peu gênant. Pour simplifier les choses, on va se connecter en root (administrateur) plutôt qu’en simple utilisateur (Fedora offre cette option directement au moment de la connexion du Login / MP).

On va faire la même manipulation : aller chercher dans le fichier grub.cfg dans /boot/efi/efi/fedora/grub.cfg  la zone 30_os-prober copier son contenu dans le fichier 40_custom présent dans /etc/grub.d/

(comme on est en mode root, tout peut se faire cette fois en mode graphique, par copier-coller ).

Il faudra ajouter à chaque commande linux et initrd les trois lettres efi. On supprime également la zone if… fi inutile.

J’aboutis à un fichier tel que celui-ci:  40_custom

On désative à nouveau notre 30_os-prober et on met à jour notre grub sous Fedora:

[root@localhost ~]# chmod -x /etc/grub.d/30_os-prober
[root@localhost ~]# grub2-mkconfig -o /boot/efi/efi/fedora/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.11.10-301.fc20.x86_64
Found initrd image: /boot/initramfs-3.11.10-301.fc20.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-1312b1fb554f49c0b43bfa6cccf7a543
Found initrd image: /boot/initramfs-0-rescue-1312b1fb554f49c0b43bfa6cccf7a543.img
done
[root@localhost ~]#

Il ne reste plus qu’à tester le démarrage en redonnant la main à Fedora :

essai@localhost ~]$ su
Mot de passe :
[root@localhost essai]# efibootmgr -v
BootCurrent: 0004
BootOrder: 0004,0005,0000,0001,0002,0003
Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)    ACPI(a0341d0,0)PCI(15,0)PCI(0,0)SCSI(0,0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)    ACPI(a0341d0,0)PCI(11,0)PCI(4,0)SATA(1,0,0)
Boot0002* EFI Network    ACPI(a0341d0,0)PCI(16,0)PCI(0,0)MAC(MAC(000c29b06483,0)
Boot0003* EFI Internal Shell (Unsupported option)    MM(b,3efcb000,3f355fff)FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)
Boot0004* ubuntu    HD(1,800,2f000,08bc25da-d0fc-42f1-8df9-a694e6570d71)File(\EFI\ubuntu\shimx64.efi)
Boot0005* Fedora    HD(1,800,2f000,08bc25da-d0fc-42f1-8df9-a694e6570d71)File(\EFI\fedora\shim.efi)

[root@localhost essai]# efibootmgr -o 0005,0004,0000,0001,0002,0003
BootCurrent: 0004
BootOrder: 0005,0004,0000,0001,0002,0003
Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)
Boot0002* EFI Network
Boot0003* EFI Internal Shell (Unsupported option)
Boot0004* ubuntu
Boot0005* Fedora
[root@localhost essai]#

Le résultat est le suivant :

Mint

Notre dual-boot fonctionne dans les deux sens, quelle que soit la distribution qui a la main.