Systemd-255

Introduction à systemd

Alors que systemd a été installé avec LFS, il y a plein de fonctionnalités fournies par le paquet qui n'ont pas été inculeses dans l'installation initiale car Linux-PAM n'était pas installé. Le paquet systemd doit être reconstruit pour fournir un service systemd-logind fonctionnel, qui fourint plein de fonctionnalités supplémentaires pour les paquets qui en dépendent.

This package is known to build and work properly using an LFS 12.1 platform.

Informations sur le paquet

  • Téléchargement (HTTP) : https://github.com/systemd/systemd/archive/v255/systemd-255.tar.gz

  • Téléchargement (FTP) :

  • Somme de contrôle MD5 : 521cda27409a9edf0370c128fae3e690

  • Taille du téléchargement : 15 Mo

  • Estimation de l'espace disque requis : 198 Mo (avec les tests)

  • Estimation du temps de construction : 3,7 SBU (avec les tests et 4 cœurs)

Téléchargements supplémentaires

Dépendances de systemd

Recommandées

[Note]

Note

Linux-PAM-1.6.0 n'est pas strictement requis pour construire systemd, mais la raison principale pour reconstruire systemd dans BLFS (il est de toute façon déjà construit dans LFS) est le démon systemd-logind ainsi que le module PAM pam_systemd.so. Linux-PAM-1.6.0 est requis pour les deux. Tous les paquets dans le livre BLFS qui ont une dépendance à systemd s'attendent à ce qu'il ait été reconstruit avec Linux-PAM-1.6.0.

Facultatives

btrfs-progs-6.7.1, cURL-8.6.0, cryptsetup-2.7.0, git-2.44.0, GnuTLS-3.8.3, iptables-1.8.10, libgcrypt-1.10.3, libidn2-2.3.7, libpwquality-1.4.5, libseccomp-2.5.5, libxkbcommon-1.6.0, make-ca-1.13, p11-kit-0.25.3, pcre2-10.42, qemu-8.2.1, qrencode-4.1.1, rsync-3.2.7, sphinx-7.2.6, Valgrind-3.22.0, zsh-5.9 (pour les complétions zsh), AppArmor, audit-userspace, bash-completion, jekyll, kexec-tools, libbpf, libdw, libfido2, libmicrohttpd, lz4, pefile, pyelftools, quota-tools, rpm, SELinux, systemtaptpm2-tss et Xen

Facultatives (pour reconstruire les pages de manuel)

docbook-xml-4.5, docbook-xsl-nons-1.79.2, libxslt-1.1.39 et lxml-4.9.4 (pour contstruire l'index des pages de manuel de systemd)

Notes des auteurs : https://wiki.linuxfromscratch.org/blfs/wiki/Logind

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

Maintenant corrigez une vulnérabilité de sécurité dans la vérification DNSSEC de systemd-resolved et un bogue qui casse l'exécution de systemd-analyze verify sur une unité systemd instanciée :

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

Reconstruisez systemd en exécutant les commandes suivantes :

mkdir build &&
cd    build &&

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

ninja
[Note]

Note

Pour de meilleurs résultats, assurez-vous que vous lancez la suite de tests depuis un système démarré par la même version de systemd que celle que vous reconstruisez.

Pour tester les résultats, exécutez : ninja test. Les tests nommé test-stat-util et test-netlink sont connus pour échouer si certaines fonctionnalités du noyau ne sont pas activées. Si la suite de tests est lancée par l'utilisateur root, d'autres tests peuvent échouer car ils dépendent de diverses options de configuration du noyau.

Maintenant, en tant qu'utilisateur root :

ninja install

Explication des commandes

--buildtype=release : spécifie le type de construction convenant aux versions stables de ce paquet, comme la valeur par défaut produit des binaires non optimisés.

-Dpamconfdir=/etc/pam.d : force les fichiers PAM à être installés dans /etc/pam.d plutôt qu edans /usr/lib/pam.d.

-Duserdb=false : supprime un démon qui n'offre rien d'utile dans une configuration BLFS. Si vous voulez activer le démon userdb, remplacez « false » par « true » dans la commande meson ci-dessus.

-Dhomed=disabled : supprime un démon qui n'offre rien d'utile pour une configuration BLFS traditionnelle, surtout si vous utilisez des comptes créés par useradd. Pour activer systemd-homed, assurez-vous d'abord que vous avez installé cryptsetup-2.7.0 et libpwquality-1.4.5, puis remplacez « disabled » par « enabled » dans la commande meson setup ci-dessus.

-Dukify=disabled : supprime un script pour combiner un noyau, un initramfs et une ligne de commande pour le noyau etc en une application UEFI qui peut être chargée par le micrologiciel UEFI pour démarrer le noyau Linux embarqué. Il n'est pas requis pour démarrer un système BLFS avec UEFI si vous suivez Utiliser GRUB pour paramétrer le processus de démarrage avec UEFI. De plus, il nécessite le module Python pefile à l'exécution, donc s'il est activé mais que pefile n'est pas installé, dans la suite de tests un test échouera. Pour activer systemd-ukify, installez le module pefile puis changez « disabled » en « enabled » ans la commande meson setup ci-dessus.

Configuration de systemd

Le fichier /etc/pam.d/system-session a besoin d'être modifié et un nouveau fichier doit être créé pour que systemd-logind fonctionne correctement. Lancez les commandes suivantes en tant qu'utilisateur root :

grep 'pam_systemd' /etc/pam.d/system-session ||
cat >> /etc/pam.d/system-session << "EOF"
# Begin Systemd addition

session  required    pam_loginuid.so
session  optional    pam_systemd.so

# End Systemd addition
EOF

cat > /etc/pam.d/systemd-user << "EOF"
# Begin /etc/pam.d/systemd-user

account  required    pam_access.so
account  include     system-account

session  required    pam_env.so
session  required    pam_limits.so
session  required    pam_loginuid.so
session  optional    pam_keyinit.so force revoke
session  optional    pam_systemd.so

auth     required    pam_deny.so
password required    pam_deny.so

# End /etc/pam.d/systemd-user
EOF

En tant qu'utilisateur root, remplacez le gestionnaire systemd en cours d'exécution (le processus init) par l'exécutable systemd nouvellement construit et installé :

systemctl daemon-reexec
[Important]

Important

Assurez-vous maintenant que Shadow-4.14.5 a déjà été reconstruit avec la prise en charge de Linux-PAM-1.6.0 avant, puis déconnectez-vous et reconnectez-vous. Cela s'assure que la session de connexion actuelle est enregistrée auprès de systemd-logind et qu'une instance de systemd utilisateur est lancée pour chaque utilisateur possédant une session de connexion. De nombreux paquets BLFS qui listent Systemd comme dépendance ont besoin d'une intégration à systemd-logind ou d'une instance systemd utilisateur.

[Avertissement]

Avertissement

Si vous mettez à jour depuis une version antérieure de systemd et qu'un initrd est utilisé pour démarrer le système, vous devriez générer un nouvel initrd avant de redémarrer le système.

Contenu

Une liste des fichiers installés, avec leur description courte se trouve sur ../../../../lfs/view/12.1-systemd/chapter08/systemd.html#contents-systemd.

Plus bas sont listés les programmes nouvellement installés et leur description courte.

Programmes installés: homectl (facultatif), systemd-cryptenroll (si cryptsetup-2.7.0 est installé) et userdbctl (facultatifs)

Descriptions courtes

homectl

est un outil pour créer, supprimer, changer et inspecter un répertoire personnel géré par systemd-homed ; remarquez que c'est inutile pour les utilisateurs UNIX classiques et les répertoires personnels qui sont utilisés dans les livres LFS et BLFS.

systemd-cryptenroll

Est utilisé pour utiliser ou arrêter d'utiliser le chiffrement du disque complet pour le système, et pour initialiser et demander des clés secrètes et des clés de récupération

userdbctl

inspecte les utilisateurs, les groupes et les appartenances de groupes

pam_systemd.so

est un module PAM utilisé pour enregistrer les sessions utilisateur auprès du gestionnaire de connexion de systemd, systemd-logind