Après six mois de développement, la version du gestionnaire de système systemd 257 a été présentée. Changements clés : nouveaux utilitaires systemd-sbsign et systemd-keyutil, prise en charge de MPTCP lorsqu'il est activé sur un socket, prise en charge initiale de la construction avec la bibliothèque Musl C, le Utilitaire updatectl pour gérer l'installation des mises à jour via systemd-sysupdate, possibilité de lancer des services dans des espaces de noms PID séparés, protection contre la suppression accidentelle de fichiers lors de l'utilisation de « systemd-tmpfiles —purge ».
Parmi les changements de la nouvelle version :
- Добавлена новая утилита systemd-sbsign для заверения цифровой подписью исполняемых файлов в формате PE (Portable Executable), предназначенных для использования при загрузке в режиме EFI Secure Boot. Для формирования подписи могут использоваться движки и провайдеры, предоставляемые библиотекой OpenSSL. Systemd-sbsign может применяться в качестве альтернативы приложениям sbsigntool и pesign в утилите ukify при формировании универсальных образов ядра UKI (Unified Kernel Image), объединяющих в одном файле загрузчик для UEFI (UEFI boot stub), образ ядра Linux et l'environnement système initrd chargé en mémoire.
- Un nouvel utilitaire, systemd-keyutil, a été ajouté pour implémenter diverses opérations sur les clés privées et les certificats X.509. Par exemple, systemd-keyutil peut être utilisé pour tester la capacité à charger des clés privées et des certificats, et à en extraire des clés publiques au format PEM.
- Dans les unités « .socket » utilisées pour assurer le fonctionnement du mécanisme d'activation des sockets (démarrage des processus lors de la tentative d'établissement d'une connexion réseau), la prise en charge de MPTCP (Multipath TCP) est implémentée. MPTCP est une extension du protocole TCP permettant d'organiser le fonctionnement d'une connexion TCP en acheminant simultanément les paquets via plusieurs routes à travers différentes interfaces réseau liées à différents ports. adresses IP.
- Inclut les modifications nécessaires pour construire à l’aide de la bibliothèque standard Musl C.
- В различные компоненты systemd, выводящие индикаторы прогресса выполнения операций (например, systemd-repart, systemd-sysupdate/updatectl и importctl), добавлена возможность использования ANSI-последовательностей для анимирования отображения прогресса. Подобные последовательности пока поддерживаются только в Windows Terminal (предполагается, что со временем подобная возможность будет перенесена и в эмуляторы терминалов для Linux).
- Les capacités du composant systemd-sysupdate ont été étendues, utilisées pour détecter, télécharger et installer automatiquement les mises à jour à l'aide d'un mécanisme atomique de remplacement de partitions, de fichiers ou de répertoires (deux partitions/fichiers/répertoires indépendants sont utilisés, dont l'un contient le fichier de travail actuel). ressource, et l'autre installe la mise à jour suivante), après quoi les sections/fichiers/répertoires sont échangés). En pratique, systemd-sysupdate est déjà utilisé dans GNOME OS.
En plus du processus systemd-sysupdate, un service du même nom a été ajouté qui permet à D-Bus d'être utilisé pour gérer les mises à jour du système par un utilisateur non privilégié. Pour gérer le service, un nouvel utilitaire updatectl est également inclus. Ajout de l'indicateur « --offline » à systemd-sysupdate pour désactiver le téléchargement des métadonnées sur le réseau et utiliser uniquement les versions déjà téléchargées sur le système local. Ajout de la prise en charge de la sortie au format JSON pour toutes les commandes.
- Une nouvelle propriété « PrivatePIDs » a été implémentée pour les services, avec laquelle vous pouvez organiser le lancement de processus avec PID 1 (processus init) dans un espace d'identifiant de processus séparé (espace de noms PID). Dans l'environnement créé pour le processus lancé, seuls les processus de l'espace de noms créé pour celui-ci seront visibles.
- Ajout de la prise en charge des correspondances insensibles à la casse aux règles udev (par exemple 'ATTR{foo}==i»abcd»'). En utilisant udev, il est possible de fournir aux utilisateurs locaux non privilégiés un accès (« uaccess ») au périphérique /dev/udmabuf, nécessaire pour travailler avec les caméras IPMI via libcamera. udev fournit la reconnaissance de divers portefeuilles cryptographiques matériels avec une interface USB et définit pour eux la propriété ID_HARDWARE_WALLET, ce qui vous permet de leur appliquer le mode « uaccess » pour l'accès des utilisateurs non privilégiés.
- De nouveaux champs RELEASE_TYPE, EXPERIMENT et EXPERIMENT_URL ont été ajoutés au fichier /etc/os-release. "RELEASE_TYPE" peut prendre les valeurs "experimental", "development", "stable" et "lts" pour séparer les versions stables des builds de développement et expérimentales. Les paramètres EXPERIMENT et EXPERIMENT_URL sont destinés à expliquer l'essence de la version expérimentale.
- L'utilitaire run0, développé en remplacement du programme sudo, a ajouté l'option « --shell-prompt-prefix », qui spécifie la chaîne de préfixe pour l'invite du shell de commande. Par défaut, l'emoji « 🦸 » s'affiche en préfixe pour mettre en évidence visuellement une session surélevée.
- Dans systemd-tmpfiles, pour éviter de supprimer accidentellement les mauvais fichiers, l'option "--purge" s'applique désormais uniquement aux paramètres de tmpfiles.d/ pour lesquels l'indicateur "$" est explicitement défini. L'opération "--purge" nécessite également désormais de spécifier au moins un fichier du répertoire tmpfiles.d/. Pour les chaînes de type 'L', le drapeau '?' a été ajouté, lorsqu'il est spécifié, un lien symbolique sera créé uniquement si le fichier cible existe.
- Dans le gestionnaire de services et les utilitaires associés, le code de suivi des processus continue d'être converti pour utiliser PIDFD au lieu de PID. Un PIDFD est associé à un processus spécifique et ne change pas, tandis qu'un PID peut être associé à un autre processus après la fin du processus actuel associé à ce PID.
- Pour les services, il est désormais possible de spécifier la valeur « debug » dans le paramètre « RestartMode », dans lequel le service défaillant sera redémarré avec le mode débogage activé (la variable d'environnement DEBUG_INVOCATION=1 est définie), et la valeur LogLevelMax sera temporairement élevé au niveau de débogage.
- Le gestionnaire PID 1 a la capacité de charger des règles pour le module LSM IPE (Integrity Policy Enforcement), qui définissent la politique d'intégrité pour l'ensemble du système (quelles opérations sont autorisées et comment l'authenticité des composants doit être vérifiée).
- L'option « DeferReactivation » a été ajoutée aux fichiers unitaires « .timer », ce qui permet de sauter la prochaine activation du timer si le service n'a pas encore terminé son exécution depuis la dernière activation.
- Dans le paramètre du fichier unité PrivateUsers, il est désormais possible de spécifier la valeur « identity » pour permettre le mappage des ID utilisateur lors de la création d'un espace de noms utilisateur.
- Ajout de la prise en charge de la valeur « déconnecté » au paramètre du fichier d'unité PrivateTmp, qui utilisera des instances tmpfs distinctes pour les répertoires /tmp/ et /var/tmp/.
- La prise en charge des nouveaux modes « privé » et « strict » a été ajoutée au paramètre de fichier d'unité ProtectControlGroups. Lorsqu'il est défini, un nouvel espace de noms de groupe de contrôle est créé pour le service et cgroupfs est monté. Lorsque l'option "strict" est définie, cgroupfs est monté en mode lecture seule.
- Les paramètres StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory et ConfigurationDirectory offrent la possibilité d'utiliser l'indicateur ':ro' pour restreindre l'accès aux répertoires correspondants en mode lecture seule.
- Ajout de la prise en charge de la valeur « firmware » au paramètre de ligne de commande du noyau « systemd.machine_id », dans lequel l'identifiant système (ID machine) sera calculé en fonction de l'UUID de SMBIOS/DeviceTree.
- Добавлена поддержка системных вызовов mseal(), listmount() и statmount(), появившихся в недавних выпусках ядра Linux.
- Les utilitaires solvectl, timedatectl et systemd-inhibit prennent désormais en charge l'autorisation interactive à l'aide de Polkit.
- L'utilitaire systemctl a ajouté la possibilité d'utiliser l'indicateur "--now" dans la commande "reenable".
- Ajout de l'option "--json" à l'utilitaire systemd-mount pour la sortie au format JSON (par exemple, lorsqu'elle est spécifiée avec "--list-devices", une liste de périphériques sera affichée au format JSON).
- Ajout des options "-l" et "--full" à l'utilitaire "localectl" pour désactiver le découpage des longues lignes pendant la sortie.
- L'option HibernateOnACPower a été ajoutée à sleep.conf, ce qui vous permet de retarder le passage en mode veille jusqu'à ce que l'appareil soit déconnecté de la source d'alimentation fixe.
- Dans systemd-sysusers, la prise en charge du modificateur « ! » a été ajoutée aux lignes « u », avec lesquelles vous pouvez créer des comptes d'utilisateurs complètement verrouillés (auparavant, la définition d'un mot de passe incorrect était utilisée pour bloquer un utilisateur, qui, par exemple, n'a pas conduit à un blocage lors de l'authentification par clé en SSH ).
- Systemd-coredump ajoute une option "EnterNamespace" qui permet d'accéder à l'espace du point de montage de tout processus en panne pour obtenir leurs symboles de débogage. En pratique, cette option peut être utile pour organiser la trace des fichiers principaux à partir d'applications exécutées dans des conteneurs isolés.
- systemd-logind inclut le traitement de la combinaison Ctrl-Alt-Shift-Esc pour envoyer le signal org.freedesktop.login1.SecureAttentionKey aux composants de l'environnement utilisateur avec une demande d'affichage d'une boîte de dialogue de connexion sécurisée. Implémentation du paramètre « DesignatedMaintenanceTime » pour planifier automatiquement la fin du travail à une heure spécifiée. Par analogie avec la prise en charge des appareils DRM et evdev, la prise en charge a été ajoutée pour configurer l'accès des utilisateurs non privilégiés aux appareils hidraw (contrôleurs de jeu et joysticks).
- systemd-machined prend désormais en charge les connexions client non privilégiées. machines virtuelles et les conteneurs. L'accès aux fonctionnalités de systemd-machined est assuré par l'API Varlink, en plus de D-Bus.
- Une nouvelle section « [IPv6AddressLabel] » a été ajoutée au fichier de configuration networkd.conf pour configurer les étiquettes et les préfixes des adresses IPv6.
- Ajout de l'option "--stdin" à la commande "networkctl edit" pour obtenir le contenu du fichier à partir du flux standard. Ajout de la prise en charge de l'édition et de l'affichage des fichiers .netdev en spécifiant une interface réseau pour les commandes « networkctl edit » et « networkctl cat ». Ajout de l'option « --no-ask-password » pour désactiver l'autorisation interactive.
- Ajout d'une option "--certificate-source" aux utilitaires ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart et systemd-sbsign pour charger un certificat X.509 via le fournisseur OpenSSL au lieu de le charger directement à partir d'un déposer.
- systemd-boot ajoute la possibilité d'utiliser les boutons de volume pour monter et descendre dans le menu de démarrage, ce qui peut être utile sur des appareils tels que les smartphones. La prise en charge de l'installation de la base de données UEFI Secure Boot au format ESL(db/dbx/…) pour systemd-boot a été ajoutée à l'utilitaire bootctl.
- Ajout de l'option « --list-invocation » à journalctl pour afficher une liste des appels d'unité et de l'option « --invocation » (« -I ») pour afficher les journaux associés uniquement à un appel spécifique.
- systemd-nspawn ajoute la prise en charge de l'utilisation non privilégiée de FUSE (Filesystem in Userspace) dans les conteneurs. Lors de l'utilisation de l'option « --bind-user », les clés SSH de l'utilisateur requises pour l'accès via SSH sont transmises au conteneur.
- libsystemd a ajouté une nouvelle interface de programmation "sd-json" qui utilise le format JSON, ainsi qu'une interface "sd-varlink" qui utilise IPC Varlink.
- La version de base recommandée du noyau a été mise à niveau vers la version 5.4, créée en 2019. L'année prochaine, ils prévoient de cesser de prendre en charge les anciens noyaux et de marquer la version 5.4 comme version de base minimale prise en charge.
- La prise en charge de cgroups v1 est obsolète et est désactivée par défaut (pour l'activer, vous devez spécifier SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 sur la ligne de commande du noyau en plus de l'activer dans les paramètres systemd). La prochaine version de systemd 258 prévoit de supprimer complètement le code associé aux cgroups v1. La version 258 de Systemd devrait également supprimer la prise en charge des scripts de service System V.
Source: opennet.ru
