Systemd ist in Version 237 erschienen. Der integrierte Netzwerkdienst konfiguriert neuerdings Wireguard-Verbindungen. Systemd bringt zudem eine Variable für den Offline-Betrieb mit sowie einige Neuerungen für “sd-bus”, die IPC-Bibliothek für D-Bus
Gleich mehrere Änderungen an der neuen Version von Systemd drehen sich um “sd-bus”, die Dbus-IPC-Bibliothek. So sorgt das neue “watch-bind”-Feature dafür, dass sich früh gestartete Boot-Dienste ohne zeitbasiertes Polling mit dem Systembus verbinden. Es lässt sich über den “busctl”-Schalter “–watch-bind=” aktivieren und wird von “systemd-networkd” und “systemd-resolved” verstanden.
Ist die D-Bus-Verbindung hergestellt, lässt sich zudem ein “Connected”-Signal erzeugen, das sich nicht nur für die “watch-bind”-Funktion als nützlich erweist. Zudem kennt “sd-bus” verschiedene neue Funktionen, darunter “sd_bus_request_name_async()” und “sd_bus_release_name_async()”, um Busnamen asynchron zu registrieren sowie “sd_bus_add_match_async()”, um ein Signal-Match asynchon zu installieren. Der Vorteil: Die Aufrufe beschleunigen die Service-Initialisierung und verringern das Risiko von Deadlocks zwischen Bus-Diensten.
Wireguard-Support und Benutzernamen
Entdeckte “systemctl” bislang eine Chroot-Umgebung, stellt es die Kommunikation mit dem Service-Manager ein. Dieses “Offline”-Verhalten lässt sich in der neuen Version über die Umgebungsvariable “$SYSTEMD_OFFLINE” explizit aktivieren. Wireguard-Verbindungen kann “systemd-networkd” nun nativ einrichten, zudem wurde der DHCPv6-Support um Präfix-Delegation erweitert.
Ein neuer Parameter “–owner=” für “systemd-mount” übersetzt einen Benutzernamen in die passenden “uid=”- und “gid=”-Mount-Optionen. Auch “systemd-notify” bringt nun eine “–uid=”-Option mit, um einen Absender für Nachrichten an den Service-Manager festzulegen. Eine vorübergehende Flag-Datei “/etc/systemd/dont-synthesize-nobody” kann verhindern, dass Systemd den Benutzer- und Gruppeneintrag für den User “nobody” (UID 65534) ändert, falls eine Distribution wie Fedora eine systemweite Änderung für diesen User anstrebt. Die Flag soll Probleme auf älteren Systemen verhindern, der Code sei aber hässlich.
Bedingungen ergänzt
Unit Files, die “.link”-Dateien von Udev und die “.netdev”-Dateien für “systemd-networkd” starten nun dank einer neuen Bedingung namens “ConditionKernelVersion=” Aktionen abhängig von der vorgefundenen Kernel-Version. Zudem prüfen Units neuerdings über “ConditionControlGroupController=”, ob ein bestimmter Cgroup-Controller verfügbar ist.
Journalctl bringt eine neue “–grep=”-Option mit, um in den Ausgaben nach bestimmten Mustern zu fahnden. Die Schalter “log-level” und “log-target” sollen in “systemd-analyze” “get-log-level”, “set-log-level”, “get-log-target” sowie “set-log-target” ablösen. Letztere funktionieren aus Gründen der Rückwärtskompatibilität allerdings noch ein wenig länger. Startet der Admin “systemd-analyze” mit dem Befehl “service-watchdogs”, zeigt das den Status für die Dienstebeobachter an. Die sind etwa nötig, um einen Dienst bei Ausfällen automatisch neu zu starten. Die Watchdogs für einzelne Dienste lassen über das Kommando und Boolsche Operatoren zudem ein- und ausschalten.
Für Systemd 238 kündigen die Entwickler zudem Änderungen an “systemd-tmpfiles” an. Die neue Version soll Dateien auch dann “altern”, wenn sie Root gehören oder im Read-only-Modus vorliegen. Die Entwickler rufen dazu auf, sich zu melden, falls Admins auf das bisherige Verhalten angewiesen sind. In der neuen Version habe man zudem das Verhalten von “f”-Zeilen für “system-tmpfiles” modifiziert, weil es nicht mit der Dokumentation überein stimmte. Weitere Details zu den Änderungen lassen sich in der Ankündigung nachlesen, den Quellcode der neuen Version gibt es auf Github.





