8.75. Systemd-255

Le paquet Systemd contient des programmes pour contrôler le démarrage, l'exécution et l'arrêt du système.

Temps de construction approximatif: 0,7 SBU
Espace disque requis: 247 Mo

8.75.1. Installation de Systemd

Supprimez deux groupes inutiles, render et sgx des règles udev par défaut :

sed -i -e 's/GROUP="render"/GROUP="video"/' \
       -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in

Corrigez maintenant une vulnérabilité dans la vérification DNSSEC de systemd-resolved et un bogue qui casse l'exécution de systemd-analyze verify sur une unité systemd instantiée :

patch -Np1 -i ../systemd-255-upstream_fixes-1.patch

Préparez la compilation de Systemd :

mkdir -p build
cd       build

meson setup \
      --prefix=/usr                 \
      --buildtype=release           \
      -Ddefault-dnssec=no           \
      -Dfirstboot=false             \
      -Dinstall-tests=false         \
      -Dldconfig=false              \
      -Dsysusers=false              \
      -Drpmmacrosdir=no             \
      -Dhomed=disabled              \
      -Duserdb=false                \
      -Dman=disabled                \
      -Dmode=release                \
      -Dpamconfdir=no               \
      -Ddev-kvm-mode=0660           \
      -Dnobody-group=nogroup        \
      -Dsysupdate=disabled          \
      -Dukify=disabled              \
      -Ddocdir=/usr/share/doc/systemd-255 \
      ..

Voici la signification des options meson :

--buildtype=release

Ce paramètre remplace le type de construction par défaut (« debug »), qui produit des binaires non optimisés.

-Ddefault-dnssec=no

Cet argument désactive la prise en charge expérimentale de DNSSEC.

-Dfirstboot=false

Ce paramètre empêche l'installation d'un service de systemd qui est responsable de la mise en place du système pour la première fois. Ceux-ci ne sont pas utiles pour LFS car tout est fait manuellement.

-Dinstall-tests=false

Ce paramètre évite l'installation des tests compilés.

-Dldconfig=false

Ce paramètre empêche l'installation d'une unité de systemd qui lance ldconfig au démarrage, inutile pour les distributions source comme LFS et qui rend celui-ci plus long. Retirez cette option pour activer le lancement de ldconfig au démarrage.

-Dsysusers=false

Ce paramètre empêche l’installation de services de systemd responsables de la mise en place des fichiers /etc/group et /etc/passwd. Ces deux fichiers sont créés plus tôt dans ce chapitre. Ce démon n'est pas utile sur un système LFS car les comptes utilisateurs sont créés manuellement.

-Drpmmacrosdir=no

Ce paramètre désactive l'installation des macros RPM pour systemd parce que LFS ne prend pas en charge RPM.

-Dhomed=disabled et -Duserdb=false

Supprimez deux démons qui ont des dépendances qui ne rentrent pas dans le cadre de LFS.

-Dman=disabled

Évitez la génération de pages de manuel pour éviter des dépendances supplémentaires. Nous installerons les pages de manuels pré-générées pour systemd à partir d'une archive.

-Dmode=release

Désactive certaines fonctionnalités considérées comme expérimentales par les développeurs en amont.

-Dpamconfdir=no

Empêchez l'installation d'un fichier de configuration de PAM qui ne fonctionne pas sur LFS.

-Ddev-kvm-mode=0660

La règle udev par défaut permet à tous les utilisateurs d'accéder à /dev/kvm. Les auteurs pensent que cela est dangereux. Cette option change cela.

-Dnobody-group=nogroup

Dit au paquet que le nom du groupe dont le GID est 65534 est nogroup.

-Dsysupdate=disabled

N'installez pas l'outil systemd-sysupdate. Il est conçu pour automatiquement mettre à jour des distributions binaires. Il est donc inutile sur un système Linux de base construit à partir de sources. Il rapportera des erreurs au démarrage s'il est activé mais n'est pas bien configuré.

-Dukify=disabled

N'installez pas le script systemd-ukify. À l'exécution ce script nécessite le module Python pefile que ni LFS ni BLFS ne proposent.

Compilez le paquet :

ninja

Installez le paquet :

ninja install

Installez les pages de manuel :

tar -xf ../../systemd-man-pages-255.tar.xz \
    --no-same-owner --strip-components=1   \
    -C /usr/share/man

Créez le fichier /etc/machine-id dont a besoin systemd-journald :

systemd-machine-id-setup

Mettez en place la structure cible de base :

systemctl preset-all

8.75.2. Contenu de systemd

Programmes installés: busctl, coredumpctl, halt (lien symbolique vers systemctl), hostnamectl, init, journalctl, kernel-install, localectl, loginctl, machinectl, mount.ddi (lien symbolique vers systemd-dissect), networkctl, oomctl, portablectl, poweroff (lien symbolique vers systemctl), reboot (lien symbolique vers systemctl), resolvconf (lien symbolique vers resolvectl), resolvectl, runlevel (lien symbolique vers systemctl), shutdown (lien symbolique vers systemctl), systemctl, systemd-ac-power, systemd-analyze, systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop, systemd-confext (lien symbolique vers systemd-sysext) systemd-creds, systemd-delta, systemd-detect-virt, systemd-dissect, systemd-escape, systemd-hwdb, systemd-id128, systemd-inhibit, systemd-machine-id-setup, systemd-mount, systemd-notify, systemd-nspawn, systemd-path, systemd-repart, systemd-resolve (lien symbolique vers resolvectl), systemd-run, systemd-socket-activate, systemd-stdio-bridge, systemd-sysext, systemd-tmpfiles, systemd-tty-ask-password-agent, systemd-umount (lien symbolique vers systemd-mount), telinit (lien symbolique vers systemctl), timedatectl et udevadm
Bibliothèques installées: libnss_myhostname.so.2, libnss_mymachines.so.2, libnss_resolve.so.2, libnss_systemd.so.2, libsystemd.so, libsystemd-shared-255.so (dans /usr/lib/systemd) et libudev.so
Répertoires installés: /etc/binfmt.d, /etc/init.d, /etc/kernel, /etc/modules-load.d, /etc/sysctl.d, /etc/systemd, /etc/tmpfiles.d, /etc/udev, /etc/xdg/systemd, /usr/lib/systemd, /usr/lib/udev, /usr/include/systemd, /usr/lib/binfmt.d, /usr/lib/environment.d, /usr/lib/kernel, /usr/lib/modules-load.d, /usr/lib/sysctl.d, /usr/lib/systemd, /usr/lib/tmpfiles.d, /usr/share/doc/systemd-255, /usr/share/factory, /usr/share/systemd, /var/lib/systemd et /var/log/journal

Descriptions courtes

busctl

Est utilisé pour examiner et surveiller le bus D-Bus

coredumpctl

Est utilisé pour récupérer les fichiers coredumps du journal de Systemd

halt

Appelle en principe shutdown avec le paramètre -h, sauf si on est déjà au niveau d'exécution 0, où il dit au noyau d'arrêter le système ; il inscrit dans le fichier /var/log/wtmp que le système va s'éteindre

hostnamectl

Est utilisé pour voir et changer le nom d'hôte du système et les paramètres afférents

init

Est le premier processus qui démarre après que le noyau a initialisé le matériel. init poursuit le processus de démarrage et lance les processus spécifiés dans son fichier de configuration. Dans ce cas, il démarre systemd

journalctl

Est utilisé pour voir le contenu du journal de systemd

kernel-install

Est utilisé pour ajouter et supprimer des images de noyau et des initramfs dans /boot. Dans LFS, on le fait manuellement

localectl

Est utilisé pour voir et modifier les paramètres linguistiques et de la disposition clavier du système

loginctl

Est utilisé pour examiner et contrôler l'état du gestionnaire d'identification de systemd

machinectl

Est utilisé pour examiner et contrôler l'état du gestionnaire des enregistrements de machines virtuelles et de conteneurs de systemd

networkctl

Est utilisé pour examiner et configurer l'état des liens réseaux configurés par systemd-networkd

oomctl

Contrôle le démon Out Of Memory de systemd

portablectl

Est utilisé pour attacher ou détacher des services portables d'un système local

poweroff

Dit au noyau d'arrêter le système et d'éteindre l'ordinateur (voir halt)

reboot

Dit au noyau de redémarrer le système (voir halt)

resolvconf

Enregistre la configuration des serveurs DNS et des domaines avec systemd-resolved

resolvectl

Envoie des commandes de contrôle au gestionnaire de résolution de noms réseaux ou résout des noms de domaines, des adresses IPv4 ou IPv6, des enregistrements DNS et des services

runlevel

Renvoie le niveau d'exécution actuel et précédent indiqué dans le journal du dernier niveau d'exécution situé dans /run/utmp

shutdown

Éteint le système de manière sécurisée en envoyant à tous les processus un signal et en notifiant tous les utilisateurs connectés

systemctl

Est utilisé pour examiner et contrôler l'état du gestionnaire des services du système de systemd

systemd-ac-power

Rapporte si le système est connecté à une source de courant externe.

systemd-analyze

Est utilisé pour analyser les performances de démarrage du système et pour identifier les unités systemd problématiques

systemd-ask-password

Est utilisé pour demander le mot ou la phrase de passe d'un utilisateur en utilisant un message spécifié sur la ligne de commande de Linux

systemd-cat

Est utilisé pour relier les STDOUT et STDERR d'un processus au journal de systemd

systemd-cgls

Affiche de manière récursive le contenu de la hiérarchie des groupes de Linux sélectionnée dans une arborescence

systemd-cgtop

Affiche les groupes de contrôle dans la hiérarchie des groupes du Linux local, triés par processus, charge mémoire et d'E/S disque

systemd-creds

Affiche et traite les identifiants

systemd-delta

Est utilisé pour identifier et comparer des fichiers de configuration de /etc, qui modifient les valeurs par défaut dans /usr

systemd-detect-virt

Détecte si le système est lancé dans un environnement virtuel, et ajuste udev en fonction

systemd-dissect

Est utilisé pour inspecter les images disques de systèmes d'exploitations

systemd-escape

Est utilisé pour échapper les chaînes de caractères pour les utiliser dans les noms d'unités de systemd

systemd-hwdb

Est utilisé pour gérer la base de données matérielle (hwdb)

systemd-id128

Génère et afficher des chaînes id128 (UUID)

systemd-inhibit

Est utilisé pour exécuter un programme avec un marqueur d'extinction, de veille ou d'inactivité qui le verrouille, pour éviter une action comme l'arrêt du système jusqu'à ce que le processus termine

systemd-machine-id-setup

Est utilisé par les outils d'installation de systemd pour initialiser l'ID de la machine contenu dans /etc/machine-id lors de l'installation, avec un ID généré de façon aléatoire

systemd-mount

Est utilisé pour monter ou monter automatiquement un périphérique temporairement

systemd-notify

Est utilisé par les scripts des démons pour indiquer les changements d'état au système d'initialisation

systemd-nspawn

Est utilisé pour lancer une commande ou un OS complet dans un conteneur léger (espace de nom séparé)

systemd-path

Est utilisé pour voir les path système et utilisateur

systemd-repart

Est utilisé pour agrandir et ajouter des partitions à une table de partition quand systemd est utilisé dans un image d'OS (p. ex. dans un conteneur)

systemd-resolve

Est utilisé pour résoudre les noms de domaines, les adresses IPV4 et IPV6, les enregistrements DNS et les services

systemd-run

Est utilisé pour créer et démarrer une unité transitoire .service ou .scope et pour y lancer la commande spécifiée. C'est utile pour valider des unités systemd

systemd-socket-activate

Est utilisé pour écouter sur des périphériques de socket et lancer un processus lors d'une connexion

systemd-sysext

Active les images d'extension du système

systemd-tmpfiles

Crée, efface et nettoie les fichiers et les répertoires volatiles et temporaires sur la base d'un format et d'un emplacement du fichier de configuration indiqué dans les répertoires tmpfiles.d

systemd-umount

Démonte des points de montage

systemd-tty-ask-password-agent

Est utilisé pour lister ou traiter les requêtes de mots de passe en attente

telinit

Dit à init quel niveau d'exécution adopter

timedatectl

Est utilisé pour voir et modifier l'horloge du système et ses paramètres

udevadm

Est un outil générique d'administration d'Udev qui contrôle le démon udevd, donne des infos à partir de la base de données matérielle d'Udev, surveille les uevents, attend la fin des uevents, teste la configuration d'Udev et déclenche des événements pour un périphérique donné

libsystemd

Est la bibliothèque d'outils principale de systemd

libudev

Est une bibliothèque pour accéder aux informations d'Udev