Nach fünfmonatiger Entwicklung wurde die Version 250 des Systemmanagers systemd veröffentlicht. In der neuen Version gibt es die Möglichkeit, Anmeldeinformationen verschlüsselt zu speichern, die Verifizierung automatisch erkannter GPT-Partitionen mittels digitaler Signatur wurde implementiert, die Informationen zu den Gründen für Verzögerungen beim Starten von Diensten wurden verbessert, Optionen zur Einschränkung des Zugriffs von Diensten auf bestimmte Dateisysteme und Netzwerkschnittstellen wurden hinzugefügt, die Unterstützung zur Integritätsüberprüfung von Partitionen mittels des Moduls dm-integrity wurde bereitgestellt und die Unterstützung für die automatische Aktualisierung von sd-boot wurde hinzugefügt.
Hauptänderungen:
- Es wurde Unterstützung für verschlüsselte und authentifizierte Anmeldeinformationen hinzugefügt, was für die sichere Speicherung vertraulicher Materialien wie SSL-Schlüssel und Zugangspasswörter nützlich sein kann. Die Entschlüsselung der Anmeldeinformationen erfolgt nur bei Bedarf und in Abhängigkeit von der lokalen Installation oder Hardware. Die Daten werden automatisch mit symmetrischen Verschlüsselungsalgorithmen verschlüsselt, deren Schlüssel in einem Dateisystem, in einem TPM2-Chip oder mittels eines kombinierten Schemas abgelegt werden kann. Beim Starten des Dienstes werden die Anmeldeinformationen automatisch entschlüsselt und dem Dienst in normaler Form zur Verfügung gestellt. Um mit verschlüsselten Anmeldeinformationen zu arbeiten, wurde das Dienstprogramm 'systemd-creds' hinzugefügt, und für die Dienste wurden die Einstellungen LoadCredentialEncrypted und SetCredentialEncrypted angeboten.
- Im sd-stub, der Executable für EFI, über die die EFI-Firmware den Linux-Kernel lädt, wurde die Unterstützung für das Laden des Kernels mit dem EFI-Protokoll LINUX_EFI_INITRD_MEDIA_GUID hinzugefügt. Außerdem wurde im sd-stub die Möglichkeit zur Verpackung von Anmeldeinformationen und sysext-Dateien in ein cpio-Archiv und zur Übertragung dieses Archivs zusammen mit initrd an den Kernel hinzugefügt (zusätzliche Dateien werden im Verzeichnis \/extra\/ abgelegt). Diese Möglichkeit ermöglicht die Verwendung einer verifizierbaren unveränderlichen Umgebung initrd, die durch sysexts und verschlüsselte Daten zur Authentifizierung ergänzt wird.
- Die Spezifikation für Discoverable Partitions wurde erheblich erweitert und bietet Mittel zur Erkennung, Montage und Aktivierung von Systempartitionen, die GPT (GUID Partition Tables) verwenden. Im Vergleich zu früheren Versionen wird in der Spezifikation für die meisten Architekturen die Unterstützung der Root-Partition und der Partition \/usr implementiert, einschließlich für Plattformen, die UEFI nicht verwenden.
In Discoverable Partitions wurde auch die Unterstützung für Partitionen hinzugefügt, deren Integrität durch das dm-verity-Modul mithilfe digitaler PKCS#7-Signaturen verifiziert wird, was die Erstellung vollständig authentifizierter Festplattenabbilder vereinfacht. Die Unterstützung zur Verifizierung ist in verschiedene Dienstprogramme integriert, die mit Disk-Images arbeiten, einschließlich systemd-nspawn, systemd-sysext, systemd-dissect, RootImage-Dienste, systemd-tmpfiles und systemd-sysusers.
- Für langlaufende oder gestoppte Einheiten wurde zusätzlich zur Anzeige eines animierten Fortschrittsbalkens die Möglichkeit geschaffen, Statusinformationen auszugeben, die es ermöglichen, zu verstehen, was gerade mit dem Dienst passiert und welcher Dienst derzeit vom Systemmanager erwartet, dass er abgeschlossen wird.
- In /etc/systemd/system.conf und /etc/systemd/user.conf wurde die Option DefaultOOMScoreAdjust hinzugefügt, mit der der Grenzwert für das Auslösen des OOM-Killers bei Speichermangel angepasst werden kann, der für Prozesse anwendbar ist, die systemd für das System und die Benutzer startet. Standardmäßig haben Systemdienste ein höheres Gewicht als Benutzerdienste, das heißt, bei Speichermangel ist die Wahrscheinlichkeit, dass Benutzerdienste beendet werden, höher als bei Systemdiensten.
- Die Einstellung RestrictFileSystems wurde hinzugefügt, die den Zugriff von Diensten auf bestimmte Dateisystemtypen einschränkt. Um die verfügbaren Dateisystemtypen anzuzeigen, kann der Befehl "systemd-analyze filesystems" verwendet werden. Entsprechend wurde die Option RestrictNetworkInterfaces implementiert, die den Zugriff auf bestimmte Netzwerkinterfaces einschränkt. Die Implementierung basiert auf dem BPF-Modul LSM, das den Zugriff einer Gruppe von Prozessen auf Kernelobjekte einschränkt.
- Eine neue Konfigurationsdatei /etc/integritytab und das Dienstprogramm systemd-integritysetup wurden hinzugefügt, um das Modul dm-integrity für die Integritätskontrolle von Daten auf der Ebene einzelner Sektoren zu konfigurieren, beispielsweise um die Unveränderlichkeit verschlüsselter Daten zu garantieren (Authenticated Encryption, garantiert, dass der Datenblock nicht umgangen wurde). Das Format der Datei /etc/integritytab ähnelt den Dateien /etc/crypttab und /etc/veritytab, mit dem Unterschied, dass statt dm-crypt und dm-verity nun dm-integrity verwendet wird.
- Eine neue Unit-Datei systemd-boot-update.service wurde hinzugefügt, die bei Aktivierung und Vorhandensein des Bootloaders sd-boot automatisch die Version des sd-boot-Bootloaders aktualisiert, wobei der Bootcode stets auf dem neuesten Stand bleibt. Der sd-boot wird nun standardmäßig mit Unterstützung für den SBAT-Mechanismus (UEFI Secure Boot Advanced Targeting) kompiliert, der Probleme mit der Widerrufung von Zertifikaten für UEFI Secure Boot löst. Außerdem wurde die Möglichkeit implementiert, Bootkonfigurationen von Microsoft Windows zu analysieren, um die Benennung von Bootpartitionen für Windows korrekt zu erstellen und die Windows-Version anzuzeigen.
Im sd-boot wurde außerdem die Möglichkeit zur Festlegung eines Farbschemas während des Baus integriert. Während des Bootvorgangs wurde die Unterstützung für die Änderung der Bildschirmauflösung durch Drücken der Taste „r“ hinzugefügt. Eine Tastenkombination „f“ wurde eingeführt, um in die Firmware-Einstellungsoberfläche zu wechseln. Der Modus für den automatischen Systemstart entsprechend dem bei der letzten Boot-Anforderung ausgewählten Menüelement wurde hinzugefügt. Die Möglichkeit zum automatischen Laden von EFI-Treibern, die im Verzeichnis /EFI/systemd/drivers/ im ESP (EFI System Partition) abgelegt sind, wurde hinzugefügt.
- Ein neuer Unit-Datei factory-reset.target wurde eingeführt, der in systemd-logind ähnlich den Vorgängen reboot, poweroff, suspend und hibernate verarbeitet wird und zur Erstellung von Handlingen für einen Zurücksetzen auf die Werkseinstellungen dient.
- Der Prozess systemd-resolved erstellt nun zusätzlich einen hörenden Socket unter der Adresse 127.0.0.54 neben 127.0.0.53. Ankommende Anfragen an die Adresse 127.0.0.54 werden immer an den übergeordneten DNS-Server umgeleitet und nicht lokal verarbeitet.
- Es wurde die Möglichkeit bereitgestellt, systemd-importd und systemd-resolved mit der OpenSSL-Bibliothek anstelle von libgcrypt zu kompilieren.
- Die anfängliche Unterstützung für die Architektur LoongArch, die in Loongson-Prozessoren verwendet wird, wurde hinzugefügt.
- Im systemd-gpt-auto-generator wurde die Möglichkeit zur automatischen Konfiguration von vom System definierten Swap-Partitionen integriert, die mit dem LUKS2-System verschlüsselt sind.
- Im Code zur Analyse von GPT-Images, das in systemd-nspawn, systemd-dissect und ähnlichen Tools verwendet wird, wurde die Möglichkeit zum Decodieren von Images für andere Architekturen implementiert, was es ermöglicht, systemd-nspawn zur Ausführung von Images in Emulatoren anderer Architekturen zu verwenden.
- Bei der Inspektion von Disk-Images in systemd-dissect werden nun Informationen über den Zweck der Partition ausgegeben, z. B. die Eignung für das Booten über UEFI oder das Starten in einem Container.
- Im Datei system-extension.d wurde das Feld „SYSEXT_SCOPE“ hinzugefügt, das es ermöglicht, den Anwendungsbereich des System-Images — „initrd“, „system“ oder „portable“ — zu kennzeichnen.
- In die Datei os-release wurde das Feld „PORTABLE_PREFIXES“ eingefügt, das in tragbaren Images zur Bestimmung unterstützter Präfixe von Unit-Dateien verwendet werden kann.
- In systemd-logind wurden neue Einstellungen für HandlePowerKeyLongPress, HandleRebootKeyLongPress, HandleSuspendKeyLongPress und HandleHibernateKeyLongPress implementiert, die verwendet werden können, um bei längerem Drücken bestimmter Tasten (länger als 5 Sekunden) Aktionen zu bestimmen (zum Beispiel kann das schnelle Drücken der Taste Suspend so konfiguriert werden, dass der Übergang in den Energiesparmodus erfolgt, während das Halten zu einem Standby-Betrieb führt).
- Für Units wurden die Einstellungen StartupAllowedCPUs und StartupAllowedMemoryNodes eingeführt, die sich von ähnlichen Einstellungen ohne das Präfix Startup dadurch unterscheiden, dass sie nur während des Boot- und Shutdown-Prozesses angewendet werden, wodurch andere Ressourcenbeschränkungen beim Start gesetzt werden können.
- Es wurden Überprüfungen für [Condition|Assert][Memory|CPU|IO]Pressure hinzugefügt, die es ermöglichen, die Aktivierung einer Unit im Falle einer hohen Auslastung von Speicher, CPU und I/O im System über den PSI-Mechanismus zu überspringen oder mit einem Fehler abzuschließen.
- Das standardmäßig festgelegte Limit für die maximale Anzahl an Inodes wurde für die Partition /dev von 64k auf 1M erhöht und für /tmp von 400k auf 1M.
- Für Services wurde die Einstellung ExecSearchPath vorgeschlagen, die es ermöglicht, den Suchpfad für ausführbare Dateien, die über ähnliche Einstellungen wie ExecStart gestartet werden, zu ändern.
- Die Einstellung RuntimeRandomizedExtraSec wurde hinzugefügt, die es ermöglicht, zufällige Abweichungen von dem RuntimeMaxSec-Timeout, das die Ausführungszeit einer Unit begrenzt, einzuführen.
- Die Syntax der Einstellungen RuntimeDirectory, StateDirectory, CacheDirectory und LogsDirectory wurde erweitert, sodass durch Angabe eines zusätzlichen, durch einen Doppelpunkt getrennten Wertes nun die Erstellung eines symbolischen Links zu einem bestimmten Verzeichnis für den Zugriff über mehrere Pfade organisiert werden kann.
- Für Services wurden die Einstellungen TTYRows und TTYColumns vorgeschlagen, um die Anzahl der Zeilen und Spalten im TTY-Gerät festzulegen.
- Die Einstellung ExitType wurde hinzugefügt, die es ermöglicht, die Logik zur Bestimmung des Abschlusses eines Services zu ändern. Standardmäßig verfolgt systemd nur den Abschluss des Hauptprozesses, aber bei Festlegung von ExitType=cgroup wird der Systemmanager auf den Abschluss des letzten Prozesses in der cgroup warten.
- Die Unterstützung von TPM2/FIDO2/PKCS11 in systemd-cryptsetup wird jetzt auch als Plugin für cryptsetup kompiliert, was es ermöglicht, den normalen Befehl cryptsetup zum Entsperren von verschlüsselten Partitionen zu verwenden.
- Der TPM2-Handler in systemd-cryptsetup/systemd-cryptsetup hat Unterstützung für primäre RSA-Schlüssel hinzugefügt, zusätzlich zu ECC-Schlüsseln, um die Kompatibilität mit Chips zu verbessern, die ECC nicht unterstützen.
- In /etc/crypttab wurde die Option token-timeout hinzugefügt, die es ermöglicht, die maximale Wartezeit für die Verbindung eines PKCS#11/FIDO2-Tokens festzulegen, nach deren Ablauf eine Aufforderung zur Eingabe des Passworts oder des Wiederherstellungsschlüssels erfolgt.
- In systemd-timesyncd wurde die Einstellung SaveIntervalSec implementiert, die es ermöglicht, den aktuellen Systemzeitwert periodisch auf der Festplatte zu speichern, beispielsweise zur Implementierung von monotonen Uhren auf Systemen ohne RTC.
- In das Tool systemd-analyze wurden die Optionen «—image» und «—root» zur Überprüfung von Unit-Dateien innerhalb eines bestimmten Abbilds oder Wurzelverzeichnisses, «—recursive-errors» zur Berücksichtigung abhängiger Einheiten bei der Fehlererkennung, «—offline» zur Überprüfung von separat auf der Festplatte gespeicherten Unit-Dateien, «—json» für die Ausgabe im JSON-Format, «—quiet» zur Deaktivierung unwichtiger Nachrichten und «—profile» zur Bindung an ein tragbares Profil hinzugefügt. Auch der Befehl inspect-elf wurde für die Analyse von Core-Dateien im ELF-Format hinzugefügt und die Möglichkeit, Unit-Dateien mit einem bestimmten Namen zu überprüfen, unabhängig davon, ob dieser Name mit dem Dateinamen übereinstimmt.
- In systemd-networkd wurde die Unterstützung für den CAN-Bus (Controller Area Network) erweitert. Einstellungen zur Steuerung der CAN-Modi: Loopback, OneShot, PresumeAck und ClassicDataLengthCode wurden hinzugefügt. In den [CAN]-Bereich der .network-Dateien wurden die Optionen TimeQuantaNSec, PropagationSegment, PhaseBufferSegment1, PhaseBufferSegment2, SyncJumpWidth, DataTimeQuantaNSec, DataPropagationSegment, DataPhaseBufferSegment1, DataPhaseBufferSegment2 und DataSyncJumpWidth zur Steuerung der Bit-Synchronisation des CAN-Interfaces hinzugefügt.
- In systemd-networkd wurde für den DHCPv4-Client die Option Label hinzugefügt, die es ermöglicht, ein Adresslabel zu konfigurieren, das bei der Konfiguration von IPv4-Adressen verwendet wird.
- In systemd-udevd wurde für «ethtool» die Unterstützung spezieller Werte «max» implementiert, die die Puffergröße auf das maximal vom Hardware unterstützte Limit setzen.
- In .link-Dateien für systemd-udevd können jetzt verschiedene Parameter für die Zusammenführung von Netzwerkadaptern und die Verbindung von Hardware-Handlern (Offload) konfiguriert werden.
- In systemd-networkd werden standardmäßig neue .network-Dateien angeboten: 80-container-vb.network zur Definition von Netzwerkbrücken, die beim Start von systemd-nspawn mit den Optionen „—network-bridge“ oder „—network-zone“ erstellt werden; 80-6rd-tunnel.network zur Definition von Tunneln, die automatisch erstellt werden, wenn eine DHCP-Antwort mit der Option 6RD empfangen wird.
- In systemd-networkd und systemd-udevd wurde die Unterstützung für das IP-Forwarding über InfiniBand-Schnittstellen hinzugefügt, für die in die systemd.netdev-Dateien der Abschnitt „[IPoIB]“ eingefügt wurde und in der Konfiguration von Kind die Verarbeitung des Wertes „ipoib“ implementiert ist.
- In systemd-networkd wurde die automatische Konfiguration von Routen für die in den AllowedIPs-Parameter angegebenen Adressen sichergestellt, die über die Parameter RouteTable und RouteMetric in den Abschnitten [WireGuard] und [WireGuardPeer] konfiguriert werden können.
- In systemd-networkd wurde die automatische Generierung von unveränderlichen MAC-Adressen für die Schnittstellen batadv und bridge sichergestellt. Um dieses Verhalten zu deaktivieren, kann der Wert MACAddress=none in den .netdev-Dateien angegeben werden.
- In die .link-Dateien wurde im Abschnitt „[Link]“ die Konfiguration WakeOnLanPassword eingefügt, um ein Passwort für den Betrieb von WoL im „SecureOn“-Modus zu definieren.
- In den Abschnitt „[CAKE]“ der .network-Dateien wurden die Einstellungen AutoRateIngress, CompensationMode, FlowIsolationMode, NAT, MPUBytes, PriorityQueueingPreset, FirewallMark, Wash, SplitGSO und UseRawPacketSize hinzugefügt, um die Parameter des CAKE-Mechanismus (Common Applications Kept Enhanced) zur Verwaltung von Netzwerkwarteschlangen zu definieren.
- In den Abschnitt „[Network]“ der .network-Dateien wurde die Einstellung IgnoreCarrierLoss hinzugefügt, mit der festgelegt werden kann, wie lange gewartet werden soll, bevor auf den Verlust des Trägersignals reagiert wird.
- In systemd-nspawn, homectl, machinectl und systemd-run wurde die Syntax des Parameters „—setenv“ erweitert – wenn nur der Name der Variable angegeben ist (ohne „=“), wird der Wert aus der entsprechenden Umgebungsvariable übernommen (zum Beispiel: Wenn „—setenv=FOO“ angegeben wird, wird der Wert aus der Umgebungsvariable $FOO entnommen und in der gleichnamigen Umgebungsvariable im Container verwendet).
- In systemd-nspawn wurde die Option „—suppress-sync“ hinzugefügt, um die Ausführung der Systemaufrufe sync()/fsync()/fdatasync() beim Erstellen des Containers zu deaktivieren (nützlich, wenn Geschwindigkeit Priorität hat und das Speichern von Build-Artefakten im Fehlerfall nicht wichtig ist, da sie jederzeit neu erstellt werden können).
- Eine neue Datenbank hwdb wurde hinzugefügt, die verschiedene Arten von Signalanalysatoren (Multimeter, Protokollanalysatoren, Oszilloskope usw.) enthält. Die Informationen zu den Kameras in hwdb wurden um ein Feld mit Informationen über den Kameratyp (normal oder infrarot) und die Position des Objektivs (vorne oder hinten) erweitert.
- Die Generierung von unveränderlichen Namen für Netzwerkinterfaces für Geräte von netfront, die in Xen verwendet werden, wurde sichergestellt.
- Die Analyse von Core-Dumps mit dem Tool systemd-coredump auf Basis der Bibliotheken libdw/libelf erfolgt nun in einem separaten Prozess, der in einer Sandbox-Umgebung isoliert ist.
- In systemd-importd wurde die Unterstützung für Umgebungsvariablen $SYSTEMD_IMPORT_BTRFS_SUBVOL, $SYSTEMD_IMPORT_BTRFS_QUOTA, $SYSTEMD_IMPORT_SYNC hinzugefügt, mit denen die Generierung von Btrfs-Teilvolumes sowie die Konfiguration von Quoten und die Synchronisation von Laufwerken deaktiviert werden können.
- In systemd-journald auf Dateisystemen mit Unterstützung für den Modus copy-on-write wurde die erneute Aktivierung des COW-Modus für Archive aktiviert, was deren Kompression durch Btrfs ermöglicht.
- In systemd-journald wurde die Duplikaterkennung gleicher Felder in einer Nachricht umgesetzt, die beim Einfügen der Nachricht in das Journal erfolgt.
- Dem shutdown-Befehl wurde die Option „—show“ hinzugefügt, um die geplante Herunterfahrzeit anzuzeigen.
Quelle: opennet.ru
