outils: logiciels: systemd.
* outils/logiciels/systemd.org: Deleted file. * outils/logiciels/systemd.md: New file. skeleton of the documentation file.texinfo
parent
07f4647637
commit
4afb773287
|
@ -0,0 +1,64 @@
|
||||||
|
# Systemd
|
||||||
|
|
||||||
|
Systemd est une suite logiciel pour systèmes GNU/Linux. Cette suite logiciel
|
||||||
|
fournit de nombreuses fonctionnalités, notamment pour configurer son OS et
|
||||||
|
suivre les *daemon*\ s actifs et leurs journaux.
|
||||||
|
|
||||||
|
Ce document décrit *certaines* fonctionnalités de Systemd bien choisies,
|
||||||
|
lesquelles sont jugées intéressantes pour l'administration système ou pour
|
||||||
|
utilisateurices. Il sera sans doute découpé en plusieurs morceaux s'il devient
|
||||||
|
trop long.
|
||||||
|
|
||||||
|
|
||||||
|
## Unités de configuration: un format unifiant.
|
||||||
|
|
||||||
|
### Services.
|
||||||
|
|
||||||
|
### Minuteurs.
|
||||||
|
|
||||||
|
### (Auto)mount.
|
||||||
|
|
||||||
|
|
||||||
|
## Configuration Réseau.
|
||||||
|
|
||||||
|
### Obtenir des adresses IPs.
|
||||||
|
|
||||||
|
### Configuration DNS (récursif).
|
||||||
|
|
||||||
|
|
||||||
|
## Journalisation.
|
||||||
|
|
||||||
|
### Lecture des journaux: les bases.
|
||||||
|
|
||||||
|
### Espaces de noms.
|
||||||
|
|
||||||
|
### Partage de journaux entre machines.
|
||||||
|
|
||||||
|
|
||||||
|
## Aspect pratique (pour utilisateurices)
|
||||||
|
|
||||||
|
### Chiffrement de disque.
|
||||||
|
|
||||||
|
### Chargeur d'amorçage.
|
||||||
|
|
||||||
|
|
||||||
|
## Conteneurisation et virtualisation.
|
||||||
|
|
||||||
|
### Conteneurisation.
|
||||||
|
|
||||||
|
### Virtualisation.
|
||||||
|
|
||||||
|
|
||||||
|
## Gestion des secrets.
|
||||||
|
|
||||||
|
|
||||||
|
## Trucs et astuces.
|
||||||
|
|
||||||
|
### Systèmes dynamiques: gestion des erreurs dans les services.
|
||||||
|
|
||||||
|
### Administration à distance.
|
||||||
|
|
||||||
|
<!-- LocalWords: IPs virtualisation utilisateurices Journalisation daemon
|
||||||
|
<!-- LocalWords: Systemd Linux
|
||||||
|
-->
|
||||||
|
-->
|
|
@ -1,198 +0,0 @@
|
||||||
-*- mode: org; org-hide-emphasis-markers: t; -*-
|
|
||||||
|
|
||||||
#+TITLE: Description de ~systemd~ et comment l'utiliser?
|
|
||||||
#+AUTHOR: Des nounous quelconques.
|
|
||||||
#+EMAIL: contact@crans.org
|
|
||||||
#+SEQ_TODO: TODO | in_progress | DONE
|
|
||||||
#+DESCRIPTION: Pfiou que c'est fastidieux d'apprendre à parler au monde entier.
|
|
||||||
#+INSTITUTE: Cr@ns
|
|
||||||
#+LANGUAGE: fr
|
|
||||||
#+STARTUP: overview
|
|
||||||
|
|
||||||
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 [[https://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions/][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 :
|
|
||||||
|
|
||||||
1. 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) ;
|
|
||||||
|
|
||||||
2. le logiciel cherche à démarrer ou bien votre système d'exploitation
|
|
||||||
directement, ou bien un /système d'amorçage/ (/bootloader/ en, anglais) ;
|
|
||||||
|
|
||||||
3. 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 ;
|
|
||||||
|
|
||||||
4. Supposons que l'utilisateurice (ou ~systemd-boot~) choisisse un système sous
|
|
||||||
~systemd~.
|
|
||||||
~systemd~, qui est actuellement lancé dans un petit environnement (appelé
|
|
||||||
/initrd/) va chercher à initialiser le système, noramment en :
|
|
||||||
1. déchiffrant la partition racine du système (si nécessaire),
|
|
||||||
2. montant la partition racine du sysème,
|
|
||||||
3. pivotant sur le système final dont ~systemd~ vient de monter ~/~.
|
|
||||||
|
|
||||||
5. 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 que ~systemd~ 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~ :
|
|
||||||
#+begin_src fdisk
|
|
||||||
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
|
|
||||||
#+end_src
|
|
||||||
- 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 tags ~gpt~ reconnus par ~systemd~.
|
|
||||||
|
|
||||||
|
|
||||||
** TODO Redimension automatique de partitions
|
|
||||||
|
|
||||||
** TODO UKI et Secure boot
|
|
||||||
|
|
||||||
* TODO Réseau
|
|
||||||
|
|
||||||
* TODO Journalisation
|
|
||||||
|
|
||||||
* TODO Administration à distance
|
|
Loading…
Reference in New Issue