Système immuable : pourquoi Systemd
Publié le 22-09-2022 à 12:19:42 ‐ Lecture 3 min
Systemd est une suite logicielle fournit une gamme de composants système.
Dans les fonctionnalités, toutes une série sont prévues pour les images immuables :
- données systèmes en lecture seule (notamment pour les machines physiques)
- séparation claire donnée système/donnée de configuration
- approvisionnement géré
- pas de problématique réseau
Le projet est particulière adapté à nos besoins.
Le gestionnaire de démarrage
Voici quelques raisons pour laquelle nous utilisons systemd-boot :
- il est beaucoup plus petit que grub (en terme de dépendance notamment)
- il est rapide
- comme souvent avec les outils systemd, la sortie des commandes est concise et clair
- il est possible de démarrer facilement sur une autre entrée du menu sans avoir d'accès à la console
Le gestionnaire de démarrage n'est pas utile pour les conteneurs.
Installation de systemd-boot
Pour installer systemd-boot il faut déjà que la machine démarre en mode EFI et que la partition EFI System Partition (ESP) soit créé.
Une fois ces contraintes respectées il suffit de faire :
# bootctl install
Pour vérifier la bonne installation de systemd-boot, il suffit de taper la commande :
# bootctl
et de vérifier que tout est bien au vert.
Démarrage sur une entrée précise
Pour redémarrer sur une entrée spécifique commençons par lister les entrées :
# bootctl list
Et récupérons l'ID voulu pour redémarrer sur cette entrée :
# systemctl reboot --boot-loader-entry=fedora.conf
Mode volatile
Pour le moment, l'ensemble du disque système est disponible. Comme préciser précédement, nous ne voulons conserver du disque système que /usr.
Nous allons utiliser systemd-volatile pour cela.
Le partitionnement
Montage du disque de configuration personnalisé
Dans un système de conteneur c'est simple. Il suffit de définir un répertoire en lecture seule. Par contre pour un système immuable, c'est plus difficile.
Le disque de configuration personnalisé doit être monté dans /usr/local/lib.
Le choix du répertoire /usr/local/lib permet de changer le comportement des units systemd installés dans le disque système et permet de rajouter de nouvelles units.
Pour que tout fonctionne correctement, il faut monter ce disque le plus tôt possible au démarrage de la machine.
C'est donc l'initrd qui a se rôle.
Partitionnement du disque de données
Le disque de données est un disque vide (avec éventuellement un label GPT).
Le partitionnement est géré par systemd-repart. Le formation des partitions est géré par systemd-makefs. Le montage des partitions est réalisé par systemd-mount.