Nach drei Monaten Entwicklung wurde der Systemmanager veröffentlicht . In dieser neuen Version wurden neue Komponenten wie systemd-homed und systemd-repart hinzugefügt, Unterstützung für tragbare Benutzerprofile im JSON-Format implementiert, die Möglichkeit zur Definition von Namensräumen in systemd-journald bereitgestellt und die Unterstützung für den Mechanismus "pidfd" eingeführt. Vollständig überarbeitet wurde , auf dem der Großteil der verfügbaren Dokumentation zusammengestellt ist und ein neues Logo angeboten wird.

Haupt :
- Ein Dienst wurde hinzugefügt, , der die Verwaltung tragbarer Home-Verzeichnisse ermöglicht, die in Form eines einhängbaren Abbildes bereitgestellt werden, dessen Daten verschlüsselt sind. Systemd-homed ermöglicht die Erstellung von autarken Umgebungen für Benutzerdaten, die zwischen verschiedenen Systemen transferiert werden können, ohne sich um die Synchronisierung von Identifikatoren und Vertraulichkeit sorgen zu müssen. Die Benutzerdatenparameter sind an das Home-Verzeichnis gebunden, nicht an die Systemeinstellungen — anstelle von /etc/passwd, /etc/group und /etc/shadow wird ein Profil im Format verwendet . Weitere Informationen finden Sie in systemd-homed.
- Eine zugehörige systemd-homed-Komponente „» («systemd-userdb»), der UNIX/glibc NSS-Konten in JSON-Datensätze übersetzt und eine einheitliche Varlink-API zum Abfragen und Durchsuchen von Datensätzen bereitstellt. Im dem Home-Verzeichnis zugeordneten JSON-Profil sind die erforderlichen Einstellungen für die Benutzerkonfiguration enthalten, einschließlich Informationen über den Benutzernamen, Passwort-Hash, Verschlüsselungsschlüssel, Quoten und bereitgestellte Ressourcen. Das Profil kann durch eine digitale Unterschrift, die auf einem externen Yubikey-Token gespeichert ist, beglaubigt werden. Zur Verwaltung der Profile wird das Dienstprogramm „userdbctl“ angeboten. Die Unterstützung von JSON-Profilen wurde in verschiedene systemd-Komponenten integriert, einschließlich systemd-logind und pam-systemd, was es Benutzern ermöglicht, portable Verzeichnisse zu authentifizieren, sich anzumelden, Umgebungsvariablen zu konfigurieren, Sitzungen zu erstellen, Limits festzulegen usw. Zukünftig wird die Möglichkeit zur Generierung von JSON-Profilen durch das Framework sssd erwartet, wobei die Benutzereinstellungen in LDAP gespeichert werden.
- Ein neues Tool namens „systemd-repart“ wurde hinzugefügt, das zur Neupartitionierung von Festplattentabellen im GPT-Format dient. Die Struktur der Partitionen wird in deklarativer Form über Dateien definiert, die beschreiben, welche Partitionen vorhanden sein sollten oder können. Bei jedem Bootvorgang wird die tatsächliche Partitionstabelle mit diesen Dateien verglichen, wodurch fehlende Partitionen hinzugefügt oder, falls die im Konfigurationsfile festgelegte relative oder absolute Größe nicht übereinstimmt, die Größe vorhandener Partitionen erhöht wird. Nur inkrementelle Änderungen sind erlaubt, d.h. das Löschen und Verkleinern von Größen ist nicht möglich; Partitionen können nur hinzugefügt und vergrößert werden.
Das Tool ist hauptsächlich für den Einsatz aus initrd vorgesehen und erkennt automatisch die Festplatte, auf der die Root-Partition liegt, sodass keine zusätzliche Konfiguration erforderlich ist, abgesehen von den Dateien zur Definition der Änderungen.In der Praxis kann systemd-repart nützlich sein für Betriebssystem-Images, die zunächst in einer minimalen Form geliefert werden und nach dem ersten Booten auf die Größe des vorhandenen Blockgeräts erweitert oder um zusätzliche Partitionen ergänzt werden können (zum Beispiel kann die Root-Partition erweitert werden, um die gesamte Festplatte zu umfassen, oder es kann nach dem ersten Booten eine Swap-Partition oder ein \/home-Verzeichnis erstellt werden). Eine weitere Anwendung könnten Konfigurationen mit zwei abwechselnden Partitionen sein — anfänglich könnte nur die erste Partition bereitgestellt werden, während die zweite bei der ersten Bootsequenz erstellt wird.
- Es besteht jetzt die Möglichkeit, mehrere Instanzen von systemd-journald zu starten, von denen jede Protokolle in ihrem eigenen Namensraum führt. Neben dem Hauptdienst systemd-journald.service wird im .service-Verzeichnis eine Vorlage für die Erstellung zusätzlicher Instanzen angeboten, die an ihre eigenen Namensräume durch die Direktive „LogNamespace“ gebunden sind. Jeder Protokollnamensraum wird von einem separaten Hintergrundprozess mit einem eigenen Satz an Einstellungen und Grenzen verwaltet. Diese Möglichkeit kann nützlich sein, um die Last bei großen Protokollmengen zu verteilen oder um die Isolierung der Anwendungen zu stärken. In journalctl wurde die Option „—namespace“ hinzugefügt, die die Abfrage auf den angegebenen Namensraum beschränkt.
- In systemd-udevd und anderen Komponenten von systemd wurde die Unterstützung für einen Mechanismus zur Zuweisung alternativer Namen für Netzwerkinterfaces hinzugefügt, der es ermöglicht, mehreren Namen gleichzeitig für ein einzelnes Interface zugewiesen zu werden. Der Name kann bis zu 128 Zeichen lang sein (zuvor war er auf 16 Zeichen beschränkt). Standardmäßig weist systemd-udevd nun jedem Netzwerkinterface alle Varianten von Namen zu, die von den unterstützten Namenskonventionen generiert werden. Dieses Verhalten kann über die neuen Einstellungen AlternativeName und AlternativeNamesPolicy in .link-Dateien geändert werden. In systemd-nspawn wird die Generierung alternativer Namen mit dem vollständigen Namen des Containers für auf dem Host erstellte veth-Links realisiert.
- In der API sd-event.h wurde die Unterstützung für das Linux-Kernel-Subsystem „pidfd“ hinzugefügt, um mit der Situation des Wiederverwendens von PIDs umzugehen (pidfd ist an einen bestimmten Prozess gebunden und bleibt unverändert, während die PID nach dem Abschluss des aktuellen Prozesses, der mit dieser PID verbunden ist, einem anderen Prozess zugewiesen werden kann). Alle systemd-Komponenten, mit Ausnahme von PID 1, wurden auf die Verwendung von pidfds umgestellt, sofern dieses Subsystem vom aktuellen Kernel unterstützt wird.
- In systemd-logind wird über PolicyKit der Zugriff auf die Aktion zum Wechseln des virtuellen Terminals überprüft. Standardmäßig erhalten nur Benutzer, die mindestens einmal eine Sitzung auf einem lokalen virtuellen Terminal initiiert haben, die Berechtigung, das aktive Terminal zu wechseln.
- Um die Erstellung von initrd-Images mit systemd zu erleichtern, erkennt der PID 1-Handler nun den Einsatz in initrd und lädt in diesem Fall automatisch initrd.target anstelle von default.target. Mit diesem Ansatz können sich initrd-Images und das Hauptsystem nur im Vorhandensein der Datei /etc/initrd-release unterscheiden.
- Ein neuer Kernel-Parameter wurde hinzugefügt — „systemd.cpu_affinity“, der der CPUAffinity-Option in /etc/systemd/system.conf entspricht und es ermöglicht, die CPU-Bindungsmaske für PID 1 und andere Prozesse zu konfigurieren.
- Die Rücksetzung der SELinux-Datenbank erfolgt zusammen mit dem Neustart von PID 1 über Befehle wie „systemctl daemon-reload“.
- In den PID 1-Handler wurde die Einstellung „systemd.show-status=error“ integriert, bei der lediglich Fehlermeldungen und wesentliche Verzögerungen beim Booten auf der Konsole angezeigt werden.
- In systemd-sysusers wurde die Unterstützung für die Erstellung von Benutzern mit einem Gruppennamen, der sich vom Benutzernamen unterscheidet, hinzugefügt.
- In systemd-growfs wurde die Unterstützung für die Erweiterung von XFS-Partitionen über die Mount-Option x-systemd.growfs in /etc/fstab implementiert, zusätzlich zur zuvor unterstützten Erweiterung von Ext4- und Btrfs-Partitionen.
- In /etc/crypttab wurde die Option x-initrd.attach hinzugefügt, um einen bereits in der initrd-Phase entschlüsselten Partition zu definieren.
- In systemd-cryptsetup wurde die Unterstützung für die Entschlüsselung von Partitionen mithilfe von PKCS#11-Smartcards (Option pkcs11-uri in /etc/crypttab) hinzugefügt, beispielsweise zur Verknüpfung der Verschlüsselung von Partitionen mit YubiKey-Schlüsseln.
- In /etc/fstab wurden neue Mount-Optionen 'x-systemd.required-by' und 'x-systemd.wanted-by' hinzugefügt, um die Units, die Mount-Operationen definieren, explizit zu konfigurieren, die anstelle von local-fs.target und remote-fs.target aufgerufen werden.
- Eine neue Sandbox-Isolationsoption für Dienste – ProtectClock – wurde hinzugefügt, die das Schreiben in die Systemuhr einschränkt (Zugriff wird auf der Ebene /dev/rtc, von Systemaufrufen und Berechtigungen CAP_SYS_TIME/CAP_WAKE_ALARM blockiert).
- In die Spezifikation und systemd-gpt-auto-generator wurde die Definition von Partitionen hinzugefügt.
/var и /var/tmp. - In „systemctl list-unit-files“ ist eine neue Spalte hinzugekommen, die den Status der Aktivierung anzeigt, wie er in den Werkseinstellungen für diesen Einheitstyp vorgesehen ist.
- In „systemctl“ wurde die Option „—with-dependencies“ hinzugefügt, sodass die Befehle wie „systemctl status“ und „systemctl cat“ nicht nur alle zugehörigen Einheiten, sondern auch die davon abhängigen Einheiten anzeigen.
- In systemd-networkd wurde die Konfiguration von qdisc um die Möglichkeit erweitert, Parameter für TBF (Token Bucket Filter), SFQ (Stochastic Fairness Queuing), CoDel (Controlled-Delay Active Queue Management) und FQ (Fair Queue) zu konfigurieren.
- In systemd-networkd wurde die Unterstützung für Netzgeräte IFB ().
- In systemd-networkd wurde im Abschnitt [Route] der Parameter MultiPathRoute implementiert, um Multi-Path-Routen zu konfigurieren.
- In systemd-networkd wurde für den DHCPv4-Client die Option SendDecline hinzugefügt. Wenn diese angegeben wird, erfolgt nach dem Empfang der DHCP-Antwort mit der Adresse eine Überprüfung auf Adresskonflikte, und im Falle eines Konflikts wird die zugewiesene Adresse abgelehnt. Für den DHCPv4-Client wurde ebenfalls die Option RouteMTUBytes hinzugefügt, die es ermöglicht, die MTU-Größe für Routen, die aus IP-Adressebindungen (Leases) generiert werden, festzulegen.
- Die Konfiguration von PrefixRoute im Abschnitt „[Address]“ in den Dateien „.network“ ist veraltet. An ihrer Stelle wird nun die Einstellung „AddPrefixRoute“ verwendet, die das Gegenteil bewirkt.
- In den Dateien .network wurde die Konfiguration Gateway im Abschnitt „[Route]“ um die Unterstützung eines neuen Wertes „_dhcp“ ergänzt, bei dessen Verwendung die statische Route auf der Grundlage des über DHCP konfigurierten Gateways ausgewählt wird.
- In den Dateien .network wurden im Abschnitt „[RoutingPolicyRule]“ die Einstellungen
User und SuppressPrefixLength eingeführt, um das Routing von der Quelle (Source Routing) basierend auf UID-Bereichen und Präfixgrößen festzulegen. - In networkctl wurde bei dem Befehl „status“ die Möglichkeit zur Anzeige von Protokollen in Bezug auf jede Netzwerkschnittstelle hinzugefügt.
- In systemd-networkd-wait-online wurde die Unterstützung zur Festlegung der maximalen Wartezeit für den Übergang einer Schnittstelle in den Betriebszustand und zum Warten auf das Verschwinden der Schnittstelle hinzugefügt.
- Die Verarbeitung von Dateien .link und .network mit einem leeren oder kommentierten Abschnitt „[Match]“ wurde eingestellt.
- In den Dateien .link und .network wurde im Abschnitt „[Match]“ die Einstellung „PermanentMACAddress“ eingeführt, um die permanente MAC-Adresse von Geräten zu überprüfen, falls eine generierte zufällige MAC verwendet wird.
- Der Abschnitt «[TrafficControlQueueingDiscipline]» in den .network-Dateien wurde in «[NetworkEmulator]» umbenannt, und der Präfix «NetworkEmulator» wurde aus den Namen der zugehörigen Einstellungen entfernt.
- In systemd-resolved wurde die Unterstützung für die Überprüfung von SNI bei DNS-over-TLS hinzugefügt.
Quelle: opennet.ru
