Po dvou měsících vývoje byl uveden na trh systémový správce systemd 242. Z novinek lze zmínit podporu L2TP tunelů, možnost řízení chování systemd-logind při restartování pomocí proměnných prostředí, podporu rozšířených bootovacích oddílů XBOOTLDR pro připojení k /boot, možnost spuštění s kořenovým oddílem v overlayfs, a také velké množství nových nastavení pro různé typy jednotek.
Hlavní změny:
- V systemd-networkd byla zajištěna podpora L2TP tunelů;
- V sd-boot a bootctl byla implementována podpora oddílů XBOOTLDR (Extended Boot Loader), určených pro připojení k /boot, vedle oddílů ESP připojených k /efi nebo /boot/efi. Jádra, nastavení, obrazy initrd a EFI nyní mohou být načítána jak z oddílů ESP, tak z oddílů XBOOTLDR. Tato změna umožňuje používat bootloader sd-boot v konzervativnějších scénářích, kdy je samotný bootloader umístěn v ESP a načítaná jádra a související metadata jsou umístěny na samostatném oddílu;
- Byla přidána možnost spuštění s předáváním jádru voleb „systemd.volatile=overlay“, což umožňuje umístit kořenový oddíl do overlayfs a upravit práci na základě pouze pro čtení obrazu kořenového adresáře s ukládáním změn do samostatného adresáře v tmpfs (změny v takové konfiguraci se ztrácí po restartování). Analogicky přidána volba „—volatile=overlay“ v systemd-nspawn pro využití podobné funkčnosti v kontejnerech;
- V systemd-nspawn byla přidána volba „—oci-bundle“, která umožňuje používat soupravy runtime k zajištění izolovaného spuštění kontejnerů, odpovídajících požadavkům specifikace Open Container Initiative (OCI). Pro použití v příkazovém řádku a nspawn jednotkách byla navržena podpora různých voleb popsaných ve specifikaci OCI, například pro vyloučení částí souborového systému mohou být použity nastavení „—inaccessible“ a „Inaccessible“, a pro nastavení standardních výstupních proudů byly přidány možnosti „—console“ a „—pipe“;
- Byla přidána možnost řízení chování systemd-logind pomocí proměnných prostředí: $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
$SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU a
$SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. Pomocí těchto proměnných lze připojit vlastní zpracovatele procesu restartu (/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu a
/run/systemd/reboot-to-boot-loader-entry) или вообще отключить их (при выставлении значения в false); - Do příkazu „systemctl reboot“ byly přidány volby „—boot-load-menu=“ a
„—boot-loader-entry=“, které po restartu umožňují vybrat konkrétní položku v zaváděcím menu nebo režimu spuštění; - Přidán nový příkaz sandboxové izolace „RestrictSUIDSGID=“, který používá seccomp k zákazu vytváření souborů se značkami SUID/SGID;
- Zajištěno použití výchozích omezení „NoNewPrivileges“ a „RestrictSUIDSGID“ v službách s povoleným režimem dynamického generování identifikátorů uživatele („DynamicUser“);
- Výchozí nastavení v .link souborech MACAddressPolicy=persistent bylo změněno tak, aby pokrylo větší množství zařízení. Rozhraní síťových mostů, tunelů (tun, tap) a agregovaných odkazů (bond) se neidentifikují jinak než podle názvu síťového rozhraní, a proto je tento název nyní používán jako základ pro vazbu MAC a IPv4 adres. Kromě toho bylo přidáno nastavení „MACAddressPolicy=random“, které lze použít pro náhodné vazby MAC a IPv4 adres na zařízení;
- Unit soubory „.device“ generované přes systemd-fstab-generator nyní neobsahují odpovídající jednotky „.mount“ jako závislosti v sekci „Wants=“. Jednoduché připojení zařízení nyní nevede k automatickému spuštění jednotky pro montování, ale takové jednotky mohou být stále spuštěny z jiných důvodů, například jako součást local-fs.target nebo jako závislost jiných jednotek závislých na local-fs.target;
- Do příkazů „networkctl list/status/lldp“ byla přidána podpora masek („*“ atd.) pro filtrování určitých skupin síťových rozhraní podle částí jejich názvu;
- Proměnná prostředí $PIDFILE je nyní nastavena s použitím absolutní cesty, nakonfigurované ve službách pomocí parametru „PIDFile=;“
- Mezi záložními DNS servery, které se používají, pokud není výslovně definován primární DNS, byly přidány veřejné servery Cloudflare (1.1.1.1). Pro přepsání seznamu záložních DNS serverů lze použít možnost „-Ddns-servers=“;
- Při detekci přítomnosti řadiče USB zařízení (USB Device Controller) je zajištěno automatické spuštění nového zpracovatele usb-gadget.target (když systém funguje na periferii USB);
- Pro unit soubory byla implementována konfigurace „CPUQuotaPeriodSec=“, která určuje časové období, vůči kterému se měří kvóta na procesorový čas určená pomocí nastavení „CPUQuota=“;
- Pro unit souborů byla implementována možnost „ProtectHostname=“, která zakazuje službám měnit informace o názvu hostitele, i když mají příslušná oprávnění;
- Pro unit soubory byla implementována možnost „NetworkNamespacePath=“, která umožňuje přiřadit prostor názvů k službám nebo socket unitům uvedením cesty k souboru prostoru názvů v pseudo-FS /proc;
- Byla přidána možnost deaktivace substituce proměnných prostředí pro procesy spouštěné pomocí možnosti „ExecStart=“ přidáním znaku „:“ před příkaz spuštění;
- Pro časovače (unit .timer) byly navrženy nové příznaky „OnClockChange=“ a
„OnTimezoneChange=“, pomocí nichž lze řídit volání unit při změně systémového času nebo časového pásma; - Byly přidány nové možnosti „ConditionMemory=“ a „ConditionCPUs=“, které určují podmínky pro vyvolání unit v závislosti na velikosti paměti a počtu CPU jader (například výpočetně náročnou službu lze spouštět pouze za předpokladu, že je k dispozici požadované množství RAM);
- Byl přidán nový unit time-set.target, který přijímá místně nastavený systémový čas bez použití synchronizace s externími servery přesně určeného času pomocí unit time-sync.target. Nový unit může být použit službami, které potřebují pouze přesnost nesynchronizovaných místních hodin;
- Do příkazu „systemctl start“ a podobné byly přidány možnosti „—show-transaction“, při jejímž použití se zobrazí shrnutí všech úloh přidaných do fronty v důsledku požadované operace;
- V systemd-networkd byla implementována nová stavová definice 'enslaved', která se používá místo 'degraded' nebo 'carrier' pro síťové rozhraní, které jsou součástí agregovaných spojů nebo síťových mostů. Pro primární rozhraní bylo v případě problémů s jedním z komponentních spojů přidáno stav 'degraded-carrier';
- Do unit .network byla přidána možnost „IgnoreCarrierLoss=“, která uchovává síťová nastavení v případě přerušení spojení;
- Pomocí možnosti „RequiredForOnline=“ v unit .network nyní lze nastavit minimálně přípustný stav spojení potřebný pro převod síťového rozhraní do stavu „online“ a pro spuštění zpracovatele systemd-networkd-wait-online;
- Do systemd-networkd-wait-online byla přidána možnost „—any“ pro čekání na připravenost jakéhokoli ze zadaných síťových rozhraní namísto všech, a také možnost „—operational-state=“, která určuje stav spojení, který indikuje připravenost;
- V .network byly přidány možnosti „UseAutonomousPrefix=“ a „UseOnLinkPrefix=“, které lze použít k ignorování prefixů při získávání
oznámení od směrovače IPv6 (RA, Router Advertisement); - V .network byly přidány možnosti „MulticastFlood=“, „NeighborSuppression=“ a „Learning=“ pro změnu parametrů fungování síťového mostu, jakož i nastavení „TripleSampling=“ pro změnu režimu TRIPLE-SAMPLING virtuálních rozhraní CAN;
- V .netdev byly přidány možnosti „PrivateKeyFile=“ a „PresharedKeyFile=“, pomocí kterých můžete specifikovat soukromé a sdílené (PSK) klíče pro rozhraní WireGuard. VPN;
- Do /etc/crypttab byly přidány volby same-cpu-crypt a submit-from-crypt-cpus, které řídí chování plánovače při migraci mezi jádry CPU prací spojených s šifrováním;
- Ve systemd-tmpfiles byla zajištěna správa souboru zámku před provedením operací v adresářích s dočasnými soubory, což umožňuje dočasně pozastavit čištění zastaralých souborů (například při rozbalování tar archivu do /tmp mohou být odhaleny velmi staré soubory, které nelze odstranit před dokončením operací s nimi);
- V příkazu „systemd-analyze cat-config“ byla zajištěna možnost analýzy konfigurace rozptýlené do několika souborů, jako jsou uživatelská a systémová přednastavení, obsah tmpfiles.d a sysusers.d, pravidla udev atd.
- Do „journalctl“ byla přidána volba „—cursor-file=“ pro určení souboru pro načtení a uložení ukazatele pozice;
- V systemd-detect-virt bylo přidáno určení hypervisoru ACRN a subsystému WSL (Windows Subsystem for Linux) pro následné větvení pomocí podmínkového operátoru „ConditionVirtualization“;
- Během instalace systemd (při provádění „ninja install“) bylo zastaveno vytváření symbolických odkazů na soubory systemd-networkd.service, systemd-networkd.socket,
systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
systemd-networkd-wait-online.service a systemd-timesyncd.service. Pro vytvoření těchto souborů je nyní nutné provést příkaz „systemctl preset-all“.
Zdroj: opennet.ru
