systemd-boot (Français)
systemd-boot(7), précédemment appelé gummiboot (Allemand pour "bateau pneumatique"), est un chargeur d'amorçage de type UEFI facile à configurer. Il offre un menu textuel pour selectionner l'entrée d'amorçage et un editeur pour le terminal du noyau.
Il faut noter que systemd-boot ne peut seulement lancer des éxécutables EFI (ex: le noyau Linux EFISTUB, shell UEFI, GRUB, ou le Gestionnaire de démarrage Windows).
Systèmes de fichier supportés
systemd-boot hérite du support des systèmes de fichier du système de fichier du micrologiciel (ex: FAT12, FAT16 et FAT32). Additionnellement, il peut lancer des pilotes UEFI placés dans esp/EFI/systemd/drivers
.
Installation
systemd-boot est fournit avec le paquet systemd qui est une dépendance du paquet méta base, donc aucun autre paquet additionnel ne doit être installé manuellement.
Installation du chargeur d'amorçage UEFI
Pour installer systemd-boot, veuillez premièrement vous assurer que le système a été démarré dans le mode UEFI et que les variables UEFI sont accessibles. Ceci peut être vérifié en éxécutant efivar --list
ou, si efivar n'est pas installé, en éxécutant ls /sys/firmware/efi/efivars
(si le répertoire existe, le système a été démarré en mode UEFI.)
Durant l'installation, esp
sera utilisé comme terme pour le point de montage, ex: /efi
ou /boot
. Assumant que vous vous êtes «chrooté» dans le point de montage du système.
Utilisez bootctl(1) pour installer systemd-boot à l'ESP:
# bootctl install
Ceci va copier le chargeur d'amorçe UEFI systemd-boot vers l'ESP, créez une entrée d'amorçage UEFI pour celui-ci et définissez le comme premier dans l'ordre de démarrage UEFI.
- Sur un UEFI x64,
/usr/lib/systemd/boot/efi/systemd-bootx64.efi
sera copié versesp/EFI/systemd/systemd-bootx64.efi
etesp/EFI/BOOT/BOOTX64.EFI
. - Sur un UEFI IA32,
/usr/lib/systemd/boot/efi/systemd-bootia32.efi
sera copié versesp/EFI/systemd/systemd-bootia32.efi
etesp/EFI/BOOT/BOOTIA32.EFI
.
L'entrée d'amorçage sera appelée "Linux Boot Manager" et pointera vers, dépendant de l'architecture, soit \EFI\systemd\systemd-bootx64.efi
ou \EFI\systemd\systemd-bootia32.efi
sur l'ESP.
- En éxécutant
bootctl install
, systemd-boot essaiera de localiser l'ESP à/efi
,/boot
, et/boot/efi
. Pour définir l'esp
vers un endroit différent, il est requis de rajouter l'option--esp-path=esp
. (Voir bootctl(1) § OPTIONS pour des détails.) - Installer systemd-boot écrira par dessus n'importe quel
esp/EFI/BOOT/BOOTX64.EFI
(ouesp/EFI/BOOT/BOOTIA32.EFI
pour l'UEFI IA32) existant, ex. la version Microsoft du fichier.
Pour conclure l'installation, configurez systemd-boot.
Installation depuis XBOOTLDR
Une partition /boot séparée de type "Linux extended boot" (XBOOTLDR) peut être créée pour garder le noyeau et l'initramfs séparé de l'ESP. Ceci est particulièrement utile pour dual boot avec Windows avec un ESP qui est trop petit.
Préparez un ESP comme habituellement et créez une autre partition pour XBOOTLDR sur le même disque physique. La partition XBOOTLDR doit avoir le type de partition GUID de bc13c2ff-59e6-4262-a352-b275fd6f7172
[1] (type pour gdisk). La taille de la partition XBOOTLDR doit être assea large pour contenir tous les noyaux que vous allez installer.
- systemd-boot ne fait pas de vérification du système de fichier comme il le fait pour l'ESP. Donc, il est possible d'utiliser n'importe quel système de fichier que votre implémentation UEFI peut lire.
- UEFI peut passer le chargement de partitions autres que l'ESP quand le mode "fast boot" est activé. Cela peut engendrer le fait que systemd-boot n'arrive pas à trouver une entrée sur la partition XBOOTLDR; dans ce cas, désactivez le mode "fast boot".
- La partition XBOOTLDR doit être sur le même disque physique que l'ESP pour que systemd-boot la reconnaisse.
Pendant l'installation, montez l'ESP vers /mnt/efi
, et la partition XBOOTLDR vers /mnt/boot
.
Une fois dans chroot, utilisez la commande:
# bootctl --esp-path=/efi --boot-path=/boot install
Pour conclure l'installation, configurez systemd-boot.
Mettre à jour le gestionnaire d'amorçe UEFI
Lorsqu'il y a une nouvelle version de systemd-boot, le gestionnaire d'amorçe UEFI peut optionellement être réinstallé par l'utilisateur. Ceci peut être fait manuellement ou automatiquement; les deux approches sont décrites ci-dessous.
Mise-à-jour manuelle
Utilisez bootctl pour mettre à jour systemd-boot:
# bootctl update
bootctl install
, systemd-boot essaiera de localiser l'ESP à /efi
, /boot
, et /boot/efi
. Pour définir l'esp
vers un endroit différent, il est requis de rajouter l'option --esp-path=esp
.Mise-à-jour automatique
Pour mettre à jour systemd-boot automatiquement, utilisez soit un service systemd ou un hook pacman. Les deux méthodes sont décrites ci-dessous.
service systemd
Depuis la version 250, systemd est livré avec systemd-boot-update.service
. Activer ce service mettra à jour le chargeur d'amorçe après le prochain démarrage.
hook pacman
Le paquet systemd-boot-pacman-hookAUR rajoute un hook pacman qui sera éxécuté à chaque fois que [2] est mit à jour.
Au lieu d'installer systemd-boot-pacman-hook, vous pourriez préférer placer le fichier suivant dans /etc/pacman.d/hooks/
:
/etc/pacman.d/hooks/95-systemd-boot.hook
[Trigger] Type = Package Operation = Upgrade Target = systemd [Action] Description = Met gracieusement à jour systemd-boot... When = PostTransaction Exec = /usr/bin/systemctl restart systemd-boot-update.service
Signature pour Secure Boot
Si vous avez Secure Boot d'activé, vous pouvez avoir envie d'ajouter un hook pacman pour signer automatique le gestionnaire d'amorçe après chaque mise-à-jour du paquet:
/etc/pacman.d/hooks/80-secureboot.hook
[Trigger] Operation = Install Operation = Upgrade Type = Path Target = usr/lib/systemd/boot/efi/systemd-boot*.efi [Action] Description = Signing systemd-boot EFI binary for Secure Boot When = PostTransaction Exec = /bin/sh -c 'while read -r i; do sbsign --key /path/to/keyfile.key --cert /path/to/certificate.crt "$i"; done;' Depends = sh Depends = sbsigntools NeedsTargets
Remplacez /chemin/vers/fichier-clé.key
et /chemin/vers/certificat.crt
avec votre clé et certificat de signature respectivement. Pour une meilleure compréhension de ce hook, consultez la page du manuel.
Le /usr/lib/systemd/boot/efi/systemd-boot*.efi.signed
créé sera automatiquement détecté par bootctl install
ou bootctl update
. Voir bootctl(1) § SIGNED .EFI FILES.
En tant qu'alternative, utilisez sbctl.
Configuration
bootctl
(sans arguments) pour s'assurer que systemd-boot sera capable de la lire correctement.Configuration du chargeur
La configuration du chargeur est stockée dans le fichier esp/loader/loader.conf
. Voir loader.conf(5) § OPTIONS pour des détails.
Un example de configuration du chargeur est fournie ci-dessous:
esp/loader/loader.conf
default arch.conf timeout 4 console-mode max editor no
- systemd-boot n'accepte pas les tabulations (tabs) comme indentation, utilisez des espaces à la place.
-
default
ettimeout
peuvent être changés dans le menu d'amorçage lui-même, et les modifications seront stockées comme variables UEFILoaderEntryDefault
etLoaderConfigTimeout
, remplaçant ces options. -
bootctl set default ""
etbootctl set-timeout ""
peuvent être utilisés pour nettoyer les variables UEFI, remplaçant les optionsdefault
ettimeout
, respectivement. - Si vous avez mis
timeout 0
, le menu d'amorçage peut être accédé en appuyant surEspace
. - Un fichier de configuration basique du chargeur d'amorçe est située dans
/usr/share/systemd/bootctl/loader.conf
. - Si le chargeur d'amorçe (pendant la selection de l'entrée) apparait déformé/utilise la mauvaise résolution, vous pouvez essayer de mettre le
console-mode
àauto]] (utilise des heuritiques pour selection la meilleure résolution),
keep
(garde la résolution fournie du firmware) ou2
(essaie de selectionner la première résolution non-standard UEFI)
Se souvenir de la dernière entrée
Depuis la version 251 ou plus tard de systemd, default
peut être modifiée en @saved
afin de se souvenir de la dernière entée choisie au démarrage. Ceci est utile lorsque nous dual bootons Windows et la mise à jour automatique surprise de Windows vous fera démarrer Linux.
esp/loader/loader.conf
default @saved ...Consulter {man
pour plus de détails.
Ajouter un chargeur
systemd-boot cherchera automatiquement pour un objet du menu d'amorçage dans esp/loader/entries/*.conf
et additionnellement dans boot/loader/entries/*.conf
, si vous utilisez #Installation depuis XBOOTLDR. Notez que les entrées dans esp
peuvent seulement utiliser des fichiers (ex. noyaux, initramfs, images, etc.) dans esp
. Similairement, les entrées dans boot
ne peuvent utiliser que des fichiers dans boot
.
.cmdline
intégré ignorent toutes les options/arguments de la ligne de commande passés à eux (soit en utilisant une entrée d'amorçage avec options
ou interactivement). Quand Secure Boot n'est pas activé, les options passées par la ligne de commande sont prioritaires face au .cmdline
intégré.Un example de fichier d'amorçage démarrant Arch depuis un volume en utilisant son UUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
est:
esp/loader/entries/arch.conf
title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw
esp/loader/entries/arch-fallback.conf
title Arch Linux (fallback initramfs) linux /vmlinuz-linux initrd /initramfs-linux-fallback.img options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw
Voir les Spécifications du Chargeur d'Amorçage pour des détails sur toutes les options de configuration.
systemd-boot regardera à chaque amorçage oour Windows Boot Manager à la position /efi/Microsoft/Boot/Bootmgfw.efi
, Apple macOS Boot Manager dans le firmware, le shell UEFI /shellx64.efi
et le Chargeur par defaut EFI (EFI Default Loader) /efi/boot/bootx64.efi
, ainsi que les fichiers noyau préparés specifiquement dans /efi/Linux
. Quand détectées, des entrées correspondantes nommées, respectivement, auto-windows
, auto-osx
, auto-efi-shell
et auto-efi-default
seront créées. Ces entrées ne requièrent pas de configuration manuelle du chargeur. En revanche, il ne detectera pas automatiquement d'autres applications EFI (contrairement à rEFInd), donc pour démarrer le noyau Linux, des configurations manuelles d'entrées devront être créées.
- Les entrées d'amorçage disponibles qui ont été configurées peuvent être listées avec la commande
bootctl list
. - Un exemple de fichier d'entrée est disponible à
/usr/share/systemd/bootctl/arch.conf
. - Les paramètres du noyeau pour des scénarios tels que LVM, LUKS, dm-crypt (Français) ou Btrfs peuvent être trouvés sur les pages pertinentes.
/boot/amd-ucode.img
ou /boon/intel-ucode.img
doivent être spécifiés dans un initrd
séparé et doit toujours être placé en 'premier, avant l'image initramfs principale.Shells UEFI ou autres applications EFI
Dans le cas où vous avez installé un Shell UEFI avec le paquet edk2-shell, systemd-boot détectera automatiquement une nouvelle entrée si le fichier EFI est placé dans esp/shellx64.efi
. Pour faire cela, un exemple d'une commande après avoir installé le paquet serait:
# cp /usr/share/edk2-shell/x64/Shell.efi /boot/shellx64.efi
Autrement, dans le cas où vous avez installé d'autres applications EFI dans l'ESP, vous pouvez utilisez les extraits de configuration suivants:
efi
est relative à la racine de votre partition EFI (ESP). Si votre EFI system partition (ESP) est montée à /boot
et que vos binaires resident à /boot/EFI/xx.efi
et /boot/yy.efi
, alors vous devriez spécifier les paramètres en tant que efi /EFI/xx.efi
et efi /yy.efi
respectivement.esp/loader/entries/fwupd.conf
title Firmware updater efi /EFI/tools/fwupdx64.efi
esp/loader/entries/gdisk.conf
title GPT fdisk (gdisk) efi /EFI/tools/gdisk_x64.efi
Memtest86+
Vous avez besoins d'installer memtest86+-efi pour que cela marche. Vous devez également signer le binaire EFI lorsque vous utilisez Secure Boot.
esp/loader/entries/memtest.conf
title Memtest86+ efi /memtest86+/memtest.efi
Netboot
systemd-boot peut charger en chaîne Netboot. Téléchargez le binaire EFI ipxe-arch.efi
et sa signature, vérifiez-le et placez-le comme proposé dans esp/EFI/arch_netboot/arch_netboot.efi
.
esp/loader/entries/arch_netboot.conf
title Arch Linux Netboot efi /EFI/arch_netboot/arch_netboot.efi
GRUB
systemd-boot peut charger en chaîne GRUB. La position du binaire grubx64.efi
est égale au --bootloader-id=
quand GRUB a été installé à l'ESP.
esp/loader/entries/grub.conf
title GRUB efi /EFI/GRUB/grubx64.efi
Amorçer d'un autre disque
systemd-boot ne peut pas lancer de binaires EFI depuis une partition autre que l'ESP d'où il a été lancé ou la partition XBOOTLDR sur le même disque, mais il peut diriger le Shell UEFI à le faire.
Premièrement, installez edk2-shell comme décrit ci-dessus. Dans le Shell UEFI, utilisez la commande map pour prendre note du 'Alias FS (ex. HDa6666a2, HD0b, FS1, ou BLK7) de la partition avec la PARTUUID correspondante.
Puis, utilisez la commande exit
pour re-amorçer dans Linux, où vous pouvez créer une nouvelle entrée pour éxécuter le programe EFI cible à travers le Shell UEFI:
esp/loader/entries/windows.conf
title Windows efi /shellx64.efi options -nointerrupt -nomap -noversion HD0b:EFI\Microsoft\Boot\Bootmgfw.efi
Assurez-vous que le chemin efi
correspond à l'endroit où le shellx64.efi
a été copié dans la partition esp. Notez également que le fichier EFI shellx64.efi
peut être déplacé quelque part d'autre pour éviter la création automatique d'entrée par systemd-boot.
Remplacez HD0b
avec l'alias FS noté précedemment.
- L'option
-nointerrupt
empêche l'interruption du programme EFI cible avecCtrl+C
. - L'option
-nomap -noversion
cache le message de bienvenue par defaut du Shell UEFI. - Pour que le Shell UEFI retourne automatiquement au chargeur d'amorçe si le programme cible EFI s'arrête (ex. à cause d'une erreur), ajoutez l'option
-exit
. - Vous pouvez également ajouter l'option
-noconsoleout
si il reste des sorties inutiles (de texte) dans le Shell UEFI.
Amorçer dans le setup du micrologiciel UEFI
systemd-boot créera automatiquement une entrée afin d'amorçer dans le setup du firmware UEFI (souvent appelé BIOS) si le firmware de votre appareil permet de redémarrer dans le BIOS depuis le Système d'Exploitation.
Supporter l'hibernation
Voir Suspend and hibernate.
Editeur de paramètres du Noyau avec une protection par mot de passe
Alternativement, vous pouvez installer systemd-boot-passwordAUR ce qui supporte des options basique de configuration de mot de passe
. Utilisez sbpctl generate
pour générer une valeur pour cette option.
Installez systemd-boot-password avec la commande suivante:
# sbpctl install esp
Avec un editeur activé vous serez demandé votre mot de passe avant que vous puissez modifier les paramètres du noyau.
Trucs et astuces
Vous pouvez utiliser t
et T
lorsque vous êtes dans le menu afin d'ajuster le timeout et e
pour modifier les paramètres du noyau pour ce démarrage. Appuyez sur h
pour voir une courte liste de raccourcis clavier utiles. Voir systemd-boot(7) § KEY BINDINGS pour une liste complète de raccourcis claviers lorsque vous êtes dans le menu d'amorçage.
Choix du prochain amorçage
Le gestionnaire d'amorçage est intégré avec la commande systemctl, vous permettant de choisir quelle option vous voulez amorçer après un redémarrage. Par exemple, supposons que vous avez construit un noyau customisé et créé un fichier d'entrée dans esp/loader/entries/arch-custom.conf
pour amorçer dans celui-ci, vous pouvez juste lancer:
$ systemctl reboot --boot-loader-entry=arch-custom.conf
et votre système redémarrera dans cette entrée, gardant l'option par défaut intacte pour les amorçages qui suivront. Pour voir une liste d'entrées, utilisez l'option --boot-loader-entry=help
.
Si vous voulez amorçer dirèctement dans le firmware de votre carte mère directement, alors, vous pouvez utiliser cette commmande:
$ systemctl reboot --firmware-setup
Images Noyau Unifiées
Les Images Noyau Unifiées (INUs) dans esp/EFI/Linux/
sont automatiquement ressourcées par systemd-boot, et ne nécéssitent pas une nouvelle entrée dans esp/loader/entries
. (Notez que les images noyau unifiées doivent avoir une extension .efi
afin d'être identifiées par systemd-boot).
esp/loader/enties
seront amorçées en premier si aucun default
n'est déclaré dans esp/loader/loader.conf
. Supprimez ces entrées, ou définissez celle par defaut avec le nom complet du fichier, ex. default arch-linux.efi
Grml sur l'ESP
PKGBUILD
est disponible: grml-systemd-bootAUR.Grml est un live system léger avec une collection de logiciels pour l'administration et le sauvetage système.
Afin d'installer Grml sur l'ESP, nous devons copier le noyau vmlinuz
, l'initramfs initrd.img
, et l'image squashé grml64-small.squashfs
depuis le fichier ISO vers l'ESP. Pour faire cela, téléchargez grml64-small.iso et montez le fichier (le point de montage est dénoté mnt); le noyau et initramfs sont dans mnt/boot/grml64small/
, et l'image squashé est située dans mnt/live/grml64-small
.
Ensuite, créez un repertoire pour Grml dans votre ESP,
# mkdir -p esp/grml
et copiez les fichiers mentionnés ci-dessus dedans::
# cp mnt/boot/grml64small/vmlinuz esp/grml # cp mnt/boot/grml64small/initrd.img esp/grml # cp mnt/live/grml64-small/grml64-small.squashfs esp/grml
Dans la dernière étape, créez une entée pour le chargeur systemd-boot: Dans esp/loader/entries
créez un fichier grml.conf
avec le contenu suivant:
esp/loader/entries/grml.conf
title Grml Live Linux linux /grml/vmlinuz initrd /grml/initrd.img options apm=power-off boot=live live-media-path=/grml/ nomce net.ifnames=0
Pour un survol des options d'amorçage, consultez les cheatcode for Grml.
Archiso sur l'ESP
PKGBUILD
est disponible: archiso-systemd-bootAUR.Avec Grml, il est possible d'utiliser l'ISO d'Arch Linux. Pour cela, nous devons copier le noyau vmlinuz-linux
, l'initramfs initramfs-linux.img
, et l'image squashfs airootfs.sfs
depuis le fichier ISO vers la partition système EFI (ESP).
Premièrement, téléchargez archlinux-YYYY.MM.DD-x86_64.iso.
Puis, créez un répertoire pour l'archiso dans votre ESP:
# mkdir -p esp/EFI/archiso
Extrayez le contenu du répertoire arch
dans celui-ci:
# bsdtar -v -x --no-same-permissions --strip-components 1 -f archlinux-YYYY.MM.DD-x86_64.iso -C esp/EFI/archiso arch
Dans la dernière étape, créez une entrée d'amorçage pour le chargeur systemd-boot: Dans esp/loader/entries
créez un fichier arch-rescue.conf
avec le contenu suivant:
esp/loader/entries/arch-rescue.conf
title Arch Linux (rescue system) linux /EFI/archiso/boot/x86_64/vmlinuz-linux initrd /EFI/archiso/boot/x86_64/initramfs-linux.img options repertoireDeBaseDuISO=/EFI/archiso rechercheDuNomDuFichierDuISO=/EFI/archiso/boot/x86_64/vmlinuz-linux
Pour un aperçu des options d'amorçage disponibles, consultez les README.bootparams pour le mkinitcpio-archiso.
systemd-boot sur des systèmes BIOS
Si vous avez besoins d'un chargeur d'amorçe pour un système BIOS qui suit les spécifications du chargeur d'amorçe, alors systemd-boot peut être mis en service sur des systèmes BIOS. Le chageur d'amorçe Clover supporte l'amorçage depuis un système BIOS et fournit un environment UEFI émulé.
Dépannage
systemd-boot ne montre pas mon entrée d'amorçage
Ceci peut être causé par une variété de problèmes avec le fichier de configuration, tels que le chemin du noyau qui a été spécifié incorrectement. Pour vérifier cela, éxécutez:
# bootctl
Installation après amorçage en mode BIOS
Si amorçé dans le mode BIOS, vous pouvez toujours installer systemd-boot, en revanche, ce processus vous fait dire au micrologiciel de lancer le fichier EFI de systemd-boot durant l'amorçage.
- si vous avez un Shell UEFI fonctionnel à un autre endroit
- si votre interface micrologiciel vous offre une manière propre de rajouter le fichier EFI qui a besoins d'être chargé à l'amorçage
- quelques micrologiciels peuvent utiliser
esp/efi/boot/BOOTX64.efi
par défaut si il n'y a aucune autre entrée définiée dans l'UEFI.
Si voui pouvez le faire, l'installation est plus facile: allez dans votre Shell UEFI ou l'interface de configuration de votre micrologiciel et changez le fichier EFI par defaut vers esp/EFI/systemd/systemd-bootx64.efi
.
Entrée manuelle avec efibootmgr
Si la commande bootctl install
entraîne une erreur, vous pouvez créer l'entrée d'amorçage UEFI manuellement en utilisant efibootmgr:
# efibootmgr --create --disk /dev/sdX --part Y --loader '\EFI\systemd\systemd-bootx64.efi' --label "Linux Boot Manager" --unicode
où /dev/sdXY
est l'ESP.
\
) comme séparateurEntrée manuelle en utilisant bcdedit depuis Windows
Si pour n'importe quelle raison vous avez besoins de créer une entrée d'amorçage UEFI depuis Windows, vous pouvez utiliser les commandes suivantes depuis un terminal Administrateur:
> bcdedit /copy {bootmgr} /d "Linux Boot Manager" > bcdedit /set {guid} path \EFI\systemd\systemd-bootx64.efi
Remplacez guid
avec l'id rapportée par la première commande. Vous pouvez également la mettre en tant qu'entrée par défaut en éxécutant:
> bcdedit /default {guid}
Voir UEFI#Windows changes boot order.
Ajouter le support pour le débloquage TPM de Windows BitLocker =
Pour empêcher BitLocker de demander la clée de récupération, ajoutez ce qui suit à loader.conf:
esp/loader/loader.conf
reboot-for-bitlocker yes
Cela ajoutera la variable UEFI BootNext, où Windows Boot Manager est chargé dans que BitLocker demande la clée de récupération. Ce changement doit être fait qu'une seule fois, et systemd-boot reste comme chargeur d'amorçe par défaut. Il n'y a pas besoins de spécifier Windows comme entrée si cela a déjà été détecté automatiquement.
Ceci est une fonctionnalité expérimentale, veuillez consulter loader.conf(5).