Nach neunmonatiger Entwicklung wurde die Version 258 des Systemmanagers systemd veröffentlicht. Wichtige Änderungen: Unterstützung für cgroups v1 und System-V-Komponenten wurde eingestellt, neue Dienstprogramme systemd-factory-reset und systemd-pty-forward wurden hinzugefügt, das Konzept von Home Areas wurde eingeführt, sowie die Unterstützung für das Booten von einem über HTTP erhaltenen Disk-Image.
Zu den Änderungen in der neuen Version gehören:
- Das Dienstprogramm systemd-factory-reset wurde hinzugefügt, um bei nächster Gelegenheit einen Reset auf die Werkseinstellungen (factory reset) zu initiieren oder abzubrechen. Für einen sofortigen Reset wurde die Einheit factory-reset-now.target hinzugefügt. Um während des Bootvorgangs zurückzusetzen, wurde der Kernel-Befehlszeilenparameter „systemd.factory_reset“ ergänzt.
- Das Konzept der Heimverzeichnisse (home area) wurde hinzugefügt, um Unterverzeichnisse innerhalb des Hauptverzeichnisses ($HOME) festzulegen, in die sich ein Benutzer separat einloggen kann, um in verschiedenen Arbeitsumgebungen zu arbeiten. Zum Beispiel kann für einen Benutzer jeweils ein separates Verzeichnis für die Testkonfiguration und für die Entwicklung erstellt werden (~/Areas/foo und ~/Areas/bar). Um sich mit einem zusätzlichen Bereich beim Login zu verbinden, muss der Bereichsname im Login mit dem Zeichen „%“ getrennt angegeben werden („username%foo“) oder das Utility run0 mit der Option „—area“ verwendet werden. Die Unterstützung für Heimverzeichnisse ist derzeit nur in systemd-homed implementiert und steht für vollständige grafische Sitzungen nicht zur Verfügung.
- Im Kernel-Befehlszeilenparameter „systemd.pull“ und „rd.systemd.pull“, die für das automatische Booten verwendet werden, virtuellen Maschinen, wurde das Flag „blockdev“ hinzugefügt. Bei Angabe dieses Flags wird das geladene Abbild an ein Loopback-Gerät angeschlossen, was das direkte Booten in das über HTTP erhaltene Disk-Image ermöglicht. Zum Beispiel: rd.systemd.pull=raw,machine,verify=no,blockdev:image:https://192.168.100.1:8081/image.raw \ root=/dev/disk/by-loop-ref/image.raw-part2
- Das Dienstprogramm systemd-pty-forward wurde hinzugefügt, mit dem ein Pseudo-Terminal (PTY) erstellt und ein Prozess darauf gestartet werden kann, indem die Ausgabe an das ursprüngliche Terminal umgeleitet wird, von dem das Dienstprogramm gestartet wurde.
- Der Code, der die Unterstützung für cgroups v1 gewährte, wurde entfernt.
- Systemverwaltungs-Komponenten im Stil von System V wurden entfernt, darunter die Dienstprogramme itctl, runlevel und telinit, das Gerät /dev/initctl, das Konzept der Runlevels (runlevel), die unit-Dateien runlevel[0-6].target und die Möglichkeit, den Zustand über den Befehl init zu steuern. Die Unterstützung für Service-Skripte von System V ist für die nächste Version vorgesehen.
- Die minimalen Anforderungen an die Linux-Kernelversion wurden auf Version 5.4 erhöht (Version 5.7 wird empfohlen).
- Die Berechtigungen für die Geräte tty/pts wurden von 0620 (-rw—w—-) auf 0600 (-rw——-) geändert, um anderen Benutzern derselben Gruppe das Schreiben in fremde Terminals zu verwehren. Um das alte Verhalten bei der Kompilierung wiederherzustellen, kann die Option '-Dtty-mode=0620' verwendet werden.
- In systemd-resolved und systemd-importd wurde die Unterstützung für die Bibliotheken GnuTLS und libgcrypt eingestellt, als Krypto-Backend bleibt nur OpenSSL.
- In den Unit-Dateien wurde die Unterstützung für die Bedingung „ConditionKernelModuleLoaded“ hinzugefügt, um zu überprüfen, ob ein bestimmtes Kernel-Modul geladen ist. Die Bedingung „ConditionKernelVersion“ wurde durch die allgemeinere Struktur „ConditionVersion“ ersetzt, durch die neben dem Kernel auch die Versionen von systemd und glibc überprüft werden können.
- Die Unterstützung für benutzerdefinierte Quotas für das Verzeichnis /tmp/, das in tmpfs gespeichert ist, und für /dev/shm/ wurde aktiviert.
- Für Slice-Units, die verwendet werden, um das System in Teile zu zerlegen (app.slice, background.slice, session.slice), um Ressourcen zwischen verschiedenen Benutzerdiensten zu isolieren, wurden die Einstellungen ConcurrencySoftMax und ConcurrencyHardMax implementiert, um die Anzahl der gleichzeitig aktiven Einheiten zu steuern. Die hinzugefügten Funktionen können als Mechanismus zur Verwaltung des Arbeitsstarts unter Berücksichtigung des Ressourcenverbrauchs genutzt werden, wobei hierarchische Arbeitspools unterstützt werden.
- In die Einstellung ExecStart wurde die Unterstützung für das Präfix ‚|‘, das den Start über den Kommandozeileninterpreter definiert, integriert.
- Eine API auf Basis des Varlink-Protokolls wurde implementiert, die zur Abfrage des aktuellen Zustands, der Liste der Einheiten und des Zustands der Einheiten verwendet werden kann.
- Ein zusätzliches Verzeichnis mit Voreinstellungen («preset») für die im initrd ausgeführten Systemdienste wurde hinzugefügt, das es ermöglicht, das Aktivieren der Systemdienste für den Host und initrd zu trennen.
- Die Möglichkeit, Quotas an einzelne Dienste zu binden, wurde hinzugefügt, unter Verwendung der Einstellungen StateDirectoryQuota, StateDirectoryAccounting, CacheDirectoryQuota, CacheDirectoryAccounting, LogsDirectoryQuota und LogsDirectoryAccounting.
- In systemd-udevd wurde die Unterstützung der Eigenschaften ID_NET_BRING_UP_BEFORE_JOINING_BRIDGE, ID_NET_NAME_INCLUDE_DOMAIN, ID_AV_LIGHTS hinzugefügt. Ein Kernel-Build-Parameter «udev.trace» und die Option «—traceu» in der devadm-Utility wurden hinzugefügt, um die Logik von udev während des Bootens und des Betriebs zu protokollieren. Der Befehl «cat» wurde in die udevadm-Utility aufgenommen, um den Inhalt der installierten Regeldateien anzuzeigen. Eine automatische Kennzeichnung der Debug-USB-Schnittstellen von Android (ADB DbC, ADB, Fastboot) für den Zugriff durch nicht privilegierte Benutzer wurde sichergestellt.
- In systemd-networkd wurden die Einstellungen IPv4DuplicateAddressDetectionTimeoutSec, UseSIP im Abschnitt «[DHCPv6]», MPLSRouting im Abschnitt «[Network]», Preference im Abschnitt «[IPv6RoutePrefix]», LinkLocalLearning, Locked, MACAuthenticationBypass und VLANTunnel im Abschnitt «[Bridge]» hinzugefügt. Der DHCPv4-Client unterstützt jetzt das BOOTP-Protokoll.
- In systemd-logind wurden neue Sitzungsarten eingeführt: „none“ zur Deaktivierung der Sitzungsherstellung; „user-light“ und „user-early-light“ zur Erstellung von Benutzersitzungen ohne Aktivierung des Dienstmanagers für interaktive Sitzungen.
- In systemd-resolved wurde die Unterstützung für Delegierungszonen („delegate zone“) hinzugefügt, die es ermöglichen, DNS-Anfragen für bestimmte Domains über angegebene DNS-Server zu leiten. Server Es wird die parallele Ausführung von DNS-Abfragen für A- und AAAA-Datensätze für eine Domain unterstützt. In resolved.conf wurde die Option RefuseRecordTypes hinzugefügt, um die blockierten Datensatztypen zu definieren, beispielsweise um A-Datensätze auf Hosts nur mit IPv6 zu blockieren.
- Der Befehl „systemctl start“ hat die Option „—verbose“ erhalten, um die Protokolle der Einheiten anzuzeigen, auf denen die Operation durchgeführt wird.
- In systemd-boot wurde Unterstützung für zwei neue Bootloader-Spezifikationen hinzugefügt – «uki» und «uki-url». Im zweiten Fall ist es möglich, ein UKI-Image von einem externen Host über das HTTP-Protokoll zu laden. Zudem wurde die Möglichkeit hinzugefügt, UEFI-Firmware-Images in UKI (Unified Kernel Image) zu integrieren. In der loader.conf wurde die Einstellung «reboot-on-error» hinzugefügt, um das Verhalten (neustarten oder das Bootmenü anzeigen) im Falle eines Fehlers bei der gewählten Boot-Position festzulegen.
- In systemd-nspawn wurde die Unterstützung für privilegierte Container-Images, die in normalen Verzeichnissen gespeichert sind, hinzugefügt.
- In systemd-importd wurde die Unterstützung für Images, die mit dem Algorithmus zstd komprimiert sind, hinzugefügt (neben .xz, .gz und .bz2).
- Die Kernel-Befehlszeilenparameter «systemd.break» und «rd.systemd.break» wurden hinzugefügt, um interaktive Haltepunkte einzufügen, die den Bootvorgang zu bestimmten Zeiten unterbrechen. Es stehen vier Haltepunkte zur Verfügung: «pre-udev», «pre-basic», «pre-mount» und «pre-switch-root».
- In der nächsten Version wird die Unterstützung des Verzeichnisses /run/lock/ und des Paketfilters iptables eingestellt (in systemd-networkd und systemd-nspawn bleibt nur die Unterstützung von nftables bestehen). Außerdem werden die Anforderungen an die minimalen Versionen erhöht: Linux-Kernel 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0.
Quelle: opennet.ru
