Efter ni måneders udvikling er systemstyringschefen systemd 258 blevet præsenteret. Nøgleændringerne inkluderer ophør af support til cgroups v1 og systemkontrolkomponenter i stil med System V, nye værktøjer systemd-factory-reset og systemd-pty-forward, konceptet med hjemområder og understøttelse af opstart fra en diskbillede, der er hentet via HTTP.
Blandt ændringerne i den nye udgave:
- Der er tilføjet værktøjet systemd-factory-reset til at initere eller annullere nulstilling af indstillinger til fabriksindstillinger ved næste opstart. For øjeblikkelig nulstilling er enheden factory-reset-now.target blevet tilføjet. Der er tilføjet et kommandolinjeparameter til kernen "systemd.factory_reset" til nulstilling under opstart.
- Der er tilføjet et koncept om hjemområder (home area), der gør det muligt at angive underkataloger inden for den primære hjemmemappe ($HOME), som brugeren kan logge ind på separat for at arbejde i forskellige arbejdsområder. For eksempel kan der for én bruger oprettes separate områder til test af indstillinger og til udvikling (~ /Areas/foo og ~ /Areas/bar). For at oprette forbindelse til et ekstra område ved indlogning skal man angive områdets navn adskilt af symbolet "%" ("username%foo") eller bruge værktøjet run0 med indstillingen "—area". Understøttelse af hjemområder er kun implementeret i systemd-homed og er ikke tilgængelig for komplette grafiske sessioner.
- I kommandolinjeparametrene til kernen "systemd.pull" og "rd.systemd.pull", der anvendes til automatisk opstart af virtual machines, containere eller udvidelsesbilleder (sysext, confext), er der tilføjet flaget "blockdev". Ved at angive dette flag tilsluttes det indlæste billede til et loopback-enhed, hvilket muliggør direkte opstart fra et diskbillede hentet via HTTP. For eksempel: rd.systemd.pull=raw,machine,verify=no,blockdev:image:https://192.168.100.1:8081/image.raw \ root=/dev/disk/by-loop-ref/image.raw-part2
- Der er tilføjet værktøjet systemd-pty-forward, som gør det muligt at oprette en pseudoterminal ("PTY") og starte en proces på den, idet enhver output kan omdirigeres til den oprindelige terminal, hvor værktøjet blev startet.
- Koden, der sikrede support for cgroups v1, er blevet fjernet.
- Systemkontrolkomponenter i stil med System V, såsom værktøjer som itctl, runlevel og telinit, enheden /dev/initctl, konceptet med kørselsniveauer (runlevel), unit-filerne runlevel[0-6].target og mulighed for at styre tilstanden via init-kommandoen er blevet fjernet. Fjernelsen af support til System V service scripts er planlagt til næste udgivelse.
- Minimum requirements for the Linux kernel version have been raised to 5.4 (version 5.7 is recommended).
- Access permissions for tty/pts devices have been changed from 0620 (-rw—w—-) to 0600 (-rw——-) to prevent other users in the same group from writing to someone else's terminal. To return to the old behavior during compilation, the option ‘-Dtty-mode=0620’ can be used.
- Support for GnuTLS and libgcrypt libraries has been discontinued in systemd-resolved and systemd-importd, leaving only OpenSSL as the crypto backend.
- Support has been added to unit files for the condition ‘ConditionKernelModuleLoaded’ to check for the loading of a specific kernel module. The condition ‘ConditionKernelVersion’ has been replaced by a more general construct ‘ConditionVersion’, through which, in addition to the kernel, the versions of systemd and glibc can also be checked.
- Support for user quotas has been enabled for the /tmp/ section, located in tmpfs, and for /dev/shm/.
- For slice units used to partition the system (app.slice, background.slice, session.slice) to isolate resources between different user services, ConcurrencySoftMax and ConcurrencyHardMax settings have been implemented to control the number of concurrently active units. The added features can be used as a mechanism for managing job execution based on resource consumption, supporting hierarchical work pools.
- Support for the prefix ‘|’ has been added to the ExecStart configuration, defining execution through a command interpreter.
- An API based on the Varlink protocol has been implemented, which can be used to determine the current state, list of units, and states of units.
- An additional directory with presets for system services running in initrd has been added, allowing for the separation of enabling system services for the host and initrd.
- The ability to bind quotas to individual services has been added, using the settings StateDirectoryQuota, StateDirectoryAccounting, CacheDirectoryQuota, CacheDirectoryAccounting, LogsDirectoryQuota, and LogsDirectoryAccounting.
- I systemd-udevd er supporten tilføjet for egenskaberne ID_NET_BRING_UP_BEFORE_JOINING_BRIDGE, ID_NET_NAME_INCLUDE_DOMAIN, ID_AV_LIGHTS. Parameteren "udev.trace" er tilføjet til kernel command line, samt muligheden "—traceu" i devadm-værktøjet for at trace logikken af udev under opstart og drift. I udevadm-værktøjet er der tilføjet en "cat" kommando til at vise indholdet af installerede regler.
- I systemd-networkd er der tilføjet indstillingerne IPv4DuplicateAddressDetectionTimeoutSec, UseSIP i sektionen "[DHCPv6]", MPLSRouting i sektionen "[Network]", Preference i sektionen "[IPv6RoutePrefix]", LinkLocalLearning, Locked, MACAuthenticationBypass og VLANTunnel i sektionen "[Bridge]". DHCPv4-klienten har fået støtte for BOOTP-protokollen.
- I systemd-logind er der tilføjet nye sesjonsklasser: "none" til at deaktivere oprettelsen af session; "user-light" og "user-early-light" til oprettelse af bruger-ssessioner uden aktivering for brugeren af service management (for ikke-interaktive sessioner).
- I systemd-resolved er der tilføjet støtte for delegationszoner ("delegate zone"), der muliggør routing af DNS-forespørgsler for bestemte domæner. servere DNS. Der er sikret parallel sending af DNS-forespørgsler A og AAAA for et domæne. I resolved.conf er indstillingen RefuseRecordTypes tilføjet for at definere blokerede record-typer, for eksempel for at blokere "A" records på værter, der kun har IPv6.
- Der er tilføjet en "—verbose" mulighed til kommandoen "systemctl start" for at vise loggen for enheder, som operationen udføres på.
- I systemd-boot er der tilføjet støtte for to nye specifikationer for bootloaders — "uki" og "uki-url". I det andet tilfælde er muligheden for at downloade UKI-billedet fra en ekstern vært via HTTP blevet implementeret. Muligheden for at indlejre UEFI firmware-billeder i UKI (Unified Kernel Image) er blevet tilføjet. I loader.conf er indstillingen "reboot-on-error" tilføjet for at bestemme handlingerne (genstart eller indlæs boot-menuen) i tilfælde af en fiasko med den valgte boot-position.
- I systemd-nspawn er der tilføjet støtte for ikke-privilegeret kørsel af containerbilleder, der er gemt i almindelige mapper.
- I systemd-importd er der tilføjet støtte for billeder komprimeret med zstd-algoritmen (ud over .xz, .gz og .bz2).
- Der er tilføjet kernelens kommandolinjeparametre «systemd.break» og «rd.systemd.break», som muliggør indsættelse af interaktive stoppunkter, der afbryder opstarten på bestemte tidspunkter. Der er tilgængelige fire stoppunkter: «pre-udev», «pre-basic», «pre-mount» og «pre-switch-root».
- I den næste udgave er det planlagt at stoppe understøttelsen af kataloget /run/lock/ og vores iptables-pakkefilter (systemd-networkd og systemd-nspawn vil kun understøtte nftables). Derudover er der planlagt en forhøjelse af kravene til minimumsversioner: Linux-kern 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0.
Kilde: opennet.ru
