Systemd-boot est un chargeur de démarrage Linux alternatif qui est alimenté par le système de démarrage Systemd.
Il possède des dizaines de fonctionnalités modernes, dont un démarrage plus rapide, un meilleur support de l’EFI, et bien plus encore, ce qui en fait un excellent choix pour Linux.
La configuration de Systemd-boot sur Linux est un processus délicat, aussi avant de commencer, nous vous recommandons vivement de sauvegarder vos données critiques.
Dans ce tutoriel, je vous guide pour installer System-Boot sur votre Linux.
Je vous donne aussi les commandes basiques de bootctl qui permet de gérer le démarrage system-boot.
Qu’est-ce que Systemd-Boot
Systemd-boot (anciennement connu sous le nom de Gummiboot) est un chargeur d’amorçage simple et léger utilisé sur les systèmes Linux qui utilisent l’UEFI (Unified Extensible Firmware Interface). Il fait partie du projet systemd, qui est un ensemble de composants logiciels pour les systèmes Linux visant à unifier et simplifier le processus de gestion du système et du démarrage.
- Simplicité : systemd-boot est plus simple à configurer et gérer comparé à des gestionnaires plus complexes comme GRUB, surtout pour des systèmes simples ou des environnements de démarrage multiples.
- Compatibilité UEFI : systemd-boot est conçu spécifiquement pour UEFI, ce qui le rend idéal pour les systèmes modernes utilisant ce firmware.
- Vitesse et Efficacité : systemd-boot est léger et rapide, avec une approche minimaliste qui convient bien aux systèmes qui n’ont pas besoin de nombreuses options de configuration de démarrage.
Comment installer system-boot (Linux Boot Manager)
Tout d’abord, installez les paquets en utilisant le système de paquets de votre distribution Linux.
Avec APT pour les distributions Linux Debian, Ubuntu, Linux Mint et autres :
sudo apt install systemd-boot
Puis l’utilitaire exécute bootctl qui va créer les entrées EFI et copier les firmwares EFI.
Created "/boot/efi/EFI/systemd".
Created "/boot/efi/loader".
Created "/boot/efi/loader/entries".
Created "/boot/efi/EFI/Linux".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/efi/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/efi/EFI/BOOT/BOOTX64.EFI".
Created "/boot/efi/5f7e795b65894757b361529cc0059820".
Enfin une nouvelle entrée de démarrage EFI est ajoutée :
Created EFI boot entry "Linux Boot Manager".
La commande utilisée pour cela est la suivante :
sudo bootctl --make-entry-directory=yes install
Lorsque l’utilitaire ne trouve pas la partition EFI, vous obtenez ce message.
Cela peut bien entendu se produire si le PC est configuré en MBR et pas en UEFI.
Couln't find EFI system partition. It is recommanded to mount it to /boot or /efi.
Au cas où les fichiers EFI doivent être placés dans un autre emplacement, utilisez l’option –path en spécifiant le répertoire.
Par exemple :
sudo bootctl --path=/boot2 install
Comment remplacer GRUB par systemd-boot
Lorsque vous installez systemd-boot par APT ce dernier créé les entrées de démarrage, donc vous n’avez pas à le faire manuellement.
Toutefois, voici les explications pour y parvenir.
Configurer les entrées de démarrage d’un noyau Linux
Vérifiez le contenu de /boot/efi/loader/loader.conf :
timeout 3
console-mode keep
default 1c61ae7b096b4b2987be4ad54f05f13c-*
- timeout — délai d’affichage du menu de démarrage. Cette entrée est facultative
- console-mode — Spécifie le mode de résolution de la console UEFI utilisée pendant le démarrage du système. Il détermine comment le texte est affiché à l’écran pendant le processus de démarrage, en choisissant parmi plusieurs résolutions disponibles pour la sortie de la console. Cette entrée est facultative. Voici les modes possibles :
- 0 – Mode par défaut, souvent une basse résolution, principalement utilisé pour une compatibilité maximale.
- 1, 2, 3, etc. : Modes de résolution plus élevés, le chiffre représentant des résolutions croissantes (ex. : 80×25, 100×31, etc.). La numérotation exacte des modes peut différer selon le matériel.
- default — charge le fichier de démarrage spécifié se trouvant dans boot/efi/loader/entries/
Voici un exemple de la configuration de démarrage dans /boot/efi/loader/entries/ :
title Ubuntu
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
options root=UUID=<UUID of root partition>
- title — est le titre de l’entrée
- linux — donne le chemin du noyau Linux. Le fameux fichier vmzlinux
- initrd — indique le chemin du fichier de ramdisk
- options — fournit l’UUID de la partition / de Linux. Utilisez la commande lsblk -f ou la commande blkid permet de l’obtenir. Dans cette entrée, vous pouvez spécifier des options de démarrage (voir plus bas).
Voici un exemple de fichier de configuration avec des entrées plus complexes.
title Ubuntu 24.04.1 LTS
version 6.5.0-27-generic
machine-id 1c61ae7b096b4b2987be4ad54f05f13c
sort-key ubuntu
options root=UUID=37f016e9-3a6c-4a80-9654-c7c807dcd994 ro quiet splash resume=UUID=0d10f849-75ac-40b0-a4a6-900407202120 nouveau.blacklist=1 rd.blacklist=nouveau vt.handoff=7 nvidia_drm.modeset=1 nvidia_drm.fbdev=1 systemd.machine_id=1c61ae7b096b4b2987be4ad54f05f13c
linux /1c61ae7b096b4b2987be4ad54f05f13c/6.5.0-27-generic/linux
initrd /1c61ae7b096b4b2987be4ad54f05f13c/6.5.0-27-generic/initrd.img-6.5.0-27-generic
systemd-boot lit les configurations et les entrées de démarrage directement depuis les fichiers situés dans le répertoire /boot/efi/loader/entries/
à chaque démarrage de l’ordinateur. Les fichiers de configuration sont interprétés en temps réel à chaque démarrage, donc toute modification dans les fichiers d’entrée est automatiquement appliquée au prochain redémarrage du système.
Ainsi, contrairement à GRUB, lorsque vous modifiez la configuration de démarrage ou mettez à jour les entrées de démarrage, il n’est pas nécessaire d’utiliser une commande “update”.
Configurer un dual-boot Windows
Si vous avez un autre OS en Dual-Boot, par exemple, Windows, vous devez créer une entrée de démarrage spécifique.
- Tout d’abord, installez le paquet suivant. Cela permet d’obtenir
shellx64.efi
est un fichier exécutable qui permet d’obtenir un environnement “UEFI Shell”.
sudo apt install efi-shell-x64
- Ensuite cuis copiez le fichier shellx64.efi
sudo cp /usr/share/efi-shell-x64/shellx64.efi /boot/shellx64.efi
- Ensuite créez le fichier d’entrée windows :
sudo nano /boot/efi/loader/entries/windows.conf
- Ajoutez le contenu suivant :
title Windows
efi /shellx64.efi
options -nointerrupt -nomap -noversion HD0b:EFI\Microsoft\Boot\Bootmgfw.efi
- Vous devez modifier le FS ALIAS HD0b correspond à celui de votre partition EFI chez vous. Pour l’obtenir, il faut booter sur le Shell EFI et utilisez la commande map :
Vérifier l’état du gestionnaire de démarrage
Afficher l’état du gestionnaire de démarrage :
sudo bootctl status
Je rappelle qu’il existe aussi cette commande pour afficher les bootloader et configuration de démarrage :
efibootmgr
Testez le démarrage de votre Linux.
Voici un exemple de menu de démarrage systemd-boot :
Supprimer GRUB
Enfin, si tout fonctionne, vous pouvez supprimer GRUB de votre système, utilisez les commandes suivantes :
sudo apt purge --allow-remove-essential grub2-common grub-pc-bin grub-pc grub-gfxpayload-lists grub-efi-amd64-bin grub-efi-amd64-signed grub-common os-prober shim-signed
sudo apt-get autoremove --purge
sudo rm -rf /boot/grub/
sudo rm -rf /boot/efi/EFI/ubuntu
Voir aussi ce tutoriel : https://blobfolio.com/2018/replace-grub2-with-systemd-boot-on-ubuntu-18-04
Comment mettre à jour systemd-boot pour un nouveau kernel
Là aussi dans Ubuntu, le script de mise à jour du noyau Linux est installé.
Donc vous n’avez rien à faire, lorsqu’un nouveau kernel est installé, systemd-boot sera automatiquement mis à jour.
Au cas où, voici le script à ajouter :
- Créez le fichier suivant /etc/kernel/postinst.d/zz-update-systemd-boot avec le contenu suivant :
#!/bin/sh
set -e
test -x /usr/bin/bootctl || exit 0
bootctl is-installed --quiet || exit 0
echo "Installing kernel version $1 in systemd-boot..."
kernel-install add "$1" "$2"
- Donnez les bonnes permissions avec les commandes chown et chmod :
sudo chown root: /etc/kernel/postinst.d/zz-update-systemd-boot
sudo chmod 0755 /etc/kernel/postinst.d/zz-update-systemd-boot
- Enfin mettez à jour la configuration :
cd /etc/kernel/postrm.d/ && ln -s ../postinst.d/zz-update-systemd-boot zz-update-systemd-boot
[ -d "/etc/initramfs/post-update.d" ] || mkdir -p /etc/initramfs/post-update.d
cd /etc/initramfs/post-update.d/ && ln -s ../../kernel/postinst.d/zz-update-systemd-boot zz-update-systemd-boot
Mettre à jour systemd-boot
Pour mettre à jour de systemd-boot, utilisez la commande suivante :
bootctl update
Cela met à jour toutes les versions installées de systemd-boot, si la version disponible est plus récente que la version installée dans la partition système EFI. Cela inclut également le chargeur EFI par défaut/de secours dans ESP/EFI/BOOT/BOOT*.EFI. Le chargeur de démarrage est alors ajouté à la fin de la liste des chargeurs de démarrage du microprogramme s’il est manquant.
Comment désinstaller systemd-boot
Utilisez la commande suivante pour supprimer systemd-boot de votre Linux :
bootctl remove
Cela supprime systemd-boot de la partition EFI.
Si vous avez supprimé GRUB, vous pouvez le réinstaller comme ceci :
sudo su
apt-get install --reinstall grub
grub-install /dev/sda
update-grub
Liens
- Qu’est-ce qu’un chargeur de démarrage (Boot Loader)
- Comment Linux démarre sur un PC UEFI : la séquence et étapes complètes
- GRUB : Utiliser le mode rescue shell pour corriger les erreurs de démarrage Linux
- Dual-boot Windows et Linux : changer/supprimer et ordre des entrées du démarrage
- Linux : mesurer le temps de démarrage
L’article Comment installer Systemd-boot sur Linux est apparu en premier sur malekal.com.
0 Commentaires