Nach fünf Monaten Entwicklung wurde die Veröffentlichung des Systemmanagers systemd 251 vorgestellt.
Hauptänderungen:
- Die Systemanforderungen wurden erhöht. Die minimal unterstützte Version des Linux-Kernels wurde von 3.13 auf 4.15 angehoben. Für den Betrieb ist ein CLOCK_BOOTTIME-Timer erforderlich. Zum Erstellen ist ein Compiler erforderlich, der den C11-Standard und die GNU-Erweiterungen unterstützt (für Header-Dateien wird weiterhin der C89-Standard verwendet).
- Ein experimentelles Dienstprogramm systemd-sysupdate wurde hinzugefügt, um Updates automatisch zu erkennen, herunterzuladen und zu installieren, wobei ein atomarer Mechanismus zum Ersetzen von Partitionen, Dateien oder Verzeichnissen verwendet wird (es werden zwei unabhängige Partitionen/Dateien/Verzeichnisse verwendet, wobei sich auf einer das aktuell laufende Element befindet und das andere das nächste Update installiert, nachdem die Partitionen/Dateien/Verzeichnisse getauscht wurden).
- Eine neue interne Shared Library libsystemd-core-.so wurde eingeführt, die im Verzeichnis /usr/lib/systemd/system installiert wird und der bestehenden Bibliothek libsystemd-shared-.so entspricht. Die Verwendung der Shared Library libsystemd-core-.so ermöglicht eine Reduktion der gesamten Installationsgröße durch die Wiederverwendung von Binärcode. Die Versionsnummer kann über den Parameter 'shared-lib-tag' im Build-System meson festgelegt werden, was es Distributionen ermöglicht, mehrere Versionen dieser Bibliotheken gleichzeitig bereitzustellen.
- Die Übertragung von Umgebungsvariablen $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS, $MONITOR_INVOCATION_ID und $MONITOR_UNIT an die Handler OnFailure/OnSuccess wurde implementiert, um Informationen über das überwachte Unit bereitzustellen.
- Für Units wurde die Einstellung ExtensionDirectories implementiert, die verwendet werden kann, um das Laden von Systemerweiterungskomponenten aus normalen Verzeichnissen anstelle von Disk-Images zu organisieren. Der Inhalt des Erweiterungsverzeichnisses wird mit OverlayFS überlagert und wird verwendet, um die Hierarchie der Verzeichnisse /usr/ und /opt/ zu erweitern und zusätzliche Dateien während des Betriebs hinzuzufügen, selbst wenn die angegebenen Verzeichnisse im Nur-Lesen-Modus gemountet sind. Der Befehl 'portablectl attach —extension=' unterstützt jetzt auch die Angabe des Verzeichnisses.
- Für Units, die durch den Handler systemd-oomd aufgrund von Speichermangel im System gezwungen beendet wurden, wird das Merkmal 'oom-kill' übermittelt und die Anzahl der erzwungenen Beendigungen im Attribut 'user.oomd_ooms' reflektiert.
- Für Einheiten wurden neue Pfadspezifikatoren %y/%Y hinzugefügt, die den normalisierten Pfad zur Einheit widerspiegeln (mit Auflösung symbolischer Links). Außerdem wurden die Spezifikatoren %q für die Einsetzung des Wertes PRETTY_HOSTNAME und %d für die Einsetzung von CREDENTIALS_DIRECTORY hinzugefügt.
- In nicht privilegierten Diensten, die von einem normalen Benutzer mit dem Flag „—user“ gestartet werden, ist die Änderung der Einstellungen RootDirectory, MountAPIVFS, ExtensionDirectories, *Capabilities*, ProtectHome, *Directory, TemporaryFileSystem, PrivateTmp, PrivateDevices, PrivateNetwork, NetworkNamespacePath, PrivateIPC, IPCNamespacePath, PrivateUsers, ProtectClock, ProtectKernelTunables, ProtectKernelModules, ProtectKernelLogs und MountFlags erlaubt. Diese Möglichkeit ist nur verfügbar, wenn die Benutzernamensräume im System aktiviert sind.
- Im LoadCredential-Parameter ist es erlaubt, den Verzeichnisnamen als Argument anzugeben. In diesem Fall wird versucht, Anmeldeinformationen aus allen Dateien im angegebenen Verzeichnis zu laden.
- In systemctl gibt es im Parameter „—timestamp“ die Möglichkeit, das Flag „unix“ anzugeben, um die Zeit im epochalen Format (Anzahl der Sekunden seit dem 1. Januar 1970) anzuzeigen.
- In „systemctl status“ wurde das Flag „old-kernel“ implementiert, das angezeigt wird, wenn der im Sitzungskernel geladene Kernel eine ältere Versionsnummer als das im System verfügbare Basiskernel hat. Außerdem wurde das Flag „unmerged-usr“ hinzugefügt, um festzustellen, dass der Inhalt der Verzeichnisse /bin/ und /sbin/ nicht durch symbolische Links auf /usr/ gebildet wurde.
- Für von Prozess PID 1 gestartete Generatoren sind neue Umgebungsvariablen $SYSTEMD_SCOPE (Start aus einem System- oder Benutzerdienst), $SYSTEMD_IN_INITRD (Start aus initrd oder Host-Umgebung), $SYSTEMD_FIRST_BOOT (Indikator für den ersten Boot), $SYSTEMD_VIRTUALIZATION (Vorhandensein von Virtualisierung oder Start in einem Container) und $SYSTEMD_ARCHITECTURE (Architektur, für die der Kernel kompiliert wurde) verfügbar.
- Im Handler von PID 1 wurde die Möglichkeit implementiert, Anmeldedatenparameter aus dem QEMU-Interface fw_cfg zu laden oder durch Angabe des Parameters systemd.set_credential in der Kernel-Befehlszeile. In der Direktive LoadCredential wird eine automatische Suche nach Anmeldedaten in den Verzeichnissen /etc/credstore/, /run/credstore/ und /usr/lib/credstore/ durchgeführt, wenn ein relativer Pfad als Argument angegeben wird. Ein ähnliches Verhalten wurde für die Direktive LoadCredentialEncrypted angewendet, bei der zusätzlich die Verzeichnisse /etc/credstore.encrypted/, /run/credstore.encrypted/ und /usr/lib/credstore.encrypted/ überprüft werden.
- In systemd-journald wurde die Möglichkeit zur Exportierung im JSON-Format stabilisiert. In den Befehlen «journalctl —list-boots» und «bootctl list» wurde die Unterstützung für die Ausgabe im JSON-Format (Flag «—json») hinzugefügt.
- In udev wurden neue Dateien mit hwdb-Datenbanken hinzugefügt, die Informationen über tragbare Geräte (PDAs, Taschenrechner usw.) und Geräte, die bei der Erstellung von Ton und Video verwendet werden (DJ-Decks, Keypads), enthalten.
- In udevadm wurden neue Optionen «—prioritized-subsystem» zum Festlegen der Priorität von Subsystemen hinzugefügt (verwendet in systemd-udev-trigger.service zur Priorisierung der Verarbeitung von Blockgeräten und TPM), «—type=all», «—initialized-match» und «—initialized-nomatch» zur Auswahl von initialisierten oder nicht initialisierten Geräten, «udevadm info —tree» zur Anzeige des Objektbaums in der Hierarchie /sys/. Außerdem wurden neue Befehle «wait» und «lock» in udevadm hinzugefügt, um auf das Erscheinen eines Gerätes in der Datenbank zu warten und ein Blockgerät während der Formatierung oder beim Schreiben der Partitionstabelle zu sperren.
- Ein neuer Satz von symbolischen Links zu Geräten /dev/disk/by-diskseq/ wurde hinzugefügt, um Blockgeräte anhand ihrer Seriennummer («diskseq») zu identifizieren.
- In .link-Dateien im Abschnitt [Match] wurde die Unterstützung des Parameters «Firmware» hinzugefügt, um Geräte anhand einer Firmware-Beschreibungszeichenfolge zuzuordnen.
- In systemd-networkd wurde der Standardwert des Scope für Unicast-Routen, die über den Abschnitt [Route] konfiguriert werden, auf «link» geändert, um dem Verhalten des Befehls «ip route» zu entsprechen. Im Abschnitt [Bridge] wurde der Parameter Isolated=true|false hinzugefügt, um das gleichnamige Attribut von Netzwerkbrücken im Kernel zu konfigurieren. Im Abschnitt [Tunnel] wurde der Parameter External hinzugefügt, um ein externes Tunneltypen (Metadatensammelmodus) festzulegen. Im Abschnitt [DHCPServer] wurden die Parameter BootServerName, BootServerAddress und BootFilename hinzugefügt, um die Adresse des Servers, den Namen des Servers und den Namen der Bootdatei, die gesendet werden, zu konfigurieren. Server DHCP beim Booten im PXE-Modus. Im Abschnitt [Network] wurde der Parameter L2TP entfernt, stattdessen kann in .netdev-Dateien die neue Einstellung Local in Verbindung mit dem L2TP-Interface verwendet werden.
- Ein neuer Dienst «systemd-networkd-wait-online@.service» wurde hinzugefügt, der verwendet werden kann, um das Hochfahren eines bestimmten Netzwerkinterfaces abzuwarten.
- Die Möglichkeit, .netdev-Dateien zur Erstellung virtueller WLAN-Geräte zu verwenden, wurde implementiert, für die der Abschnitt [WLAN] zur Konfiguration angeboten wird.
- In den Dateien .link/.network wurde im Abschnitt [Match] der Parameter Kind zur Typzuordnung von Geräten („bond“, „bridge“, „gre“, „tun“, „veth“) implementiert.
- Der Start von systemd-resolved erfolgt nun früher im Bootprozess, einschließlich des Starts aus initrd, wenn systemd-resolved im initrd-Image vorhanden ist.
- In systemd-cryptenroll wurde die Option —fido2-credential-algorithm zum Auswählen des Verschlüsselungsalgorithmus für Anmeldedaten und die Option —tpm2-with-pin zum Steuern der PIN-Eingabe beim Entsperren der Partition mithilfe von TPM hinzugefügt. In /etc/crypttab wurde eine ähnliche Option tpm2-pin hinzugefügt. Beim Entsperren von Geräten über TPM werden die Parameter verschlüsselt, um die Entführung von Verschlüsselungsschlüsseln zu verhindern.
- In systemd-timesyncd wurde eine D-Bus-API zur dynamischen Erfassung von Informationen von NTP-Servern über IPC hinzugefügt.
- Um die Notwendigkeit einer farbigen Ausgabe in allen Befehlen zu bestimmen, wurde eine Überprüfung der Umgebungsvariable COLORTERM zusätzlich zu den zuvor überprüften NO_COLOR, SYSTEMD_COLORS und TERM implementiert.
- Im Buildsystem Meson wurde die Option install_tag für den selektiven Aufbau und die Installation notwendiger Komponenten: pam, nss, devel (pkg-config), systemd-boot, libsystemd, libudev implementiert. Eine Build-Option default-compression wurde hinzugefügt, um den Komprimierungsalgorithmus für systemd-journald und systemd-coredump auszuwählen.
- In sd-boot wurde in loader.conf eine experimentelle Einstellung „reboot-for-bitlocker“ zum Booten von Microsoft Windows mit BitLocker TPM hinzugefügt.
Quelle: opennet.ru
