« Efibootmgr » : différence entre les versions
(Corrections de fautes de Français + corrections de formatages + réorganisation de certaines sections pour dédier la page à l'outil "efibootmgr" (le renommage de celle-ci suivra) + changement d'introduction + ajout d'une section pour la création d'une entrée "ESP".) |
m (Ycharbi a déplacé la page Efi boot stub vers Efibootmgr sans laisser de redirection : L'EFI boot stub n'est qu'une partie de l'outil "efibootmgr" et il est plus cohérant de parler de lui en y intégrant cette partie précise (plus évolutif).) |
(Aucune différence)
|
Dernière version du 14 novembre 2020 à 19:53
Le programme efibootmgr
permet d'intéragir avec les entrées de démarrage d'un ordinateur. Les modification apportés par celui-ci sont stockés dans la configuration de l'UEFI et sont donc indépendantes du système d'exploitation à amorcer. Certaines cartes mères ne permettants pas la modification de ces paramètres (honte à leur constructeur), l'usage de cet outil permet de palier ce défaut majeur.
ATTENTION
Les commandes de cette page s'adressent uniquement aux possesseurs de carte-mère disposant d'un UEFI, ainsi qu'un disque avec une table de partitionnement GUID (dit GPT), contenant une partition en FAT16/32 pour le système EFI (appelée ESP).Création d'une entrée de type ESP
L'ESP (pour EFI System Partition) est un volume formaté en FAT 16 ou 32 comportant un ou plusieurs programmes exécutables par l'UEFI. Normalement, ce dernier est censé parcourir l'ensemble des périphériques reconnus au démarrage pour y trouver les programmes compatibles mais il n'est pas rare que cela ne se face pas (les UEFI sont généralement des grosses merdes bogués). Afin de forcer le système à trouver un fichier d'amorce, il faut créer une entrée spécifique menant à lui. Certains UEFI permettent de le faire depuis leur interface de configuration mais pas tous... Cette méthode est donc universelle :
efibootmgr --disk /dev/sda --part 1 --create --label "Un nom pour votre entrée" --loader /EFI/debian/grubx64.efi
Cette ligne précise, dans l'ordre :
- --disk : le disque contenant l'ESP
- --part : le numéro de la partition faisant office d'ESP et contenant le programme d’amorçage
- --create : paramètre précisant la création de l'entrée
- --label : permet de définir un nom arbitraire pour reconnaître l'entrée parmi les autres
- --loader : le chemin complet du chargeur d’amorçage UEFI
Création d'une entrée de type STUB
Depuis sa version 3.3, le noyau Linux supporte l'EFISTUB (aussi appelé EFI BOOT STUB). Le principe est de démarrer le système d'exploitation sans avoir recours à un chargeur de démarrage additionnel (GRUB, Lilo, Syslinux...), aussi appelé bootloader, c'est-à-dire qu'après le POST, aucun menu de choix ne sera affiché, démarrant ainsi immédiatement le système d'exploitation.
Cette méthode ne permet pas d'utiliser de multiples lignes de démarrage pour le même noyau ; chaque noyau supporte au plus une seule entrée EFI. Mais il est bien entendu possible d'utiliser plusieurs noyaux différents.
Tout d'abord, on a besoin de connaître l'UUID de votre partition racine (/) :
blkid
La commande va un UUID par partition. Exemple :
[...]
/dev/sdaX: LABEL="Boot" UUID="un_uuid_qui_ne_nous_intéresse_pas" TYPE="ext2" PARTLABEL="Boot" PARTUUID="partuuid_qui_ne_nous_intéresse_pas"
/dev/sdaY: LABEL="ArchLinux" UUID="'''uuid_désirée'''" TYPE="ext4"
[...]
ATTENTION
Il est important de ne pas se tromper de partition et d'UUID. Ne pas confondre UUID avec PARTUUID !Afin de ne pas se tromper, nous pouvons utiliser la syntaxe suivante pour récupérer l'UUID de sda3 par exemple :
blkid -s UUID -o value /dev/sda3
Il est alors possible de remplir une variable avec cette valeur comme exposé ici, de cette façon :
export UUID=$(blkid -s UUID -o value /dev/sda3) efibootmgr -c -g -L "Debian (EFI stub)" -l '\EFI\debian\vmlinuz' -u "root=UUID=$UUID ro quiet rootfstype=ext4 add_efi_memmap initrd=\\EFI\\debian\\initrd.img"
On aura donc besoin les informations suivantes :
- uuid_désirée : ce que vous venez de trouver précédemment
- ext4 : le système de fichiers de votre partition root (/). À adapter si ce n'est pas votre système de fichiers
- /dev/sda : le disque qui contient la partition EFI. À adapter s'il est question d'un autre disque
- -p 1 : le nombre correspondant à la partition EFI (exemple : pour une partition EFI qui serait la /dev/sda2, on utilisera -p 2)
Puis on entre enfin dans le vif du sujet :
efibootmgr -c -g -d /dev/sda -p 1 -L "Arch Linux" -l "\EFI\arch\vmlinuz-arch.efi" -u "root=UUID=uuid_partition_Arch" rootfstype=système_de_fichiers initrd=\EFI\arch\initramfs-arch.img rw add_efi_memmap
On peut désormais redémarrer la machine, qui devrait normalement amorcer directement sur cette nouvelle entrée.
Changer l'ordre de démarrage
Pour voir l'ordre de démarrage courant, on peut utiliser :
efibootmgr | grep BootOrder
En sortie vous devriez avoir des nombres hexadécimaux, qui correspondent chacun à une entrée dans l'UEFI. On peut savoir à quelle entrée correspond chaque nombre avec :
efibootmgr | grep Boot0
Pour changer l'ordre de démarrage, il suffit de classer ces valeurs selon vos désirs :
efibootmgr -o XXX,YYYY,ZZZZ
INFORMATION
Si vous ne précisez qu'une entrée, elle deviendra la valeur par défaut pour le démarrage.Il est possible de réinitialiser l'ordre de démarrage :
efibootmgr -O
Supprimer des entrées
On peut facilement supprimer une entrée dans l'UEFI avec :
efibootmgr -B -b XXXX
Où XXXX est la valeur en hexadécimal de l'entrée que vous désirez supprimer.
Changer le délais de démarrage
Il est possible de changer le délais de démarrage avant que l'UEFI n'utilise une entrée :
efibootmgr -t X
Où X est le temps en secondes.
On peut aussi facilement supprimer ce délais avec :
efibootmgr -T
Pour ceux qui apprécient avoir un démarrage rapide.
Ajouter plus d'options au démarrage
À l'instar d'un chargeur d'amorçage, il est possible de spécifier des options au noyau. Toutes les options du noyau sont spécifiées avec le paramètre -u
. Pour l'exemple, par défaut nous avions utilisé cette commande plus haut, les options sont mises en gras sur cette ligne :
efibootmgr -c -g -d /dev/sda -p 1 -L "Arch Linux" -l "\EFI\arch\vmlinuz-arch.efi" -u "root=UUID=uuid_partition_Arch rootfstype=système_de_fichiers initrd=\EFI\arch\initramfs-arch.img rw add_efi_memmap"
Si on veut ajouter une option (telle quiet), on écrira donc :
efibootmgr -c -g -d /dev/sda -p 1 -L "Arch Linux" -l "\EFI\arch\vmlinuz-arch.efi" -u "root=UUID=uuid_partition_Arch rootfstype=système_de_fichiers initrd=\EFI\arch\initramfs-arch.img rw add_efi_memmap quiet"
Ou encore :
efibootmgr -c -g -d /dev/sda -p 1 -L "Arch Linux" -l "\EFI\arch\vmlinuz-arch.efi" -u "root=UUID=uuid_partition_Arch rootfstype=système_de_fichiers initrd=\EFI\arch\initramfs-arch.img rw add_efi_memmap vga=790 splash resume=/dev/sdXY"
Et ainsi de suite.