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.

Affichage bootclt

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

les partitions

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.