Après quatre mois de développement, la version du gestionnaire de système systemd 255 est présentée. Parmi les améliorations les plus importantes : support de l'exportation des périphériques via NVMe-TCP, composant systemd-bsod pour l'affichage plein écran des messages d'erreur, utilitaire systemd-vmspawn pour démarrer des machines virtuelles, utilitaire varlinkctl pour gérer les services Varlink, utilitaire systemd-pcrlock pour analyser les registres TPM2 PCR et générer des règles d'accès, module d'authentification pam_systemd_loadkey.so.
Principaux changements dans cette nouvelle version :
- Ajout du composant « systemd-storagetm », permettant l'exportation automatique de tous les périphériques de stockage locaux via le pilote NVMe-TCP (NVMe over TCP), permettant d'accéder à des disques NVMe sur le réseau (NVM Express over Fabrics) en utilisant le protocole TCP. L'accès en mode NVMe over TCP est géré par la nouvelle unité « storage-target-mode.target », qui peut être activée au démarrage en spécifiant dans la ligne de commande du noyau « rd.systemd.unit=storage-target-mode.target », par exemple, en cas de besoin d'accès à distance au périphérique à des fins de diagnostic.
- Ajout du composant « systemd-bsod » implémentant un équivalent de l'écran bleu de la mort, permettant d'afficher pendant le démarrage des messages d'erreur critiques (LOG_EMERG) sous forme d'une notification plein écran.
- Ajout de l'utilitaire « systemd-vmspawn », représentant un équivalent de l'outil systemd-nspawn pour démarrer une image du système d'exploitation dans une machine virtuelle (l'outil systemd-nspawn est conçu pour lancer des conteneurs, tandis que systemd-vmspawn fournit une interface similaire pour machines virtuelles). À l'heure actuelle, seul le backend basé sur QEMU est disponible pour démarrer des machines virtuelles.
- Ajout de l'utilitaire « varlinkctl » pour invoquer et introspecter les services utilisant le protocole Varlink.
- L'outil «systemd-pcrlock» a été ajouté pour analyser et prédire l'état des registres TPM2 PCR (Plateforme Configuration Register) et pour créer des règles d'accès TPM2 NV stockées dans l'index, permettant l'accès à des objets TPM2, tels que des clés de chiffrement de disque, uniquement à partir de composants validés par une signature numérique, lancés au moment du démarrage vérifié. Les données d'entrée pour l'analyse peuvent être le résultat d'une demande d'état de PCR dans le TPM2, fourni par le firmware UEFI de l'historique des événements du démarrage actuel (\/sys\/kernel\/security\/tpm0\/binary_bios_measurements) ou un historique TPM2 localement enregistré (\/run\/log\/systemd\/tpm2-measure.log). Le support des règles d'accès stockées a été ajouté à systemd-cryptsetup, systemd-cryptenroll et systemd-repart.
- Le module PAM pam_systemd_loadkey.so a été ajouté, destiné à extraire automatiquement de la clé dans le noyau (keyring) la phrase de passe utilisée dans cryptsetup pour déverrouiller le système de fichiers racine chiffré, et à définir cette phrase de passe comme jeton d'authentification (PAM authtok). Ce module peut être utilisé, par exemple, pour configurer le déverrouillage automatique de l'accès à GNOME Keyring et KDE Wallet lors de la connexion automatique au système.
- Le support de la mise en veille (hibernation) avec sauvegarde du contenu de la mémoire dans des fichiers d'échange, stockés dans le système de fichiers Btrfs, a été ajouté.
- Des propriétés MemoryPeak, MemorySwapPeak, MemorySwapCurrent et MemoryZSwapCurrent ont été ajoutées aux unités, correspondant aux propriétés disponibles via cgroup v2, à savoir memory.peak, memory.swap.peak, memory.swap.current et memory.zswap.current. Les informations sur ces propriétés sont incluses dans la sortie de «systemctl status».
- La méthode de démarrage des services a été repensée, passant à l'utilisation de l'appel posix_spawn avec les options CLONE_VM et CLONE_VFORK pour le démarrage du processus, et appliquant un fichier exécutable distinct systemd-executor pour configurer le processus en cours de démarrage. Auparavant, les processus étaient créés par la fonction fork, copiant la mémoire du processus principal en mode copy-on-write et effectuant les configurations nécessaires (montage des espaces de noms et définition des CGroup) avant d'exécuter le fichier exécutable cible via l'appel exec, ce qui entraînait des problèmes dus à l'impossibilité d'accéder à certaines API Glibc entre les appels aux fonctions fork et exec.
- Le code pour le suivi des processus internes a été modifié pour utiliser PIDFD au lieu de PID dans les environnements avec un noyau prenant en charge PIDFD (PIDFD est lié à un processus spécifique et ne change pas, tandis que le PID peut être lié à un autre processus après la terminaison du processus actuel associé à ce PID). La possibilité de créer des unités de portée utilisant PIDFD au lieu de PID pour sélectionner des processus a été mise en œuvre.
- La prise en charge des hiérarchies de répertoires séparées (lorsque /usr est monté séparément de la racine ou que les répertoires /bin et /usr/bin, /lib et /usr/lib sont séparés) a été arrêtée. À l'avenir, il a également été décidé d'arrêter le support de cgroups v1, des scripts de services System V et des variables EFI de SystemdOptions.
- La commande « systemctl switch-root » est désormais limitée à une utilisation uniquement dans initrd. Pour remplacer le système de fichiers racine dans un environnement normal, il faut utiliser « systemctl soft-reboot ».
- Les paramètres SuspendMode, HybridSleepMode, HibernateStat et HybridSleepState dans la section « [Sleep] » du fichier systemd-sleep.conf ont été déclarés obsolètes. Ces paramètres sont désormais ignorés et ne peuvent uniquement avoir que les valeurs par défaut.
- Une option SurviveFinalKillSignal a été ajoutée aux unités, permettant d'ignorer le signal final SIGTERM/SIGKILL émis lors de l'arrêt, ce qui peut être utile pour maintenir une unité active pendant un redémarrage en douceur du système en mode soft-reboot.
- Une configuration NFTSet a été ajoutée pour permettre l'utilisation des identifiants cgroup pour modifier la logique dans les règles du pare-feu.
- Une option ConditionSecurity=measured-uki a été ajoutée, garantissant que l'unité ne peut être lancée que sur un système démarré avec une image du noyau vérifiée au format UKI.
- De nouvelles touches de raccourci « B » et « O » pour redémarrer et éteindre le système depuis le menu de démarrage ont été ajoutées à systemd-boot. Une configuration « menu-disabled » a été ajoutée pour désactiver l'affichage du menu de démarrage.
- De nouvelles options « —copy-from » pour obtenir des descriptions de partition à partir d'une image de système de fichiers spécifiée, « —copy-source » pour indiquer le répertoire de base pour le paramètre CopyFiles, « —make-ddi=confext », « —make-ddi=sysext » et « —make-ddi=portable » pour générer différents types de DDI, et « —tpm2-device-key » pour lier le disque à une clé publique spécifique TPM2, ont été ajoutées à l'outil systemd-repart.
- Une valeur « +N » pour le paramètre « —lines » a été ajoutée à l'outil journalctl pour afficher les N enregistrements les plus anciens.
- Un indicateur « —json » pour une sortie au format JSON a été ajouté à udevadm.
- Les utilitaires systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl et systemd-binfmt ont ajouté l'option «—tldr» pour afficher uniquement les paramètres de configuration réels sans espaces ni commentaires.
- Le sous-système seccomp a ajouté le support de l'architecture LoongArch64. L'utilisation de seccomp pour filtrer les appels système est désormais autorisée dans les services exécutés sans l'utilisateur root, sans activer l'option NoNewPrivileges=yes.
- L'utilitaire systemd-mount a ajouté l'option «—tmpfs» pour monter une nouvelle instance de ‘tmpfs’.
Source : opennet.ru
