Két hónapos fejlesztés után megjelent a systemd 242 rendszermenedzser kiadása. Az újdonságok között említést nyer a L2TP alagút támogatása, a systemd-logind viselkedésének vezérlése a környezeti változók használatával újraindításkor, a kibővített XBOOTLDR indítópartíciók támogatása a \/boot mappába való csatlakozáshoz, a gyökérpartíció indítása overlayfs-ben, valamint számos új beállítás különböző egységtípusokhoz.
Főbb változások:
- A systemd-networkd támogatja a L2TP alagutakat;
- A sd-boot és a bootctl támogatja az XBOOTLDR (Kibővített Indító Rendszer) partíciókat a \/boot mappába való csatlakozáshoz, az ESP partíciók mellett, amelyeket a \/efi vagy a \/boot\/efi mappába csatlakoztatnak. A kernel, konfigurációk, initrd képek és EFI most már betölthetők ESP és XBOOTLDR partíciókról is. Ez a változtatás lehetővé teszi a sd-boot indítórendszer használatát konzervatívabb forgatókönyvekben, amikor maga az indító az ESP-n található, míg a betöltött kernel és a hozzájuk tartozó metaadatok külön partícióra kerülnek;
- Lehetővé vált a gyökér elhelyezése overlayfs-ben a kernel számára adott „systemd.volatile=overlay” opcióval, ami lehetővé teszi, hogy a gyökérpartíció egy csak olvasható gyökérmappa képe alatt működjön, módosításokkal egy külön mappába a tmpfs-ben (ilyen konfiguráció esetén a módosítások újraindítás után elvesznek). Hasonlóan, a systemd-nspawn-hoz hozzáadva a „—volatile=overlay” opciót hasonló funkcionalitás használatára a konténerekben;
- A systemd-nspawn-hoz hozzáadva a „—oci-bundle” opció, amely lehetővé teszi a runtime csomagok használatát konténerek elszigetelt indításának biztosítására, a Nyílt Konténer Kezdeményezés (OCI) specifikáció követelményeinek megfelelően. A parancssori és nspawn egységekhez különböző opciók támogatását javasolták, amelyeket az OCI specifikáció ír le, például a fájlrendszer bizonyos részeinek kizárására a „—inaccessible” és az „Inaccessible” beállítások használhatók, a standard kimeneti folyamok beállításához pedig a „—console” és a „—pipe” opciók kerültek hozzáadásra;
- Lehetővé vált a systemd-logind viselkedésének kezelése környezeti változók révén: $SYSTEMD_REBOOT_ TO_FIRMWARE_SETUP,
$SYSTEMD_REBOOT_ TO_BOOT_LOADER_MENU és
$SYSTEMD_REBOOT_ TO_BOOT_LOADER_ENTRY. Ezen változók segítségével saját újraindító folyamatkezelőket csatlakoztathatunk (\/run\/systemd\/reboot-to-firmware-setup, \/run\/systemd\/reboot-to-boot-loader-menu és
/run/systemd/reboot-to-boot-loader-entry) или вообще отключить их (при выставлении значения в false); - A „systemctl reboot” parancshoz hozzáadva a „—boot-load-menu=” opciót
«—boot-loader-entry=», lehetővé téve a rendszer újraindítása után a betöltési menü vagy betöltési mód kiválasztását; - Új sandbox-izolációs parancs hozzáadva: «RestrictSUIDSGID=», amely a seccomp-ot használja SUID/SGID flag-gel rendelkező fájlok létrehozásának tilalmára;
- Alapértelmezés szerint érvényesítve van a «NoNewPrivileges» és «RestrictSUIDSGID» korlátozás a dinamikus felhasználói azonosító generálásra engedélyezett szolgáltatásokban («DynamicUser»);
- A .link fájlokban alapértelmezettként alkalmazott MACAddressPolicy=persistent beállítást módosították, hogy több eszközt fedjen le. A hálózati hidak, alagutak (tun, tap) és aggregált linkek (bond) nem azonosítják magukat a hálózati interfész neve kivételével, így ez a név most MAC és IPv4 címek kötési alapjaként kerül felhasználásra. Ezen kívül új beállítás került bevezetésre: «MACAddressPolicy=random», amely lehetővé teszi a MAC és IPv4 címek véletlenszerű hozzárendelését az eszközökhöz;
- A systemd-fstab-generator által generált «.device» egységfájlok most már nem tartalmazzák a megfelelő «.mount» egységeket mint függőségeket a «Wants=» szekcióban. Egy eszköz egyszerű csatlakoztatása most nem indítja automatikusan el a csatolási egység egységét, de ilyen egységek továbbra is elindíthatók más okok miatt, például a local-fs.target részeként vagy más egységek függőségeiként, amelyek a local-fs.target-re támaszkodnak;
- A «networkctl list/status/lldp» parancsokhoz hozzáadva lett a maszkok támogatása («*» stb.) bizonyos hálózati interfész csoportok neve alapján való kiszűrésére;
- A $PIDFILE környezeti változó mostantól az abszolút elérési út beállításával kerül meghatározásra, amelyet a szolgáltatások a «PIDFile=» paraméterrel konfigurálnak;
- A tartalék DNS-szerverek listájába, amelyeket akkor használnak, ha az alapértelmezett DNS nincs kifejezetten megadva, nyilvános szerverek Cloudflare (1.1.1.1) került hozzáadásra. A tartalék DNS-szerverek listájának felülbírálásához a «-Ddns-servers=» opció használható;
- USB-eszköz-vezérlő (USB Device Controller) érzékelésekor automatikusan elindul az új usb-gadget.target kezelő (amikor a rendszer USB perifériás eszközön működik);
- Az egységfájlokhoz bevezetésre került a «CPUQuotaPeriodSec=» beállítás, amely meghatározza azt az időtartamot, amelyhez képest a «CPUQuota=» beállítással megadott CPU-idő kvóta mérhető;
- A unit fájlokhoz megvalósították a „ProtectHostname=” beállítást, amely megakadályozza a szolgáltatások számára a gazdagépnevének információinak módosítását, még akkor is, ha ehhez megfelelő hatáskörrel bírnak;
- A unit fájlokhoz megvalósították a „NetworkNamespacePath=” beállítást, amely lehetővé teszi a névtér hozzárendelését szolgáltatásokhoz vagy socket unitokhoz a névtér fájljának elérési útjának megadásával a /proc álkörnyezetében;
- Hozzáadták a környezeti változók behelyettesítésének letiltásának lehetőségét a „ExecStart=” beállítás révén indított folyamatok számára, ha a parancs elindítása előtt kettőspontot („:”) helyeznek el;
- A time-értesítőkhez (unit fájlok .timer) új „OnClockChange=” és
„OnTimezoneChange=” flag-ek kerültek bevezetésre, amelyek segítségével irányítani lehet a unit indítását a rendszeridő vagy az időzóna megváltozása esetén; - Új „ConditionMemory=” és „ConditionCPUs=” beállítások kerültek bevezetésre, amelyek a unit aktiválásának feltételeit határozzák meg a memória mérete és a CPU magok száma alapján (például egy erőforrás-igényes szolgáltatás csak akkor indítható, ha elegendő RAM áll rendelkezésre);
- Bevezetésre került egy új time-set.target unit, amely a lokálisan beállított rendszeridőt fogadja el, anélkül, hogy az időszinkronizáláshoz külső időszinkronizáló szervereket használnánk a time-sync.target unit révén. Az új unit használható olyan szolgáltatások számára, amelyek számára elegendő a szinkronizálatlan helyi órák pontossága;
- A „systemctl start” és hasonló parancsokhoz hozzáadták a „—show-transaction” opciót, amelynek megadásakor egy összefoglaló jelenik meg minden feladatról, amelyek a kért művelet miatt a várólistába kerültek;
- A systemd-networkd-ban új „enslaved” állapot definiálása valósult meg, amely a „degraded” vagy „carrier” helyett használatos az aggregált linkekhez vagy hálózati hidakhoz tartozó hálózati interfészek esetén. Az elsődleges interfészek esetén a komponensek egyik linkjével kapcsolatos problémák esetén hozzáadták a „degraded-carrier” állapotot;
- A .network unitokhoz hozzáadták az „IgnoreCarrierLoss=” opciót, amely lehetővé teszi a hálózati beállítások megőrzését a kapcsolat megszakítása esetén;
- A .network unitokban a „RequiredForOnline=” beállítással most már megadható a minimálisan elfogadható linkállapot, amely szükséges a hálózati interfész „online” állapotba való váltásához és a systemd-networkd-wait-online kezelő aktiválásához;
- A systemd-networkd-wait-online-ban hozzáadták a „—any” opciót, amely lehetővé teszi bármelyik megadott hálózati interfész készenlétére való várakozást ahelyett, hogy mindegyikre várna, valamint a „—operational-state=” opciót a link állapotának meghatározására, ami a kész állapotot jelzi;
- A .network modulokban hozzáadták a "UseAutonomousPrefix=" és "UseOnLinkPrefix=" beállításokat, amelyeket a prefixek figyelmen kívül hagyására használhatunk az IPv6-routertől kapott bejelentkezéskor.
anonszól a router hirdetése (RA, Router Advertisement); - A .network modulokban hozzáadták a "MulticastFlood=", "NeighborSuppression=" és "Learning=" beállításokat a hálózati híd működési paramétereinek megváltoztatásához, valamint a "TripleSampling=" módosítást a TRIPLE-SAMPLING virtuális CAN interfészekhez;
- A /etc/crypttab fájlban hozzáadták a "PrivateKeyFile=" és "PresharedKeyFile=" opciókat, amelyek segítségével megadhatja a WireGuard interfészek privát és megosztott (PSK) kulcsait. VPN;
- A /etc/crypttab fájlba bevezetett same-cpu-crypt és submit-from-crypt-cpus opciók irányítják a tervezőt a CPU magok közötti, titkosításhoz kapcsolódó munkák migrációja során;
- A systemd-tmpfiles biztosítja a zárolási fájl kezelését a műveletek végrehajtása előtt a ideiglenes fájlokat tartalmazó könyvtárakban, lehetővé téve bizonyos műveletek ideiglenes letiltását a régi fájlok eltávolítása során (például a tar-archívum /tmp könyvtárba történő kicsomagolásakor nagyon régi fájlok jelenhetnek meg, amelyeket nem lehet törölni a velük való műveletek befejezéséig);
- A "systemd-analyze cat-config" parancs lehetővé teszi a konfiguráció elemzését, amely több fájlra van elosztva, például a felhasználói és rendszerszintű előbeállítások, a tmpfiles.d és sysusers.d tartalma, az udev szabályai stb.
- A "journalctl" parancshoz hozzáadva a "—cursor-file=" opciót a pozíciós mutató betöltésére és mentésére szolgáló fájl megadásához;
- A systemd-detect-virt programhoz hozzáadták az ACRN hipervizor és a WSL (Windows Subsystem for Linux) azonosítását a későbbi elágazás érdekében a "ConditionVirtualization" feltételes operátor segítségével;
- A systemd telepítése során (ninja install végrehajtásakor) leállították a szimbolikus hivatkozások létrehozását a /etc könyvtárban a systemd-networkd.service, systemd-networkd.socket,
systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
systemd-networkd-wait-online.service és systemd-timesyncd.service fájlokra. Ezeknek a fájloknak a létrehozásához mostantól a "systemctl preset-all" parancsot kell végrehajtani.
Forrás: opennet.ru
