Po třech měsících vývoje je k dispozici vydání systémového správce systemd 261. Klíčové změny: příprava na podporu API pro ověřování věku, podpora subsystémů Kexec Handover a Live Update Orchestration pro restart bez ztráty stavu, subsystém IMDS (Instance Metadata Service), funkčnost pro ochranu zavádění na systémech bez fyzického TPM (Trusted Platform Module), komponenta systemd-sysinstall s implementací instalátoru.
Mezi změnami v novém vydání:
- Byl přidán nový komponent systemd-sysinstall s implementací jednoduchého instalátoru operačního systému, kterým lze řídit z příkazového řádku nebo prostřednictvím interaktivního textového rozhraní. Funkčnost systemd-sysinstall je tvořena z již existujících možností systemd: pro konfiguraci diskových oddílů je využit systemd-repart, pro instalaci jádra a generování zaváděcího menu je použit příkaz „bootctl link“, pro instalaci zaváděče systemd-boot je použit příkaz „bootctl install“, pro počáteční konfiguraci instalovaného systému (např. výběr lokality a rozložení klávesnice) je použit systemd-creds.
- V rámci přípravy na realizaci požadavků zákonů o integraci do OS API pro ověřování věku byla do databáze userdb přidána pole birthDate s datem narození uživatele. Přidané pole může být využito v rozvíjeném portálu xdg-desktop-portal pro distribuce a v službě AccountsService k poskytování aplikacím informací o věkové kategorii uživatele prostřednictvím D-Bus rozhraní „org.freedesktop.AgeVerification1“ nebo „org.freedesktop.ParentalControls“. Pro nastavení věku byla do utility homectl přidána volba „--birth-date“.
- Do zpracovatele PID1 byla přidána podpora subsystémů jádra Linuxu LUO (Live Update Orchestration) a KHO (Kexec Handover), které umožňují plnohodnotné restartování a aktualizaci jádra bez zastavení činnosti a ztráty stavu systému, zařízení a procesů. KHO poskytuje možnosti pro spuštění nového jádra ze starého bez ztráty stavu systému, zatímco LUO implementuje uchování stavu zařízení a operační paměti a také zajišťuje kontinuitu operací souvisejících s DMA a zpracováním přerušení.
V systemd byla implementována možnost uchování souborových descriptorů pro systémové a uživatelské jednotky před voláním kexec a jejich obnovení po restartu jádra prostřednictvím kexec. V jednotkách je také možné vytvářet vlastní sezení LUO, která se uchovávají a obnovují při provádění kexec. Chcete-li povolit uchování stavu úložiště souborových descriptorů, je nutné použít nastavení 'FileDescriptorStorePreserve=yes'.
- Byla implementována podsystém systemd-imdsd, který poskytuje API založené na Varlink IPC pro přístup místních programů k IMDS (Instance Metadata Service) poskytovaným různými poskytovateli cloudových systémů. IMDS umožňuje virtuálním strojům získávat informace o cloudovém prostředí, například je možné získat údaje o síťové konfiguraci, geografické poloze uzlu, typu CPU a velikosti úložiště. V systemd-imdsd je k dispozici jak nízkoúrovňové API pro přístup k jednotlivým polím, tak i vysoceúrovňové rozhraní pro dotazy pomocí standardních klíčů, které jsou přiřazeny ke klíčům specifickým pro jednotlivé cloudové platformy. Pro interakci se systemd-imdsd byla přidána utilita systemd-imds, která umožňuje importovat pole z IMDS do místního systému účetních záznamů.
Pro rozpoznávání cloudových platforem na základě informací ze SMBIOS a k určení dostupné funkčnosti IMDS na aktuálním uzlu byla přidána nová databáze hwdb.d/40-imds.hwdb. Bylo implementováno rozpoznávání cloudových platforem Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS a Vultr. Je k dispozici zpracovatel systemd-imds-generator pro automatické vložení služby pro získávání dat prostřednictvím IMDS v případě zjištění, že je systém provozován na podporované cloudové platformě. Je možné vytvářet univerzální obrazy, které podporují použití IMDS při spuštění v cloudových prostředích, ale které jsou schopny fungovat i bez IMDS.
- V systemd-stub byla implementována funkčnost „boot secret“, která umožňuje vytvořit klíč na základě proměnné EFI, uložené v oblasti nepřístupné pro operační systém a inicializované náhodnou hodnotou. V initrd je klíč předáván prostřednictvím souboru /.extra/boot-secret. Tato možnost může být vyžadována pro získání specifického náhodného klíče pro verifikaci procesu spouštění nebo šifrování na systémech bez hardwarového TPM (Trusted Platform Module).
- Byl přidán služba systemd-tpm2-swtpm.service pro spuštění emulátoru TPM čipů swtpm (Software TPM Emulator), který lze použít pro automatický návrat na softwarovou implementaci TPM pro zabezpečené zavádění na systémech bez hardwarového TPM. Softwarový TPM funguje v uživatelském prostoru a nedosahuje úrovně ochrany jako hardwarový TPM, ale v některých situacích je jeho použití odůvodněné ve srovnání s prací bez TPM. Například softwarový TPM může získat klíč pro šifrování oddílů pomocí nové funkce „boot secret“ a použít pro ukládání svého stavu oddíl ESP (EFI System Partition) na disku. Pro automatické zapnutí softwarového TPM byl navržen parametrem příkazového řádku jádra systemd.tpm2_software_fallback.
- Byl oznámen jako stabilní a umístěn do /usr/bin komponent systemd-sysupdate, určený pro automatické rozpoznávání, stahování a instalaci aktualizací pomocí atomárního mechanismu výměny oddílů, souborů nebo adresářů (používají se dvě nezávislé oddíly/soubory/adresáře, z nichž jeden obsahuje aktuální běžící zdroj a druhý je aktualizován, poté se oddíly/soubory/adresáře vymění).
- V systemd-resolved byla implementována možnost předefinování nebo zadání nových DNS záznamů prostřednictvím umístění souborů ve formátu JSON v adresářích systemd/resolve/static.d/. Na rozdíl od /etc/hosts v nových souborech lze nejen přiřazovat IP adres k jménům hostitelů, ale také definovat zdrojové DNS RR záznamy odlišné od „A“ a „AAAA“. Kromě toho byly v systemd-resolved přidány nastavení velikosti DNS cache: ‘DNSCacheSize’, ‘MulticastDNSCacheSize’ a ‘LLMNRCacheSize’.
- Byl přidán nástroj ‘storagectl’ pro inspekci zařízení pro ukládání a správu připojení blokových zařízení a souborových systémů.
- V rámci iniciativy na snížení závislostí byla v libsystemd implementována dynamická načítání knihoven libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk a libcryptsetup
pomocí volání dlopen() v situacích, kdy jsou jejich funkce skutečně potřebné. - Ve systemd-tmpfiles byla přidána volba „—inline“, která umožňuje nastavovat direktivy v příkazovém řádku bez vytváření konfiguračních souborů v tmpfiles.d/ a bez posílání nastavení přes STDIN. Byly přidány nové typy direktiv 'k/K' pro nastavování capabilities. Byla přidána konfigurační soubor tmpfiles.d/root.conf, který nastavuje přístupová práva 0555 (-r-xr-xr-x) pro kořenový adresář (/) k ochraně proti určení nesprávných práv při dynamickém vytváření kořenového FS.
- V utilitě bootctl bylo zajištěno uchování záložní kopie bootloaderu systemd-boot a zapsání staré verze v UEFI jako záložní možnosti spouštění.
- Ve systemd-vmspawn byla přidána podpora přímého zavádění jádra bez použití firmware UEFI. Byla implementována volba „—firmware-features“ pro selektivní zapínání nebo vypínání jednotlivých funkcí firmware. Bylo přidáno režim „—console=headless“ pro spuštění virtuálního stroje bez konzole a obrazovky. Byla přidána volba „—image-disk-type“ pro výběr typu blokového úložiště používaného v VM (virtio-blk, virtio-scsi, nvme, scsi-cd). Byla přidána volba „—coco“ (Confidential Computing) pro zapnutí režimu šifrování paměti virtuálních strojů s využitím technologie AMD SEV-SNP.
- Ve systemd-hostnamed a /etc/machine-info byla přidána podpora přidání libovolných tagů k aktuálnímu systému pomocí parametru „Tags“. Nastavené tagy pak mohou být použity pro selektivní aplikaci nastavení s kontrolou pomocí výrazu ConditionMachineTag.
- Byly přidány nastavení EventLoopRateLimitIntervalSec a EventLoopRateLimitBurst, která omezují intenzitu zpracovacího cyklu událostí v PID1 za účelem uvolnění CPU v případě smyčkování.
- Ve správě služby byla implementována konfigurace MinimumUptimeSec pro stanovení minimální doby provozu systému (výchozí 15 sekund). Pokud je před uplynutím této doby zahájena výzva na vypnutí nebo restart, je na konci procesu přidána odpovídající prodleva.
- Pro jednotky byly implementovány nová nastavení CPUSetPartition pro nastavení typu partition cpuset v cgroup („root“, „isolated“, „member“), RestrictFileSystemAccess pro povolení запуска pouze spustitelných souborů, které byly ověřeny digitálním podpisem pomocí dm-verity, a CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec pro získávání upozornění na vysoké zatížení CPU a vstupu/výstupu.
- Seznam metrik poskytovaných nástrojem systemd-report byl rozšířen. Například byly přidány informace o velikosti fyzické paměti a aktivních CPU jádrech, údaje o obsahu polí SMBIOS a /etc/machine-info, informace o podpoře režimu Confidential Computing a údaje o výrobci čipů TPM2.
- V systemd-oomd byla implementována možnost definice pravidel pro filtrování procesů při nedostatku paměti v systému. Pravidla lze zadávat v adresáři /etc/systemd/oomd/rules.d/ nebo v jednotkových souborech přes direktivu OOMRule.
- Do systemd-socket-proxy byla přidána podpora protokolu "PROXY", který odpovídá první verzi protokolu "haproxy".
- V systemd-networkd byl implementován nový backend sd-dhcp-relay pro DHCP relay. Byly označeny za zastaralé nastavení v sekci "[DHCPServer]" — BindToInterface, RelayTarget, RelayAgentCircuitId a RelayAgentRemoteId, místo kterých je třeba použít parametr DHCPRelay v sekci "[Network]" a sérii nových nastavení v sekci [DHCPRelay] a v souboru networkd.conf. Byla přidána příkaz 'networkctl dhcp-lease INTERFACE' pro uložení dumpu s informacemi o přidělení IP adres (DHCP lease).
- Do nástroje systemd-nspawn byla přidána možnost "—restrict-address-families" a do souborů .nspawn nastavení RestrictAddressFamilies pro omezení používaných rodin socket adres v kontejneru. V budoucích verzích budou výchozí povoleny pouze rodiny AF_INET, AF_INET6 a AF_UNIX.
- Podpora starého formátu databáze udev (verze 0.x) byla ukončena. On-line aktualizace z verzí systemd do vydání 247 již není podporována.
- Při sestavení s C knihovnou musl je nyní vyžadována minimálně verze musl 1.2.6.
Dále stojí za zmínku vydání projektu liberated-systemd 261, který vyvíjí fork systemd, zbavený kódu, který může být použit pro sledování uživatelů. V navrženém vydání se změny redukují na odstranění kódu, který do userdb přidával pole birthDate s datem narození uživatele, a do nástroje homectl možnost "—birth-date" pro nastavení věku.
Zdroj: opennet.ru
