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 <source lang="bash" inline>dosfstools</source>

Le périphérique servant pour cette documentation est une clé USB de 8go en <source lang="bash" inline>/dev/sdb</source>.

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: <source lang="bash" inline>mkfs.vfat</source> est une commande du paquet <source lang="bash" inline>dosfstools</source>.

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 <source lang="bash" inline>/dev/boot</source>. Pour le changer, il faut utiliser le paramètre <source lang="bash" inline>--path=</source>.

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 <source lang="bash" inline>/boot/loader/entries/</source>.

ATTENTION

{{{1}}}

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