AprÚs cinq mois de développement, la version du gestionnaire de systÚme systemd 252 a été publiée. Le changement clé de cette nouvelle version est l'intégration du support d'un processus de démarrage modernisé, permettant de vérifier par des signatures numériques non seulement le noyau et le chargeur de démarrage, mais aussi les composants de l'environnement systÚme de base.
La mĂ©thode proposĂ©e consiste Ă utiliser une image de noyau unifiĂ©e UKI (Unified Kernel Image) au dĂ©marrage, qui combine le gestionnaire de dĂ©marrage du noyau Ă partir de l'UEFI (UEFI boot stub), l'image du noyau Linux et l'environnement systĂšme initrd chargĂ© en mĂ©moire, utilisĂ© pour l'initialisation initiale avant le montage du systĂšme de fichiers racine. L'image UKI est prĂ©sentĂ©e sous la forme d'un exĂ©cutable au format PE, pouvant ĂȘtre chargĂ©e au moyen de chargeurs traditionnels ou appelĂ©e directement depuis le firmware UEFI. Lors de l'appel depuis l'UEFI, il est possible de vĂ©rifier l'intĂ©gritĂ© et l'authenticitĂ© par une signature numĂ©rique non seulement du noyau, mais aussi du contenu de l'initrd.
Pour le calcul des paramĂštres des registres TPM PCR (Trusted Platform Module Platform Configuration Register), utilisĂ©s pour contrĂŽler l'intĂ©gritĂ© et gĂ©nĂ©rer la signature numĂ©rique de l'image UKI, un nouvel outil systemd-measure a Ă©tĂ© inclus. La clĂ© publique utilisĂ©e dans la signature et les informations associĂ©es sur le PCR peuvent ĂȘtre intĂ©grĂ©es directement dans l'image de dĂ©marrage UKI (la clĂ© et la signature sont enregistrĂ©es dans un fichier au format PE dans les champs â.pcrsigâ et â.pcrkeyâ) et extraites par des outils externes ou internes.
Notamment, pour utiliser ces informations, les outils systemd-cryptsetup, systemd-cryptenroll et systemd-creds ont été adaptés, permettant d'assurer le lien entre les partitions de disque chiffrées et le noyau validé par une signature numérique (dans ce cas, l'accÚs à la partition chiffrée est accordé uniquement si l'image UKI a passé la vérification par signature numérique basée sur les paramÚtres stockés dans le TPM).
De plus, l'outil systemd-pcrphase a été intégré, permettant de gérer l'association de différentes étapes de démarrage aux paramÚtres stockés en mémoire des crypto-processeurs prenant en charge la spécification TPM 2.0 (par exemple, il est possible de rendre la clé de déchiffrement de la partition LUKS2 accessible uniquement dans l'image initrd et de bloquer l'accÚs à celle-ci lors des étapes ultérieures du démarrage).
D'autres modifications incluent :
- L'utilisation de la locale C.UTF-8 est assurée par défaut, sauf indication contraire dans les paramÚtres.
- La possibilitĂ© d'exĂ©cuter l'opĂ©ration de prĂ©configuration complĂšte des services («systemctl preset») lors du premier dĂ©marrage a Ă©tĂ© mise en Ćuvre. Pour activer la prĂ©configuration au dĂ©marrage, une construction avec l'option «-Dfirst-boot-full-preset» est requise, mais elle devrait ĂȘtre activĂ©e par dĂ©faut dans les futures versions.
- Dans les unitĂ©s de gestion des utilisateurs, un contrĂŽleur de ressources CPU a Ă©tĂ© mis en Ćuvre, ce qui a permis d'assurer l'application des rĂ©glages CPUWeight Ă toutes les unitĂ©s slice utilisĂ©es pour diviser le systĂšme en parties (app.slice, background.slice, session.slice) afin d'isoler les ressources entre les diffĂ©rents services utilisateur qui concourent pour les ressources CPU. Le CPUWeight prend Ă©galement en charge la valeur «idle» pour activer le mode de fourniture de ressources correspondant.
- Dans les unités temporaires («transient») et dans l'outil systemd-repart, la possibilité de redéfinir des réglages par la création de fichiers drop-in dans le répertoire /etc/systemd/system/nom.d/ a été autorisée.
- Pour les images systĂšme, un drapeau de fin de support (âsupport-endedâ) a Ă©tĂ© mis en place, dĂ©terminant ce fait sur la base de la valeur du nouveau paramĂštre «SUPPORT_END=» dans le fichier /etc/os-release.
- Les rĂ©glages «ConditionCredential=» et «AssertCredential=» ont Ă©tĂ© ajoutĂ©s, pouvant ĂȘtre utilisĂ©s pour ignorer ou terminer de maniĂšre abrupte les unitĂ©s en l'absence de certaines informations d'identification dans le systĂšme.
- Dans system.conf et user.conf, les réglages «DefaultSmackProcessLabel=» et «DefaultDeviceTimeoutSec=» ont été ajoutés pour définir le niveau de sécurité SMACK et le délai d'activation de l'unité, appliqués par défaut.
- Dans les réglages «ConditionFirmware=» et «AssertFirmware=», il est désormais possible d'indiquer des champs SMBIOS spécifiques, par exemple pour démarrer l'unité uniquement si le champ /sys/class/dmi/id/board_name contient la valeur «Custom Board», on peut spécifier «ConditionFirmware=smbios-field(board_name = «Custom Board»)».
- Au cours de l'initialisation (PID 1), la possibilité d'importer des informations d'identification à partir de champs SMBIOS (Type 11, «lignes de fournisseur OEM») a été ajoutée, en complément de leur définition via qemu_fwcfg, ce qui facilite la fourniture d'informations d'identification. aux machines virtuelles et permet d'éviter des outils tiers tels que cloud-init et ignition.
- Lors de l'arrĂȘt, la logique de dĂ©montage des systĂšmes de fichiers virtuels (proc, sys) a Ă©tĂ© modifiĂ©e et des informations sur les processus bloquant le dĂ©montage des systĂšmes de fichiers ont Ă©tĂ© enregistrĂ©es dans le journal.
- Dans le filtre des appels systÚme (SystemCallFilter), l'accÚs à l'appel systÚme riscv_flush_icache est autorisé par défaut.
- Le chargeur sd-boot a introduit la possibilitĂ© de dĂ©marrer en mode mixte, oĂč un noyau Linux 64 bits est lancĂ© depuis un firmware UEFI 32 bits. Une fonctionnalitĂ© expĂ©rimentale a Ă©tĂ© ajoutĂ©e pour appliquer automatiquement les clĂ©s SecureBoot Ă partir des fichiers trouvĂ©s dans l'ESP (partition systĂšme EFI).
- De nouvelles options ont Ă©tĂ© ajoutĂ©es Ă l'outil bootctl : « âall-architectures » pour installer des fichiers binaires pour toutes les architectures EFI prises en charge, « âroot= » et « âimage= » pour travailler avec un rĂ©pertoire ou une image disque, « âinstall-source= » pour dĂ©finir la source pour l'installation, « âefi-boot-option-description= » pour gĂ©rer les noms des entrĂ©es de dĂ©marrage.
- L'outil systemctl a ajoutĂ© la commande âlist-automountsâ pour afficher la liste des rĂ©pertoires montĂ©s automatiquement, et l'option « âimage= » pour exĂ©cuter des commandes en liaison avec l'image disque spĂ©cifiĂ©e. Les commandes âshowâ et âstatusâ ont reçu les options « âstate= » et « âtype= ».
- Dans systemd-networkd, des options « TCPCongestionControlAlgorithm= » ont été ajoutées pour choisir l'algorithme de contrÎle de congestion TCP, « KeepFileDescriptor= » pour conserver le descripteur de fichier des interfaces TUN/TAP, « NetLabel= » pour définir des étiquettes NetLabel, et « RapidCommit= » pour accélérer la configuration via DHCPv6 (RFC 3315). Dans le paramÚtre « RouteTable= », il est désormais autorisé de spécifier les noms des tables de routage.
- Dans systemd-nspawn, l'utilisation de chemins de fichiers relatifs est dĂ©sormais autorisĂ©e dans les options « âbind= » et « âoverlay= ». L'option « âbind= » a Ă©tĂ© enrichie du paramĂštre ârootidmapâ pour lier l'identifiant utilisateur root dans le conteneur au propriĂ©taire du rĂ©pertoire montĂ© cĂŽtĂ© hĂŽte.
- Dans systemd-resolved, le paquet OpenSSL est utilisé par défaut comme backend pour le chiffrement (le support de gnutls reste en option). Les algorithmes DNSSEC non pris en charge sont désormais traités comme non sécurisés, au lieu de renvoyer une erreur (SERVFAIL).
- Dans systemd-sysusers, systemd-tmpfiles et systemd-sysctl, la possibilitĂ© de transmettre des configurations via le mĂ©canisme de stockage des identifiants a Ă©tĂ© mise en Ćuvre.
- L'outil systemd-analyze a ajoutĂ© la commande âcompare-versionsâ pour comparer des chaĂźnes contenant des numĂ©ros de version (similaire Ă ârpmdev-vercmpâ et âdpkg âcompare-versionsâ). La commande âsystemd-analyze dumpâ a introduit la possibilitĂ© de filtrer les unitĂ©s par masque.
- Lors du choix du mode de suspension en plusieurs étapes (suspend-then-hibernate, passage en mode veille aprÚs le mode d'attente), le temps passé en mode d'attente est désormais déterminé en fonction de l'estimation du temps d'autonomie restante. Le passage instantané en mode veille se produit lorsque la batterie reste à moins de 5 % de charge.
- Un nouveau mode de sortie « -o short-delta » a été ajouté à 'journalctl', affichant la différence de temps entre les différents messages dans le journal.
- Le support de la création de partitions avec FS Squashfs et de partitions pour dm-verity, y compris avec des signatures numériques, a été ajouté à systemd-repart.
- Une configuration « StopIdleSessionSec= » a été ajoutée à systemd-logind pour terminer une session inactive aprÚs l'expiration d'un délai spécifié.
- Une option « âunlock-key-file= » a Ă©tĂ© ajoutĂ©e Ă systemd-cryptenroll pour extraire la clĂ© de dĂ©chiffrement depuis un fichier, plutĂŽt que par une demande interactive Ă l'utilisateur.
- La possibilité d'exécuter l'utilitaire systemd-growfs dans des environnements sans udev a été assurée.
- L'amélioration du support des systÚmes avec plusieurs cartes graphiques a été apportée à systemd-backlight.
- La licence des exemples de code fournis dans la documentation a été modifiée de CC0 à MIT-0.
Modifications rompant la compatibilité :
- Lors de la vĂ©rification du numĂ©ro de version du noyau Ă lâaide de la directive ConditionKernelVersion, un simple comparatif de chaĂźnes est dĂ©sormais appliquĂ© pour les opĂ©rateurs â=â et â!=â. Si l'opĂ©rateur de comparaison n'est pas spĂ©cifiĂ©, un correspondance par glob avec les caractĂšres â*â, â?â et â[â, â]â peut ĂȘtre utilisĂ©e. Pour comparer les versions au style de la fonction stverscmp(), les opĂ©rateurs ââ, â=â doivent ĂȘtre utilisĂ©s.
- L'étiquette SELinux utilisée pour vérifier l'accÚs depuis le fichier de unit est désormais lue au moment du chargement du fichier, et non au moment de la vérification d'accÚs.
- La condition « ConditionFirstBoot » se déclenche désormais uniquement lors du premier démarrage du systÚme, directement au stade de démarrage et renvoie « false » lors de l'appel des unités aprÚs le démarrage.
- En 2024, la prise en charge du mécanisme de limitation des ressources cgroup v1 sera interrompue dans systemd, ce qui en fait un élément obsolÚte dans la version systemd 248. Les administrateurs sont invités à prévoir la migration vers cgroup v2 pour les services qui dépendent de cgroup v1. La principale différence entre cgroups v2 et v1 est l'utilisation d'une hiérarchie de cgroups commune pour tous les types de ressources, au lieu de hiérarchies séparées pour la répartition des ressources CPU, la gestion de la mémoire et l'entrée/sortie. Les hiérarchies séparées entraßnent des difficultés d'organisation de l'interaction entre les gestionnaires et des coûts supplémentaires pour le noyau lors de l'application des rÚgles pour un processus mentionné dans différentes hiérarchies.
- Au cours de la seconde moitié de 2023, la prise en charge des hiérarchies de répertoires séparées sera interrompue lorsque /usr est monté séparément de la racine ou lorsque les répertoires /bin et /usr/bin, /lib et /usr/lib sont séparés.
Source : opennet.ru
