Na twee maanden ontwikkeling is de release van de systeembeheerder systemd 242 gepresenteerd. Tot de nieuwigheden behoren ondersteuning voor L2TP-tunnels, de mogelijkheid om het gedrag van systemd-logind aan te passen tijdens herstarts via omgevingsvariabelen, ondersteuning voor uitgebreide opstartpartities XBOOTLDR voor het monteren van /boot, de mogelijkheid om op te starten met de rootpartitie in overlayfs, evenals een groot aantal nieuwe instellingen voor verschillende types eenheden.
Belangrijkste wijzigingen:
- In systemd-networkd is ondersteuning voor L2TP-tunnels toegevoegd;
- In sd-boot en bootctl is ondersteuning geïmplementeerd voor XBOOTLDR-partities (Extended Boot Loader), bedoeld voor het monteren in /boot, naast de ESP-partities die worden gemonteerd in /efi of /boot/efi. Kernels, instellingen, initrd-images en EFI kunnen nu zowel uit ESP-partities als uit XBOOTLDR-partities worden geladen. Deze wijziging maakt het mogelijk om de bootloader sd-boot in meer conservatieve scenario's te gebruiken, waarbij de bootloader zelf in ESP is geplaatst, terwijl de te laden kernels en de bijbehorende metadata in een aparte partitie zijn ondergebracht;
- Er is een mogelijkheid toegevoegd om op te starten met de optie "systemd.volatile=overlay" voor het plaatsen van de rootpartitie in overlayfs en het functioneren boven een alleen-lezen afbeelding van de rootmap met wijzigingen die worden opgeslagen in een aparte map in tmpfs (wijzigingen in deze configuratie gaan verloren na een herstart). Evenzo is in systemd-nspawn de optie "—volatile=overlay" toegevoegd voor vergelijkbare functionaliteit in containers;
- In systemd-nspawn is de optie "—oci-bundle" toegevoegd, waarmee runtime-pakketten kunnen worden gebruikt voor het bieden van een geïsoleerde uitvoering van containers die voldoen aan de vereisten van de Open Container Initiative (OCI) specificatie. Voor gebruik in de opdrachtregel en nspawn-eenheden is ondersteuning aangeboden voor verschillende opties, zoals beschreven in de OCI-specificatie; bijvoorbeeld, voor het uitsluiten van bepaalde delen van het bestandssysteem kunnen de instellingen "—inaccessible" en "Inaccessible" worden gebruikt, en voor het configureren van standaard uitvoerstromen zijn de opties "—console" en "—pipe" toegevoegd;
- Er is een mogelijkheid toegevoegd om het gedrag van systemd-logind te beheren via omgevingsvariabelen: $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
$SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU en
$SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. Met deze variabelen kunnen aangepaste handlers voor het herstartproces worden aangesloten (/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu en
/run/systemd/reboot-to-boot-loader-entry) или вообще отключить их (при выставлении значения в false); - In het commando "systemctl reboot" zijn de opties "—boot-load-menu=" toegevoegd.
«—boot-loader-entry=», waarmee na herstart een specifiek item in het opstartmenu of een opstartmodus kan worden geselecteerd; - Een nieuwe sandbox-isolatieopdracht «RestrictSUIDSGID=» is toegevoegd, die seccomp gebruikt om het maken van bestanden met SUID/SGID-vlaggen te verbieden;
- De standaardinstelling voor de beperkingen «NoNewPrivileges» en «RestrictSUIDSGID» is toegepast in de diensten met ingeschakelde modus voor dynamische generatie van gebruikersidentificatie («DynamicUser»);
- De standaardinstelling voor .link-bestanden, MACAddressPolicy=persistent, is gewijzigd om een breder scala aan apparaten te dekken. Netwerkinterfacebridges, tunnels (tun, tap) en geaggregeerde links (bond) identificeren zichzelf alleen op basis van de naam van de netwerkinterface, en daarom wordt deze naam nu gebruikt als basis voor de binding van MAC- en IPv4-adressen. Bovendien is er een instelling «MACAddressPolicy=random» toegevoegd, die kan worden gebruikt om MAC- en IPv4-adressen willekeurig aan apparaten te binden;
- De door systemd-fstab-generator gegenereerde «.device» eenheden bevatten nu geen overeenkomstige «.mount» eenheden meer als afhankelijkheden in de sectie «Wants=». Eenvoudige apparaatverbinding resulteert nu niet in het automatisch starten van de eenheid voor montages, maar dergelijke eenheden kunnen nog steeds om andere redenen worden gestart, bijvoorbeeld als onderdeel van local-fs.target of als afhankelijkheid van andere eenheden die afhankelijk zijn van local-fs.target;
- Ondersteuning voor maskers («*» en dergelijke) is toegevoegd aan de opdrachten «networkctl list/status/lldp» om bepaalde groepen netwerkinterfaces op basis van hun naam te filteren;
- De omgevingsvariabele $PIDFILE wordt nu ingesteld met een absoluut pad dat in diensten via de parameter «PIDFile=» is ingesteld;
- Aan de lijst van back-up DNS-servers die worden gebruikt als de primaire DNS niet expliciet is gedefinieerd, zijn publieke servers Cloudflare (1.1.1.1) toegevoegd. Om de lijst van back-up DNS-servers te overschrijden kan de optie «-Ddns-servers=» worden gebruikt;
- Bij het detecteren van een USB-apparaatcontroller (USB Device Controller) wordt nu automatisch de nieuwe handler usb-gadget.target gestart (wanneer het systeem draait op een USB-apparaat);
- Voor eenheid-bestanden is de instelling «CPUQuotaPeriodSec=» geïmplementeerd, die de tijdsperiode bepaalt waartegen de CPU-tijdquota die zijn ingesteld via de instelling «CPUQuota=» wordt gemeten;
- Voor unit-bestanden is de instelling «ProtectHostname=» geïmplementeerd, die het voor services verbiedt om informatie over de hostnaam te wijzigen, zelfs bij de juiste bevoegdheden;
- Voor unit-bestanden is de instelling «NetworkNamespacePath=» geïmplementeerd, die het mogelijk maakt om een naamruimte aan services of socket-units te koppelen door een pad naar het naamruimtebestand op de pseudo-FS /proc op te geven;
- De mogelijkheid is toegevoegd om substitutie van omgevingsvariabelen voor processen, die worden uitgevoerd met de instelling «ExecStart=», uit te schakelen door een dubbele punt «:» voor de opstartopdracht toe te voegen;
- Voor timers (units .timer) zijn nieuwe vlaggen «OnClockChange=» en
«OnTimezoneChange=» geïntroduceerd, waarmee het aanroepen van de unit kan worden beheerd bij wijziging van de systeemtijd of tijdzone; - Nieuwe instellingen «ConditionMemory=» en «ConditionCPUs=» zijn toegevoegd, die de voorwaarden voor het aanroepen van de unit bepalen op basis van de hoeveelheid geheugen en het aantal CPU-kernen (bijvoorbeeld kan een resource-intensieve service alleen worden uitgevoerd als er voldoende RAM beschikbaar is);
- Een nieuwe unit time-set.target is toegevoegd, die de lokaal ingestelde systeemtijd accepteert, zonder gebruik te maken van synchronisatie met externe tijdserver via de unit time-sync.target. Deze nieuwe unit kan worden gebruikt door services die genoeg hebben aan de niet-gesynchroniseerde lokale klokken;
- Aan «systemctl start» en soortgelijke commando's is de optie «—show-transaction» toegevoegd, waarmee een samenvatting van alle taken die in de wachtrij zijn geplaatst vanwege de gevraagde operatie wordt weergegeven;
- In systemd-networkd is een nieuwe toestand ‘enslaved’ geïmplementeerd, die wordt gebruikt in plaats van ‘degraded’ of ‘carrier’ voor netwerkaansluitingen die deel uitmaken van geaggregeerde links of netwerkmomenten. Voor primaire interfaces is, in geval van problemen met een van de samenstellende links, de toestand ‘degraded-carrier’ toegevoegd;
- Aan units .network is de optie «IgnoreCarrierLoss=» toegevoegd om netwerkconfiguraties te behouden in geval van verbindingsverlies;
- Via de instelling «RequiredForOnline=» in units .network kan nu de minimaal vereiste toestand van de link worden opgegeven die nodig is om de netwerkaansluiting naar «online» te schakelen en om de systemd-networkd-wait-online handler te activeren;
- In systemd-networkd-wait-online is de optie «—any» toegevoegd om te wachten op de gereedheid van een van de opgegeven netwerkinterfaces in plaats van alle, evenals de optie «—operational-state=» om de linktoestand te definiëren die duidt op gereedheid;
- In .network units, the settings «UseAutonomousPrefix=» and «UseOnLinkPrefix=» have been added, which can be used to ignore prefixes when receiving
announcements from the IPv6 router (RA, Router Advertisement); - In .network units, the settings «MulticastFlood=», «NeighborSuppression=», and «Learning=» have been added to change the parameters of the network bridge, as well as the setting «TripleSampling=» to change the TRIPLE-SAMPLING mode of CAN virtual interfaces;
- In .netdev units, the settings «PrivateKeyFile=» and «PresharedKeyFile=» have been added, allowing you to specify private and shared (PSK) keys for WireGuard interfaces. VPN;
- In /etc/crypttab, the options same-cpu-crypt and submit-from-crypt-cpus have been added, controlling the scheduler's behavior when migrating between CPU cores for encryption-related tasks;
- In systemd-tmpfiles, handling of the lock file has been ensured before performing operations in directories with temporary files, allowing operations related to cleaning up outdated files to be disabled temporarily (for example, when unpacking a tar archive in /tmp, very old files may be revealed that cannot be deleted until the actions with them are completed);
- The command «systemd-analyze cat-config» has been enhanced to allow analysis of configuration spread across several files, such as user and system presets, the contents of tmpfiles.d and sysusers.d, udev rules, etc.
- In «journalctl», the option «—cursor-file=» has been added to specify a file for loading and saving the position pointer;
- In systemd-detect-virt, the ACRN hypervisor and WSL (Windows Subsystem for Linux) subsystem detection have been added for subsequent branching using the conditional operator «ConditionVirtualization»;
- During the installation of systemd (when executing «ninja install»), the creation of symbolic links to files systemd-networkd.service, systemd-networkd.socket,
systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
systemd-networkd-wait-online.service, and systemd-timesyncd.service in the /etc directory has been discontinued. To create these files now, it is necessary to execute the command «systemctl preset-all».
Bron: opennet.ru
