Après trois mois de développement disponible la publication du gestionnaire système systemd 261. Changements clés : préparation du support de l'API pour la vérification de l'âge, support des sous-systèmes Kexec Handover et Live Update Orchestration pour un redémarrage sans perte d'état, sous-système IMDS (Instance Metadata Service), fonctionnalité pour protéger le démarrage sur des systèmes sans TPM (Trusted Platform Module) physique, composant systemd-sysinstall avec une implémentation d'installateur.
Parmi modifications dans la nouvelle version :
- Ajout d'un nouveau composant systemd-sysinstall avec une implémentation d'un installateur simple d'un système d'exploitation, gérable depuis la ligne de commande ou via une interface texte interactive. La fonctionnalité de systemd-sysinstall est constituée de capacités déjà existantes dans systemd : pour la configuration des partitions de disque, utilise systemd-repart, pour installer le noyau et générer le menu de démarrage — la commande «bootctl link», pour installer le chargeur de démarrage systemd-boot — la commande «bootctl install», pour la configuration initiale du système installé (par exemple, sélection de la locale et du layout du clavier) — systemd-creds.
- Dans le cadre de la préparation à la mise en œuvre des exigences des lois sur l'intégration de l'API de vérification de l'âge dans le système d'exploitation avec la base de données userdb un champ birthDate avec la date de naissance de l'utilisateur. Le champ ajouté pourra être utilisé dans le portail en développement pour les distributions xdg-desktop-portal et le service AccountsService pour fournir aux applications des informations sur la catégorie d'âge de l'utilisateur via l'interface D-Bus org.freedesktop.AgeVerification1 ou org.freedesktop.ParentalControls. Pour définir l'âge dans l'outil homectl, une option —birth-date a été ajoutée.
- Dans le gestionnaire PID1 ajout de la prise en charge des sous-systèmes du noyau Linux LUO (Live Update OrchestrationDeep Speech KHO (Kexec Handover), permettant de redémarrer et d'actualiser complètement le noyau sans arrêter le fonctionnement et sans perdre l'état du système, des appareils et des processus. KHO offre la possibilité de démarrer un nouveau noyau depuis l'ancien sans perte d'état du système, et LUO implémente la sauvegarde de l'état des appareils et de la mémoire vive, tout en assurant la continuité des opérations liées au DMA et à la gestion des interruptions.
Dans systemd, pour les unités système et utilisateur, il est possible de sauvegarder les descripteurs de fichiers avant l'appel de kexec et de les restaurer après le redémarrage du noyau via kexec. Dans les unités, il est également possible de créer des sessions personnalisées. LUO, conservés et restaurés lors de l'exécution de kexec. Pour activer la conservation de l'état du stockage des descripteurs de fichiers, il faut utiliser la configuration FileDescriptorStorePreserve=yes. - Sous-système implémenté systemd-imdsd, fournissant une API basée sur Varlink IPC pour permettre aux programmes locaux d'accéder aux services IMDS (Instance Metadata Service) fournis par différents fournisseurs de systèmes cloud. IMDS permet aux machines virtuelles d'obtenir des informations sur l'environnement cloud, telles que des détails sur la configuration réseau, la localisation géographique du nœud, le type de CPU et la taille du stockage. systemd-imdsd offre à la fois une API de bas niveau pour accéder aux différents champs et une interface de haut niveau pour interroger des clés standard, associées à des clés spécifiques aux différentes plateformes cloud. Pour interagir avec systemd-imdsd, un utilitaire systemd-imds a été ajouté pour permettre l'importation des champs IMDS dans le système local des comptes.
Pour reconnaître les plateformes cloud sur la base des informations SMBIOS et déterminer les fonctionnalités IMDS disponibles sur le nœud actuel, une nouvelle base de données hwdb.d/40-imds.hwdb a été ajoutée. La reconnaissance des plateformes cloud Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS et Vultr a été implémentée. Un gestionnaire systemd-imds-generator est disponible pour configurer automatiquement le service pour obtenir des données via IMDS en cas de détection d'un fonctionnement sous une plateforme cloud prise en charge. Il est possible de créer des images universelles prenant en charge l'utilisation d'IMDS lors du démarrage dans des environnements cloud, mais capables de fonctionner sans IMDS. - Dans systemd-stub a implémenté la fonctionnalité boot secret, permettant de générer une clé basée sur une variable EFI, stockée dans une zone inaccessible pour le système d'exploitation et initialisée avec une valeur aléatoire. Dans initrd, la clé est transmise via le fichier /.extra/boot-secret. Cette capacité peut être nécessaire pour obtenir une clé aléatoire spécifique au système pour vérifier le processus de démarrage ou le chiffrement sur des systèmes sans TPM (Trusted Platform Module) matériel.
- Un service systemd-tpm2-swtpm.service a été ajouté pour démarrer l'émulateur de puces TPM swtpm (Emulateur TPM logiciel), qui peut être utilisé pour un retour automatique à une mise en œuvre logicielle du TPM pour un démarrage sécurisé sur des systèmes sans TPM matériel. Le TPM logiciel fonctionne dans l'espace utilisateur et ne permet pas d'atteindre le niveau de protection d'un TPM matériel, mais dans certaines situations, son utilisation est justifiée par rapport à un fonctionnement sans TPM. Par exemple, le TPM logiciel peut obtenir une clé de chiffrement des partitions grâce à la nouvelle fonctionnalité « secret de démarrage » et utiliser le partition ESP (EFI System Partition) sur le disque pour stocker son état. Pour activer automatiquement le TPM logiciel, le paramètre de ligne de commande du noyau systemd.tpm2_software_fallback a été proposé.
- Déclaré stable et placé dans /usr/bin le composant systemd-sysupdate, destiné à la détection automatique, au téléchargement et à l'installation des mises à jour en utilisant un mécanisme de substitution atomique des partitions, fichiers ou répertoires (deux partitions/fichiers/répertoires indépendants sont utilisés, l'un contenant la ressource en cours d'exécution, et l'autre recevant la mise à jour suivante, après quoi ils échangent leurs places).
- Dans systemd-resolved la possibilité de redéfinir ou d'indiquer de nouveaux enregistrements DNS en plaçant des fichiers au format JSON dans les répertoires systemd/resolve/static.d/. Contrairement à /etc/hosts, dans les nouveaux fichiers, il est non seulement possible de lier des adresses IP à des noms d'hôtes, mais aussi de définir des enregistrements de ressource DNS RR différents de « A » et « AAAA ». De plus, dans systemd-resolved, des paramètres de taille du cache DNS ont été ajoutés : DNSCacheSize, MulticastDNSCacheSize et LLMNRCacheSize.
- Ajouté l'outil ‘storagectl’ pour inspecter les dispositifs de stockage et gérer la connexion des dispositifs de blocs et des systèmes de fichiers.
- Dans le cadre de de l'initiative pour réduire les dépendances de libsystemd, le chargement dynamique des bibliothèques libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk et libcryptsetup a été mis en œuvre à l'aide de l'appel dlopen() dans des situations où leurs fonctions sont réellement nécessaires.
- Dans systemd-tmpfiles a ajouté le drapeau —inline, permettant d'émettre des directives dans la ligne de commande sans créer de fichiers de configuration dans tmpfiles.d/ et sans envoyer les paramètres via STDIN. Un nouveau type de directive k/K a été ajouté pour définir des capacités. Un fichier de configuration tmpfiles.d/root.conf a été ajouté, définissant des permissions d'accès 0555 (-r-xr-xr-x) pour le répertoire racine (/) afin de protéger contre des permissions incorrectes lors de la création dynamique du système de fichiers racine.
- Dans l'outil bootctl il est assuré de conserver une copie de sauvegarde du chargeur systemd-boot et d'inscrire l'ancienne version dans l'UEFI en tant qu'option de démarrage de secours.
- Dans systemd-vmspawn ajouté le support du démarrage direct du noyau sans utiliser le firmware UEFI. L'option —firmware-features a été mise en œuvre pour activer ou désactiver sélectivement certaines fonctionnalités du firmware. Un mode —console=headless a été ajouté pour démarrer une machine virtuelle sans console ni écran. L'option —image-disk-type a été ajoutée pour choisir le type de stockage de blocs utilisé dans la VM (virtio-blk, virtio-scsi, nvme, scsi-cd). L'option —coco (Confidential Computing) a été ajoutée pour activer le mode de cryptage de la mémoire des machines virtuelles à l'aide de la technologie AMD SEV-SNP.
- Dans systemd-hostnamed et /etc/machine-info ont été ajoutés pour permettre l'attachement de balises arbitraires au système actuel, en utilisant le paramètre Tags. Les balises définies peuvent ensuite être utilisées pour l'application sélective de paramètres avec vérification via l'expression ConditionMachineTag.
- Des paramètres EventLoopRateLimitIntervalSec et EventLoopRateLimitBurst ont été ajoutés, limitant l'intensité du cycle de traitement des événements dans PID1 pour libérer des ressources CPU en cas de boucle infinie.
- Dans le gestionnaire de services, le paramètre MinimumUptimeSec a été mis en œuvre pour définir le temps de fonctionnement minimum du système (par défaut 15 secondes). Si une extinction ou un redémarrage est initié avant l'écoulement de ce temps, un retard correspondant est ajouté à l'étape finale.
- De nouveaux paramètres pour les unités ont été mis en œuvre, notamment CPUSetPartition pour définir le type de partition cpuset dans cgroup (root, isolated, member), RestrictFileSystemAccess pour autoriser uniquement l'exécution de fichiers exécutables vérifiés par signature numérique via dm-verity, ainsi que CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec pour recevoir des notifications de forte charge sur le CPU et les entrées/sorties.
- La liste des métriques fournies par l'outil systemd-report. Par exemple, des informations sur la taille de la mémoire physique et le nombre de cœurs de CPU actifs ont été ajoutées, ainsi que des données sur le contenu des champs SMBIOS et /etc/machine-info, des informations sur le support du mode Confidential Computing et des informations sur le fabricant des puces TPM2.
- Dans systemd-oomd la possibilité de définir des règles pour éliminer des processus en cas de manque de mémoire dans le système a été mise en œuvre. Les règles peuvent être définies dans le répertoire /etc/systemd/oomd/rules.d/ ou dans les unités de service via la directive OOMRule.
- Dans systemd-socket-proxy ajouté le support du protocole PROXY, conforme à la première version du protocole haproxy.
- Dans systemd-networkd Un nouveau backend sd-dhcp-relay a été implémenté pour les relais DHCP. Les paramètres dans la section [DHCPServer] — BindToInterface, RelayTarget, RelayAgentCircuitId et RelayAgentRemoteId sont désormais obsolètes, et il convient d'utiliser le paramètre DHCPRelay dans la section [Network] et une série de nouveaux réglages dans la section [DHCPRelay] et dans le fichier networkd.conf. La commande networkctl dhcp-lease INTERFACE a été ajoutée pour enregistrer un dump avec les informations sur l'attribution des adresses IP (DHCP lease).
- timerlat pour exécuter un conteneur, en utilisant l'outil L'option —restrict-address-families a été ajoutée, ainsi que dans les fichiers .nspawn le paramètre RestrictAddressFamilies pour limiter les familles d'adresses des sockets utilisées dans le conteneur. Dans les futures versions, seuls les types AF_INET, AF_INET6 et AF_UNIX seront autorisés par défaut.
- La prise en charge de l'ancien format de base de données udev (version 0.x) a été abandonnée. La mise à jour à la volée depuis les versions systemd vers la version 247 (opennet.ru) n'est plus supportée.
- Lors de la compilation avec la bibliothèque C musl, la version minimale requise est désormais musl 1.2.6.
Il convient également de noter la sortie du projet liberated-systemd 261, un fork de systemd exempt de code potentiellement utilisé pour surveiller les utilisateurs. Dans la version proposée, les modifications concernent la suppression du code ajoutant un champ birthDate dans userdb avec la date de naissance de l'utilisateur, ainsi que l'option —birth-date dans l'outil homectl pour définir l'âge.
Source : linux.org.ru
