Die Veröffentlichung des Systemmanagers systemd 261 und des Forks liberated-systemd 261

Nach drei Monaten Entwicklung ist das Release des Systemmanagers systemd 261 verfügbar. Wichtige Änderungen: Vorbereitung zur Unterstützung der API zur Altersverifizierung, Unterstützung der Subsysteme Kexec Handover und Live Update Orchestration für den Neustart ohne Verlust des Zustands, Subsystem IMDS (Instance Metadata Service), Funktionalität zum Schutz des Bootvorgangs auf Systemen ohne physischen TPM (Trusted Platform Module), die Komponente systemd-sysinstall mit der Implementierung eines Installationsprogramms.

Zu den Änderungen in der neuen Version gehören:

  • Eine neue Komponente systemd-sysinstall wurde hinzugefügt, die ein einfaches Installationsprogramm für Betriebssysteme bereitstellt, das über die Befehlszeile oder über eine interaktive Textschnittstelle gesteuert werden kann. Die Funktionalität von systemd-sysinstall basiert auf bereits bestehenden Möglichkeiten von systemd: zur Partitionierung von Festplatten wird systemd-repart verwendet, zur Installation des Kernels und zur Erstellung des Bootmenüs die Befehl "bootctl link", zur Installation des Bootloaders systemd-boot die Befehl "bootctl install", zur ersten Konfiguration des zu installierenden Systems (z. B. Auswahl der Locale und der Tastaturbelegung) systemd-creds.
  • Im Rahmen der Vorbereitung zur Umsetzung der Anforderungen von Gesetzen zur Integration einer API zur Altersüberprüfung wurde im Benutzer-Datenbanksystem userdb das Feld birthDate mit dem Geburtsdatum des Benutzers hinzugefügt. Das hinzugefügte Feld kann im sich entwickelnden Portal xdg-desktop-portal für Distributionen und im Dienst AccountsService verwendet werden, um Anwendungen Informationen zur Alterskategorie des Benutzers über die D-Bus-Schnittstelle "org.freedesktop.AgeVerification1" oder "org.freedesktop.ParentalControls" bereitzustellen. Um das Alter in das Tool homectl einzustellen, wurde die Option "--birth-date" hinzugefügt.
  • Dem PID1-Handler wurde Unterstützung für die Subsysteme des Linux-Kernels LUO (Live Update Orchestration) und KHO (Kexec Handover) hinzugefügt, 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 der Prozesse zu verlieren. KHO bietet die Möglichkeit, einen neuen Kernel aus dem alten zu starten, ohne den Zustand des Systems zu verlieren, während LUO die Speicherung des Zustands der Geräte und des RAM implementiert und auch die Kontinuität der Aktivitäten, die mit DMA und der Interruptverarbeitung verbunden sind, gewährleistet.

    In systemd wurde die Möglichkeit implementiert, 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 das Speichern des Zustands von 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 den Zugriff auf IMDS-Dienste (Instance Metadata Service) zu ermöglichen, die von verschiedenen Anbietern von Cloud-Systemen bereitgestellt werden. IMDS ermöglicht es, unterstützung für virtuelle Maschinen Informationen über die Cloud-Umgebung zu erhalten, beispielsweise können Informationen zur Netzwerkkonfiguration, zum geografischen Standort des Knotens, zum CPU-Typ und zur Speicherkapazität abgerufen werden. 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 basierend auf typischen Schlüsseln bereitgestellt, die mit Schlüsseln spezifisch für bestimmte Cloud-Plattformen korrespondieren. Um mit systemd-imdsd zu interagieren, wurde das Tool systemd-imds hinzugefügt, das es ermöglicht, Felder aus IMDS in das lokale Benutzerkontensystem zu importieren.

    Zur Erkennung von Cloud-Plattformen basierend auf Informationen aus SMBIOS und zur Feststellung der auf dem aktuellen Knoten verfügbaren IMDS-Funktionalitäten wurde eine neue Datenbank hwdb.d/40-imds.hwdb hinzugefügt. Die Erkennung von Cloud-Plattformen wie Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS und Vultr wurde implementiert. Ein Handler systemd-imds-generator steht zur Verfügung, um den Service zur Abrufung von Daten über IMDS automatisch einzufügen, falls eine unterstützte Cloud-Plattform erkannt wird. Generische Images, die die Verwendung von IMDS beim Start in Cloud-Umgebungen unterstützen, können erstellt werden, funktionieren jedoch auch ohne IMDS.

  • In systemd-stub wurde die Funktionalität "Boot Secret" implementiert, die es ermöglicht, einen Schlüssel basierend auf einer EFI-Variable zu erstellen, die in einem für das Betriebssystem nicht zugänglichen Bereich gespeichert ist und mit einem zufälligen Wert initialisiert wird. Im initrd wird der Schlüssel über die Datei /.extra/boot-secret übergeben. Diese Funktion kann erforderlich sein, um einen systematisch spezifischen Zufalls-Schlüssel für die Verifizierung des Bootprozesses oder für die 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, der zur automatischen Rückkehr auf eine Software-Implementierung von TPM für sicheres Booten auf Systemen ohne Hardware-TPM verwendet werden kann. Das Software-TPM arbeitet im Benutzermodus und bietet nicht den gleichen Schutz wie ein Hardware-TPM, ist jedoch in bestimmten Situationen sinnvoll im Vergleich zu einem Betrieb ohne TPM. Beispielsweise kann das Software-TPM den Verschlüsselungsschlüssel für Partitionen mithilfe der neuen Funktionalität „boot secret“ abrufen und den Zustand in der ESP-Partition (EFI System Partition) auf der Festplatte ablegen. Um das Software-TPM automatisch zu aktivieren, wurde ein Kernel-Befehlszeilenparameter systemd.tpm2_software_fallback vorgeschlagen.
  • Das Systemd-Sysupdate-Tool wurde als stabil erklärt und im /usr/bin abgelegt. Es dient der automatischen Erkennung, dem Herunterladen und der Installation von Updates mittels eines atomaren Mechanismus zum Austausch von Partitionen, Dateien oder Verzeichnissen (es werden zwei unabhängige Partitionen/Dateien/Verzeichnisse verwendet, von denen sich eine im laufenden Betrieb befindet, während auf der anderen das nächste Update installiert wird, nach dem die Partitionen/Dateien/Verzeichnisse getauscht werden).
  • In systemd-resolved wurde 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 Ressourcen zu Hostnamen zugeordnet werden. IP-Adressen Es können auch ressourcenbezogene DNS-RR-Einträge festgelegt werden, die von „A“ und „AAAA“ abweichen. Darüber hinaus wurden in systemd-resolved die Einstellungen für die Größe des DNS-Caches hinzugefügt: ‘DNSCacheSize’, ‘MulticastDNSCacheSize’ und ‘LLMNRCacheSize’.
  • Das Dienstprogramm ‘storagectl’ wurde hinzugefügt, um Speichermedien zu inspizieren und die Verbindung zu Blockgeräten und Dateisystemen zu verwalten.
  • Im Rahmen der Initiative zur Reduzierung von Abhängigkeiten wurde in libsystemd ein dynamisches Laden der Bibliotheken libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk und libcryptsetup realisiert.
    dies erfolgt durch den Aufruf von dlopen(), wenn ihre Funktionen tatsächlich benötigt werden.
  • In systemd-tmpfiles wurde das Flag „—inline“ hinzugefügt, das das Festlegen von Direktiven über die Befehlszeile ermöglicht, ohne Konfigurationsdateien in tmpfiles.d zu erstellen und ohne Einstellungen über STDIN zu übertragen. Ein neuer Direktiventyp „k/K“ wurde zur Festlegung von Berechtigungen hinzugefügt. Eine Konfigurationsdatei tmpfiles.d/root.conf wurde hinzugefügt, die Zugriffsrechte von 0555 (-r-xr-xr-x) für das Wurzelverzeichnis (/) festlegt, um falsche Berechtigungen beim dynamischen Erstellen des Wurzel-Dateisystems zu verhindern.
  • Im Tool bootctl wurde die Möglichkeit zur Sicherung des Bootloaders systemd-boot und zur Hinterlegung einer alten Version im UEFI als Backup-Option für das Booten implementiert.
  • In systemd-vmspawn wurde die Unterstützung für das direkte Laden des Kernels ohne Verwendung der UEFI-Firmware hinzugefügt. Die Option „—firmware-features“ wurde implementiert, um die gezielte Aktivierung oder Deaktivierung bestimmter Firmware-Funktionen zu ermöglichen. Es wurde der Modus „—console=headless“ hinzugefügt, um eine virtuelle Maschine ohne Konsole und Bildschirm zu starten. Die Option „—image-disk-type“ wurde hinzugefügt, um den in der VM verwendeten Typ des Blockspeichers (virtio-blk, virtio-scsi, nvme, scsi-cd) auszuwählen. Die Option „—coco“ (Confidential Computing) wurde hinzugefügt, um den Modus der Speicherverschlüsselung zu aktivieren. virtuelle Maschinen unter Verwendung der AMD SEV-SNP-Technologie.
  • In systemd-hostnamed und /etc/machine-info wurde die Unterstützung für das Anheften beliebiger Tags an das aktuelle System mithilfe des Parameters „Tags“ hinzugefügt. Die festgelegten Tags können dann zur selektiven Anwendung von Einstellungen unter der Bedingung ConditionMachineTag verwendet werden.
  • Die Einstellungen EventLoopRateLimitIntervalSec und EventLoopRateLimitBurst wurden hinzugefügt, die die Intensität der Ereignisverarbeitungsschleife in PID1 begrenzen, um CPU-Ressourcen im Falle von Endlosschleifen 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 Units wurden neue Einstellungen CPUSetPartition zur Festlegung des Typs der cpuset-Partition in cgroups („root“, „isoliert“, „mitglied“), RestrictFileSystemAccess zur Erlaubnis der Ausführung nur von ausführbaren Dateien, die durch digitale Signatur mittels dm-verity verifiziert wurden, sowie CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec zur Benachrichtigung über hohe CPU- und Ein-/Auslastung implementiert.
  • Die Liste der von der Utility systemd-report ausgegebenen Metriken 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, Informationen über die Unterstützung des Confidential Computing-Modus und Angaben zum Hersteller der TPM2-Chips hinzugefügt.
  • In systemd-oomd wurde die Möglichkeit implementiert, Regeln zur Aussonderung von Prozessen bei speicherbedingten Engpässen im System zu definieren. Die Regeln können im Verzeichnis /etc/systemd/oomd/rules.d/ oder in den Service-Units über die Direktive OOMRule festgelegt werden.
  • In systemd-socket-proxy wurde die Unterstützung für das Protokoll „PROXY“ hinzugefügt, das der ersten Version des Protokolls „haproxy“ entspricht.
  • In systemd-networkd wurde ein neuer Backend sd-dhcp-relay für DHCP-Relais implementiert. Die Einstellungen in der Sektion „[DHCPServer]“ — BindToInterface, RelayTarget, RelayAgentCircuitId und RelayAgentRemoteId wurden als veraltet erklärt, stattdessen sollte der Parameter DHCPRelay in der Sektion „[Network]“ und eine Reihe von neuen Einstellungen in der Sektion [DHCPRelay] und in der Datei networkd.conf verwendet werden. Ein Befehl ‘networkctl dhcp-lease INTERFACE’ wurde hinzugefügt, um einen Dump mit Informationen über die Verknüpfung von IP-Adressen (DHCP-Lease) zu speichern.
  • Dem Tool systemd-nspawn wurde die Option „—restrict-address-families“ hinzugefügt, und in den .nspawn-Dateien die Einstellung RestrictAddressFamilies zur Einschränkung der in Container verwendeten Adressfamilien für Sockets. In zukünftigen Versionen werden standardmäßig nur die Familien AF_INET, AF_INET6 und AF_UNIX erlaubt sein.
  • Die Unterstützung für das alte udev-Datenbankformat (Version 0.x) wurde eingestellt. Ein Update im laufenden Betrieb von Versionen von systemd bis zur Version 247 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 die Veröffentlichung des Projekts liberated-systemd 261 erwähnt werden, welches einen Fork von systemd entwickelt, der von Code befreit ist, der zur Überwachung von Benutzern verwendet werden kann. In der vorgeschlagenen Veröffentlichung werden Änderungen vorgenommen, um den Code zu entfernen, der das Feld birthDate mit dem Geburtsdatum des Benutzers zu userdb hinzufügt, sowie in das Tool homectl die Option „—birth-date“ zur Festlegung des Alters.

Quelle: opennet.ru

60GB SSD 8Gb DDR4