Je suis tombé sur le cas il y a quelques temps, avec une carte mère MSI Z77A-GD55, qui il est vrai, n’est plus toute jeune. Cependant elle fonctionne encore bien, et j’aime bien faire durer le matériel. L’installation de Debian en UEFI s’est déroulée sans encombres, et après coup, c’est vrai que c’est rigolo que le média d’installation ait bien démarré en UEFI, mais que le système final n’arrive pas à démarrer Debian en UEFI.
Non, à la place d’un démarrage normal, j’avais droit à l’invite de commandes UEFI.
Tout se passe comme si le firmware de la carte mère ne trouvait pas de fichier d’amorçage UEFI sur le disque dur , alors que celui-ci est bien présent ici à l’endroit que l’on qualifierait d’habituel:
sudo ls -1 /boot/efi/EFI/debian BOOTX64.CSV fbx64.efi grub.cfg grubx64.efi mmx64.efi shimx64.efi
Si depuis le shell UEFI on se place dans ce répertoire et qu’on charge le fichier grubx64.efi, le système démarre.
Le firmware de la carte mère ne cherche donc visiblement pas au bon endroit.
On peut le constater avec l’utilitaire shell UEFI bcfg, qui permet d’afficher ou de configurer les entrées de démarrage:
bcfg boot dump
On voit une entrée pointant EFI\boot\bootx64.efi, hors ce chemin n’existe pas dans la partition dédiée EFI. Et c’est là que la carte mère est buguée (ou plutôt le firmware UEFI de la carte mère) : normalement une telle entrée n’aurait jamais du être créée, car il y a un contrôle de la validité du chemin pointé à la création de l’entrée.
Bon, maintenant qu’on a vu le problème, voici deux méthodes pour palier à ce petit désagrément.
La méthode bourrin
Puisque le firmware UEFI chercher à charger le fichier EFI\boot\bootx64.efi, faisons lui plaisir et donnons le lui. Démarrons donc manuellement la Debian depuis le shell UEFI et réalisons l’opération de copie suivante:
mkdir /boot/efi/EFI/boot cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
Voilà. C’est moche mais ça marche. L’inconvénient de cette solution par contre est que le fichier ne sera jamais mis à jour le cas échéant, car la distribution n’a aucune connaissance de son existence à cet endroit. D’où l’autre solution, probablement plus élégante.
La méthode classe
Elle passe par le shell UEFI et son utilitaire de configuration du démarrage bcfg.
On supprime l’entrée foireuse (elle a l’index 0 dans notre cas):
bcfg boot rm 0
Puis on créé une nouvelle entrée pointant le chargeur d’amorçage existant dans la partition efi (dans cet exemple, la partition efi est sur le volume FS0) :
bcfg boot add 0 FS0:\EFI\debian\grubx64.efi "debian"
Voilà.
o/
Références :
https://papy-tux.legtux.org/doc1249/index.html
https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#efibootmgr