Systemd-boot

De Wiki doc

Systemd-boot, anciennement Gummiboot, est un chargeur d'amorçage UEFI intégré à Systemd. Il a l'avantage de ne pas être une usine à gaz car il s'installe via une simple commande et se configure avec de bêtes fichiers textes comme le bon vieux Grub1.

ATTENTION

Systemd-boot n'est compatible qu'avec des micrologiciels UEFI. Il est cependant tout à fait possible de l'installer depuis un BIOS (seul sont démarrage exigera un UEFI sur la machine cible).

Prés-requis:

  • La machine qui sert à installer le chargeur d'amorçage doit avoir installé Systemd
  • Avoir installé le paquet dosfstools

Le périphérique servant pour cette documentation est une clé USB de 8go en /dev/sdb.

Partitionnement

Nous allons utiliser la même configuration que dans la documentation sur la page Installation archlinux - UEFI 64bits.

Écrasement du MBR

dd if=/dev/zero of=/dev/sdb bs=512 count=1 && sync

Création du schéma de partitionnement

 cfdisk /dev/sdb

Suivre les étapes suivantes dans l’utilitaire :

  • Créer une partition de 50 Mo minimum (256 Mo conseillé)
    • Sélectionner le "Type" "EFI System"
  • Créer une partition pour le SWAP si vous pensez que c'est nécessaire
  • Créer une autre partition contenant le reste de l’espace disponible pour le système
  • Écrire les modifications avec l’option "Write" et confirmer par "yes" avant de quitter

INFORMATION

On va partir du principe que la partition SWAP a été créée. Ce qui donne sdb2 pour le SWAP et sdb3 pour le disque système.

Formater l'EFI System Partition (ESP)

mkfs.vfat /dev/sdb1

Note: mkfs.vfat est une commande du paquet dosfstools.

Créer le SWAP

mkswap /dev/sdb2

Activer le SWAP

swapon /dev/sdb2

Formater la partition système

mkfs.ext4 /dev/sdb3

Préparation du système invité

Monter la partition système

mount /dev/sdb3 /mnt

Installation du système invité

À ce stade vous pouvez installer votre système invité comme bon vous sembles. Vous pouvez copier/coller le contenu d'un disque existant, réaliser un debootstrap, copier le contenu d'un SquashFS... Pour ma part je choisi cette dernière option pour des raisons de simplicité de démonstration. Référez-vous à la documentation dédié ou copier le contenu d'un volume de LiveCD pour réaliser les étapes suivantes.

Note: mon SquashFS s'appel "stretch-pxe.squashfs".

Créer un point de montage

mkdir /tmp/squashfs

Monter l'image

mount /root/stretch-pxe.squashfs /tmp/squashfs

En copier le contenu

cp -rav /tmp/squashfs/* /mnt/

Donner accès au /dev de l'hôte

mount --bind /dev /mnt/dev

Note: cette étape est nécessaire à la commande d'installation du chargeur d'amorçage.

Chrooter le système invité

chroot /mnt/

[chroot] Monter les systèmes de fichiers spéciaux

mount none -t proc /proc
mount none -t sysfs /sys

Installation du chargeur d'amorçage

[chroot] Création du point de montage /boot

mkdir /boot

[chroot] Montage de la partition ESP

mount /dev/sdb1 /boot

[chroot] Installation du chargeur d'amorçage

bootctl install

Note: par défaut, le chemin d'installation est /dev/boot. Pour le changer, il faut utiliser le paramètre --path=.

Configuration du chargeur d'amorçage

[chroot] Création d'une entrée par défaut dans le menu

vim /boot/loader/loader.conf
default stretch-pxe
timeout 5

[chroot] Création de cette entrée dans les entrées disponibles

vim /boot/loader/entries/stretch-pxe.conf
title Stretch-pxe
linux /vmlinuz-2
initrd /initrd.img-2
options rootfstype=ext4 root=UUID=2d58b9d4-637a-45e5-8f51-56971d33bdc1 rw net.ifnames=0

Note: Chaque entrée est matérialisée par un fichier en .conf dans le répertoire /boot/loader/entries/.

ATTENTION

N'oubliez pas de modifier l'UUID de la partition / de votre clé USB trouvable via la commande blkid. N'oubliez pas non plus de copier un noyau et un initrd à l'emplacement indiqué dans ce fichier (le / étant le /boot à votre niveau). Ces éléments sont récupérables dans votre propre distribution ou via la procédure d'installation avec un deboostrap comme expliqué dans la documentation sur Squashfs.

Finalisation de la préparation de l'invité

[chroot] démontage des systèmes de fichiers de l'invité

cd /
umount /boot /dev /sys /proc

[chroot] Purge de l'historique et sortie du chroot

rm /root/.bash_history
history -c
<ctrl+d>

Désactivation du SWAP

swapoff /dev/sdb2

Démontage du système de fichier racine de la clé USB

umount /dev/sdb3

Synchronisation des périphériques de type block

sync

Vous pouvez débrancher votre clé USB et procéder au test.

Source