Veröffentlichung von systemd System Manager 252 mit UKI-Unterstützung (Unified Kernel Image).

Nach fünf Monaten Entwicklungszeit wurde die Veröffentlichung des Systemmanagers systemd 252 vorgestellt. Die wichtigste Änderung in der neuen Version war die Integration der Unterstützung für einen modernisierten Boot-Prozess, der es ermöglicht, nicht nur den Kernel und den Bootloader, sondern auch Komponenten zu überprüfen der grundlegenden Systemumgebung mittels digitaler Signaturen.

Die vorgeschlagene Methode beinhaltet die Verwendung eines einheitlichen Kernel-Image UKI (Unified Kernel Image) beim Laden, das einen Handler zum Laden des Kernels aus UEFI (UEFI-Boot-Stub), ein Linux-Kernel-Image und die in den Speicher geladene initrd-Systemumgebung kombiniert für die Erstinitialisierung in der Phase vor dem Mounten des Root-FS. Das UKI-Image ist als einzelne ausführbare Datei im PE-Format verpackt, die mit herkömmlichen Bootloadern geladen oder direkt von der UEFI-Firmware aufgerufen werden kann. Beim Aufruf über UEFI ist es möglich, die Integrität und Zuverlässigkeit der digitalen Signatur nicht nur des Kernels, sondern auch des Inhalts der initrd zu überprüfen.

Um die Parameter der TPM-PCR-Register (Trusted Platform Module Platform Configuration Register) zu berechnen, die zur Überwachung der Integrität und zur Generierung einer digitalen Signatur des UKI-Images verwendet werden, ist ein neues Dienstprogramm systemd-measure enthalten. Der öffentliche Schlüssel und die zugehörigen PCR-Informationen, die in der Signatur verwendet werden, können direkt in das UKI-Boot-Image eingebettet werden (der Schlüssel und die Signatur werden in einer PE-Datei in den Feldern „.pcrsig“ und „.pcrkey“ gespeichert) und extern daraus extrahiert oder interne Versorgungsunternehmen.

Insbesondere die Dienstprogramme systemd-cryptsetup, systemd-cryptenroll und systemd-creds wurden für die Verwendung dieser Informationen angepasst, mit denen Sie sicherstellen können, dass verschlüsselte Festplattenpartitionen an einen digital signierten Kernel gebunden sind (in diesem Fall Zugriff auf die verschlüsselte Partition). wird nur bereitgestellt, wenn das UKI-Bild die Überprüfung durch digitale Signatur basierend auf Parametern im TPM bestanden hat.

Darüber hinaus ist das Dienstprogramm systemd-pcrphase enthalten, mit dem Sie die Bindung verschiedener Startphasen an Parameter steuern können, die sich im Speicher von Kryptoprozessoren befinden, die die TPM 2.0-Spezifikation unterstützen (z. B. können Sie den Entschlüsselungsschlüssel der LUKS2-Partition nur in verfügbar machen). das initrd-Image und blockieren Sie den Zugriff darauf bei späteren Downloads).

Einige andere Änderungen:

  • Stellt sicher, dass das Standardgebietsschema C.UTF-8 ist, es sei denn, in den Einstellungen ist ein anderes Gebietsschema angegeben.
  • Es ist jetzt möglich, beim ersten Start einen vollständigen Service-Preset-Vorgang („systemctl-Preset“) durchzuführen. Das Aktivieren von Voreinstellungen beim Booten erfordert die Erstellung mit der Option „-Dfirst-boot-full-preset“, es ist jedoch geplant, sie in zukünftigen Versionen standardmäßig zu aktivieren.
  • Die Benutzerverwaltungseinheiten umfassen einen CPU-Ressourcencontroller, der es ermöglichte, sicherzustellen, dass die CPUWeight-Einstellungen auf alle Slice-Einheiten angewendet werden, die zur Aufteilung des Systems in Teile (app.slice, background.slice, session.slice) verwendet werden, um Ressourcen zwischen ihnen zu isolieren verschiedene Benutzerdienste, die um CPU-Ressourcen konkurrieren. CPUWeight unterstützt auch den „idle“-Wert, um den entsprechenden Ressourcenbereitstellungsmodus zu aktivieren.
  • In temporären („vorübergehenden“) Einheiten und im Dienstprogramm systemd-repart ist das Überschreiben von Einstellungen durch Erstellen von Drop-in-Dateien im Verzeichnis /etc/systemd/system/name.d/ zulässig.
  • Für Systemabbilder ist das Support-Ended-Flag gesetzt, das diese Tatsache anhand des Werts des neuen Parameters „SUPPORT_END=“ in der Datei /etc/os-release bestimmt.
  • Es wurden die Einstellungen „ConditionCredential=“ und „AssertCredential=“ hinzugefügt, die zum Ignorieren oder Absturz von Einheiten verwendet werden können, wenn bestimmte Anmeldeinformationen nicht im System vorhanden sind.
  • Die Einstellungen „DefaultSmackProcessLabel=“ und „DefaultDeviceTimeoutSec=“ wurden zu system.conf und user.conf hinzugefügt, um die standardmäßige SMACK-Sicherheitsstufe und das Zeitlimit für die Einheitenaktivierung zu definieren.
  • In den Einstellungen „ConditionFirmware=“ und „AssertFirmware=“ wurde die Möglichkeit hinzugefügt, einzelne SMBIOS-Felder anzugeben, um beispielsweise eine Einheit nur zu starten, wenn das Feld /sys/class/dmi/id/board_name den Wert „Custom“ enthält Board“ können Sie „ConditionFirmware=smbios“ -field(board_name = „Custom Board“)“ angeben.
  • Während des Initialisierungsprozesses (PID 1) wurde zusätzlich zu deren Definition über qemu_fwcfg die Möglichkeit hinzugefügt, Anmeldeinformationen aus SMBIOS-Feldern (Typ 11, „OEM-Anbieterzeichenfolgen“) zu importieren, was die Bereitstellung von Anmeldeinformationen für virtuelle Maschinen vereinfacht und das eliminiert Bedarf an Tools von Drittanbietern wie Cloud-Init und Ignition.
  • Beim Herunterfahren wurde die Logik zum Aufheben der Bereitstellung virtueller Dateisysteme (proc, sys) geändert und Informationen über Prozesse, die das Aufheben der Bereitstellung von Dateisystemen blockieren, werden im Protokoll gespeichert.
  • Der Systemaufruffilter (SystemCallFilter) ermöglicht standardmäßig den Zugriff auf den Systemaufruf riscv_flush_icache.
  • Der sd-boot-Bootloader bietet die Möglichkeit, im gemischten Modus zu booten, in dem der 64-Bit-Linux-Kernel mit der 32-Bit-UEFI-Firmware ausgeführt wird. Experimentelle Möglichkeit hinzugefügt, SecureBoot-Schlüssel automatisch aus Dateien anzuwenden, die in ESP (EFI-Systempartition) gefunden werden.
  • Dem bootctl-Dienstprogramm wurden neue Optionen hinzugefügt: „—all-architectures“ zum Installieren von Binärdateien für alle unterstützten EFI-Architekturen, „—root=“ und „—image=“ zum Arbeiten mit einem Verzeichnis oder Festplatten-Image, „—install-source =“ zum Definieren der Quelle für die Installation, „-efi-boot-option-description=" zum Steuern der Boot-Eintragsnamen.
  • Der Befehl „list-automounts“ wurde zum Dienstprogramm systemctl hinzugefügt, um eine Liste der automatisch gemounteten Verzeichnisse anzuzeigen, und die Option „--image=" zum Ausführen von Befehlen in Bezug auf das angegebene Festplatten-Image. Den Befehlen „show“ und „status“ wurden die Optionen „--state=" und „--type=" hinzugefügt.
  • systemd-networkd fügte die Optionen „TCPCongestionControlAlgorithm=“ zur Auswahl des TCP-Überlastungskontrollalgorithmus, „KeepFileDescriptor=“ zum Speichern des Dateideskriptors von TUN/TAP-Schnittstellen, „NetLabel=“ zum Festlegen von NetLabels und „RapidCommit=“ zur Beschleunigung der Konfiguration über DHCPv6 hinzu (RFC 3315). Der Parameter „RouteTable=“ ermöglicht die Angabe der Namen von Routing-Tabellen.
  • systemd-nspawn ermöglicht die Verwendung relativer Dateipfade in den Optionen „--bind=" und „--overlay=". Unterstützung für den Parameter „rootidmap“ zur Option „--bind=" hinzugefügt, um die Root-Benutzer-ID im Container an den Besitzer des bereitgestellten Verzeichnisses auf der Hostseite zu binden.
  • systemd-resolved verwendet standardmäßig OpenSSL als Verschlüsselungs-Backend (Gnutls-Unterstützung bleibt als Option erhalten). Nicht unterstützte DNSSEC-Algorithmen werden jetzt als unsicher behandelt, anstatt einen Fehler (SERVFAIL) zurückzugeben.
  • systemd-sysusers, systemd-tmpfiles und systemd-sysctl implementieren die Möglichkeit, Einstellungen über einen Speichermechanismus für Anmeldeinformationen zu übertragen.
  • Befehl „compare-versions“ zu systemd-analyze hinzugefügt, um Zeichenfolgen mit Versionsnummern zu vergleichen (ähnlich wie „rpmdev-vercmp“ und „dpkg --compare-versions“). Dem Befehl „systemd-analyze dump“ wurde die Möglichkeit hinzugefügt, Einheiten nach Maske zu filtern.
  • Bei der Auswahl eines mehrstufigen Ruhemodus (Suspend-dann-Ruhezustand) wird die im Standby-Modus verbrachte Zeit nun basierend auf der Prognose der verbleibenden Akkulaufzeit ausgewählt. Der sofortige Übergang in den Schlafmodus erfolgt, wenn weniger als 5 % der Akkuladung verbleiben.
  • Zu „journalctl“ wurde ein neuer Ausgabemodus „-o short-delta“ hinzugefügt, der den Zeitunterschied zwischen verschiedenen Nachrichten im Protokoll anzeigt.
  • systemd-repart fügt Unterstützung für die Erstellung von Partitionen mit dem Squashfs-Dateisystem und Partitionen für dm-verity hinzu, einschließlich mit digitalen Signaturen.
  • Die Einstellung „StopIdleSessionSec=" wurde zu systemd-logind hinzugefügt, um eine inaktive Sitzung nach einem angegebenen Timeout zu beenden.
  • Systemd-cryptenroll hat eine Option „--unlock-key-file=" hinzugefügt, um den Entschlüsselungsschlüssel aus einer Datei zu extrahieren, anstatt den Benutzer dazu aufzufordern.
  • Es ist jetzt möglich, das Dienstprogramm systemd-growfs in Umgebungen ohne udev auszuführen.
  • systemd-backlight hat die Unterstützung für Systeme mit mehreren Grafikkarten verbessert.
  • Die Lizenz für die in der Dokumentation bereitgestellten Codebeispiele wurde von CC0 auf MIT-0 geändert.

Änderungen, die die Kompatibilität beeinträchtigen:

  • Beim Überprüfen der Kernel-Versionsnummer mithilfe der ConditionKernelVersion-Direktive wird jetzt ein einfacher Zeichenfolgenvergleich in den Operatoren „=“ und „!=“ verwendet. Wenn der Vergleichsoperator überhaupt nicht angegeben ist, kann der Glob-Mask-Abgleich mithilfe von verwendet werden Figuren '*', '?' Und '[', ']'. Um stverscmp()-Stilversionen zu vergleichen, verwenden Sie die Operatoren „<“, „>“, „<=“ und „>=“.
  • Das SELinux-Tag, das zum Überprüfen des Zugriffs aus einer Unit-Datei verwendet wird, wird jetzt zum Zeitpunkt des Ladens der Datei und nicht zum Zeitpunkt der Zugriffsprüfung gelesen.
  • Die Bedingung „ConditionFirstBoot“ wird jetzt beim ersten Booten des Systems nur direkt in der Boot-Phase ausgelöst und gibt „false“ zurück, wenn Units nach Abschluss des Bootens aufgerufen werden.
  • Im Jahr 2024 plant systemd, die Unterstützung des cgroup v1-Ressourcenbegrenzungsmechanismus einzustellen, der in systemd-Version 248 veraltet war. Administratoren wird empfohlen, vor der Migration von cgroup v2-basierten Diensten auf cgroup v1 vorsichtig zu sein. Der Hauptunterschied zwischen cgroups v2 und v1 besteht in der Verwendung einer gemeinsamen cgroups-Hierarchie für alle Arten von Ressourcen anstelle separater Hierarchien zur Zuweisung von CPU-Ressourcen, zur Regulierung des Speicherverbrauchs und für E/A. Separate Hierarchien führen zu Schwierigkeiten bei der Organisation der Interaktion zwischen Handlern und zu zusätzlichen Kernel-Ressourcenkosten, wenn Regeln für einen Prozess angewendet werden, auf den in verschiedenen Hierarchien verwiesen wird.
  • In der zweiten Hälfte des Jahres 2023 planen wir, die Unterstützung für geteilte Verzeichnishierarchien einzustellen, bei denen /usr separat vom Stammverzeichnis gemountet wird oder /bin und /usr/bin, /lib und /usr/lib getrennt sind.

Source: opennet.ru

Kommentar hinzufügen