Nach drei Monaten Entwicklung ist verfügbar wurde der Systemmanager veröffentlicht systemd 261. Wichtige Änderungen: Vorbereitung zur Unterstützung der API zur Altersverifikation, Unterstützung der Kexec Handover und Live Update Orchestration für einen Neustart ohne Zustandsverlust, IMDS (Instance Metadata Service), Funktionalität zum Schutz des Bootvorgangs auf Systemen ohne physischen TPM (Trusted Platform Module), und der component systemd-sysinstall mit der Implementierung eines Installationsprogramms.
Unter Änderungen in der neuen Ausgabe:
- Neuer Bestandteil hinzugefügt systemd-sysinstall mit der Implementierung eines einfachen Betriebssysteminstallers, der über die Kommandozeile oder eine interaktive Textoberfläche gesteuert werden kann. Die Funktionalität von systemd-sysinstall basiert auf den bereits bestehenden Möglichkeiten von systemd: zur Partitionierung des Datenträgers wird systemd-repart, zur Installation des Kernels und zur Generierung des Bootmenüs — der Befehl „bootctl link“, zur Installation des Bootloaders systemd-boot — der Befehl „bootctl install“, für die anfängliche Konfiguration des installierten Systems (z. B. Auswahl der Sprache und des Tastaturlayouts) — systemd-creds.
- Im Rahmen der Vorbereitung zur Umsetzung der Anforderungen von Gesetzen zur Integration von API zur Altersverifikation in das OS. userdb Das Feld birthDate wurde mit dem Geburtsdatum des Benutzers hinzugefügt. Das hinzugefügte Feld kann im sich entwickelnden Portal xdg-desktop-portal für Distributionen sowie im AccountsService verwendet werden, um Anwendungen Informationen über die Alterskategorie des Benutzers über die D-Bus-Schnittstelle org.freedesktop.AgeVerification1 oder org.freedesktop.ParentalControls bereitzustellen. Zur Einstellung des Alters wurde die Option —birth-date in das Tool homectl eingefügt.
- Im Handler PID1 wurde die Unterstützung für Linux-Kernel-Subsysteme hinzugefügt. LUO (Live Update Orchestration) und KHO (Kexec Handover), die eine vollständige Neuinstallation und Aktualisierung des Kernels ermöglichen, ohne den Betrieb zu stoppen und den Status von System, Geräten und Prozessen zu verlieren. KHO bietet die Möglichkeit, einen neuen Kernel aus einem alten zu starten, ohne den Status des Systems zu verlieren, und LUO realisiert die Speicherung des Zustands von Geräten und des Arbeitsspeichers und gewährleistet die Kontinuität von DMA-Vorgängen und Interruptverarbeitungen.
In systemd wurde die Möglichkeit implementiert, Dateideskriptoren für system- und benutzerdefinierte Einheiten vor dem Aufruf von kexec zu speichern und sie nach dem Neustart des Kernels über kexec wiederherzustellen. In den Einheiten können auch eigene Sitzungen erstellt werden. LUO, die beim kexec gespeichert und wiederhergestellt werden. Um das Speichern des Zustands des Dateideskriptor-Speichers zu aktivieren, sollte die Einstellung FileDescriptorStorePreserve=yes verwendet werden. - Ein Subsystem wurde implementiert systemd-imdsd, das eine API auf Basis von Varlink IPC bereitstellt, um lokalen Programmen den Zugriff auf IMDS-Dienste (Instance Metadata Service), die von verschiedenen Cloud-Anbietern bereitgestellt werden, zu ermöglichen. IMDS erlaubt virtuellen Maschinen, Informationen über die Cloud-Umgebung abzurufen, beispielsweise können Angaben zur Netzwerkkonfiguration, zum geografischen Standort des Knotens, zum CPU-Typ und zur Speicherkapazität erhalten werden. In systemd-imdsd wird sowohl ein Low-Level-API für den Zugriff auf spezifische Felder als auch ein High-Level-Interface für Anfragen nach typischen Schlüsseln, die spezifisch für bestimmte Cloud-Plattformen sind, bereitgestellt. Um mit systemd-imdsd zu interagieren, wurde das Tool systemd-imds hinzugefügt, das es ermöglicht, Felder aus IMDS in das lokale Kontosystem zu importieren.
Eine neue Datenbank hwdb.d/40-imds.hwdb wurde hinzugefügt, um Cloud-Plattformen anhand von Informationen aus dem SMBIOS zu erkennen und die auf dem aktuellen Knoten verfügbare Funktionalität des IMDS zu bestimmen. Die Erkennung von Cloud-Plattformen wie Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS und Vultr ist implementiert. Ein systemd-imds-generator-Dienst steht zur Verfügung, um automatisch den Service zur Datenabfrage über IMDS zu integrieren, falls erkannt wird, dass Sie unter 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, jedoch auch ohne IMDS funktionsfähig sind. - In systemd-stub Die Funktionalität boot secret wurde implementiert, die es ermöglicht, einen Schlüssel basierend auf einer EFI-Variable zu erzeugen, die in einem für das Betriebssystem unzugänglichen Bereich gespeichert und mit einem zufälligen Wert initialisiert ist. Im initrd wird der Schlüssel über die Datei /.extra/boot-secret übermittelt. Diese Möglichkeit kann erforderlich sein, um einen systemspezifischen 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 einen TPM-Chip-Emulator zu starten. swtpm (Software TPM Emulator), der verwendet werden kann, um automatisch auf die softwarebasierte Implementierung von TPM für sichere Starts auf Systemen ohne Hardware-TPM zurückzugreifen. Der softwarebasierte TPM arbeitet im Benutzerspeicher und erreicht nicht das Sicherheitsniveau eines Hardware-TPM, jedoch ist die Anwendung in bestimmten Situationen gerechtfertigt, verglichen mit dem Betrieb ohne TPM. Zum Beispiel kann der softwarebasierte TPM den Verschlüsselungsschlüssel von Partitionen durch die neue Funktionalität „boot secret“ erhalten und zum Speichern seines Zustands die Partition ESP (EFI System Partition) auf der Festplatte nutzen. Für die automatische Aktivierung des softwarebasierten TPM wurde die Kernel-Befehlszeilenoption systemd.tpm2_software_fallback vorgeschlagen.
- Wurde als stabil eingestuft und in /usr/bin/ platziert: systemd-sysupdate, das zur automatischen Erkennung, herunterzuladenden und Installieren von Updates mit einem atomaren Mechanismus für den Austausch von Partitionen, Dateien oder Verzeichnissen dient (es werden zwei unabhängige Partitionen/Dateien/Verzeichnisse verwendet, wobei sich auf einer Partition das derzeit laufende Element befindet und auf der anderen das nächste Update installiert wird, bevor die Partitionen/Dateien/Verzeichnisse umgeschaltet werden).
- In systemd-resolved Die Möglichkeit zur Neudefinition oder Angabe neuer DNS-Einträge wurde durch die Platzierung von Dateien im JSON-Format in die Verzeichnisse systemd/resolve/static.d/ implementiert. Im Gegensatz zu /etc/hosts können in den neuen Dateien nicht nur IP-Adressen Hostnamen zugeordnet, sondern auch Ressource-DNS-RR-Einträge definiert werden, die von "A" und "AAAA" abweichen. Zudem 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 Speichergeräte zu inspizieren und die Verbindung von Blockgeräten und Dateisystemen zu verwalten.
- Im Rahmen der Initiative zur Reduzierung von Abhängigkeiten wurde in libsystemd die dynamische Ladefunktion für die Bibliotheken libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk und libcryptsetup durch den Aufruf von dlopen() implementiert, wenn deren Funktionen tatsächlich benötigt werden.
- In Der Befehl systemd-tmpfiles erhielt das Flag —inline, das es ermöglicht, Direktiven über die Befehlszeile festzulegen, ohne Konfigurationsdateien in tmpfiles.d zu erstellen und ohne die Einstellungen über STDIN zu übergeben. Ein neuer Direktiventyp k/K wurde hinzugefügt, um Capabilities festzulegen.. Eine Konfigurationsdatei tmpfiles.d/root.conf wurde hinzugefügt, die die Zugriffsrechte 0555 (-r-xr-xr-x) für das Wurzelverzeichnis (/) festlegt, um falsche Berechtigungen beim dynamischen Erstellen des Root-Dateisystems zu vermeiden.
- In der Dienstprogramm bootctl eine Sicherungskopie des systemd-boot-Bootloaders wurde gesichert und die alte Version in UEFI als alternative Startoption eingetragen.
- In systemd-vmspawn Unterstützung für das direkte Booten des Kernels ohne Verwendung der UEFI-Firmware wurde hinzugefügt. Die Option —firmware-features ermöglicht die selektive Aktivierung oder Deaktivierung einzelner Firmware-Funktionen. Ein —console=headless Modus wurde hinzugefügt, um eine virtuelle Maschine ohne Konsole und Bildschirm zu starten. Eine Option —image-disk-type wurde hinzugefügt, um den in der VM verwendeten Typ des Blockspeichers auszuwählen (virtio-blk, virtio-scsi, nvme, scsi-cd). Eine —coco (Confidential Computing) Option zur Aktivierung des Speicherverschlüsselungsmodus von virtuellen Maschinen unter Verwendung der AMD SEV-SNP-Technologie wurde eingeführt.
- In systemd-hostnamed und /etc/machine-info unterstützt jetzt das Anhängen beliebiger Tags an das aktuelle System, indem der Parameter Tags verwendet wird. Die festgelegten Tags können dann zur selektiven Anwendung von Einstellungen unter Verwendung der Bedingung ConditionMachineTag geprüft werden.
- Es wurden die Einstellungen EventLoopRateLimitIntervalSec und EventLoopRateLimitBurst hinzugefügt, die die Intensität des Ereignisverarbeitungzyklus in PID1 begrenzen, um 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 Einstellungen CPUSetPartition für die Festlegung des cpuset-Partitionstyps in der cgroup (root, isolated, member), RestrictFileSystemAccess zur Erlaubnis der Ausführung nur von durch digitale Signaturen mittels dm-verity verifiziertem ausführbaren Dateien, sowie CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec zur Benachrichtigung bei hoher CPU- und I/O-Auslastung umgesetzt.
- Die Liste der von der Dienstprogrammen ausgegebenen Metriken wurde erweitert. systemd-reportBeispielsweise wurden Informationen über die Größe des physischen Speichers und aktive CPU-Kerne, Daten zu den Inhalten der SMBIOS-Felder und /etc/machine-info, Informationen über die Unterstützung des Confidential Computing-Modus sowie Angaben zum Hersteller der TPM2-Chips hinzugefügt.
- In systemd-oomd Die Möglichkeit zur Festlegung von Regeln zum Abweisen von Prozessen bei unzureichendem Speicher im System wurde implementiert. Regeln können im Verzeichnis /etc/systemd/oomd/rules.d/ oder in den Service-Units über die Direktive OOMRule definiert werden.
- In systemd-socket-proxy Unterstützung für das PROXY-Protokoll, das der ersten Version des haproxy-Protokolls entspricht, wurde hinzugefügt.
- In systemd-networkd Ein neuer Backend sd-dhcp-relay für DHCP-Relays wurde implementiert. Die Einstellungen in der Sektion [DHCPServer] - BindToInterface, RelayTarget, RelayAgentCircuitId und RelayAgentRemoteId - sind als veraltet deklariert. Stattdessen sollte der Parameter DHCPRelay in der Sektion [Network] sowie eine Reihe neuer Einstellungen in der Sektion [DHCPRelay] und in der Datei networkd.conf verwendet werden. Der Befehl networkctl dhcp-lease INTERFACE wurde hinzugefügt, um einen Dump mit Informationen über die IP-Adressbindung (DHCP-Lease) zu speichern.
- In das Dienstprogramm systemd-nspawn wurde die Option —restrict-address-families hinzugefügt, und in .nspawn-Dateien die Einstellung RestrictAddressFamilies, um die verwendeten Socket-Adressfamilien im Container einzuschränken. In zukünftigen Versionen werden standardmäßig nur die Adressfamilien AF_INET, AF_INET6 und AF_UNIX erlaubt sein.
- Die Unterstützung für das alte udev-Datenbankformat (Version 0.x) wurde eingestellt. Das Upgrade von Versionen von systemd auf die Version 247 (opennet.ru) wird nicht mehr unterstützt.
- Beim Zusammenstellen mit der musl-C-Bibliothek ist jetzt mindestens die Version musl 1.2.6 erforderlich.
speziellen Distribution Release Projekts liberated-systemd 261, ein Fork von systemd, der von Code befreit ist, der zur Überwachung von Nutzern verwendet werden könnte. Die Änderungen in dieser Version bestehen darin, den Code zu entfernen, der das Feld birthDate in der userdb mit dem Geburtsdatum des Nutzers hinzufügt, sowie die Option —birth-date in das homectl-Tool für die Altersangabe.
Quelle: linux.org.ru
