C’est plus un exercice qu’un véritable tutoriel, mais certains se sont penchés sur cette question : peut-installer un Linux qui puisse booter tant en Legacy qu’en Uefi ? La réponse est clairement oui.
Pour la démo, j’utilise une Mint 17, mais c’est adaptable assez aisément à toutes les distributions.
I) Situation de départ
On règle son PC pour booter en Legacy. On installe volontairement une Linux Mint sur un disque gpt (on peut faire ça avec gparted) en faisant booter le Live-USB en mode Legacy. Pour la démonstration, j’ai ajouté une partition efi dès le départ pour anticiper la suite de mon installation, mais on pourrait parfaitement la créer a posteriori. Voici une capture faite avec gparted :
Une partition fat32 avec le drapeau boot est présente (je l’ai créée volontairement). Et l’installation en mode Legacy a ajouté spontanément une partition bios-boot (nommée ici bios_grub).
Et le résultat d’un boot-info : Boot-info initial.
On note une installation somme toute classique en Legacy, si ce n’est que le disque est au format gpt. La partition es totalement vide, ce qui bien sûr va empêcher de booter en uefi. On va le vérifier.
(la réparation finale est le résultat d’un retour à ce Linux purement Legacy, après un autre test- donc, sans intérêt pour nous)
II) Tentative de boot en uefi
Nous basculons notre bios en UEFI. Le résultat est édifiant. Notre Mint n’est pas capable de démarrer en UEFI :
(Les entrées en échec sont les résidus d’anciens tests, que j’ai négligé de supprimer dans le bios.)
III) Démarrage en UEFI grâce à SG2D
Nous allons lui donner un petit coup de pouce. Le live-cd Supergrub2disk va nous permettre de faire démarrer ce Linux malgré tout, ce qui va grandement nous simplifier les choses pour la future modification. On voit qu’il me permet de booter sur deux noyaux différents. Nous allons simplement choisir de démarrer sur l’entrée Ubuntu qui est proposée.
Nous obtenons un bureau fonctionnel en UEFI. L’occasion de faire un second boot-info avant réparation.
Nous constatons que nous sommes bien en uefi, et que boot-repair est impuissant pour proposer une réparation efficace, puisqu’il ne détecte pas la partition efi qui est pourtant présente.
Le boot de votre PC est en mode EFI, mais aucune partition EFI n'a été détectée. Vous voudrez peut-être re-essayer après avoir créé une partition EFI (FAT32, 100MB~250MB, en début de disque, drapeau boot)./pre>
IV) La réparation de grub pour booter en UEFI
On va donc suppléer à cette faiblesse et réparer notre grub pour qu’il boote en Uefi grâce à une série de commandes. Les voici :
essai@essai-virtual-machine ~ $ sudo mount /dev/sda1 /boot/efi [sudo] password for essai: essai@essai-virtual-machine ~ $ sudo apt-get install grub-efi-amd64-signed Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires : libefivar0 mokutil sbsigntool shim Veuillez utiliser « apt-get autoremove » pour les supprimer. Les paquets supplémentaires suivants seront installés : grub-efi-amd64 grub-efi-amd64-bin Paquets recommandés : secureboot-db Les paquets suivants seront ENLEVÉS : grub-gfxpayload-lists grub-pc Les NOUVEAUX paquets suivants seront installés : grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-signed 0 mis à jour, 3 nouvellement installés, 2 à enlever et 74 non mis à jour. Il est nécessaire de prendre 0 o/939 ko dans les archives. Après cette opération, 5 295 ko d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] o Préconfiguration des paquets.. (Lecture de la base de données... 181079 fichiers et répertoires déjà installés.) Suppression de grub-gfxpayload-lists (0.6) ... Suppression de grub-pc (2.02~beta2-9ubuntu1.12) ... Traitement des actions différées (« triggers ») pour man-db (2.6.7.1-1ubuntu1) ... Sélection du paquet grub-efi-amd64-bin précédemment désélectionné. (Lecture de la base de données... 181060 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../grub-efi-amd64-bin_2.02~beta2-9ubuntu1.12_amd64.deb ... Dépaquetage de grub-efi-amd64-bin (2.02~beta2-9ubuntu1.12) ... Sélection du paquet grub-efi-amd64 précédemment désélectionné. Préparation du dépaquetage de .../grub-efi-amd64_2.02~beta2-9ubuntu1.12_amd64.deb ... Dépaquetage de grub-efi-amd64 (2.02~beta2-9ubuntu1.12) ... Sélection du paquet grub-efi-amd64-signed précédemment désélectionné. Préparation du dépaquetage de .../grub-efi-amd64-signed_1.34.14+2.02~beta2-9ubuntu1.12_amd64.deb ... Dépaquetage de grub-efi-amd64-signed (1.34.14+2.02~beta2-9ubuntu1.12) ... Paramétrage de grub-efi-amd64-bin (2.02~beta2-9ubuntu1.12) ... Paramétrage de grub-efi-amd64 (2.02~beta2-9ubuntu1.12) ... 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 fait Paramétrage de grub-efi-amd64-signed (1.34.14+2.02~beta2-9ubuntu1.12) ... essai@essai-virtual-machine ~ $ sudo grub-install --target=x86_64-efi Installation pour la plate-forme x86_64-efi Installation terminée, sans erreur. 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 No volume groups found fait essai@essai-virtual-machine ~ $
On a d’abord monté la partition sda1 dans boot/efi, puis installé les paquets grub pour l’uefi (je me limite à grubx64.efi car Vmware n’ayant pas de boot-secure n’a pas besoin de shimx64.efi), et enfin, on a lancé une réparation de grub (l’option –target=x86_64-efi est probablement superflue.
Après un redémarrage, c’est l’occasion de faire une dernier boot-info, pour voir la situation finale
Une seule chose est gênante : la partition efi n’est pas montée dans /etc/fstab (ici, elle est placée en commentaire). On va donc forcer son montage en éditant le fichier fstab via la commande sudo gedit /etc/fstab et supprimer le # sur la ligne concernée (la dernière, dans mon cas).
(quelques entrées bizarres dans efibootmgr -v sont les traces d’essais précédents que j’ai eu la flemme de supprimer. Donc, ils sont sans importance)
Il ne reste plus qu’à redémarrer en UEFI pour voir si Mint va se lancer en UEFI. Aucun problème : Grub affiche son menu et Mint boote correctement.
V) Tentative de boot en Legacy.
On repasse en mode bios-legacy. On vérifie que les entrées fonctionnent. En effet.
D’ailleurs, tout cette démo est tapée dans ce mode Legacy. J’ai donc une Mint qui fonctionne aussi bien en Legacy qu’en UEFI.