Nach drei Monaten Entwicklung verfügbar der Veröffentlichung des Systemmanagers systemd 261. Wichtige Änderungen: Vorbereitung zur Unterstützung einer API zur Altersüberprüfung, Unterstützung der Subsysteme Kexec Handover und Live Update Orchestration für einen Neustart ohne Verlust des Zustands, Subsystem IMDS (Instance Metadata Service), Funktionalität zum Schutz des Bootvorgangs auf Systemen ohne physischen TPM (Trusted Platform Module), Komponente systemd-sysinstall mit Implementierung eines Installationsprogramms.
Unter Änderungen in der neuen Version:
- Ein neuer Bestandteil systemd-sysinstall mit der Implementierung eines einfachen Installationsprogramms für das Betriebssystem, das über die Kommandozeile oder eine interaktive Textoberfläche gesteuert werden kann. Die Funktionalität von systemd-sysinstall basiert auf bereits bestehenden Möglichkeiten von systemd: Für die Konfiguration von Festplattenteilungen 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 zu installierenden Systems (z. B. die Auswahl von Locale und Tastaturlayout) – systemd-creds.
- Im Rahmen der Vorbereitung zur Umsetzung der Anforderungen von Gesetzen zur Integration einer API zur Altersüberprüfung in OS in die Datenbank userdb wurde das Feld birthDate mit dem Geburtsdatum des Nutzers hinzugefügt. Das hinzugefügte Feld kann im entwickelten Portal xdg-desktop-portal für Distributionen und im Dienst AccountsService verwendet werden, um Anwendungen Informationen über die Alterskategorie des Nutzers über die D-Bus-Schnittstelle org.freedesktop.AgeVerification1 oder org.freedesktop.ParentalControls bereitzustellen. Für die Festlegung des Alters wurde der Option —birth-date in das Tool homectl hinzugefügt.
- Im Handler PID1 wurde die Unterstützung der Kernel-Subsysteme LUO (Live Update Orchestration) und KHO (Kexec Handover), die es ermöglichen, den Kernel vollständig neu zu starten und zu aktualisieren, ohne den Betrieb zu unterbrechen und den Zustand des Systems, der Geräte und Prozesse zu verlieren. KHO bietet Möglichkeiten, um einen neuen Kernel aus einem alten zu starten, ohne den Zustand des Systems zu verlieren, und LUO implementiert die Speicherung des Zustands von Geräten und des Arbeitsspeichers sowie die Kontinuität von Operationen, die mit DMA und Interrupt-Verarbeitung verbunden sind.
In systemd wurde die Möglichkeit implementiert, Dateideskriptoren vor dem Aufruf von kexec zu speichern und sie nach dem Neustart des Kernels über kexec wiederherzustellen. In den Units können auch eigene Sitzungen erstellt werden. LUO, die beim Ausführen von kexec gespeichert und wiederhergestellt werden. Um die Speicherung des Zustands des Datei-Deskriptor-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 Zugriff auf die von verschiedenen Cloud-Anbietern bereitgestellten IMDS-Dienste (Instance Metadata Service) zu ermöglichen. IMDS ermöglicht virtuellen Maschinen, Informationen über die Cloud-Umgebung zu erhalten, wie z. B. Informationen zur Netzwerkkonfiguration, zur geografischen Lage des Knotens, zum CPU-Typ und zur Größe des Speichers. In systemd-imdsd wird sowohl eine Low-Level-API für den Zugriff auf einzelne Felder als auch eine High-Level-Schnittstelle für Anfragen nach typischen Schlüsseln angeboten, die mit plattformspezifischen Schlüsseln übereinstimmen. Zur Interaktion mit systemd-imdsd wurde das Tool systemd-imds hinzugefügt, das es ermöglicht, Felder aus IMDS in das lokale Benutzerkontosystem zu importieren.
Um Cloud-Plattformen anhand von Informationen aus SMBIOS zu erkennen und die auf dem aktuellen Knoten verfügbare IMDS-Funktionalität zu bestimmen, wurde eine neue Datenbank hwdb.d/40-imds.hwdb hinzugefügt. Es wurde die Erkennung der Cloud-Plattformen Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS und Vultr implementiert. Ein systemd-imds-generator steht zur Verfügung, um automatisch den Dienst für den Abruf von IMDS-Daten einzufügen, wenn festgestellt wird, dass sie unter einer unterstützten Cloud-Plattform betrieben werden. Es ist möglich, universelle Images zu erstellen, die die Nutzung von IMDS beim Start in Cloud-Umgebungen unterstützen, aber auch ohne IMDS funktionieren können. - Im systemd-stub wurde die Funktionalität boot secret implementiert, die es ermöglicht, einen Schlüssel basierend auf einer EFI-Variable zu generieren, die in einem für das Betriebssystem unzugä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 systemspezifischen zufälligen Schlüssel zur Verifizierung des Bootprozesses 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 Emulator für TPM-Chips zu starten. swtpm (Software TPM-Emulator), der für den automatischen Rollback auf eine Softwareimplementierung von TPM für sicheres Booten auf Systemen ohne Hardware-TPM verwendet werden kann. Die Software-TPM funktioniert im Benutzerspeicher und bietet nicht das Schutzniveau wie ein Hardware-TPM, aber in bestimmten Situationen ist ihr Einsatz im Vergleich zu einem Betrieb ohne TPM gerechtfertigt. Zum Beispiel kann die Software-TPM den Verschlüsselungsschlüssel der Partitionen durch die neue Funktionalität „boot secret“ erhalten und zur Speicherung ihres Zustands die Partition ESP (EFI System Partition) auf der Festplatte verwenden. Um die Software-TPM automatisch zu aktivieren, wurde der Parameter systemd.tpm2_software_fallback als Kernel-Befehlszeilenparameter vorgeschlagen.
- Wurde stabilisiert und in /usr/bin/ bereitgestellt, die Komponente systemd-sysupdate, die für die automatische Erkennung, den Download und die Installation von Updates unter Verwendung des atomaren Mechanismus für den Austausch von Partitionen, Dateien oder Verzeichnissen vorgesehen ist (es werden zwei unabhängige Partitionen/Dateien/Verzeichnisse verwendet, wobei sich auf einem die aktuell laufende Ressource befindet und im anderen das nächste Update installiert wird, bevor sie anschließend ausgetauscht werden).
- Im systemd-resolved hat die Möglichkeit implementiert, neue DNS-Einträge zu überschreiben oder anzugeben, indem Dateien im JSON-Format in den Verzeichnissen systemd/resolve/static.d/ abgelegt werden. Im Gegensatz zu /etc/hosts können in den neuen Dateien nicht nur IP-Adressen an Hostnamen gebunden werden, sondern auch ressourcenbasierte DNS-RR-Einträge, 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 Speichergeräte zu inspizieren und die Verbindung von Blockgeräten und Dateisystemen zu verwalten.
- Im Rahmen der Initiative zur Reduzierung von Abhängigkeiten wurden in libsystemd die dynamische Ladebibliotheken libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk und libcryptsetup durch den Aufruf von dlopen() implementiert, wenn deren Funktionen tatsächlich erforderlich sind.
- Im systemd-tmpfiles hat das Flag —inline hinzugefügt, das es ermöglicht, Direktiven in der Befehlszeile ohne die Erstellung von Konfigurationsdateien in tmpfiles.d/ festzulegen und ohne die Einstellungen über STDIN zu übermitteln. Ein neuer Direktiventyp k/K wurde hinzugefügt, um Capabilities festzulegen. Eine Konfigurationsdatei tmpfiles.d/root.conf wurde hinzugefügt, die Zugriffsrechte 0555 (-r-xr-xr-x) für das Wurzelverzeichnis (/) festlegt, um zu verhindern, dass falsche Rechte beim dynamischen Erstellen des Wurzel-FS angegeben werden.
- In dem Dienstprogramm bootctl wurde die Sicherung einer Sicherungskopie des Systemd-boot-Laders und das Eintragen einer älteren Version in UEFI als Backup-Boot-Option gewährleistet.
- Im systemd-vmspawn wurde die Unterstützung für das direkte Booten des Kernels ohne Verwendung der UEFI-Firmware hinzugefügt. Eine Option —firmware-features wurde implementiert, um bestimmte Funktionen von Firmware selektiv ein- oder auszuschalten. Der Modus —console=headless wurde hinzugefügt, um die virtuelle Maschine ohne Konsole und Bildschirm zu starten. Eine Option —image-disk-type wurde hinzugefügt, um den verwendeten Blockspeichertyp in der VM auszuwählen (virtio-blk, virtio-scsi, nvme, scsi-cd). Eine Option —coco (Confidential Computing) wurde hinzugefügt, um den Modus zur Verschlüsselung des Arbeitsspeichers von virtuellen Maschinen unter Verwendung der AMD SEV-SNP-Technologie zu aktivieren.
- Im systemd-hostnamed und /etc/machine-info wurde die Unterstützung hinzugefügt, beliebige Tags an das aktuelle System anzuhängen, indem der Parameter Tags verwendet wird. Die festgelegten Tags können dann zur selektiven Anwendung von Einstellungen unter Verwendung eines ConditionMachineTag-Ausdrucks verwendet werden.
- 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 das Herunterfahren oder der Neustart initiiert wird, wird in der Endphase eine entsprechende Verzögerung hinzugefügt.
- Für die Units wurden neue Einstellungen CPUSetPartition zur Festlegung des Typs des cpuset-Partitions in cgroup (root, isolated, member), RestrictFileSystemAccess zur Erlaubnis der Ausführung nur digital signierter ausführbarer Dateien mittels dm-verity, sowie CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec zur Benachrichtigung über hohe CPU- und I/O-Belastung implementiert.
- Die Liste der Metriken, die vom Dienstprogramm systemd-report. ausgegeben werden, wurde erweitert. Beispielsweise wurden Informationen über die Größe des physischen Speichers und aktive CPU-Kerne, Daten über den Inhalt der SMBIOS-Felder und /etc/machine-info, sowie Informationen über die Unterstützung des Confidential Computing-Modus und Angaben zum Hersteller des TPM2-Chips hinzugefügt.
- Im systemd-oomd Die Möglichkeit zur Festlegung von Regeln für das Aussortieren von Prozessen bei unzureichendem Arbeitsspeicher 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.
- Im systemd-socket-proxy Die Unterstützung des PROXY-Protokolls, das mit der ersten Version des haproxy-Protokolls übereinstimmt, wurde hinzugefügt.
- Im systemd-networkd Ein neuer sd-dhcp-relay-Backend für DHCP-Relais wurde implementiert. Die Optionen BindToInterface, RelayTarget, RelayAgentCircuitId und RelayAgentRemoteId in der Sektion [DHCPServer] wurden als veraltet erklärt, stattdessen sollte der Parameter DHCPRelay in der Sektion [Network] und 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 eine Dump-Datei 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 die .nspawn-Dateien die Einstellung RestrictAddressFamilies zur Einschränkung der im Container verwendeten Adressfamilien von Sockets. In zukünftigen Versionen werden standardmäßig nur die Familien AF_INET, AF_INET6 und AF_UNIX zugelassen sein.
- Die Unterstützung des alten udev-Datenbankformats (Version 0.x) wurde eingestellt. Das Echtzeit-Upgrade von Versionen von systemd zu Version 247 (opennet.ru) wird nicht mehr unterstützt.
- Beim Erstellen mit der C-Bibliothek musl ist jetzt mindestens die Version musl 1.2.6 erforderlich.
Zusätzlich kann vermerkt werden Release des Projekts liberated-systemd 261, das ein Fork von systemd entwickelt, der frei von Code ist, der zur Überwachung von Benutzern verwendet werden könnte. In der vorgeschlagenen Version besteht die Änderung darin, den Code zu entfernen, der in userdb das Feld birthDate mit dem Geburtsdatum des Benutzers hinzufügt, sowie in das Dienstprogramm homectl die Option —birth-date zur Festlegung des Alters.
Quelle: linux.org.ru
