Sauvetage boot EFI sur portable Asus

Patatra, un Kernel Panic sur son Asus X301A et le voilà qui refuse de booter sans donner d'explications : à chaque démarrage, seul le BIOS du système s'affiche... Ennuyeux.

Pour essayer de comprendre, on boote sur une clé USB contenant SystemRescueCD et rapidement on découvre que la partition /dev/sda1 (utilisée pour stocker les éléments nécessaires pour le boot EFI), 1 Mo formatée en FAT32, est corrompue ("dirty bit", sûrement à cause de l'extinction subite lors du Kernel Panic.

On essaye déjà de réparer le système de fichiers par :

fsck.vfat -a /dev/sda1

Puis on re-démarre mais rien ne change.

Il semble que le BIOS ne parvienne pas à détecter tout seul la présence de l'amorceur Grub sur la partition EFI - et qu'il ne soit possible de modifier la séquençage d'amorçage EFI que depuis un système lui-même lancé par EFI.

Qu'à cela ne tienne : on reboote sur le disque de sauvetage SystemRescueCD et on effectue alors les opérations suivantes :

  • on monte la partition EFI dans /boot/efi
mkdir /boot/efi
mount /dev/sda1 /boot/efi
  • on trouve le fichier grubx64.efi dans EFI/debian/ et on le copie dans EFI/boot/ en le renommant bootx64.efi
mkdir /boot/efi/EFI/boot
cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

Et hop, on reboote. Normalement, le bios EFI cherche par défaut le fichier bootx64.efi donc Grub devrait apparaître à l'écran. On peut alors booter normalement dans le système d'exploitation, puis, pour ramener la situation à la normale, réinstaller Grub proprement. En effet, quand il s'installe, Grub paramètre intelligement les paramètres EFI donc il va pouvoir ré-apprendre au BIOS à aller chercher EFI/debian/grubx64.efi.

grub-install /dev/sda1