Vydání správce systému systemd 252 s podporou UKI (Unified Kernel Image).

Po pěti měsících vývoje bylo představeno vydání správce systému systemd 252. Klíčovou změnou v nové verzi byla integrace podpory modernizovaného bootovacího procesu, který umožňuje ověřit nejen jádro a bootloader, ale také komponenty základního systémového prostředí pomocí digitálních podpisů.

Navrhovaná metoda zahrnuje použití jednotného obrazu jádra UKI (Unified Kernel Image) při načítání, který kombinuje handler pro načítání jádra z UEFI (UEFI boot stub), obraz jádra Linuxu a systémové prostředí initrd načtené do paměti, použité pro počáteční inicializaci ve fázi před připojením kořenového FS . Obraz UKI je zabalen jako jeden spustitelný soubor ve formátu PE, který lze načíst pomocí tradičních bootloaderů nebo volat přímo z firmwaru UEFI. Při volání z UEFI je možné ověřit integritu a spolehlivost digitálního podpisu nejen jádra, ale i obsahu initrd.

Pro výpočet parametrů registrů TPM PCR (Trusted Platform Module Platform Configuration Register) používaných k monitorování integrity a generování digitálního podpisu obrazu UKI je zahrnut nový nástroj systemd-measure. Veřejný klíč použitý v podpisu a doprovodné informace o PCR lze vložit přímo do zaváděcího obrazu UKI (klíč a podpis jsou uloženy v souboru PE v polích '.pcrsig' a ​​'.pcrkey') a extrahovat z něj externím nebo vnitřní inženýrské sítě.

K použití těchto informací byly přizpůsobeny zejména nástroje systemd-cryptsetup, systemd-cryptenroll a systemd-creds, pomocí kterých můžete zajistit, že šifrované diskové oddíly budou svázány s digitálně podepsaným jádrem (v tomto případě přístup k šifrovanému oddílu je poskytován pouze v případě, že obrázek UKI prošel ověřením digitálním podpisem na základě parametrů umístěných v TPM).

Navíc je zahrnut obslužný program systemd-pcrphase, který umožňuje řídit vazbu různých fází spouštění na parametry umístěné v paměti kryptoprocesorů podporujících specifikaci TPM 2.0 (například dešifrovací klíč oddílu LUKS2 můžete zpřístupnit pouze v obraz initrd a zablokovat k němu přístup v pozdějších fázích stahování).

Některé další změny:

  • Zajišťuje, že výchozí národní prostředí je C.UTF-8, pokud není v nastavení určeno jiné národní prostředí.
  • Nyní je možné provést kompletní servisní přednastavenou operaci („systemctl preset“) během prvního spouštění. Povolení předvoleb při spouštění vyžaduje sestavení s volbou "-Dfirst-boot-full-preset", ale plánuje se, že bude v budoucích verzích standardně povoleno.
  • Jednotky správy uživatelů zahrnují řadič prostředků CPU, což umožnilo zajistit, aby se nastavení CPUWeight použilo na všechny jednotky slice používané k rozdělení systému na části (app.slice, background.slice, session.slice) k izolaci zdrojů mezi různé uživatelské služby, soutěžící o zdroje CPU. CPUWeight také podporuje hodnotu „idle“ pro aktivaci příslušného režimu poskytování prostředků.
  • V dočasných („přechodných“) jednotkách a v obslužném programu systemd-repart je povoleno přepsání nastavení vytvořením souborů typu drop-in v adresáři /etc/systemd/system/name.d/.
  • U systémových obrazů je nastaven příznak support-ended, který tuto skutečnost určuje na základě hodnoty nového parametru “SUPPORT_END=” v souboru /etc/os-release.
  • Přidáno nastavení „ConditionCredential=“ a „AssertCredential=“, které lze použít k ignorování nebo selhání jednotek, pokud v systému nejsou přítomny určité přihlašovací údaje.
  • Do system.conf a user.conf byla přidána nastavení „DefaultSmackProcessLabel=“ a „DefaultDeviceTimeoutSec=“, která definují výchozí úroveň zabezpečení SMACK a časový limit aktivace jednotky.
  • V nastavení „ConditionFirmware=“ a „AssertFirmware=“ byla přidána možnost specifikovat jednotlivá pole SMBIOS, například pro spuštění jednotky pouze v případě, že pole /sys/class/dmi/id/board_name obsahuje hodnotu „Custom Board“, můžete zadat pole „ConditionFirmware=smbios“ (název_tabule = „Vlastní deska“)“.
  • Během procesu inicializace (PID 1) byla kromě jejich definice pomocí qemu_fwcfg přidána možnost importovat přihlašovací údaje z polí SMBIOS (typ 11, „řetězce dodavatele OEM“), což zjednodušuje poskytování přihlašovacích údajů virtuálním strojům a odstraňuje potřebujete nástroje třetích stran, jako je cloud-init a zapalování.
  • Během vypínání byla změněna logika pro odpojení virtuálních souborových systémů (proc, sys) a informace o procesech blokujících odpojení souborových systémů jsou uloženy do protokolu.
  • Filtr systémového volání (SystemCallFilter) standardně umožňuje přístup k systémovému volání riscv_flush_icache.
  • Zavaděč sd-boot přidává možnost spouštění ve smíšeném režimu, ve kterém 64bitové jádro Linuxu běží z 32bitového firmwaru UEFI. Přidána experimentální schopnost automaticky aplikovat klíče SecureBoot ze souborů nalezených v ESP (systémový oddíl EFI).
  • Do nástroje bootctl byly přidány nové možnosti: „—all-architectures“ pro instalaci binárních souborů pro všechny podporované architektury EFI, „—root=“ a „—image=“ pro práci s obrazem adresáře nebo disku, „—install-source =” pro definování zdroje pro instalaci, "-efi-boot-option-description==" pro ovládání jmen zaváděcích položek.
  • Do obslužného programu systemctl byl přidán příkaz 'list-automounts' pro zobrazení seznamu automaticky připojených adresářů a možnost '--image=' pro provádění příkazů ve vztahu k určenému obrazu disku. Přidány možnosti „--state=“ a „--type=“ do příkazů „show“ a „status“.
  • systemd-networkd přidal možnosti „TCPCongestionControlAlgorithm=“ pro výběr algoritmu řízení zahlcení TCP, „KeepFileDescriptor=“ pro uložení deskriptoru souborů rozhraní TUN/TAP, „NetLabel=“ pro nastavení NetLabels, „RapidCommit=“ pro urychlení konfigurace přes DHCPv6 (RFC 3315). Parametr “RouteTable=” umožňuje specifikovat názvy směrovacích tabulek.
  • systemd-nspawn umožňuje použití relativních cest k souborům v možnostech "--bind=" a "--overlay=". Přidána podpora parametru 'rootidmap' k volbě "--bind=", aby se svázalo ID uživatele root v kontejneru s vlastníkem připojeného adresáře na straně hostitele.
  • systemd-resolved standardně používá OpenSSL jako svůj šifrovací backend (podpora gnutls je zachována jako možnost). Nepodporované algoritmy DNSSEC jsou nyní považovány za nebezpečné namísto vracení chyby (SERVFAIL).
  • systemd-sysusers, systemd-tmpfiles a systemd-sysctl implementují možnost přenosu nastavení prostřednictvím mechanismu úložiště pověření.
  • Do nástroje systemd-analyze byl přidán příkaz 'compare-versions' pro porovnání řetězců s čísly verzí (podobně jako 'rpmdev-vercmp' a 'dpkg --compare-versions'). Do příkazu 'systemd-analyze dump' byla přidána možnost filtrovat jednotky podle masky.
  • Při výběru vícefázového režimu spánku (uspání a poté hibernace) se nyní doba strávená v pohotovostním režimu vybírá na základě předpovědi zbývající životnosti baterie. Okamžitý přechod do režimu spánku nastane, když zbývá méně než 5 % nabití baterie.
  • Do 'journalctl' byl přidán nový výstupní režim "-o short-delta", který zobrazuje časový rozdíl mezi různými zprávami v protokolu.
  • systemd-repart přidává podporu pro vytváření oddílů se systémem souborů Squashfs a oddílů pro dm-verity, včetně digitálních podpisů.
  • Přidáno nastavení "StopIdleSessionSec=" do systemd-logind pro ukončení neaktivní relace po zadaném časovém limitu.
  • Systemd-cryptenroll přidal možnost "--unlock-key-file=", která umožňuje extrahovat dešifrovací klíč ze souboru namísto toho, aby se uživatel dotázal.
  • Nyní je možné spustit obslužný program systemd-growfs v prostředích bez udev.
  • systemd-backlight má vylepšenou podporu pro systémy s více grafickými kartami.
  • Licence pro příklady kódu uvedené v dokumentaci byla změněna z CC0 na MIT-0.

Změny, které narušují kompatibilitu:

  • Při kontrole čísla verze jádra pomocí direktivy ConditionKernelVersion se nyní používá jednoduché porovnání řetězců v operátorech '=' a '!=', a pokud není operátor porovnání vůbec specifikován, lze použít párování glob-mask pomocí znaky '*', '?' a '[', ']'. Pro porovnání verzí ve stylu funkce stverscmp() byste měli použít operátory '', '='.
  • Značka SELinux používaná ke kontrole přístupu ze souboru jednotky se nyní čte v době načítání souboru, nikoli v době kontroly přístupu.
  • Podmínka "ConditionFirstBoot" se nyní spouští při prvním spuštění systému pouze přímo ve fázi bootování a vrací "false" při volání jednotek po dokončení bootování.
  • V roce 2024 systemd plánuje přestat podporovat mechanismus omezování prostředků cgroup v1, který byl zastaralý ve verzi systemd 248. Správcům se doporučuje, aby se předem postarali o migraci služeb založených na cgroup v2 na cgroup v1. Klíčovým rozdílem mezi cgroups v2 a v1 je použití společné hierarchie cgroups pro všechny typy zdrojů, namísto samostatných hierarchií pro alokaci CPU zdrojů, pro regulaci spotřeby paměti a pro I/O. Oddělené hierarchie vedou k potížím při organizování interakce mezi obslužnými rutinami ak dalším nákladům na zdroje jádra při aplikaci pravidel pro proces odkazovaný v různých hierarchiích.
  • V druhé polovině roku 2023 plánujeme ukončit podporu pro rozdělené hierarchie adresářů, kde /usr je připojen odděleně od kořenového adresáře nebo /bin a /usr/bin, /lib a /usr/lib jsou odděleny.

Zdroj: opennet.ru

Přidat komentář