Veröffentlichung des Systemmanagers systemd 248

Nach vier Monaten Entwicklung wurde die Veröffentlichung des Systemmanagers systemd 248 vorgestellt. In dieser neuen Version wurde die Unterstützung für Images zur Erweiterung der Systemverzeichnisse, die Konfigurationsdatei /etc/veritytab, das Tool systemd-cryptenroll, die Entsperrung von LUKS2 mit TPM2-Chips und FIDO2-Token, den Start von Units im isolierten IPC-Namespaces sowie das B.A.T.M.A.N.-Protokoll für Mesh-Netzwerke, das nftables-Backend für systemd-nspawn stabilisiert.

Hauptänderungen:

  • Das Konzept der System Extension-Images wurde umgesetzt, die zur Erweiterung der Verzeichnisstruktur /usr/ und /opt/ verwendet werden können und es ermöglichen, zusätzliche Dateien während des Betriebs hinzuzufügen, selbst wenn die angegebenen Verzeichnisse im Nur-Lesen-Modus montiert sind. Beim Hinzufügen eines System Extension-Images wird dessen Inhalt mithilfe von OverlayFS über die Verzeichnisse /usr/ und /opt/ gelegt.

    Eine neue Dienstprogramme systemd-sysext wurde bereitgestellt, um System Extension-Images zu verbinden, zu trennen, anzusehen und zu aktualisieren. Um bereits installierte Images beim Booten automatisch zu verbinden, wurde der Dienst systemd-sysext.service hinzugefügt. Im Datei os-release wurde der Parameter "SYSEXT_LEVEL=" hinzugefügt, um den Support-Level der Systemerweiterungen zu definieren.

  • Für Units wurde die Einstellung ExtensionImages implementiert, die verwendet werden kann, um System Extension-Images an den Namespace der einzelnen isolierten Dienste zu binden.
  • Eine Konfigurationsdatei /etc/veritytab wurde hinzugefügt, um die Datenverifizierung auf Blockebene mithilfe des dm-verity-Moduls zu konfigurieren. Das Dateiformat ähnelt /etc/crypttab – "partition_name data_device hash_device root_hash verification_options". Ein Kernel-Befehlszeilenparameter systemd.verity.root_options wurde hinzugefügt, um das Verhalten von dm-verity für das Root-Gerät zu konfigurieren.
  • In systemd-cryptsetup wurde die Möglichkeit hinzugefügt, die URI des PKCS#11-Token und den verschlüsselten Schlüssel aus dem LUKS2-Metadatenheader im JSON-Format zu extrahieren. Dies ermöglicht es, Informationen über die Entschlüsselung des verschlüsselten Geräts direkt im Gerät zu integrieren, ohne externe Dateien hinzuzufügen.
  • In systemd-cryptsetup wurde die Unterstützung für das Entsperren von LUKS2-verschlüsselten Partitionen mithilfe von TPM2-Chips und FIDO2-Token hinzugefügt, zusätzlich zu den zuvor unterstützten PKCS#11-Token. Das Laden von libfido2 erfolgt über dlopen(), d.h. die Verfügbarkeit wird dynamisch überprüft und nicht in Form einer festen Abhängigkeit.
  • In /etc/crypttab für systemd-cryptsetup wurden die neuen Optionen „no-write-workqueue“ und „no-read-workqueue“ hinzugefügt, um die synchrone Verarbeitung von Ein- / Ausgaben im Zusammenhang mit Verschlüsselung und Entschlüsselung zu aktivieren.
  • Das Tool systemd-repart hat die Möglichkeit erhalten, verschlüsselte Partitionen mithilfe von TPM2-Chips zu aktivieren, zum Beispiel für die Erstellung einer verschlüsselten Partition /var beim ersten Bootvorgang.
  • Das Tool systemd-cryptenroll wurde hinzugefügt, um TPM2-, FIDO2- und PKCS#11-Token an LUKS-Partitionen zu binden, sowie um Token zu lösen und anzuzeigen, Backup-Schlüssel zu verbinden und ein Passwort für den Zugriff festzulegen.
  • Der Parameter PrivateIPC wurde hinzugefügt, der es im Unit-File ermöglicht, Prozesse in einem isolierten IPC-Raum mit eigenen Identifikatoren und Nachrichtenwarteschlangen auszuführen. Um eine Unit mit bereits erstellten IPC-Identifikatoren zu verbinden, wurde die Option IPCNamespacePath vorgeschlagen.
  • Die Einstellungen ExecPaths und NoExecPaths wurden hinzugefügt, die es ermöglichen, das noexec-Flag auf bestimmte Teile des Dateisystems anzuwenden.
  • In systemd-networkd wurde die Unterstützung für das Mesh-Protokoll B.A.T.M.A.N. („Better Approach To Mobile Adhoc Networking“) hinzugefügt, das es ermöglicht, dezentralisierte Netzwerke zu erstellen, bei denen jeder Knoten über benachbarte Knoten verbunden ist. Zur Konfiguration wurden der Abschnitt [BatmanAdvanced] in .netdev, der Parameter BatmanAdvanced in .network-Dateien und ein neuer Gerätetyp „batadv“ vorgeschlagen.
  • Die Implementierung des Mechanismus zur frühzeitigen Reaktion auf Speichermangel im System systemd-oomd wurde stabilisiert. Die Option DefaultMemoryPressureDurationSec wurde hinzugefügt, um die Wartezeit für die Freigabe von Ressourcen vor einer Beeinflussung der Unit einzustellen. Systemd-oomd verwendet die Kernel-PSI-Subsystem (Pressure Stall Information) und ermöglicht es, den Beginn von Verzögerungen aufgrund von Ressourcenmangel zu erkennen und selektiv speicherintensive Prozesse zu beenden, während sich das System noch nicht in einem kritischen Zustand befindet und nicht beginnt, den Cache intensiv zu kürzen und Daten in den Swap-Bereich zu verschieben.
  • Ein neues Kernel-Befehlszeilenparameter wurde hinzugefügt — „root=tmpfs“, das es ermöglicht, die Wurzelpartition in einem temporären Speicher, der im RAM über Tmpfs bereitgestellt wird, zu mounten.
  • Der Parameter in /etc/crypttab, der die Schlüsseldatei definiert, kann nun auf Sockets vom Typ AF_UNIX und SOCK_STREAM verweisen. Der Schlüssel muss in diesem Fall beim Anschluss an den Socket übergeben werden, was beispielsweise zur Erstellung von Diensten verwendet werden kann, die Schlüssel dynamisch bereitstellen.
  • Der Ersatz-Hostname (Fallback) für die Verwendung durch den Systemmanager und systemd-hostnamed kann jetzt auf zwei Arten festgelegt werden: über den Parameter DEFAULT_HOSTNAME in os-release und über die Umgebungsvariable $SYSTEMD_DEFAULT_HOSTNAME. In systemd-hostnamed wurde auch die Verarbeitung der Angabe 'localhost' im Hostnamen implementiert, und die Möglichkeit hinzugefügt, den Hostnamen sowie die Eigenschaften 'HardwareVendor' und 'HardwareModel' über DBus zu exportieren.
  • Der Block mit den einstellbaren Umgebungsvariablen kann jetzt über die neue Option ManagerEnvironment in system.conf oder user.conf konfiguriert werden, nicht nur über die Kernel-Befehlszeile und die Einstellungen der Unit-Dateien.
  • Zur Kompilierungszeit wurde die Möglichkeit bereitgestellt, den Systemaufruf fexecve() anstelle von execve() zum Starten von Prozessen zu verwenden, um die Verzögerung zwischen der Überprüfung des Sicherheitskontexts und dessen Anwendung zu verkürzen.
  • Für Unit-Dateien wurden neue Bedingungsoperationen ConditionSecurity=tpm2 und ConditionCPUFeature hinzugefügt, um das Vorhandensein von TPM2-Geräten und bestimmten CPU-Funktionen zu überprüfen (z. B. kann ConditionCPUFeature=rdrand verwendet werden, um die Unterstützung der RDRAND-Operation durch den Prozessor zu überprüfen).
  • Für verfügbare Kerne wurde eine automatische Generierung der Systemaufruftabellen für Seccomp-Filter implementiert.
  • Die Möglichkeit, neue Bindemontierungen in bestehende Mount-Namensräume von Diensten einzufügen, ohne die Dienste neu zu starten, wurde hinzugefügt. Das Einfügen erfolgt über die Befehle 'systemctl bind …' und 'systemctl mount-image …'.
  • In den Einstellungen StandardOutput und StandardError wurde die Unterstützung für die Angabe von Pfaden in der Form 'truncate:' zum Löschen vor der Verwendung hinzugefügt.
  • In sd-bus wurde die Möglichkeit hinzugefügt, eine Verbindung zu einer Sitzung eines bestimmten Benutzers innerhalb eines lokalen Containers herzustellen. Zum Beispiel 'systemctl —user -M lennart@ start quux'.
  • In den systemd.link-Dateien im Abschnitt [Link] wurden folgende Parameter implementiert:
    • Promiscuous — ermöglicht es, das Gerät in den 'Promiscuous'-Modus zu versetzen, um alle Netzwerkpakete zu verarbeiten, einschließlich der nicht an das aktuelle System adressierten;
    • TransmitQueues und ReceiveQueues zur Konfiguration der Anzahl der TX- und RX-Queues;
    • TransmitQueueLength zur Einstellung der TX-Warteschlangenlänge; GenericSegmentOffloadMaxBytes und GenericSegmentOffloadMaxSegment zur Festlegung von Limits für die Anwendung der GRO-Technologie (Generic Receive Offload).
  • Neue Einstellungen wurden zu den systemd.network-Dateien hinzugefügt:
    • [Network] RouteTable zur Auswahl der Routing-Tabelle;
    • [RoutingPolicyRule] Type für den Routentyp („blackhole“, „unreachable“, „prohibit“);
    • [IPv6AcceptRA] RouteDenyList und RouteAllowList für Listen von erlaubten und verbotenen Routenankündigungen;
    • [DHCPv6] UseAddress zum Ignorieren der von DHCP zugewiesenen Adresse;
    • [DHCPv6PrefixDelegation] ManageTemporaryAddress;
    • ActivationPolicy zur Festlegung der Richtlinien zur Aktivität der Schnittstelle (immer im Zustand UP oder DOWN halten oder dem Benutzer erlauben, den Zustand mit dem Befehl „ip link set dev” zu ändern).
  • Zu den systemd.netdev-Dateien wurden Optionen [VLAN] Protocol, IngressQOSMaps, EgressQOSMaps und [MACVLAN] BroadcastMulticastQueueLength zur Konfiguration der Verarbeitung von VLAN-Paketen hinzugefügt.
  • Die Einbindung des Verzeichnisses /dev/ im noexec-Modus wurde eingestellt, da dies zu Konflikten bei der Verwendung des Ausführungsflags mit Dateien in /dev/sgx führt. Um das alte Verhalten wiederherzustellen, kann die Einstellung NoExecPaths=/dev verwendet werden.
  • Die Zugriffsrechte für die Datei /dev/vsock wurden auf 0o666 geändert, und die Dateien /dev/vhost-vsock und /dev/vhost-net wurden in die Gruppe verschoben. kvm.
  • Die Basis der Geräte-IDs wurde um USB-Geräte zur Erfassung von Fingerabdrücken erweitert, die ordnungsgemäß den Energiesparmodus unterstützen.
  • systemd-resolved hat die Unterstützung für die Rückgabe von Antworten auf DNSSEC-Anfragen über den Stub-Resolver hinzugefügt. Lokale Clients können DNSSEC-Validierung selbst durchführen, während externe Anfragen unverändert an den übergeordneten DNS-Server weitergeleitet werden.
  • In resolved.conf wurde die Option CacheFromLocalhost hinzugefügt, bei Aktivierung verwendet systemd-resolved auch für Anfragen an den DNS-Server unter der Adresse 127.0.0.1 Caching (standardmäßig ist das Caching solcher Anfragen deaktiviert, um doppeltes Caching zu vermeiden).
  • In systemd-resolved wurde die Unterstützung für RFC-5001 NSID im lokalen DNS-Resolver hinzugefügt, die es Clients ermöglicht, zwischen der Interaktion mit dem lokalen Resolver und einem anderen zu unterscheiden. Server DNS.
  • In der Utility resolvectl wurde die Möglichkeit implementiert, Informationen über die Quelle der Datenverarbeitung zu erhalten (lokaler Cache, Anfrage über das Netzwerk, Antwort des lokalen Handlers) und die Anwendung von Verschlüsselung während der Datenübertragung. Zur Steuerung des Namensauflösungsprozesses wurden Optionen -cache, -synthesize, -network, -zone, -trust-anchor und -validate angeboten.
  • In systemd-nspawn wurde die Unterstützung für die Konfiguration von Firewalls mittels nftables hinzugefügt, zusätzlich zur bestehenden Unterstützung von iptables. In der IPMasquerade-Konfiguration in systemd-networkd wurde die Möglichkeit hinzugefügt, ein auf nftables basierendes Backend zu verwenden.
  • In systemd-localed wurde die Unterstützung für den Aufruf von locale-gen zur Generierung fehlender Lokalisierungen hinzugefügt.
  • Verschiedene Utils haben Optionen —pager/—no-pager/—json= erhalten, um den seitenweisen Modus zu aktivieren/deaktivieren und die Ausgabe im JSON-Format zu ermöglichen. Es wurde die Möglichkeit hinzugefügt, die Anzahl der im Terminal verwendeten Farben über die Umgebungsvariable SYSTEMD_COLORS („16“ oder „256“) festzulegen.
  • Die mit separaten Verzeichnis-Hierarchien (Trennung von / und /usr) und die Unterstützung von cgroup v1 wurden als veraltet erklärt.
  • Der Hauptzweig in Git wurde von 'master' in 'main' umbenannt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4