Po pěti měsících vývoje byl uveden na trh systémový správce systemd 250. V této nové verzi je nově možnost ukládat přihlašovací údaje v zašifrované podobě, byla zrealizována verifikace automaticky detekovaných GPT oddílů pomocí digitálního podpisu, zlepšila se informovanost o příčinách zpoždění při spouštění služeb, byly přidány možnosti pro omezení přístupu služby k určitým souborovým systémům a síťovým rozhraním, byla zajištěna podpora kontroly integrity oddílů pomocí modulu dm-integrity a přidána podpora automatických aktualizací sd-boot.
Hlavní změny:
- Byla přidána podpora zašifrovaných a autentizovaných přihlašovacích údajů, což může být užitečné pro bezpečné ukládání citlivých materiálů, jako jsou SSL-klíče a přístupová hesla. Dešifrování přihlašovacích údajů se provádí pouze v případě potřeby a vázaně na místní instalaci nebo zařízení. Data se automaticky šifrují pomocí symetrických algoritmů šifrování, klíč, který může být umístěn v souborovém systému, v čipu TPM2 nebo pomocí kombinovaného schématu. Při spuštění služby se přihlašovací údaje automaticky dešifrují a stávají se běžně dostupnými pro službu. Pro práci se zašifrovanými přihlašovacími údaji byla přidána utilita 'systemd-creds' a pro služby byly navrhnuty nastavení LoadCredentialEncrypted a SetCredentialEncrypted.
- V sd-stub, spustitelném souboru pro EFI, pomocí kterého firmware EFI načítá jádro Linuxu, byla přidána podpora načítání jádra pomocí protokolu LINUX_EFI_INITRD_MEDIA_GUID EFI. Také do sd-stub byla přidána možnost balení přihlašovacích údajů a souborů sysext do archivu cpio a předání tohoto archivu jádru spolu s initrd (další soubory jsou umístěny v adresáři /.extra/). Uvedená možnost umožňuje využití verifikovatelného neměnného prostředí initrd, doplněného pomocí sysext a zašifrovaných dat pro autentizaci.
- Specifikace Discoverable Partitions byla významně rozšířena a poskytuje prostředky pro určení, montování a aktivaci systémových oddílů využívajících GPT (GUID Partition Tables). Ve srovnání s předchozími vydáními byla pro většinu architektur ve specifikaci implementována podpora kořenového oddílu a oddílu /usr, včetně platforem, které nepoužívají UEFI.
Do Discoverable Partitions byla přidána podpora pro oddíly, jejichž integritu ověřuje modul dm-verity pomocí digitálních podpisů PKCS#7, což usnadňuje vytváření plně autentizovaných diskových obrazů. Ověření integrity je integrováno do různých utilit, které manipulují s diskovými obrazy, včetně systemd-nspawn, systemd-sysext, systemd-dissect, služeb s RootImage, systemd-tmpfiles a systemd-sysusers.
- Pro dlouho běžící nebo zastavované jednotky je kromě zobrazení animovaného ukazatele probíhající operace poskytována možnost výstupu informací o stavu, které umožňují pochopit, co se s danou službou právě děje a na ukončení které služby systémový správce právě čeká.
- Do /etc/systemd/system.conf a /etc/systemd/user.conf byl přidán parametr DefaultOOMScoreAdjust, který umožňuje upravit práh aktivace OOM-killera při nedostatku paměti, použitelný pro procesy, které spouští systemd pro systém a uživatele. Ve výchozím nastavení mají systémové služby vyšší váhu než uživatelské, tedy při nedostatku paměti je pravděpodobnost ukončení uživatelských služeb vyšší než systémových.
- Byla přidána konfigurace RestrictFileSystems, která umožňuje omezit přístup služeb k určitému typu souborových systémů. Pro zobrazení dostupných typů FS lze použít příkaz „systemd-analyze filesystems“. Analogicky byla implementována možnost RestrictNetworkInterfaces, která umožňuje omezit přístup k určitým síťovým rozhraním. Realizace je založena na BPF modulu LSM, který omezuje přístup skupiny procesů k objektům jádra.
- Byl přidán nový konfigurační soubor /etc/integritytab a utilita systemd-integritysetup, které konfigurují modul dm-integrity pro kontrolu integrity dat na úrovni jednotlivých sektorů, například pro zajištění neměnnosti šifrovaných dat (Authenticated Encryption, zajišťuje, že blok dat nebyl modifikován obcházením). Formát souboru /etc/integritytab je podobný souborům /etc/crypttab a /etc/veritytab, s tím rozdílem, že místo dm-crypt a dm-verity se používá dm-integrity.
- Byl přidán nový unit soubor systemd-boot-update.service, jehož aktivací, pokud je nainstalován bootloader sd-boot, systemd automaticky aktualizuje verzi bootloaderu sd-boot, aby byl vždy aktuální. Samotný sd-boot je nyní ve výchozím nastavení sestavován s podporou mechanismu SBAT (UEFI Secure Boot Advanced Targeting), který řeší problémy s revokací certifikátů pro UEFI Secure Boot. Navíc sd-boot nyní umožňuje analýzu bootovacích nastavení Microsoft Windows pro správné formování názvů bootovacích oddílů s Windows a zobrazení verze Windows.
V sd-boot je také k dispozici možnost určování barevného schématu při sestavení. Během spuštění byla přidána podpora změny rozlišení obrazovky stisknutím klávesy „r“. Byla přidána klávesová zkratka „f“ pro vstup do rozhraní nastavení firmware. Byla přidána možnost automatického spuštění systému odpovídajícího položce menu vybrané při posledním spuštění. Byla přidána možnost automatického načítání EFI ovladačů umístěných v adresáři /EFI/systemd/drivers/ v oddílu ESP (EFI System Partition).
- Součástí je nový unit soubor factory-reset.target, zpracovávaný v systemd-logind analogicky k operacím reboot, poweroff, suspend a hibernate, a používaný k vytvoření zpracovatelů pro provedení resetování na tovární nastavení.
- Proces systemd-resolved nyní vytváří další naslouchající socket na adrese 127.0.0.54 vedle 127.0.0.53. Příchozí dotazy na adresu 127.0.0.54 jsou vždy přesměrovány na vyšší DNS server a nejsou zpracovávány lokálně.
- Byla poskytnuta možnost sestavování systemd-importd a systemd-resolved s knihovnou OpenSSL namísto libgcrypt.
- Byla přidána počáteční podpora architektury LoongArch, používané v procesorech Loongson.
- V systemd-gpt-auto-generator byla implementována možnost automatického nastavení systémem definovaných swap oddílů, šifrovaných podřízeným subsystémem LUKS2.
- V kódu pro analýzu GPT obrazů, používaném v systemd-nspawn, systemd-dissect a podobných utilitách, byla implementována možnost dekódování obrazů pro další architektury, což umožňuje použití systemd-nspawn k spouštění obrazů v emulatech dalších architektur.
- Při inspekci diskových obrazů v systemd-dissect se nyní zobrazují informace o účelu oddílu, například vhodnosti pro spuštění přes UEFI nebo spuštění v kontejneru.
- Do souboru system-extension.d/ bylo přidáno pole „SYSEXT_SCOPE“, které umožňuje definovat rozsah použití systémového obrazu — „initrd“, „system“ nebo „portable“.
- Do souboru os-release bylo přidáno pole „PORTABLE_PREFIXES“, které lze používat v přenosných obrazech pro určení podporovaných prefixů souborů unit.
- V systemd-logind byly implementovány nové nastavení HandlePowerKeyLongPress, HandleRebootKeyLongPress, HandleSuspendKeyLongPress a HandleHibernateKeyLongPress, které lze použít k určení akcí při delším držení určitých kláves déle než 5 sekund (například při rychlém stisknutí klávesy Suspend lze nastavit přechod do režimu hibernace a při jejím držení — do spánkového režimu).
- Pro jednotky byly implementovány nastavení StartupAllowedCPUs a StartupAllowedMemoryNodes, které se liší od podobných nastavení bez prefixu Startup tím, že se použijí pouze ve fázi spuštění a zastavování, což umožňuje nastavit jiné omezení zdrojů při spuštění.
- Byly přidány kontroly [Condition|Assert][Memory|CPU|IO]Pressure, které umožňují přeskočit nebo ukončit s chybou aktivaci jednotky v případě určení prostřednictvím mechanismu PSI vysokého zatížení paměti, CPU a I/O v systému.
- Výchozí omezení na maximální počet inode bylo zvýšeno pro oddíl /dev z 64k na 1M a pro /tmp z 400k na 1M.
- Pro služby byla navržena nastavení ExecSearchPath, které umožňuje změnit cestu pro vyhledávání spustitelných souborů spouštěných pomocí nastavení podobných ExecStart.
- Bylo přidáno nastavení RuntimeRandomizedExtraSec, které umožňuje provést náhodné odchylky v časovém limitu RuntimeMaxSec, omezujícím čas běhu jednotky.
- Byla rozšířena syntaxe nastavení RuntimeDirectory, StateDirectory, CacheDirectory a LogsDirectory, kde lze přes uvedení další hodnoty oddělené dvojtečkou nyní uspořádat vytváření symbolického odkazu na zadaný adresář pro zajištění přístupu přes několik cest.
- Pro služby byla navržena nastavení TTYRows a TTYColumns pro určení počtu řádků a sloupců v zařízení TTY.
- Bylo přidáno nastavení ExitType, které umožňuje změnit logiku určení ukončení služby. Ve výchozím nastavení systemd sleduje ukončení pouze hlavního procesu, ale při nastavení ExitType=cgroup bude systémový správce čekat na dokončení posledního procesu v cgroup.
- Podpora TPM2/FIDO2/PKCS11 v systemd-cryptsetup je nyní implementována jako plugin pro cryptsetup, což umožňuje používat běžný příkaz cryptsetup pro odemknutí zašifrované partition.
- Do zpracovatele TPM2 v systemd-cryptsetup/systemd-cryptsetup byla přidána podpora primárních RSA klíčů, kromě ECC klíčů, aby se zlepšila kompatibilita s čipy, které ECC nepodporují.
- Do souboru /etc/crypttab byla přidána možnost token-timeout, která umožňuje určit maximální dobu čekání na připojení tokenu PKCS#11/FIDO2, po jejímž uplynutí bude vyžadováno zadání hesla nebo obnovovacího klíče.
- V systemd-timesyncd byla implementována konfigurace SaveIntervalSec, která umožňuje pravidelně ukládat aktuální systémový čas na disk, například k implementaci monotónních hodin na systémech bez RTC.
- Do nástroje systemd-analyze byly přidány možnosti: "—image" a "—root" pro kontrolu unit souborů uvnitř zadaného obrazu nebo kořenového adresáře, "—recursive-errors" pro zohlednění závislých jednotek při vyhledávání chyb, "—offline" pro kontrolu uložených unit souborů na disku, "—json" pro výstup v JSON formátu, "—quiet" pro vypnutí nezajímavých zpráv, "—profile" pro vazbu na přenositelný profil. Také byla přidána příkaz inspect-elf pro analýzu core souborů ve formátu ELF a možnost kontroly unit souborů se zadaným názvem jednotky, nezávisle na tom, zda se tento název shoduje s názvem souboru.
- V systemd-networkd byla rozšířena podpora sběrnice CAN (Controller Area Network). Byly přidány konfigurace pro řízení režimů CAN: Loopback, OneShot, PresumeAck a ClassicDataLengthCode. Do sekce [CAN] souborů .network byly přidány možnosti TimeQuantaNSec, PropagationSegment, PhaseBufferSegment1, PhaseBufferSegment2, SyncJumpWidth, DataTimeQuantaNSec, DataPropagationSegment, DataPhaseBufferSegment1, DataPhaseBufferSegment2 a DataSyncJumpWidth pro řízení bitové synchronizace CAN rozhraní.
- V systemd-networkd byla klientovi DHCPv4 přidána možnost Label, která umožňuje nastavit štítek adres používaný při konfiguraci adres IPv4.
- V systemd-udevd byla pro "ethtool" implementována podpora speciálních hodnot "max", které nastavují velikost bufferu na maximální hodnotu podporovanou hardwarem.
- V .link souborech pro systemd-udevd nyní lze nastavit různé parametry pro spojování síťových adaptérů a připojení hardwarových zpracovatelů (offload).
- V systemd-networkd jsou ve výchozím nastavení nabízeny nové .network soubory: 80-container-vb.network pro určení síťových mostů vytvořených při spuštění systemd-nspawn s volbami „—network-bridge“ nebo „—network-zone“; 80-6rd-tunnel.network pro definici tunelů automaticky vytvořených při přijímání DHCP odpovědi s volbou 6RD.
- V systemd-networkd a systemd-udevd byla přidána podpora pro přenos IP přes InfiniBand rozhraní, pro které byla do souborů systemd.netdev přidána sekce „[IPoIB]“ a v nastavení Kind byla implementována podpora hodnoty „ipoib“.
- V systemd-networkd byla zajištěna automatická konfigurace tras pro adresy uvedené v parametru AllowedIPs, kterou lze nastavit pomocí parametrů RouteTable a RouteMetric v sekcích [WireGuard] a [WireGuardPeer].
- V systemd-networkd byla zajištěna automatická generace neměnných MAC adres pro rozhraní batadv a bridge. Pro deaktivaci tohoto chování můžete uvést hodnotu MACAddress=none v .netdev souborech.
- Do .link souborů byla přidána do sekce „[Link]“ konfigurace WakeOnLanPassword pro určení hesla při použití WoL v režimu „SecureOn“.
- Do sekce „[CAKE]“ v .network souborech byly přidány konfigurace AutoRateIngress, CompensationMode, FlowIsolationMode, NAT, MPUBytes, PriorityQueueingPreset, FirewallMark, Wash, SplitGSO a UseRawPacketSize pro určení parametrů mechanismu pro správu síťových front CAKE (Common Applications Kept Enhanced).
- Do sekce „[Network]“ v .network souborech byla přidána nastavení IgnoreCarrierLoss, které umožňuje určit, jak dlouho čekat, než reagujete na ztrátu nosného signálu.
- V systemd-nspawn, homectl, machinectl a systemd-run byl rozšířen syntax parametrů „—setenv“ — pokud je uvedeno pouze jméno proměnné (bez „=“), bude hodnota převzata z odpovídající proměnné prostředí (například při zadání „—setenv=FOO“ bude hodnota převezena z proměnné prostředí $FOO a použita v proměnné prostředí se stejným názvem ve vyhrazeném kontejneru).
- Do systemd-nspawn byla přidána volba „—suppress-sync“ pro deaktivaci provádění systémových volání sync()/fsync()/fdatasync() při vytváření kontejneru (užitečné, když je rychlost na prvním místě a uchování sestavovacích artefaktů v případě selhání není důležité, protože mohou být znovu vytvořeny kdykoliv).
- Byla přidána nová databáze hwdb, která zahrnuje různé typy analyzátorů signálů (multimetry, protokolové analyzátory, osciloskopy atd.). Informace o kamerách v hwdb byly rozšířeny o pole s informací o typu kamery (běžná nebo infračervená) a umístění objektivu (vpředu nebo vzadu).
- Zajištěna generace neměnných jmen síťových rozhraní pro zařízení netfront používaná ve Xen.
- Analýza core souborů pomocí nástroje systemd-coredump na základě knihoven libdw/libelf nyní probíhá v samostatném procesu, který je izolován v sandboxovém prostředí.
- Do systemd-importd byla přidána podpora proměnných prostředí $SYSTEMD_IMPORT_BTRFS_SUBVOL, $SYSTEMD_IMPORT_BTRFS_QUOTA, $SYSTEMD_IMPORT_SYNC, pomocí nichž lze vypnout generaci podsvazků Btrfs a také nastavit kvóty a synchronizaci disků.
- V systemd-journald na souborových systémech s podporou režimu copy-on-write bylo zajištěno opětovné zapnutí režimu COW pro archivní záznamy, což umožňuje jejich kompresi pomocí Btrfs.
- V systemd-journald byla implementována deduplikace stejných polí v jedné zprávě, která se provádí na fázi před uložením zprávy do deníku.
- Do příkazu shutdown byla přidána volba „—show“ pro zobrazení naplánovaného vypnutí.
Zdroj: opennet.ru
