Efibootmgr
efibootmgr est un outil permettant de gérer les entrées de démarrage UEFI.
Ce n'est pas un bootloader. C'est un outil intéragissant avec le microcode EFI du système, lui-même agissant comme un gestionnaire de démarrage. Avec efibootmgr, des entrées de démarrage peuvent être créées, modifiées ou supprimées.
Installation
Noyau
CONFIG_EFIVAR_FS support needs to be enabled.
Il n'est pas possible d'utiliser efivarfs sans les service EFI, qui peuvent êtra activés (dans le cas où ils ont été désactivés par défaut, par exemple
CONFIG_EFI_DISABLE_RUNTIME=y
) avec l'option kernel efi=runtime.Emerge
Le paquet sys-boot/efibootmgr ne possède pas de USE flags. Tout ce qui est nécessaire pour son installation est :
root #
emerge --ask sys-boot/efibootmgr
Configuration
Variables EFI
Afin d'utiliser efibootmgr correctement, les variables EFI doivent être accessibles. Ce qui requiert le système d'avoir démarré en mode EFI (et non via en MBR), sinon, les variables EFI ne seront pas utilisables. Si le système est en mode MBR, redémarrez et assurez-vous de bien démarrer en mode EFI. Souvent, il ne s'agit que d'une option à sélectionner dans les paramètres du microcode ou choisir une entrée de démarrage dans le menu d'amorçage.
Lorsque le système est en mode EFI, exécutez la commande suivante afin d'attester l'existence des efivarfs :
root #
mount | grep efivars
efivarfs on /sys/firmware/efi/efivars type efivarfs (ro,relatime)
It is mounted read-only (ro) through the sysfs init script), so it needs to be remounted read-write (rw) manually using the following command:
root #
mount -o remount,rw -t efivarfs efivarfs /sys/firmware/efi/efivars
Prérequis
Si une partition système EFI (ESP) n'existe pas, elle doit être créée, voir EFI System Partition
Usage
Lister les entrées de démarrage
Pour lister les entrées de démarrage, utilisez la commande suivante : --verbose
or -v
root #
efibootmgr -v
BootCurrent: 0002 Timeout: 3 seconds BootOrder: 0003,0003,0002,0000,0004 Boot0000* CD/DVD Drive BIOS(3,0,00) Boot0001* Hard Drive BIOS(2,0,00) Boot0002* Gentoo HD(1,800,61800,6d98f360-cb3e-4727-8fed-5ce0c040365d)File(\EFI\boot\bootx64.efi) Boot0003* Hard Drive BIOS(2,0,00)P0: ST1500DM003-9YN16G
Créer des entrées de démarrage
Pour créer des entrées de démarrage EFI, plusieurs arguments doivent être passés à efibootmgr :
--create
or-c
pour créer une nouvelle entrée;--part
or-p
suivit du numéro de partition sur laquelle réside la EFI System Partition ;--disk
or-d
suivit du disque sur lequel est la partition système EFI;--label
or-L
suivit du label à utiliser pour l'entrée de démarrage;--loader
or-l
suivit du chemin d'accès à l'image EFI à démarrer
Le chemin vers l'image EFI à exécuter doit utiliser \ (backslash) au lieu de / (slash) comme séparateur.
De plus, si la partition ESP a déjà été créée par un autre système d'exploitation, elle peut être onnéem différement que /boot/efi. Si la partition ESP a été créée par un autre système d'exploitation, utilisez le même début répertoire pour créer les entrées de démarrage, c'est à dire tout ce qui suit /boot.
Si c'est cette structure de fichier
root #
tree /boot/ -L 3
/boot/ └── EFI ├── Grub │ └── grubx64.efi └── Gentoo └── bzImage-4.14.83.efi
alors le chemin de chargement sera :
root #
efibootmgr -c -L "Grub" -l '\EFI\Grub\grubx64.efi'
root #
efibootmgr -c -L "Gentoo" -l '\EFI\Gentoo\bzImage-4.14.83.efi'
Par exemple :
root #
efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l '\efi\boot\bootx64.efi'
C'est aussi possible d'ajouter des paramètres à la ligne de commande kernel - parfois pas supporté par toutes les implémentations UEFI not supported[1]:
root #
efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l '\efi\boot\bootx64.efi' -u 'root=/dev/sda3 initrd=\efi\boot\initramfs.img quiet'
Optionally, additional kernels can be installed and made known to the UEFI firmware. This is especially useful when wanting to test more kernels or to dual-boot with another operating system. These will be shown in the boot selection prompt, normally after a keyboard hotkey is pressed at the right time during system initialization. The latest added entry always gets highest boot priority, so it will be default. If the hotkey combination is unknown, search for official documentation from the computer manufacturer. This information is usually not difficult to find.
Supprimer une entrée de démarrage
Avant de supprimer une entrée, vous devez déterminer son identifiant (ID).
To delete the Gentoo entry as shown above (which has Boot0002 as the identifier), ask efibootmgr to delete the entry with id 2, passing the arguments --bootnum
or -b
with the identifier, and --delete-bootnum
or -B
to delete the entry:
root #
efibootmgr -b 2 -B 2
Removable media
EFI bootloaders on removable media are not configured as boot entries, so efibootmgr is not required. See removable media boot path on the ESP for details.
Suppression
Unmerge
root #
emerge --ask --depclean --verbose sys-boot/efibootmgr
Voir aussi
- REFInd — un gestionnaire de démarrage pour les platformes EFI et UEFI qui est une scission et un successeur de rEFIt.
- EFI stub — describes EFI stub kernels, i.e. kernels directly executable from UEFI.
- Alternative 2: efibootmgr in the Gentoo Handbook
Références
- ↑ Au moins pour le firmware EFI Dell, un contournement a été implémenté dans le kernel 5.10: https://lkml.org/lkml/2020/9/18/228