Nach drei Monaten Entwicklung steht die Version 261 des Systemmanagers systemd zur Verfügung. Zu den wichtigsten Änderungen gehören die Vorbereitung zur Unterstützung einer API für die Altersverifikation, die Unterstützung der Kexec Handover- und Live Update Orchestration-Subsysteme für einen Neustart ohne Zustandverlust, das IMDS (Instance Metadata Service), eine Funktionalität zum Schutz des Bootvorgangs auf Systemen ohne physisches TPM (Trusted Platform Module) sowie die Komponente systemd-sysinstall mit einer Implementierung für den Installer.
Zu den Änderungen in der neuen Version gehören:
- Ein neuer Bestandteil, systemd-sysinstall, wurde hinzugefügt, der einen einfachen Installer für Betriebssysteme bereitstellt, der über die Kommandozeile oder eine interaktive textbasierte Benutzeroberfläche gesteuert werden kann. Die Funktionalität von systemd-sysinstall basiert auf bereits bestehenden Möglichkeiten von systemd: zur Konfiguration der Festplattenpartitionen kommt systemd-repart zum Einsatz, zur Installation des Kernels und zur Generierung des Bootmenüs wird der Befehl "bootctl link" verwendet, zur Installation des Bootloaders systemd-boot erfolgt die Nutzung des Befehls "bootctl install", und für die anfängliche Konfiguration des zu installierenden Systems (z.B. Auswahl der Locale und der Tastaturbelegung) wird systemd-creds verwendet.
- Im Rahmen der Vorbereitung zur Umsetzung der Anforderungen des Gesetzes zur Integration von APIs zur Altersüberprüfung wurde in der Benutzerdatenbank userdb das Feld birthDate mit dem Geburtsdatum des Nutzers hinzugefügt. Dieses Feld wird im sich entwickelnden Portal xdg-desktop-portal für Distributionen und im Service AccountsService verwendet, um Anwendungen über die D-Bus-Schnittstelle "org.freedesktop.AgeVerification1" oder "org.freedesktop.ParentalControls" Informationen zur Alterskategorie des Nutzers bereitzustellen. Zur Festlegung des Alters wurde der Utility homectl die Option "—birth-date" hinzugefügt.
- Der PID1-Handler hat die Unterstützung für die Linux-Kernel-Subsysteme LUO (Live Update Orchestration) und KHO (Kexec Handover) erhalten, die eine vollständige Neustart- und Aktualisierungsfunktion des Kernels ermöglichen, ohne den Betrieb zu unterbrechen und den Zustand des Systems, der Geräte und Prozesse zu verlieren. KHO ermöglicht das Starten eines neuen Kernels aus dem alten, ohne den Systemzustand zu verlieren, während LUO die Erhaltung des Zustands von Geräten und dem Arbeitsspeicher umsetzt und die Kontinuität von mit DMA und Interruptverarbeitung verbundenen Operationen gewährleistet.
In systemd wurde die Möglichkeit eingeführt, Dateideskriptoren für System- und Benutzer-Units vor dem Aufruf von kexec zu speichern und nach einem Neustart des Kernels über kexec wiederherzustellen. In den Units können auch eigene LUO-Sitzungen erstellt werden, die beim Ausführen von kexec gespeichert und wiederhergestellt werden. Um die Speicherung des Status der Dateideskriptoren zu aktivieren, sollte die Einstellung ‚FileDescriptorStorePreserve=yes‘ verwendet werden.
- Das Systemd-imdsd-Subsystem wurde implementiert, das eine API auf Basis von Varlink IPC bereitstellt, um lokalen Programmen Zugriff auf die IMDS (Instance Metadata Service)-Dienste zu gewähren, die von verschiedenen Cloud-Anbietern bereitgestellt werden. IMDS ermöglicht es, für virtuelle Maschinen Information über die Cloud-Umgebung zu erhalten, beispielsweise über die Netzwerkkonfiguration, den geografischen Standort des Knotens, den CPU-Typ und die Speicherkapazität. systemd-imdsd bietet sowohl eine Low-Level-API für den Zugriff auf bestimmte Felder als auch eine High-Level-Schnittstelle zum Abfragen typischer Schlüssel, die den schlüsselspezifischen Informationen einzelner Cloud-Plattformen zugeordnet sind. Zur Interaktion mit systemd-imdsd wurde das Tool systemd-imds hinzugefügt, mit dem Felder aus IMDS in das lokale Benutzersystem importiert werden können.
Eine neue Datenbank hwdb.d/40-imds.hwdb wurde hinzugefügt, um Cloud-Plattformen anhand von Informationen aus SMBIOS zu erkennen und die auf dem aktuellen Knoten verfügbare IMDS-Funktionalität zu bestimmen. Es wird die Erkennung der Cloud-Plattformen Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS und Vultr unterstützt. Ein systemd-imds-generator ist verfügbar, um automatisch den Dienst zur Datenabfrage über IMDS zu konfigurieren, wenn festgestellt wird, dass Sie auf einer unterstützten Cloud-Plattform arbeiten. Es ist möglich, universelle Images zu erstellen, die die Nutzung von IMDS beim Start in Cloud-Umgebungen unterstützen und dennoch ohne IMDS funktionieren können.
- In systemd-stub wurde die Funktionalität „Boot Secret“ implementiert, die es ermöglicht, einen Schlüssel basierend auf einer EFI-Variablen zu erstellen, die in einem für das Betriebssystem nicht zugänglichen Bereich gespeichert und mit einem zufälligen Wert initialisiert wird. Im initrd wird der Schlüssel über die Datei /.extra/boot-secret übergeben. Diese Funktionalität kann erforderlich sein, um einen system-spezifischen zufälligen Schlüssel zur Verifizierung des Bootvorgangs oder zur Verschlüsselung auf Systemen ohne Hardware-TPM (Trusted Platform Module) zu erhalten.
- Der Dienst systemd-tpm2-swtpm.service wurde hinzugefügt, um den TPM-Chip-Emulator swtpm (Software TPM Emulator) zu starten. Dieser kann verwendet werden, um automatisch auf eine softwarebasierte TPM-Implementierung für sicheres Booten auf Systemen ohne hardwarebasierten TPM zurückzugreifen. Das softwarebasierte TPM arbeitet im Benutzerspeicher und bietet nicht den gleichen Schutzlevel wie ein hardwarebasiertes TPM. In bestimmten Situationen ist der Einsatz jedoch gerechtfertigt im Vergleich zu einem Betrieb ohne TPM. Beispielsweise kann das softwarebasierte TPM einen Verschlüsselungsschlüssel für Partitionen durch die neue Funktionalität „boot secret“ erhalten und nutzt zur Speicherung seines Zustands die Partition ESP (EFI-Systempartition) auf der Festplatte. Um das softwarebasierte TPM automatisch zu aktivieren, wurde der Kernel-Parameter systemd.tpm2_software_fallback vorgeschlagen.
- Der stabile und in /usr/bin/ platzierte systemd-sysupdate-Komponent wurde bekanntgegeben, der für die automatische Erkennung, das Herunterladen und die Installation von Updates mithilfe eines atomaren Mechanismus zum Austausch von Partitionen, Dateien oder Verzeichnissen vorgesehen ist (es kommen zwei unabhängige Partitionen/Dateien/Verzeichnisse zum Einsatz, von denen eine die aktuelle Arbeitsressource enthält und die andere das nächste Update installiert, bevor die Partitionen/Dateien/Verzeichnisse getauscht werden).
- In systemd-resolved wurde die Möglichkeit implementiert, neue DNS-Einträge durch das Platzieren von JSON-Dateien in den Verzeichnissen systemd/resolve/static.d/ zu überschreiben oder anzugeben. Im Gegensatz zu /etc/hosts ermöglichen es die neuen Dateien nicht nur, an Hostnamen zu binden, IP-Adressen sondern auch ressourcenbasierte DNS RR-Einträge zu definieren, die von "A" und "AAAA" abweichen. Darüber hinaus wurden in systemd-resolved Einstellungen für die Größe des DNS-Caches hinzugefügt: 'DNSCacheSize', 'MulticastDNSCacheSize' und 'LLMNRCacheSize'.
- Ein Dienstprogramm ‚storagectl‘ wurde hinzugefügt, um Speichereinheiten zu inspizieren und die Verbindung blockierender Geräte und Dateisysteme zu verwalten.
- Im Rahmen der Initiative zur Verringerung von Abhängigkeiten wird in libsystemd das dynamische Laden von Bibliotheken wie libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk und libcryptsetup realisiert.
Dies geschieht durch den Aufruf von dlopen(), wenn ihre Funktionen tatsächlich benötigt werden. - In systemd-tmpfiles wurde die Option „—inline“ hinzugefügt, die das Festlegen von Direktiven in der Kommandozeile ohne die Erstellung von Konfigurationsdateien in tmpfiles.d/ und ohne das Übermitteln von Einstellungen über STDIN ermöglicht. Ein neuer Direktiventyp ‚k/K‘ wurde für die Festlegung von Berechtigungen hinzugefügt. Zudem wurde die Konfigurationsdatei tmpfiles.d/root.conf hinzugefügt, die den Zugriff auf das Wurzelverzeichnis (/) auf 0555 (-r-xr-xr-x) festlegt, um falsche Berechtigungen bei der dynamischen Erstellung des Wurzel-FS zu verhindern.
- Im Tool bootctl wurde die Sicherung des Bootloaders systemd-boot sowie das Eintragen der alten Version in die UEFI als Sicherheitsoption für den Bootvorgang ermöglicht.
- Im systemd-vmspawn wurde die Unterstützung für das direkte Laden des Kernels ohne Verwendung von UEFI-Firmware hinzugefügt. Eine Option „—firmware-features“ wurde implementiert, um die gezielte Aktivierung oder Deaktivierung bestimmter Firmware-Funktionen zu ermöglichen. Der Modus „—console=headless“ wurde hinzugefügt, um virtuelle Maschinen ohne Konsole und Bildschirm zu starten. Außerdem wurde die Option „—image-disk-type“ hinzugefügt, um den verwendeten VM-Typ des Blockspeichers auszuwählen (virtio-blk, virtio-scsi, nvme, scsi-cd). Eine Option „—coco“ (Confidential Computing) wurde für die Aktivierung des Speicherverschlüsselungsmodus hinzugefügt. virtuellen Maschinen unter Verwendung der Technologie AMD SEV-SNP.
- In systemd-hostnamed und /etc/machine-info wurde die Unterstützung für das Anheften beliebiger Tags an das aktuelle System mit dem Parameter „Tags“ hinzugefügt. Die festgelegten Tags können dann verwendet werden, um gezielte Einstellungen mit einer Überprüfung über den Ausdruck ConditionMachineTag anzuwenden.
- Die Einstellungen EventLoopRateLimitIntervalSec und EventLoopRateLimitBurst wurden hinzugefügt, um die Intensität der Ereignisverarbeitungsschleife in PID1 zu begrenzen und CPU-Ressourcen im Falle einer Endlosschleife freizugeben.
- Im Dienstmanager wurde die Einstellung MinimumUptimeSec implementiert, um die minimale Betriebszeit des Systems festzulegen (standardmäßig 15 Sekunden). Wenn vor Ablauf dieser Zeit ein Herunterfahren oder Neustart initiiert wird, wird in der Endphase eine entsprechende Verzögerung hinzugefügt.
- Für die Einheiten wurden neue CPUSetPartition-Einstellungen eingeführt, um den Typ der cpuset-Partition in cgroup festzulegen ("root", "isolated", "member"), sowie RestrictFileSystemAccess, um nur digitale signierte ausführbare Dateien, die durch dm-verity verifiziert sind, zuzulassen, und CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec zur Benachrichtigung bei hoher CPU- und E/A-Auslastung.
- Die Liste der von der Utility systemd-report ausgegebenen Metriken wurde erweitert. So wurden beispielsweise Informationen über den physikalischen Speicher und aktive CPU-Kerne, Daten zu den Inhalten der SMBIOS-Felder und /etc/machine-info, Informationen zur Unterstützung des Confidential Computing-Modus sowie Angaben zum Hersteller des TPM2-Chips hinzugefügt.
- In systemd-oomd wurde die Möglichkeit implementiert, Regeln für das Abfangen von Prozessen bei speicherknappen Situationen im System festzulegen. Die Regeln können im Verzeichnis /etc/systemd/oomd/rules.d/ oder in den Dienst-Units über die Direktive OOMRule definiert werden.
- In systemd-socket-proxy wurde die Unterstützung für das "PROXY"-Protokoll hinzugefügt, das der ersten Version des "haproxy"-Protokolls entspricht.
- In systemd-networkd wurde ein neuer Backend sd-dhcp-relay für DHCP-Relay implementiert. Die folgenden Einstellungen im Abschnitt „[DHCPServer]“ wurden als veraltet erklärt: BindToInterface, RelayTarget, RelayAgentCircuitId und RelayAgentRemoteId. Stattdessen sollte der Parameter DHCPRelay im Abschnitt „[Network]“ und eine Reihe neuer Einstellungen im Abschnitt [DHCPRelay] sowie in der Datei networkd.conf verwendet werden. Es wurde ein Befehl ‚networkctl dhcp-lease INTERFACE‘ hinzugefügt, um einen Dump mit Informationen zu DHCP-Leases zu speichern.
- Das Tool systemd-nspawn hat die Option „—restrict-address-families“ hinzugefügt, und in den .nspawn-Dateien die Einstellung RestrictAddressFamilies, um die verwendeten Adressfamilien von Sockets im Container zu beschränken. In zukünftigen Versionen werden standardmäßig nur die Familien AF_INET, AF_INET6 und AF_UNIX erlaubt sein.
- Die Unterstützung des alten udev-Datenbankformats (Version 0.x) wurde eingestellt. Ein Update von Versionen von systemd auf Release 247 wird nicht mehr unterstützt.
- Beim Zusammenstellen mit der musl-C-Bibliothek ist jetzt mindestens die Version musl 1.2.6 erforderlich.
Zusätzlich kann die Veröffentlichung des Projekts liberated-systemd 261 erwähnt werden, das einen Fork von systemd entwickelt, der von Code befreit ist, der zur Überwachung von Benutzern verwendet werden könnte. Die Änderungen in der vorgeschlagenen Veröffentlichung bestehen darin, den Code zu entfernen, der in userdb das Feld birthDate mit dem Geburtsdatum des Benutzers hinzufügt, sowie in das Tool homectl die Option „—birth-date“, um das Alter festzulegen.
Quelle: opennet.ru
