Systemd-boot
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.