Systemd 233 lädt Environment-Variablen aus Textdateien, kommt besser mit verschlüsselten Festplatten zurecht und bringt neue Optionen im Containerbereich mit.
Es dauert recht lange, sich durch die Liste an Änderungen für Systemd 233 zu fräsen, die Ausführlichkeit der Release-Ankündigung ist wie immer erschöpfend und lobenswert zugleich. Für Details werfen Admins am besten einen Blick auf die Ankündigung selbst, ein paar Dinge stechen aber heraus.
Umgebungsvariablen und Cgroups
Instanzen des Systemd User Manager laden nun Umgebungsvariablen aus Textdateien, die ein Environment-Generator beim Laden der Konfiguration auf Wunsch einliest. So integrieren Admins Umgebungsvariablen in den Environment Block, aus dem sich gestartete Services dann bedienen. Die Variablen legt der Admin wahlweise unter „/etc/environment.d/“, „~/.config/environment.d“ oder „/usr/lib/environment.d/“ ab.
Am Support für Cgroups haben die Entwickler ebenfalls geschraubt, der gemischte Control-Groups-Modus (Option „hybrid“) unterstützt nun Cgroups in Version 1 besser. Den mit der Option „hybrid“ erzielten Mischbetrieb von Cgroups v1 und v2 empfiehlt die Ankündigung aber nur für Distributionen, die zur Release anstehen. Entwicklungsvarianten, wie etwa Fedora Rawhide, sollten besser die Option „unified“ verwenden, die allein auf die neue Cgroups-Version 2 setzt.
Systemd-networkd und Systemd-nspawn
Den „.network“-Konfigurationsdateien von Systemd-networkd stehen nun ein paar neue Optionen zur Verfügung. Setzt der Admin „ListenPort=“ in der „[DHCP]“-Sektion ein, horcht der DHCP-Client auf dem UDP-Clientport. Über „Unmanaged=“ lassen sich ein oder mehrere Devices von der Betreuung durch Systemd ausschließen. Über „MulticastDNS=yes“ löst der Host Namen entfernter Host auf und antwortet auf mDNS A- und AAAA-Anfragen. Beim Bonding, also dem Zusammenschalten von Netzwerk-Devices, helfen die beiden Schalter „ActiveSlave=“ und „PirimarySlave=“. Nicht zuletzt konfiguriert „IPv6ProxyNDPAddress=“ IPv6 Proxy NDP-Adressen.
Systemd-nspawn bringt Support für flüchtige Bootvorgänge von Disk-Images mit, wobei sich „–ephemeral“ und „–image=“ kombinieren lassen und das Booten auch für normale Verzeichnisse gilt, die nicht Btr-FS als Dateisystem verwenden. Unterstützt das Dateisystem allerdings keine Reflinks und FS-Snapshots, braucht der initiale Copy-Vorgang deutlich mehr Ressourcen. Die Option „–image“ erlaubt es zudem auch, Raw Devices einzubinden.
Über die Schalter „Overlay=“ und „OverlayReadOnly=“ definieren „.nspawn“-Konfigurationsdateien Overlay Mounts, über „–bind=“ und „–overlay=“ startet Systemd-nspawn Overlay- und Bind-mounts, bei denen die Quelle im Container-Tree liegt. Dem Pfad dorthin müssen Admins dann ein „+“ voranstellen. Ansonsten taugen beide Optionen dafür, ein temporäres Source-Dir in „/var/tmp“ zu schaffen, das verschwindet, sobald der Admin den Container deaktiviert.
Eine weitere neue Option für Unit Files ist „RootImage=“. Sie erlaubt es, das Root-Directory für einen Dienst aus einem Image zu laden, nicht aus einem nromalen Verzeichnis. Der neue Schalter „–pivot-root=switch“ ordnet das Root-Dir in einem Container einem bestimmten Mountpunkt zu, während das ursprüngliche Root-Dir an einen anderen Ort wandert. Nicht zuletzt kann Nspawn nun mit LUKS verschlüsselte und mit Verity geschützte Partitionen einrichten.
LUKS und Verity
Generell unterstützt Systemd 233 Verschlüsselung besser. das fängt damit an, dass es die Kerneloptionen „CONFIG_CRYPTO_USER_API_HASH“, „CONFIG_CRYPTO_HMAC“ und „CONFIG_CRYPTO_SHA256“ voraussetzt. Ein „systemd-verity-generator“ erzeugt analog zum „systemd-cryptsetup-generator“ Verity-Root-Partition, wenn Systemd bootet. Der „systemd-gpt-auto-generator“ unterstützt das Aufsetzen von verschlüsselten Root-Partitionen. Außerdem ist experimentell das neue Tool „/usr/lib/systemd/system-dissect“ an Bord, das Disk-Images nach der Bootable Partition Specification untersucht. Es kann Images mit komplexen Partitionierungen in ein lokales Verzeichnis mounten, um sie zu untersuchen. Dazu zählen auch solche mit LUKS und Verity-Partitionen.
Ansonsten verwenden alle Pythonskripte von Systemd Python 3, laufen Systemd Unit Tests jetzt auch ohne Source- oder Build-Verzeichnisse, funktionieren in Unit Files die Specifier „%c“, „%r“, „%R“ nicht mehr, verwendet die Debug-Shell standardmäßig „/bin/sh“ oder beschränkt die neue Option „RestrictNamespaces=“ für Unit Files den Zugriff auf die verschiedenen Process Namespaces, die der Kernel anbietet. Eine Service Unit kann dann keine zusätzlichen Dateisysteme, Netzwerke oder User anlegen.
Und vieles mehr
In der Datei „/etc/fstab“ dürfen Admins nun systemd-spezifische Mountoptionen wie „x-systemd.mount-timeout=“, „x-systemd.device-bound“ oder „x-systemd.after=“ und „x-systemd.before=“ verwenden. Der „systemd-fstab-generator“ prüft nun auf die Kerneloption „systemd.volatile=“. Das folgt dem Konzept von „systemd-nspawn –volatile=“, gilt aber für nicht-virtuelle Bootvorgänge.
Herunterladen lässt sich die neue Version, indem Interessierte dem Link in der Ankündigung folgen. Darin lassen sich auch weitere Details zur neuen Version nachlesen. Informationen zum Umgang mit Umgebungsvariablen liefert ein Blogeintrag hier.