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
Le support de CONFIG_EFIVAR_FS doit être activé.
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 d'un système de fichier efivarfs monté :
root
#
mount | grep efivars
efivarfs on /sys/firmware/efi/efivars type efivarfs (ro,relatime)
Il est monté en lecture seule (ro) à travers du script d'initialisation de sysfs , donc il doit être remonté en lecture-écriture (rw) à la main en utilisant la commande :
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
Lors que vous utilisez une ancienne version de
efibootmgr
, l'option
--verbose
ou
-v
est nécessaire :
root
#
efibootmgr
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 :
-
--createor-cpour créer une nouvelle entrée; -
--partor-psuivit du numéro de partition sur laquelle réside la EFI System Partition ; -
--diskor-dsuivit du disque sur lequel est la partition système EFI; -
--labelor-Lsuivit du label à utiliser pour l'entrée de démarrage; -
--loaderor-lsuivit 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 /efi/ 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 /efi .
Ci-dessous quelques exemples de création d'entrée UEFI. Si c'est cette structure de fichier :
root
#
tree /efi/ -L 3
/efi/
└── EFI
├── Grub
│ └── grubx64.efi
└── Gentoo
└── bzImage.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.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'
Pour un exemple d'utilisation du module initrd dm-crypt, référez-vous à efibootmgr .
Référez-vous à Why make your own pour les systèmes utilisant un ramdisk initial.
Optionnellement, d'autre kernels peuvent être installés et rendu connu pour le firmware UEFI. C'est particulièrement utile lorsque vous voulez tester d'autre kernel ou utiliser un dual-boot avec un autre système d'exploitation. Ceux-ci sont montrés lors du menu de sélection de démarrage, souvent après l'appui d'une touche spécifique durant l'initialisation du système. La dernière entrée ajoutée sera toujours ajoutée avec la priorité la plus haute, donc elle sera celle utilisée par défaut. Si cette touche n'est pas connue, cherchez la documentation officielle du fabricant de l'ordinateur. Cette information n'est en général pas difficile à trouver.
Supprimer une entrée de démarrage
Avant de supprimer une entrée, vous devez déterminer son identifiant (ID).
Pour supprimer une entrée comme montrée au-dessus (qui a l'identifiant
Boot0002
), demandez à
bootefimgr
de supprimer l'entrée ayant l'identifiant 2, en passant les arguments
--bootnum
ou
-b
avec l'identifiant, et
--delete-bootnum
ou
-B
pour supprimer l'entrée :
root
#
efibootmgr -b 2 -B
Média amovibles
Les bootloaders EFI sur les médias amovibles ne sont pas configurés en tant qu'entrée de démarrage, donc efibootmgr n'est pas requis. Voir le démarrage des médias externes sur ESP pour plus de détails.
Suppression
Unmerge
root
#
emerge --ask --depclean --verbose sys-boot/efibootmgr
Voir aussi
- Handbook:AMD64/Installation/Bootloader dans le Handbook Gentoo
- EFI stub — describes EFI stub kernels, i.e. kernels directly executable from UEFI.
- Efivarfs — a filesystem in the Linux kernel that enables users to create, delete, and modify (U)EFI variables
- Initramfs - make your own — build an initramfs which does not contain kernel modules.
- REFInd — un gestionnaire de démarrage pour les platformes EFI et UEFI qui est une scission et un successeur de rEFIt.
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