BLFS ne propose pas les paquets essentiels pour prendre en charge Secure Boot. Pour paramétrer le processus de démarrage avec GRUB pour UEFI installé dans BLFS, Secure Boot doit être désactivé dans l'interface de configuration du micrologiciel. Lisez la documentation fournie par le fabriquant de votre système pour trouver comment faire.
Assurez-vous qu'un disque de démarrage d'urgence est prêt pour
« secourir » le système au cas où le
système ne puisse démarrer. Pour créer un disque de démarrage
d'urgence avec GRUB pour un système EFI, trouvez un clé USB libre
et créez un système de fichiers vfat
dessus. Installez d'abord dosfstools-4.2,
puis en tant qu'utilisateur root
:
La commande suivante supprimera tous les répertoires et fichiers
de la partition. Assurez-vous que votre clé USB ne contient
aucune donnée requise, et remplacez sdx1
par le nœud de
périphérique correspondant à la première partition de la clé USB.
Faites attention à ne pas écraser votre disque dur à cause d'une
coquille !
mkfs.vfat /dev/sdx1
Toujours en tant qu'utilisateur root
, utilisez l'utilitaire fdisk pour faire de la première
partition de la clé USB une partition « EFI system »
(remplacez sdx
par
le nœud de périphérique correspondant à votre clé USB) :
fdisk /dev/sdxWelcome to fdisk (util-linux 2.37.4). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):
tPartition number (1-9, default 9):
1Partition type or alias (type L to list all):
uefiChanged type of partition 'Linux filesystem' to 'EFI System'. Command (m for help):
wThe partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Toujours en tant qu'utilisateur root
, créez un point de montage pour la
partition EFI sur la clé USB et montez-la :
mkdir -pv /mnt/rescue && mount -v -t vfat /dev/sdx1 /mnt/rescue
Installez GRUB pour EFI sur la partition :
grub-install --removable --efi-directory=/mnt/rescue --boot-directory=/mnt/rescue/grub
Démontez la partition :
umount /mnt/rescue
Maintenant vous pouvez utiliser la clé USB comme un disque de démarrage d'urgence sur la plateforme UEFI x86-64. Elle démarrera le système et affichera le shell de GRUB. Ensuite vous pourrez taper des commandes pour démarrer votre système d'exploitation sur votre disque dur. Pour apprendre à choisir le périphérique de démarrage, lisez le manuel de votre carte mère ou de votre ordinateur portable.
Activez les options suivantes dans la configuration du noyau et recompilez le noyau si nécessaire :
Processor type and features --->
[*] EFI runtime service support [CONFIG_EFI]
[*] EFI stub support [CONFIG_EFI_STUB]
Enable the block layer --->
Partition Types --->
[*] Advanced partition selection [CONFIG_PARTITION_ADVANCED]
[*] EFI GUID Partition support [CONFIG_EFI_PARTITION]
Device Drivers --->
Firmware Drivers --->
[*] Mark VGA/VBE/EFI FB as generic system framebuffer [CONFIG_SYSFB_SIMPLEFB]
EFI (Extensible Firmware Interface) Support --->
< > EFI Variable Support via sysfs [CONFIG_EFI_VARS]
[*] Export efi runtime maps to sysfs [CONFIG_EFI_RUNTIME_MAP]
Graphics support --->
<*> Direct Rendering Manager [CONFIG_DRM]
<*> Simple framebuffer driver [CONFIG_SIMPLEDRM]
Frame buffer Devices --->
<*> Support for frame buffer devices ---> [CONFIG_FB]
Console display driver support --->
[*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE]
File systems --->
Pseudo filesystems --->
<*/M> EFI Variable filesystem [CONFIG_EFIVAR_FS]
Voici la signification des options de configure :
CONFIG_EFI_STUB
Bien que le bout EFI soit conçu pour démarrer un noyau directement à partir du micrologiciel UEFI (sans un chargeur d'amorçage comme GRUB), GRUB a besoin que le noyau soit chargé pour prendre en charge le protocole de passage de relai autorisé par cette option.
CONFIG_EFI_VARS
N'utilisez pas cette option obsolète à cause d'une limite de
taille à 1024 octets. Elle est remplacée par CONFIG_EFIVAR_FS
CONFIG_SYSFB_SIMPLEFB
, CONFIG_DRM
, CONFIG_SIMPLEDRM
, CONFIG_FB
et CONFIG_FRAMEBUFFER_CONSOLE
La combinaison de ces options permet au noyau d'afficher des messages de débogage (avec les logos de Tux) pendant les premières étapes du processus de démarrage avec UEFI. Pour vous assurer qu'ils seront fonctionnels pendant ces premières étapes, ils ne doivent pas être construits en tant que modules du noyau à moins que vous n'utilisiez un initramfs.
Sur les systèmes EFI, les chargeurs d'amorçage sont installés dans
une partition FAT32 spéciale appelée partition EFI système (ESP). Si votre
système prend EFI en charge, et qu'une version récente de Linux ou
Windows est pré-installée, il est probable que l'ESP soit déjà
créée. En tant qu'utilisateur root
,
listez toutes les partitions de votre disque dur (remplacez
sda
par le
périphérique correspondant au disque dur approprié) :
fdisk -l /dev/sda
La colonne « Type » de l'ESP devrait être
EFI System
.
Si le système ou le disque dur est neuf, ou si c'est la première
installation d'un système UEFI sur le système, l'ESP n'existe
peut-être pas. Dans ce cas, créez une nouvelle partition, mettez un
système de fichier vfat
dessus et
indiquez « EFI
system » comme type de partition. Voir les
instructions sur le périphérique de démarrage d'urgence plus haut
pour référence.
Certaines (vieilles) implémentations UEFI peuvent demander que l'ESP soit la première partition du disque.
Maintenant, en tant qu'utilisateur root
, créez le point de montage pour l'ESP et
montez-la (remplacez sda1
par le nœud de périphérique
correspondant à l'ESP) :
mkdir -pv /boot/efi && mount -v -t vfat /dev/sda1 /boot/efi
Ajoutez une entrée pour l'ESP dans /etc/fstab
pour qu'elle soient montée
automatiquement au démarrage du système :
cat >> /etc/fstab << EOF
/dev/sda1 /boot/efi vfat defaults 0 1
EOF
L'installation de GRUB sur une plateforme UEFI demande que le
système de fichiers des variables EFI, efivarfs
soit monté. En tant qu'utilisateur
root
, montez-le s'il n'est pas
encore monté :
mountpoint /sys/firmware/efi/efivars || mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars
Maintenant ajoutez une entrée pour efivarfs
dans /etc/fstab
pour qu'il soit monté automatiquement
au démarrage du système :
cat >> /etc/fstab << EOF
efivarfs /sys/firmware/efi/efivars efivarfs defaults 0 0
EOF
Si le système n'est pas démarré avec UEFI, le répertoire
/sys/firmware/efi
n'existera pas.
Dans ce cas vous devriez démarrer le système en mode UEFI avec le
disque de démarrage d'urgence créé plus haut.
Sur les systèmes UEFI, GRUB fonctionne en installant une
application EFI (un type d'exécutable spécial) dans /boot/efi/EFI/[id]/grubx64.efi
, où /boot/efi
est le point de montage de l'ESP et
[id]
est remplacé par un identifiant
spécifié à la ligne de commande grub-install. GRUB créera une
entrée dans les variables EFI contenant le chemin EFI/[id]/grubx64.efi
pour que le micrologiciel
puisse trouver grubx64.efi
et le
charger.
grubx64.efi
est très léger (136 Ko
pour GRUB-2.06~rc1) donc il n'utilisera pas de place dans l'ESP.
Une taille typique d'ESP est 100 Mo (pour le chargeur d'amorçage de
Windows, qui prend environ 50 Mo dans l'ESP). Une fois grubx64.efi
chargé par le micrologiciel, il
chargera les modules GRUB dans la partition de démarrage.
L'emplacement par défaut est /boot/grub
.
En tant qu'utilisateur root
,
installez les fichiers de GRUB dans /boot/efi/EFI/LFS/grubx64.efi
et /boot/grub
. Ensuite paramétrez l'entrée de
démarrage dans les variables EFI :
grub-install --bootloader-id=LFS --recheck
Si l'installation se passe correctement, la sortie devrait être :
Installing for x86_64-efi platform.
Installation finished. No error reported.
Tapez efibootmgr | cut -f 1 pour revérifier la configuration de démarrage EFI. Voici un exemple de sortie :
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0005,0000,0002,0001,0003,0004
Boot0000* ARCH
Boot0001* UEFI:CD/DVD Drive
Boot0002* Windows Boot Manager
Boot0003* UEFI:Removable Device
Boot0004* UEFI:Network Device
Boot0005* LFS
Remarquez que 0005
est en premier dans
BootOrder
et que Boot0005
est LFS
.
Cela signifie qu'au prochain démarrage, la version de GRUB
installée par LFS sera utilisée pour démarrer le système.
Générez /boot/grub/grub.cfg
pour
configurer le menu de démarrage de GRUB :
cat > /boot/grub/grub.cfg << EOF
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5
insmod part_gpt
insmod ext2
set root=(hd0,2)
if loadfont /boot/grub/fonts/unicode.pf2; then
set gfxmode=auto
insmod all_video
terminal_output gfxterm
fi
menuentry "GNU/Linux, Linux 5.18.8-lfs-r11.1-147" {
linux /boot/vmlinuz-5.18.8-lfs-r11.1-147 root=/dev/sda2 ro
}
menuentry "Firmware Setup" {
fwsetup
}
EOF
Vous devez remplacer (hd0,2)
,
sda2
et 5.18.8-lfs-r11.1-147
pour correspondre à votre
configuration.
Du point de vu de GRUB, les fichiers sont relatifs à la partition
utilisée. Si vous utilisez une partition /boot séparée, supprimez
/boot dans les chemins précédents (vers le noyau et vers
unicode.pf2
). Vous devrez aussi
changer la ligne set root pour pointer vers la partition de
démarrage.
L'entrée Firmware Setup
peut être
utilisée pour entrer dans l'interface de configuration fournie par
le micrologiciel (parfois nommée « configuration
BIOS »).
Ajoutew une entrée de menu pour Windows dans grub.cfg
:
cat >> /boot/grub/grub.cfg << EOF
# Begin Windows addition
menuentry "Windows 10" {
insmod fat
insmod chain
set root=(hd0,1)
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
EOF
Vous devriez remplacer (hd0,1)
par le
nom désigné par GRUB pour l'ESP. Vous pouvez utiliser la directive
chainloader
pour dire à GRUB de lancer
un autre exécutable EFI, dans ce cas le gestionnaire de démarrage
de Windows. Vous pouvez ajouter des outils supplémentaires au
format exécutable EFI (par exemple un shell EFI) dasn l'ESP et leur
créer des entrées GRUB.
Last updated on