Nach neun Monaten Entwicklung wurde die Version 258 des Systemmanagers systemd veröffentlicht. Zu den wichtigsten Änderungen gehören: die Einstellung der Unterstützung für cgroups v1 und System-Management-Komponenten im Stil von System V, neue Dienstprogramme systemd-factory-reset und systemd-pty-forward, das Konzept von Home-Bereichen, Unterstützung für das Booten von einem Disk-Image, das über HTTP bezogen wurde.
Zu den Änderungen in der neuen Version gehören:
- Das Dienstprogramm systemd-factory-reset wurde hinzugefügt, um bei der nächsten Anmeldung eine Zurücksetzung der Einstellungen auf die Werkseinstellungen (factory reset) einzuleiten oder abzubrechen. Für eine sofortige Zurücksetzung wurde die Einheit factory-reset-now.target hinzugefügt. Ein Kernel-Parameter "systemd.factory_reset" wurde für die Zurücksetzung während des Bootvorgangs hinzugefügt.
- Das Konzept von Home-Bereichen (home area) wurde hinzugefügt, das es ermöglicht, Unterverzeichnisse innerhalb des Haupt-Homeverzeichnisses ($HOME) zu definieren, in die Benutzer getrennt für unterschiedliche Arbeitsbereiche eintreten können. Zum Beispiel kann für einen Benutzer ein separates Gebiet für das Testen von Einstellungen und für die Entwicklung eingerichtet werden (~\/Areas\/foo und ~\/Areas\/bar). Um sich bei der Anmeldung mit einem zusätzlichen Gebiet zu verbinden, muss der Name des Gebiets im Login angegeben werden, getrennt durch das Zeichen „%“ („username%foo“) oder das Dienstprogramm run0 mit der Option „—area“ genutzt werden. Die Unterstützung von Home-Bereichen ist bisher nur in systemd-homed implementiert und nicht für vollständige grafische Sitzungen verfügbar.
- Im Kernel-Befehlszeilenparameter „systemd.pull“ und „rd.systemd.pull“, die für das automatische Booten von virtuelle Maschinen, Containern oder Erweiterungs-Images (sysext, confext), wurde das Flag „blockdev“ hinzugefügt. Wenn dieses Flag angegeben wird, wird das geladene Image an ein Loopback-Gerät gebunden, was ein direktes Booten von einem Disk-Image ermöglicht, das über HTTP bezogen wird. 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 Pseudoterminal („PTY“) erstellt und darauf ein Prozess gestartet werden kann, wobei jegliche Ausgabe an das ursprüngliche Terminal weitergeleitet wird, auf 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 init-Befehl zu steuern. Die Entfernung der Unterstützung von System V-Dienstskripten ist für die nächste Version geplant.
- Die Mindestanforderungen an die Linux-Kernelversion wurden auf 5.4 (empfohlene Version 5.7) angehoben.
- Die Zugriffsrechte für die Geräte tty/pts wurden von 0620 (-rw—w—-) auf 0600 (-rw——-) geändert, um anderen Benutzern mit derselben Gruppe das Schreiben in das Terminal eines anderen zu verbieten. 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 erhalten.
- In die Unit-Dateien wurde die Unterstützung für die Bedingung „ConditionKernelModuleLoaded“ zur Überprüfung des Ladens eines bestimmten Kernelmoduls hinzugefügt. Die Bedingung „ConditionKernelVersion“ wurde durch die allgemeinere Konstruktion „ConditionVersion“ ersetzt, mit der neben dem Kernel auch die Versionen von systemd und glibc überprüft werden können.
- Die Unterstützung für benutzerdefinierte Quoten für das Verzeichnis /tmp/, das in tmpfs abgelegt ist, und für /dev/shm/ wurde aktiviert.
- Für Slice-Units, die verwendet werden, um das System in Teile (app.slice, background.slice, session.slice) für die Isolation von Ressourcen zwischen verschiedenen Benutzerdiensten zu unterteilen, wurden die Einstellungen ConcurrencySoftMax und ConcurrencyHardMax implementiert, um die Anzahl gleichzeitig aktiver Units zu steuern. Die neuen Funktionen können als Mechanismus zur Ressourcenverwaltung beim Start von Aufgaben verwendet werden, gemäß der Ressourcenverbrauch, unterstützt durch hierarchische Arbeits-Pools.
- In die Einstellung ExecStart wurde die Unterstützung für das Prefix ‘|’ hinzugefügt, das den Start über eine Kommandozeile definiert.
- Ein API auf Basis des Varlink-Protokolls wurde implementiert, das zur Bestimmung des aktuellen Status, der Liste der Units und dem Zustand der Units verwendet werden kann.
- Ein zusätzlicher Katalog mit Voreinstellungen („preset“) für systemd-Dienste, die in initrd ausgeführt werden, wurde hinzugefügt, um einen Unterschied zwischen der Aktivierung systemd-Dienste für den Host und für initrd zu ermöglichen.
- Die Möglichkeit, Quoten für einzelne Dienste zu binden, wurde hinzugefügt, indem die Einstellungen StateDirectoryQuota, StateDirectoryAccounting, CacheDirectoryQuota, CacheDirectoryAccounting, LogsDirectoryQuota und LogsDirectoryAccounting verwendet werden.
- In systemd-udevd wurde die Unterstützung für die Eigenschaften ID_NET_BRING_UP_BEFORE_JOINING_BRIDGE, ID_NET_NAME_INCLUDE_DOMAIN, ID_AV_LIGHTS hinzugefügt. Ein Parameter für den Kernel-Build «udev.trace» sowie die Option «—traceu» im devadm-Tool zur Nachverfolgung der Funktionsweise von udev während des Bootvorgangs und während des Betriebs wurden hinzugefügt. Dem Tool udevadm wurde der Befehl «cat» hinzugefügt, 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 unprivilegierte 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. Im DHCPv4-Client wurde die Unterstützung für das BOOTP-Protokoll hinzugefügt.
- In systemd-logind wurden neue Sitzungsklassen hinzugefügt: «none» zum Deaktivieren der Sitzungserstellung; «user-light» und «user-early-light» zur Erstellung von Benutzersitzungen ohne Aktivierung des Dienstmanagers für den Benutzer (für nicht-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 Domänen über festgelegte DNS-Server zu leiten. Server Es wurde die parallele Abfrage von DNS-Antworten vom Typ A und AAAA für eine bestimmte Domäne sichergestellt. In resolved.conf wurde die Einstellung RefuseRecordTypes hinzugefügt, um die zu blockierenden Antworttypen festzulegen, beispielsweise um «A»-Einträge auf Hosts, die nur IPv6 unterstützen, zu blockieren.
- Dem Befehl «systemctl start» wurde die Option «—verbose» hinzugefügt, um das Protokoll der Operationen der Einheiten anzuzeigen, auf die der Befehl angewendet wird.
- In systemd-boot wurde die Unterstützung für zwei neue Bootloader-Spezifikationen – «uki» und «uki-url» – hinzugefügt. Im zweiten Fall wurde die Möglichkeit implementiert, ein UKI-Image von einem externen Host über das HTTP-Protokoll zu laden. Es wurde die Möglichkeit geschaffen, UEFI-Firmware-Images in UKI-Images (Unified Kernel Image) zu integrieren. In loader.conf wurde die Einstellung «reboot-on-error» hinzugefügt, um das Verhalten (neustarten oder das Boot-Menü anzeigen) im Falle eines Fehlers bei der gewählten Bootposition zu definieren.
- In systemd-nspawn wurde die Unterstützung für den unprivilegierten Betrieb von Container-Images, die in regulären Verzeichnissen gespeichert sind, eingeführt.
- In systemd-importd wurde die Unterstützung für Images eingeführt, die mit dem zstd-Algorithmus komprimiert sind (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 Zeitpunkten unterbrechen. Es stehen vier Haltepunkte zur Verfügung: „pre-udev“, „pre-basic“, „pre-mount“ und „pre-switch-root“.
- In der nächsten Version ist die Einstellung der Unterstützung für das Verzeichnis /run/lock/ und den Paketfilter iptables geplant (in systemd-networkd und systemd-nspawn bleibt nur die Unterstützung für nftables bestehen). Außerdem sind erhöhte Anforderungen an die minimalen Versionen geplant: Linux-Kernel 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0.
Quelle: opennet.ru
