Nach fĂŒnfmonatiger Entwicklung wurde die Version des Systemmanagers systemd 252 veröffentlicht. Die wichtigste Ănderung in der neuen Version ist die Integration der UnterstĂŒtzung fĂŒr den aktualisierten Bootprozess, der die Verifizierung nicht nur des Kernels und des Bootloaders, sondern auch der Komponenten der grundlegenden Systemumgebung durch digitale Signaturen ermöglicht.
Das vorgeschlagene Verfahren sieht die Verwendung eines einheitlichen Kernel-Images UKI (Unified Kernel Image) beim Booten vor, das den Loader fĂŒr den Kernel aus UEFI (UEFI Boot Stub), das Linux-Kernel-Image und die in den Speicher geladene Systemumgebung initrd vereint, die fĂŒr die initiale Initialisierung vor dem Mounten des Root-Dateisystems verwendet wird. Das UKI-Image wird in Form einer einzelnen ausfĂŒhrbaren Datei im PE-Format bereitgestellt, die mit traditionellen Bootloadern geladen oder direkt aus der UEFI-Firmware aufgerufen werden kann. Beim Aufruf aus UEFI besteht die Möglichkeit, die IntegritĂ€t und AuthentizitĂ€t durch digitale Signaturen nicht nur des Kernels, sondern auch des Inhalts von initrd zu ĂŒberprĂŒfen.
Zur Berechnung der Parameter der TPM PCR (Trusted Platform Module Platform Configuration Register), die zur IntegritĂ€tskontrolle und zur Erstellung der digitalen Signatur des UKI-Images verwendet werden, wurde das neue Tool systemd-measure integriert. Der in der Signatur verwendete öffentliche SchlĂŒssel und die zugehörigen Informationen ĂŒber PCR können direkt in das Boot-Image UKI eingebettet werden (SchlĂŒssel und Signatur werden in einer Datei im PE-Format in den Feldern â.pcrsigâ und â.pcrkeyâ gespeichert) und von externen oder internen Tools extrahiert werden.
Unter anderem wurden die Tools systemd-cryptsetup, systemd-cryptenroll und systemd-creds angepasst, um diese Informationen zu nutzen, mit denen eine Bindung der verschlĂŒsselten Partitionen an den durch digitale Signaturen geprĂŒften Kernel sichergestellt werden kann (in diesem Fall wird der Zugriff auf die verschlĂŒsselte Partition nur gewĂ€hrt, wenn das UKI-Image die Verifizierung nach digitaler Signatur basierend auf den im TPM abgelegten Parametern bestanden hat).
ZusĂ€tzlich wurde das Tool systemd-pcrphase integriert, mit dem die Bindung verschiedener Bootphasen an die Parameter verwaltet werden kann, die im Speicher der Krypto-Prozessoren gespeichert sind, die die Spezifikation TPM 2.0 unterstĂŒtzen (z. B. kann der SchlĂŒssel zur EntschlĂŒsselung der LUKS2-Partition nur im Image initrd verfĂŒgbar gemacht und der Zugriff darauf in spĂ€teren Bootphasen blockiert werden).
Einige andere Ănderungen:
- Die Verwendung der Lokalisierung C.UTF-8 ist standardmĂ€Ăig sichergestellt, sofern keine andere Lokalisierung in den Einstellungen definiert ist.
- Die Möglichkeit, die vollstĂ€ndige Voreinstellung der Dienste («systemctl preset») wĂ€hrend des ersten Starts auszufĂŒhren, wurde umgesetzt. Um die Voreinstellung wĂ€hrend des Starts zu aktivieren, ist eine Kompilierung mit der Option «-Dfirst-boot-full-preset» erforderlich, aber in zukĂŒnftigen Versionen soll sie standardmĂ€Ăig aktiviert werden.
- In den Einheitseinheiten zur Benutzerverwaltung wurde ein CPU-Ressourcencontroller integriert, der die Anwendung der CPUWeight-Einstellungen auf alle Slice-Einheiten ermöglicht, die zur Aufteilung des Systems in Teile (app.slice, background.slice, session.slice) verwendet werden, um Ressourcen zwischen verschiedenen Benutzerdiensten, die um CPU-Ressourcen konkurrieren, zu isolieren. Auch in CPUWeight wurde die UnterstĂŒtzung fĂŒr den Wert «idle» implementiert, um den entsprechenden Ressourcenbereitstellungsmodus zu aktivieren.
- In transienten («transient») Einheiten und im Dienstprogramm systemd-repart wurde die Möglichkeit zur Ăbersteuerung der Einstellungen durch die Erstellung von Drop-in-Dateien im Verzeichnis /etc/systemd/system/name.d/ eingefĂŒhrt.
- FĂŒr Systemabbilder wurde die Flagge zur Einstellung des Supports ('support-ended') gesetzt, wobei dieser Umstand anhand des Wertes des neuen Parameters 'SUPPORT_END=' in der Datei /etc/os-release definiert wird.
- Die Einstellungen «ConditionCredential=» und «AssertCredential=» wurden hinzugefĂŒgt, die verwendet werden können, um Einheiten zu ignorieren oder sie bei Fehlen bestimmter Anmeldeinformationen im System abzubrechen.
- In system.conf und user.conf wurden die Einstellungen «DefaultSmackProcessLabel=» und «DefaultDeviceTimeoutSec=» hinzugefĂŒgt, um das Sicherheitsniveau von SMACK und die ZeitĂŒberschreitung der Aktivierung der Einheit zu definieren, die standardmĂ€Ăig angewendet werden.
- In den Einstellungen «ConditionFirmware=» und «AssertFirmware=» wurde die Möglichkeit hinzugefĂŒgt, bestimmte SMBIOS-Felder anzugeben, beispielsweise zum Start einer Einheit nur dann, wenn das Feld /sys/class/dmi/id/board_name den Wert «Custom Board» enthĂ€lt; man kann «ConditionFirmware=smbios-field(board_name = «Custom Board»)» angeben.
- Im Initialisierungsprozess (PID 1) wurde die Möglichkeit hinzugefĂŒgt, Anmeldeinformationen aus den SMBIOS-Feldern (Typ 11, «OEM vendor strings») zu importieren, zusĂ€tzlich zu deren Definition ĂŒber qemu_fwcfg, was die Bereitstellung von Anmeldeinformationen erleichtert. unterstĂŒtzung fĂŒr virtuelle Maschinen und es ermöglicht, ohne externe Werkzeuge wie cloud-init und ignition auszukommen.
- Beim Herunterfahren wurde die Logik zum AushĂ€ngen von virtuellen Dateisystemen (proc, sys) geĂ€ndert, und es wurden Protokolle mit Informationen ĂŒber Prozesse bereitgestellt, die das AushĂ€ngen der Dateisysteme blockieren.
- Im Systemaufruffilter (SystemCallFilter) ist der Zugriff auf den Systemaufruf riscv_flush_icache standardmĂ€Ăig erlaubt.
- Im Bootloader sd-boot wurde die Möglichkeit hinzugefĂŒgt, im Mischmodus zu booten, in dem der 64-Bit-Linux-Kernel aus einer 32-Bit-UEFI-Firmware gestartet wird. Eine experimentelle Funktion zur automatischen Anwendung von SecureBoot-SchlĂŒsseln aus den in der ESP (EFI-Systempartition) gefundenen Dateien wurde hinzugefĂŒgt.
- Im Tool bootctl wurden neue Optionen ââall-architecturesâ zur Installation von BinĂ€rdateien fĂŒr alle unterstĂŒtzten EFI-Architekturen, ââroot=â und ââimage=â fĂŒr die Arbeit mit einem Verzeichnis oder Abbild, sowie ââinstall-source=â zur Angabe der Quelle fĂŒr die Installation und ââefi-boot-option-description=â zur Verwaltung von Namen der Boot-EintrĂ€ge hinzugefĂŒgt.
- Im Tool systemctl wurde der Befehl âlist-automountsâ zum Anzeigen der Liste automatisch eingehĂ€ngter Verzeichnisse und die Option ââimage=â fĂŒr die AusfĂŒhrung von Befehlen in Bezug auf ein angegebenes Abbild hinzugefĂŒgt. Den Befehlen âshowâ und âstatusâ wurden die Optionen ââstate=â und ââtype=â hinzugefĂŒgt.
- In systemd-networkd wurden die Optionen âTCPCongestionControlAlgorithm=â zur Auswahl des TCP-Staukontrollalgorithmus, âKeepFileDescriptor=â zur Beibehaltung des Dateideskriptors der TUN/TAP-Schnittstellen, âNetLabel=â zur Festlegung von NetLabel-Tags und âRapidCommit=â zur Beschleunigung der Konfiguration ĂŒber DHCPv6 (RFC 3315) hinzugefĂŒgt. Bei der Option âRouteTable=â ist es nun erlaubt, die Namen von Routing-Tabellen anzugeben.
- In systemd-nspawn wurde die Verwendung relativer Dateipfade in den Optionen ââbind=â und ââoverlay=â erlaubt. In die Option ââbind=â wurde die UnterstĂŒtzung des Parameters ârootidmapâ hinzugefĂŒgt, um die ID des Benutzers root im Container mit dem EigentĂŒmer des eingehĂ€ngten Verzeichnisses auf der Host-Seite zu verbinden.
- In systemd-resolved wurde standardmĂ€Ăig das Pakets OpenSSL als Backend fĂŒr die VerschlĂŒsselung aktiviert (die UnterstĂŒtzung von gnutls bleibt optional). Nicht unterstĂŒtzte DNSSEC-Algorithmen werden jetzt als unsicher behandelt, anstatt einen Fehler (SERVFAIL) zurĂŒckzugeben.
- In systemd-sysusers, systemd-tmpfiles und systemd-sysctl wurde die Möglichkeit zur Ăbertragung von Einstellungen ĂŒber den Mechanismus zur Speicherung von Anmeldeinformationen realisiert.
- In das Tool systemd-analyze wurde der Befehl âcompare-versionsâ zum Vergleichen von Versionsnummern hinzugefĂŒgt (Ă€hnlich wie ârpmdev-vercmpâ und âdpkg --compare-versionsâ). Im Befehl âsystemd-analyze dumpâ wurde die Möglichkeit zur Filterung von Einheiten nach Maske hinzugefĂŒgt.
- Beim Auswahl des mehrstufigen Schlafmodus (suspend-then-hibernate, Ăbergang in den Schlafmodus nach dem Standby-Modus) wird die Zeit im Standby-Modus jetzt basierend auf der Prognose der verbleibenden Akkulaufzeit ausgewĂ€hlt. Der sofortige Ăbergang in den Schlafmodus erfolgt, wenn weniger als 5 % der Akkuladung verbleiben.
- In 'journalctl' wurde ein neuer Ausgabemodus «-o short-delta» hinzugefĂŒgt, der den Zeitunterschied zwischen verschiedenen Lognachrichten anzeigt.
- In systemd-repart wurde die UnterstĂŒtzung fĂŒr die Erstellung von Partitionen mit Squashfs-Dateisystem und Partitionen fĂŒr dm-verity, einschlieĂlich digitaler Signaturen, hinzugefĂŒgt.
- In systemd-logind wurde die Einstellung «StopIdleSessionSec=» hinzugefĂŒgt, um inaktive Sitzungen nach Ablauf eines festgelegten Timeouts zu beenden.
- In systemd-cryptenroll wurde die Option «âunlock-key-file=» hinzugefĂŒgt, um den EntschlĂŒsselungsschlĂŒssel aus einer Datei zu extrahieren, anstatt ĂŒber eine Benutzerabfrage.
- Die Möglichkeit, das Dienstprogramm systemd-growfs in Umgebungen ohne udev auszufĂŒhren, wurde bereitgestellt.
- In systemd-backlight wurde die UnterstĂŒtzung fĂŒr Systeme mit mehreren Grafikkarten verbessert.
- Die Lizenz fĂŒr die in der Dokumentation angegebenen Codebeispiele wurde von CC0 auf MIT-0 geĂ€ndert.
Ănderungen, die die KompatibilitĂ€t beeintrĂ€chtigen:
- Bei der ĂberprĂŒfung der Kernelversionsnummer mit der Direktive ConditionKernelVersion werden in den Operatoren â=â und â!=â jetzt einfache Stringvergleiche angewendet, und wenn kein Vergleichsoperator angegeben ist, kann eine Ăbereinstimmung mittels Globbing-Muster unter Verwendung der Zeichen â*â, â?â und â[â, â]â erfolgen. FĂŒr den Vergleich von Versionen im Stil der Funktion stverscmp() sollten die Operatoren ââ, â=â verwendet werden.
- Das SELinux-Label, das zur ĂberprĂŒfung des Zugriffs aus der Unit-Datei verwendet wird, wird jetzt wĂ€hrend des Ladevorgangs der Datei gelesen, nicht zum Zeitpunkt der ZugriffsprĂŒfung.
- Die Bedingung «ConditionFirstBoot» wird jetzt nur wĂ€hrend des ersten Systemstarts direkt in der Startphase ausgelöst und gibt «false» zurĂŒck, wenn Einheiten nach Abschluss des Starts aufgerufen werden.
- Im Jahr 2024 plant systemd die UnterstĂŒtzung des RessourcenbeschrĂ€nkungsmechanismus cgroup v1 einzustellen, der in der Veröffentlichung von systemd 248 als veraltet eingestuft wurde. Administratoren wird empfohlen, sich rechtzeitig um den Wechsel zu cgroup v2 fĂŒr Dienste, die an cgroup v1 gebunden sind, zu kĂŒmmern. Ein entscheidender Unterschied zwischen cgroups v2 und v1 ist die Anwendung einer gemeinsamen Hierarchie von cgroups fĂŒr alle Arten von Ressourcen, anstelle separater Hierarchien zur Ressourcenzuteilung von CPU, zur Regulierung des Speicherverbrauchs und fĂŒr Eingabe/Ausgabe. Getrennte Hierarchien fĂŒhren zu Schwierigkeiten bei der Organisation der Interaktion zwischen den Handlern und zu zusĂ€tzlichen Kernelressourcenkosten bei der Anwendung von Regeln fĂŒr Prozesse, die in verschiedenen Hierarchien erwĂ€hnt werden.
- In der zweiten HĂ€lfte des Jahres 2023 wird die UnterstĂŒtzung von separaten Hierarchien von Verzeichnissen eingestellt, wenn /usr separat vom Root gemountet wird oder die Verzeichnisse /bin und /usr/bin sowie /lib und /usr/lib getrennt sind.
Quelle: opennet.ru
