Après cinq mois de développement, la version du gestionnaire de système systemd 251 est présentée.
Principales modifications :
- Les exigences système ont été augmentées. La version minimale prise en charge du noyau Linux est passée de 3.13 à 4.15. Un minuteur CLOCK_BOOTTIME est nécessaire. Un compilateur prenant en charge la norme C11 et les extensions GNU est requis pour la construction (la norme C89 continue d'être utilisée pour les fichiers d'en-tête).
- Ajouté un utilitaire expérimental systemd-sysupdate pour détecter, télécharger et installer automatiquement les mises à jour à l'aide d'un mécanisme de remplacement atomique de partitions, de fichiers ou de répertoires (deux partitions/fichiers/répertoires indépendants sont utilisés, l'un contenant la ressource en cours d'utilisation et l'autre installant la mise à jour suivante, puis les partitions/fichiers/répertoires sont échangés).
- Une nouvelle bibliothèque partagée interne libsystemd-core-.so a été présentée, installée dans le répertoire /usr/lib/systemd/system et correspond à l'existante bibliothèque libsystemd-shared-.so. L'utilisation de la bibliothèque partagée libsystemd-core-.so permet de réduire la taille d'installation globale en réutilisant le code binaire. Le numéro de version peut être spécifié via le paramètre ‘shared-lib-tag’ dans le système de construction meson, permettant aux distributions de fournir plusieurs versions de ces bibliothèques simultanément.
- La transmission dans les gestionnaires OnFailure/OnSuccess des variables d'environnement $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS, $MONITOR_INVOCATION_ID et $MONITOR_UNIT est implémentée pour fournir des informations sur l'unité surveillée.
- Pour les unités, une configuration des ExtensionDirectories a été mise en œuvre, permettant d'organiser le chargement des composants d'extension système (System Extension) à partir de répertoires normaux, plutôt que d'images disque. Le contenu du répertoire d'extension système est superposé à l'aide d'OverlayFS, et appliqué pour étendre l'arborescence des répertoires /usr/ et /opt/, et pour ajouter des fichiers supplémentaires pendant le fonctionnement, même lorsque ces répertoires sont montés en mode lecture seule. Le support de la spécification du répertoire a également été ajouté à la commande ‘portablectl attach —extension=’.
- Pour les unités terminées de force par le gestionnaire systemd-oomd en raison d'un manque de mémoire dans le système, un indicateur ‘oom-kill’ est transmis et reflété dans l'attribut ‘user.oomd_ooms’ du nombre de terminaisons forcées.
- Pour les unités, de nouveaux spécificateurs de chemin %y/%Y ont été ajoutés, reflétant le chemin normalisé vers l'unité (avec résolution des liens symboliques). Des spécificateurs %q ont également été ajoutés pour insérer la valeur PRETTY_HOSTNAME et %d pour insérer CREDENTIALS_DIRECTORY.
- Dans les services non privilégiés, exécutés par un utilisateur ordinaire avec le flag « —user », il est permis de modifier les paramètres RootDirectory, MountAPIVFS, ExtensionDirectories, *Capabilities*, ProtectHome, *Directory, TemporaryFileSystem, PrivateTmp, PrivateDevices, PrivateNetwork, NetworkNamespacePath, PrivateIPC, IPCNamespacePath, PrivateUsers, ProtectClock, ProtectKernelTunables, ProtectKernelModules, ProtectKernelLogs et MountFlags. Cette fonctionnalité n'est disponible que si l'espace de noms d'identifiants utilisateur (user namespaces) est activé dans le système.
- Dans la configuration LoadCredential, il est permis d'indiquer le nom d'un répertoire comme argument, dans ce cas, une tentative de chargement des identifiants à partir de tous les fichiers dans le répertoire spécifié sera effectuée.
- Avec systemctl, il est maintenant possible d'indiquer le flag 'unix' dans le paramètre « —timestamp » pour afficher le temps au format epoch (nombre de secondes depuis le 1er janvier 1970).
- Dans « systemctl status », un flag « old-kernel » a été implémenté, affiché si le noyau chargé dans la session a un numéro de version plus ancien que le noyau de base disponible dans le système. Un flag « unmerged-usr » a également été ajouté pour déterminer si le contenu des répertoires /bin/ et /sbin/ a été formé sans utiliser de liens symboliques vers /usr.
- Pour les générateurs exécutés par le processus PID 1, de nouvelles variables d'environnement ont été fournies : $SYSTEMD_SCOPE (exécution depuis un service système ou utilisateur), $SYSTEMD_IN_INITRD (exécution depuis initrd ou environnement hôte), $SYSTEMD_FIRST_BOOT (indicateur de premier démarrage), $SYSTEMD_VIRTUALIZATION (présence de virtualisation ou exécution dans un conteneur) et $SYSTEMD_ARCHITECTURE (architecture pour laquelle le noyau a été compilé).
- Dans le gestionnaire PID 1, il est maintenant possible de charger les paramètres des identifiants système à partir de l'interface fw_cfg de QEMU ou via le paramètre systemd.set_credential spécifié dans la ligne de commande du noyau. La directive LoadCredential garantit la recherche automatique d'identifiants dans les répertoires /etc/credstore/, /run/credstore/ et /usr/lib/credstore/, si un chemin relatif est fourni comme argument. Un comportement similaire a été appliqué pour la directive LoadCredentialEncrypted, qui vérifie également les répertoires /etc/credstore.encrypted/, /run/credstore.encrypted/ et /usr/lib/credstore.encrypted/.
- Dans systemd-journald, la possibilité d'exporter au format JSON a été stabilisée. Les commandes « journalctl —list-boots » et « bootctl list » ont été mises à jour pour supporter la sortie au format JSON (option « —json »).
- Dans udev, de nouveaux fichiers basés sur la base de données hwdb ont été ajoutés, contenant des informations sur les appareils portables (PDA, calculatrices, etc.) et les appareils utilisés pour la création de son et de vidéo (tables de mixage, claviers).
- Dans udevadm, de nouvelles options « —prioritized-subsystem » pour définir la priorité des systèmes (utilisée dans systemd-udev-trigger.service pour traiter en premier les appareils de blocs et les TPM), « —type=all », « —initialized-match » et « —initialized-nomatch » pour sélectionner les appareils initialisés ou non initialisés, « udevadm info —tree » pour afficher l'arborescence des objets dans l'hiérarchie /sys/. De nouvelles commandes « wait » et « lock » ont également été ajoutées à udevadm pour attendre l'apparition d'une entrée sur l'appareil dans la base de données et bloquer un appareil de blocs pendant le formatage ou l'écriture de la table de partitions.
- Un nouvel ensemble de liens symboliques vers les appareils /dev/disk/by-diskseq/ a été ajouté pour identifier les appareils de blocs par leur numéro d'ordre (« diskseq »).
- Dans les fichiers .link, la section [Match] a été mise à jour pour prendre en charge le paramètre « Firmware » afin de faire correspondre un appareil par une chaîne décrivant le firmware.
- Dans systemd-networkd, pour les routes unicast configurées via la section [Route], la valeur par défaut de scope a été changée à « link » pour correspondre au comportement de la commande « ip route ». La section [Bridge] a ajouté le paramètre Isolated=true|false pour configurer l'attribut homonyme des ponts réseau dans le noyau. Dans la section [Tunnel], un paramètre External a été ajouté pour définir le tunnel dans le type externe (mode de collecte de métadonnées). Dans la section [DHCPServer], les paramètres BootServerName, BootServerAddress et BootFilename ont été ajoutés pour configurer l'adresse du serveur, le nom du serveur et le nom du fichier de démarrage envoyés par le serveur DHCP lors du chargement en mode PXE. Dans la section [Network], le paramètre L2TP a été supprimé, et à la place, une nouvelle configuration Local liée à l'interface L2TP peut être utilisée dans les fichiers .netdev.
- Un nouvel unité « systemd-networkd-wait-online@.service » a été ajoutée, qui peut être utilisée pour attendre la montée d'une interface réseau spécifique.
- La possibilité d'utiliser des fichiers .netdev pour créer des appareils virtuels WLAN a été implémentée, avec une section [WLAN] proposée pour leur configuration.
- Dans les fichiers .link/.network, le paramètre Kind a été ajouté dans la section [Match] pour faire correspondre selon le type d'appareil («bond», «bridge», «gre», «tun», «veth»).
- Le démarrage de systemd-resolved est assuré à un stade plus précoce du processus de démarrage, y compris le démarrage à partir de initrd en cas de présence de systemd-resolved dans l'image initrd.
- L'option —fido2-credential-algorithm a été ajoutée à systemd-cryptenroll pour choisir l'algorithme de cryptage des identifiants et l'option —tpm2-with-pin pour gérer la saisie du code PIN lors du déverrouillage d'une partition avec TPM. Une option similaire tpm2-pin a été ajoutée à /etc/crypttab. Le déverrouillage des appareils via TPM assure le cryptage des paramètres pour protéger contre l'interception des clés de cryptage.
- Dans systemd-timesyncd, une API D-Bus a été ajoutée pour obtenir dynamiquement des informations à partir d'un serveur NTP via IPC.
- Pour déterminer la nécessité d'une sortie colorée dans toutes les commandes, une vérification de la variable d'environnement COLORTERM a été mise en place en complément des précédemment vérifiés NO_COLOR, SYSTEMD_COLORS et TERM.
- Dans le système de construction Meson, l'option install_tag a été mise en œuvre pour la construction et l'installation sélectives des composants nécessaires : pam, nss, devel (pkg-config), systemd-boot, libsystemd, libudev. Une option de construction default-compression a été ajoutée pour choisir l'algorithme de compression pour systemd-journald et systemd-coredump.
- Dans sd-boot, loader.conf a été ajouté avec une configuration expérimentale «reboot-for-bitlocker» pour démarrer Microsoft Windows avec BitLocker TPM.
Source : opennet.ru
