Mise à jour : Debian 10.8 - Buster
Ce document décrit la gestion des entrées d'amorçage au moyen de la commande efibootmgr
Sommaire
$ sudo aptitude install efibootmgr
La commande efbootmgr fournit des informations sur les entrées d'amorçage présentes dans la mémoire Nvme de la plate-forme
$ efibootmgr
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,0004,0001,0000
Boot0000* Windows Boot Manager
Boot0001* debian
Boot0002* debian
Boot0004* UEFI : Built-in EFI Shell
Dans l'exemple ci-dessus,
BootCurrent: 0002 indique que le système a été amorcé depuis l'entrée d'amorçage numéro 2
BootOrder: 00202,004,0001,0000 indique l'ordre dans le quel les entrées (présentes ou absentes) seront testées APRES prise en compte de l'ordre des périphériques défini dans l'UEFI de la plateforme
Chaque entrée est associée à une adresse vers un fichier exécutable, cette adresse pouvant soit être affichée "en clair", soit sous la forme d'un identifiant
$ efibootmgr -v
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,0004,0001,0000
Boot0000* Windows Boot Manager VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0001* debian HD(1,GPT,77ed79e1-ae0b-4979-827f-ad7b119d688b,0x1000,0xff000)/File(\EFI\DEBIAN\shimx64.efi)
Boot0002* debian HD(1,GPT,fe906d3a-ed18-4d9a-a6cd-41b14322b3ad,0x800,0x106000)/File(\EFI\debian\shimx64.efi)
Boot0004* UEFI : Built-in EFI Shell VenMedia(5023b95c-db26-429b-a648-bd47664c8012)..BO
HD(1,GPT,77ed79e1-ae0b-4979-827f-ad7b119d688b,0x1000,0xff000)
/File(\EFI\DEBIAN\shimx64.efi)
$ lsblk -o NAME,FSTYPE,PARTUUID |grep vfat
├─sdb1 vfat 77ed79e1-ae0b-4979-827f-ad7b119d688b
├─nvme0n1p1 vfat fe906d3a-ed18-4d9a-a6cd-41b14322b3ad
Boot0001* debian VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)
L'adresse d'origine sera à nouveau affiché si le fichier est présent lors d'un prochain démarrage
Boot0004* UEFI : Built-in EFI Shell VenMedia(5023b95c-db26-429b-a648-bd47664c8012)..BO
Lorsque le système a démarré sur une entrée par défaut (EFI/BOOT/boox64.efi), il crée automatiquement une entrée dans la NVME. Exemple d'une entrée de chargement de grub, sur un disque USB
Boot0005* UEFI : USB : ST9250410AS 0223 : PART 0 : OS Bootloader PciRoot(0x0)/Pci(0x14,0x0)/USB(1,0)/HD(1,GPT,77ed79e1-ae0b-4979-827f-ad7b119d688b,0x1000,0xff000)..BO
Les entrées d'amorçage sont généralement créées par grub lors de l'installation sur la partition ESP, il est néanmoins possible de créer "manuellement" une entrée dans la Nvme de la plate-forme.
La commande suivante
crée (option -c ou --create) dans la Nvme de la plate-forme
pour un chargeur d'amorçage (option -l ou --loader) /EFI/GRUB/grubx64.efi
$ sudo efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "grub" --loader /EFI/GRUB/grubx64.efi
BootOrder: 0004,0007,0006,0003,0000
...
Boot0004* grub
....
->> Attention à la syntaxe du chemin du chargeur d'amorçage
/EFI/GRUB/grubx64.efi # Pas de quote ou double quote
'\EFI\GRUB\grubx64.efi' # Simple quote
\\EFI\\GRUB\\grubx64.efi # Pas de quote ou double quote
-->> Attention, l'entrée est créée dans la Nvme indépendamment du fait qu'elle soit présente et valide dans la partition ESP
r.o.o.t.=.U.U.I.D.=.0.6.....e. .r.o. .q.u.i.e.t. .i.n.i.t.r.d.=.\.E.F.I.\.s.t.u.b.\.i.n.i.t.r.d...i.m.g.
$ sudo efibootmgr |grep Boot0000
Boot0000* Windows Boot Manager
....
$ sudo efibootmgr -b 0 -A |grep Boot0000
Boot0000 Windows Boot Manager
$ sudo efibootmgr -b 0 -a |grep Boot0000
Boot0000* Windows Boot Manager
Supprimer l'entrée 0008
$ sudo efibootmgr -b 8 -B
Pour modifier le délai d'amorçage (Timeout), par exemple 3s
$ sudo efibootmgr -t 3
$ sudo efibootmgr -T
$ sudo efibootmgr -O
$ sudo efibootmgr -o 7,6,3,8,0 |grep BootOrder
BootOrder: 0007,0006,0003,0008,0000
$ sudo efibootmgr -n 6