Po čtyřech měsících vývoje byl představen release systémového správce systemd 248. V novém vydání byla zajištěna podpora obrazů pro rozšíření systémových adresářů, konfiguračního souboru /etc/veritytab, utility systemd-cryptenroll, odemykání LUKS2 pomocí čipů TPM2 a tokenů FIDO2, spuštění jednotek ve izolovaném prostoru identifikátorů IPC, protokolu B.A.T.M.A.N. pro mesh sítě a backendu nftables pro systemd-nspawn. Stabilizován systemd-oomd.
Hlavní změny:
- Byla implementována koncepce obrazů rozšíření systému (System Extension), které lze použít k rozšíření hierarchie adresářů /usr/ a /opt/, a k přidání dalších souborů během provozu, i když jsou uvedené adresáře připojeny v režimu pouze pro čtení. Po připojení obrazu rozšíření systému se jeho obsah překrývá na hierarchii /usr/ a /opt/ pomocí OverlayFS.
Pro připojení, odpojení, prohlížení a aktualizaci obrazů systémových rozšíření byla navržena nová utilita systemd-sysext. Pro automatické připojení již nainstalovaných obrazů během bootování byl přidán servis systemd-sysext.service. Do souboru os-release byl přidán parametr „SYSEXT_LEVEL=“ pro určení úrovně podporovaných systémových rozšíření.
- Pro jednotky byla implementována konfigurace ExtensionImages, kterou lze použít pro vázání obrazů rozšíření systému na hierarchii názvového prostoru FS jednotlivých izolovaných služeb.
- Byl přidán konfigurační soubor /etc/veritytab pro nastavení verifikace dat na blokové úrovni pomocí modulu dm-verity. Formát souboru je podobný /etc/crypttab — „název_partice zařízení_pro_data zařízení_pro_hash hesh_kontrola_kořene možnosti“. Pro nastavení chování dm-verity pro kořenové zařízení byl přidán parametr příkazové řádky jádra systemd.verity.root_options.
- V systemd-cryptsetup byla přidána možnost extrakce URI tokenu PKCS#11 a šifrovaného klíče z hlavičky metadat LUKS2 ve formátu JSON, což umožňuje integrovat údaje o otevření šifrovaného zařízení přímo do samotného zařízení bez zapojení externích souborů.
- V systemd-cryptsetup byla přidána podpora pro odemykání šifrovaných oddílů LUKS2 pomocí čipů TPM2 a tokenů FIDO2, kromě dříve podporovaných tokenů PKCS#11. Načítání libfido2 se provádí skrze dlopen(), tj. existence je kontrolována za běhu, nikoli jako pevná závislost.
- Do souboru /etc/crypttab pro systemd-cryptsetup byly přidány nové volby „no-write-workqueue“ a „no-read-workqueue“ pro zapnutí synchronního zpracování vstupu/výstupu souvisejícího se šifrováním a dešifrováním.
- Do utility systemd-repart byla přidána možnost aktivace šifrovaných oddílů pomocí čipů TPM2, například pro vytvoření šifrovaného oddílu /var při prvním spuštění.
- Byla přidána utility systemd-cryptenroll pro přiřazení tokenů TPM2, FIDO2 a PKCS#11 k oddílům LUKS, stejně jako pro jejich odpojení a zobrazení, přiřazení záložních klíčů a nastavení hesla pro přístup.
- Byl přidán parametr PrivateIPC, který umožňuje v unit-souboru nastavit spuštění procesů v izolovaném prostoru IPC s vlastními identifikátory a frontou zpráv. Pro připojení jednotky k již vytvořenému prostoru identifikátorů IPC byla navržena možnost IPCNamespacePath.
- Byly přidány nastavení ExecPaths a NoExecPaths, které umožňují aplikovat příznak noexec na jednotlivé části souborového systému.
- Do systemd-networkd byla přidána podpora mesh protokolu B.A.T.M.A.N. („Better Approach To Mobile Adhoc Networking“), který umožňuje vytváření decentralizovaných sítí, kde je každý uzel spojen s okolními uzly. Pro konfiguraci byla navržena sekce [BatmanAdvanced] v .netdev, parametr BatmanAdvanced v .network souborech a nový typ zařízení „batadv“.
- Byla stabilizována implementace mechanismu pro včasnou reakci na nedostatek paměti v systému systemd-oomd. Byla přidána volba DefaultMemoryPressureDurationSec pro nastavení času čekání na uvolnění zdroje před zasáhnutím do jednotky. Systemd-oomd používá podsystem jádra PSI (Pressure Stall Information) a umožňuje identifikovat počátek vzniku zpoždění způsobených nedostatkem zdrojů a selektivně ukončit náročné procesy v době, kdy systém ještě není v kritickém stavu a nezačíná intenzivně zkracovat mezipaměť a vytěsňovat data do swapové části.
- Byl přidán parametr příkazové řádky jádra — „root=tmpfs“, který umožňuje připojit kořenový oddíl do dočasného úložiště umístěného v paměti pomocí Tmpfs.
- Parametr v /etc/crypttab, který určuje soubor s klíčem, nyní může odkazovat na zásuvky typu AF_UNIX a SOCK_STREAM. Klíč by měl být v tomto případě předáván při připojení k zásuvce, což může být například použito pro vytváření služeb, které dynamicky poskytují klíče.
- Záložní jméno hostitele (fallback) pro použití systémovým správcem a systemd-hostnamed nyní může být nastaveno dvěma způsoby: prostřednictvím parametru DEFAULT_HOSTNAME v os-release a pomocí proměnné prostředí $SYSTEMD_DEFAULT_HOSTNAME. V systému systemd-hostnamed byla také implementována podpora pro specifikaci 'localhost' v názvu hostitele a přidána možnost exportu názvu hostitele, jakož i vlastností 'HardwareVendor' a 'HardwareModel' přes DBus.
- Blok s nastavovanými proměnnými prostředí nyní může být nakonfigurován přes novou možnost ManagerEnvironment v system.conf nebo user.conf, a to nejen prostřednictvím příkazového řádku jádra a nastavení unit-souborů.
- Na úrovni kompilace byla poskytnuta možnost použití systémového volání fexecve() pro spouštění procesů namísto execve() za účelem snížení latence mezi ověřováním bezpečnostního kontextu a jeho aplikací.
- Pro unit-soubory byly přidány nové podmínkové operace ConditionSecurity=tpm2 a ConditionCPUFeature pro kontrolu přítomnosti zařízení TPM2 a jednotlivých funkcí CPU (například ConditionCPUFeature=rdrand lze použít pro kontrolu, zda CPU podporuje operaci RDRAND).
- Pro dostupné jádra byla implementována automatická generace tabulek systémových volání pro filtry seccomp.
- Byla přidána možnost vkládání nových montážních vazeb (bind mounts) do stávajících prostorů montážních bodů (mount namespaces) služeb, aniž by bylo nutné restartovat služby. Vkládání se provádí příkazy 'systemctl bind ...' a 'systemctl mount-image ...'.
- Do nastavení StandardOutput a StandardError byla přidána podpora pro specifikaci cest ve formátu 'truncate:' pro vymazání před použitím.
- Do sd-bus byla přidána možnost navázat spojení se sezením určeného uživatele uvnitř lokálního kontejneru. Například 'systemctl --user -M lennart@ start quux'.
- V souborech systemd.link v sekci [Link] byly implementovány parametry:
- Promiscuous — umožňuje přepnout zařízení do 'promiscuous' režimu pro zpracování všech síťových paketů, včetně těch, které nejsou adresovány aktuálnímu systému;
- TransmitQueues a ReceiveQueues pro nastavení počtu front TX a RX;
- TransmitQueueLength pro nastavení velikosti TX fronty; GenericSegmentOffloadMaxBytes a GenericSegmentOffloadMaxSegment pro nastavení limitů aplikace technologie GRO (Generic Receive Offload).
- Do souborů systemd.network byly přidány nové nastavení:
- [Network] RouteTable pro výběr směrovací tabulky;
- [RoutingPolicyRule] Type pro typ směrování („blackhole“, „unreachable“, „prohibit“);
- [IPv6AcceptRA] RouteDenyList a RouteAllowList pro seznamy povolených a zakázaných oznámení cest;
- [DHCPv6] UseAddres pro ignorování vydávané DHCP adresy;
- [DHCPv6PrefixDelegation] ManageTemporaryAddress;
- ActivationPolicy pro určení politiky ohledně aktivity rozhraní (vždy udržovat ve stavu UP nebo DOWN nebo umožnit uživateli měnit stavy příkazem „ip link set dev“).
- Do souborů systemd.netdev byly přidány možnosti [VLAN] Protocol, IngressQOSMaps, EgressQOSMaps a [MACVLAN] BroadcastMulticastQueueLength pro nastavení zpracování VLAN paketů.
- Bylo zastaveno připojení adresáře /dev/ v režimu noexec, jelikož to způsobovalo konflikt při použití vykonávacího příznaku s soubory /dev/sgx. Pro návrat k předchozímu chování je možné použít nastavení NoExecPaths=/dev.
- Oprávnění k souboru /dev/vsock byla změněna na 0o666, a soubory /dev/vhost-vsock a /dev/vhost-net byly přesunuty do skupiny kvm.
- Základna identifikátorů zařízení byla rozšířena o USB zařízení pro čtení otisků prstů, která správně podporují přechod do spánkového režimu.
- systemd-resolved byla přidána podpora pro poskytování odpovědí na DNSSEC dotazy prostřednictvím stub resolveru. Lokální klienti mohou provádět DNSSEC validaci sami, zatímco externí jsou směrovány v nezměněné podobě na rodičovský DNS server.
- Do resolved.conf byla přidána možnost CacheFromLocalhost, při které systemd-resolved bude používat caching i pro dotazy na DNS server s adresou 127.0.0.1 (ve výchozím nastavení je caching podobných dotazů vypnut pro vyloučení dvojitého cachingu).
- Do systemd-resolved byla přidána podpora RFC-5001 NSID v lokálním DNS resolveru, která umožňuje klientům rozeznat interakci s lokálním resolverem a jiným. serverem DNS.
- V nástroji resolvectl byla implementována možnost výstupu informací o zdroji dat (lokální cache, dotaz v síti, odpověď místního zpracovatele) a použití šifrování při přenosu dat. Pro správu procesu určování názvu byly navrženy možnosti —cache, —synthesize, —network, —zone, —trust-anchor a —validate.
- Do systemd-nspawn byla přidána podpora pro konfiguraci firewallu pomocí nftables vedle existující podpory iptables. V nastavení IPMasquerade v systemd-networkd byla přidána možnost využívat backend založený na nftables.
- Do systemd-localed byla přidána podpora pro volání locale-gen pro generaci chybějících lokalizací.
- Do různých nástrojů byly přidány možnosti —pager/—no-pager/—json= pro zapnutí/vypnutí režimu stránkování a výstupu ve formátu JSON. Byla přidána možnost nastavení počtu barev používaných v terminálu prostřednictvím proměnné prostředí SYSTEMD_COLORS ("16" nebo "256").
- Byla prohlášena za zastaralou sestavení s oddělenými hierarchiemi adresářů (rozdělení / a /usr) a podpora cgroup v1.
- Hlavní větev v Gitu byla přejmenována z ‘master’ na ‘main’.
Zdroj: opennet.ru
