9.1 KiB
Description de systemd
et comment l'utiliser?
- Résumé succint (et partiel) des tâches effectuées par un utilitaire
systemd
- Rappel : processus de démarrage d'un ordinateur systemd/GNU/Linux
- Configuration
- Systemd : aspect pratique
- Réseau
- Journalisation
- Administration à distance
-- mode: org; org-hide-emphasis-markers: t; --
Le présent document est destiné aux proptiétaires de VMs au Cr@ns, mais plus
généralement à nos membres qui souhaitent tirer le plus de systemd
.
systemd
est une suite logicielle qui a pour objectif de fournir une interface
simple et unifiée à de nombreuses fonctionnalités du noyau Linux. En effet, les
APIs Linux sont nombreuses et les utilisations multiples des mêmes interfaces
peut être redondant.
Par exemple, considérons la tâche "lancer une backup" et supposons que l'on veuille (1) que la commande soit lancée un jour après que la dernière itération se soit terminée, et (2) éviter qu'une nouvelle backup soit lancée si l'ancienne n'est pas encore terminée. Systemd permet de paramétrer cela en quelques lignes, là où d'autres seraient tentés de faire un cron, dont la tâche associés commence par effectuer les vérications nécessaires au lancement conditionel.
systemd
fournit un langage de configuration unifié et permet de paramétrer son
système de manière déclarative, ce qui mène à des configurations plus sûres,
systématiques et dont les sémantiques sont claires.
Résumé succint (et partiel) des tâches effectuées par un utilitaire systemd
Tâche | Utilitaire disponible | Optionel (pour un système basé sur systemd ) |
---|---|---|
Boot loader | systemd-boot |
Oui |
Init système (initrd) | systemd |
Oui |
Init système | systemd |
Non |
Gestionaire de service | systemd |
Non |
DNS récursif | systemd-resolvd |
Oui |
Gestion des $HOME |
systemd-homed | Oui |
Montage de disques | systemd-fstab-generator |
Pas à ma connaissance |
systemd-gpt-auto-generator |
Oui | |
systemd-fsck-generator |
Peut-être | |
Chiffrement de disques | systemd-cryptsetup |
Oui |
systemd-cryptenroll |
Oui | |
systemd-crypttab-generator |
||
Chiffrement de secrets | systemd-creds |
Oui |
Gestion de l'horloge | systemd-timedated |
Oui |
systemd-timesyncd |
Oui | |
Nom d'hôte | systemd-hostnamed |
Je ne sais pas |
Critiques communes
Cf. la FAQ officielle du projet.
- Il est dit que
sd
fait trop de choses ! Ah bon ? Pourtant,systemd
n'apparait pas si souvent dans le tableau ci-dessus. - Il est dit que
sd
est une dictature ! Je ne contribue pas, mais suis les messages postés sur les mailing list et parfois les issues du GitHub. Je trouve la communauté très accueillante.
Évolution de systemd
systemd
évolue rapidement, pour permettre une gestion toujours plus fine des
services, VMs, … Certaines mises à jour de systemd
retirent des
fonctionnalités (e.g. /usr
séparé ou cgroupsv1
). Lorsqu'il y a retrait d'une
fonctionnalité, cela est au annoncé à l'avance, pour que chacun·e ait le temps
de s'y préparer. Pour les deux exemples susmentionnés, cela a été annoncé plus
d'un an à l'avance.
Rappel : processus de démarrage d'un ordinateur systemd/GNU/Linux
Ce paragraphe présente la manière dont les machines démarrent. Cette présentation se veut rapide, mais suffisante pour que chacun·e puisse comprendre à quelle étape de ce processus les disques d'un ordinateur sont déchiffrés, montés, etc.
Note : Je me concentrerai que sur les systèmes (U)EFI utilisant une table de
partitions gpt
(i.e. le disque sur lequel se trouvent les fichiers de démarrage
contient un partitionnement gpt
).
Procédé de démarrage :
- le logiciel de la carte mère est le premier élément à démarrer. Il charge vos paramètres (e.g. secure boot activé ou non) ;
- le logiciel cherche à démarrer ou bien votre système d'exploitation directement, ou bien un système d'amorçage (bootloader en, anglais) ;
-
supposons qu'il lance
systemd-boot
.systemd-boot
va constituer un menu avec- une ou plusieurs entrées pour lancer le(s) système(s) d'exploitation disponible(s) sur votre machine (ou en réseau),
- une entrée pour redémarrer dans le panneau de configuration du logiciel UEFI,
- une entrée pour redémarrer ;
-
Supposons que l'utilisateurice (ou
systemd-boot
) choisisse un système soussystemd
.systemd
, qui est actuellement lancé dans un petit environnement (appelé initrd) va chercher à initialiser le système, noramment en :- déchiffrant la partition racine du système (si nécessaire),
- montant la partition racine du sysème,
- pivotant sur le système final dont
systemd
vient de monter/
.
- Nous sommes sur la bonne voie : le système de fichier principal est monté.
systemd
monte les partitions/disques/resources réseaux supplémentaires requis, met en place les sous-systèmes nécessaires (journalisation, réseau, …). L'un des derniers services démarré permet aux utilisateurices de s'authentifier. Le sysème a fini de démarrer.
TODO Configuration
TODO
Unité de configuration (man systemd.unit
)
TODO
Service (man systemd.service
)
TODO
Cibles (man systemd.target
)
TODO
Minuteurs (man systemd.timer
)
TODO Systemd : aspect pratique
TODO Chiffrement (mots de passe, recovery key, FIDO2 ou TMP2)
L'utilitaire principal pour gérer le chiffrement de disques est
systemd-cryptenroll
.
TODO Reconnaissance automatique de partitions
Lors de l'installation d'un système d'exploitation (avec UEFI), il y a au moins deux partitions :
- une ESP (EFI System Partition), laquelle stocke les images de démarrage (dont l'éventuel boot loader) ;
- une partition racine (root, ou
/
), laquelle correspond au chemin/
pour le système. C'est ici que sont généralement stockées vos applications, la configuration système, etc.
Pour systemd
, touts les points de montage sont des unités de montage et le
déchiffrement des disques est effectué via des unités de services. Ces unités
sont générées (Cf. plus bas).
Lors du démarrage, il faut mettre le système de fichiers en place, i.e. monter les disques. Lors de l'installation du système d'exploitation, deux choix s'offrent à vous :
- OU BIEN Décrire les blocks à déchiffrer dans
/etc/crypttab
(crypt table) et les points de montage dans/etc/fstab
(file systems table). Ces fichiers seront inclus dans l'image de démarrage (qui est souvent appellée initrd ou initramfs), afin quesystemd
sache quels disques déchiffrer et monter (et comment). -
OU BIEN Indiquer le type de chaque partition ("X est
/
", "Y est/boot
", "Z est/home
", etc.). Si tel est le cas, il n'est plus nécessaire d'inclure les partitions concernées dans/etc/fstab
. Note : Si vous utilisez LUKS2 pour chiffrer vos disques, il n'est pas non plus nécessaire d'indiquer ces éléments dans/etc/crypttab
.Exemple : Partition
/home
, troisième partition du disque/dev/nvme0n1
. Il suffit :-
de changer le type de partition de
/dev/nvme0n1p3
:fdisk /dev/nvme0n1 t # change le type de partition 3 # numéro de la partition à mettre à jour home # (ou 43) abbréviation pour "933ac7e1-2eb4-4f13-b844-0e14e2aef915" w # écrit les changements à la table de partitions
- retirer la ligne correspondant à
/home
dans/etc/fstab
(et si la partition est chiffrée, de/etc/crypttab
aussi), - régénrer les images de démarrage,
- redémarrer et tester.
Note : se référer à
man systemd-gpt-auto-generator(8)
pour une liste complète des tagsgpt
reconnus parsystemd
. -