După cinci luni de dezvoltare, a fost lansată versiunea managerului de sistem systemd 251.
Modificări principale:
- Cerințele sistemice au fost crescute. Versiunea minimă acceptată a nucleului Linux a fost crescută de la 3.13 la 4.15. Este necesar un ceas CLOCK_BOOTTIME pentru funcționare. Pentru compilare este necesar un compilator care să sprijine standardul C11 și extensiile GNU (standardul C89 este în continuare folosit pentru fișierele de antet).
- A fost adătool un utilitar experimental systemd-sysupdate pentru detectarea automată, descărcarea și instalarea actualizărilor folosind un mecanism atomic de înlocuire a partițiilor, fișierelor sau directoarelor (se folosesc două partiții/fișiere/directoare independente, unul conținând resursa activă, iar celălalt instalând actualizarea, după care partițiile/fișierele/directoarele se schimbă între ele).
- A fost introdusă o nouă bibliotecă partajată internă libsystemd-core-.so, care se instalează în directorul /usr/lib/systemd/system și corespunde bibliotecii existente libsystemd-shared-.so. Utilizarea bibliotecii partajate libsystemd-core-.so permite reducerea dimensiunii totale de instalare prin reutilizarea codului binar. Numărul versiunii poate fi specificat prin parametrul ‘shared-lib-tag’ în sistemul de construire meson, permițând distribuțiilor să ofere simultan mai multe versiuni ale acestor biblioteci.
- S-a implementat transmiterea variabilelor de mediu $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS, $MONITOR_INVOCATION_ID și $MONITOR_UNIT către handler-ele OnFailure/OnSuccess cu informații despre unitatea monitorizată.
- Pentru unități a fost implementată configurarea ExtensionDirectories, care poate fi folosită pentru organizarea încărcării componentelor de extensie a sistemului (System Extension) din directoare obișnuite, nu din imagini de disc. Conținutul directorului de extensie a sistemului este suprapus prin OverlayFS și se aplică pentru extinderea ierarhiei directoarelor /usr/ și /opt/, adăugând fișiere suplimentare în timpul funcționării, chiar dacă directoarele specificate sunt montate în modul doar pentru citire. Comanda ‘portablectl attach —extension=’ a fost de asemenea extinsă pentru a sprijini specificarea directorului.
- Pentru unitățile închise forțat de sistemul systemd-oomd din cauza lipsei de memorie în sistem, a fost asigurată transmiterea semnului ‘oom-kill’ și reflectarea în atributul ‘user.oomd_ooms’ a numărului de închideri forțate.
- Pentru unități au fost adăugate noi specificatoare de căi %y/%Y, reflectând calea normalizată către unitate (cu extinderea link-urilor simbolice). De asemenea, au fost adăugate specificatoarele %q pentru substituirea valorii PRETTY_HOSTNAME și %d pentru substituirea CREDENTIALS_DIRECTORY.
- În serviciile neprivilegiate, lansate de un utilizator obișnuit folosind flagul ‘—user’, a fost permisă modificarea setărilor RootDirectory, MountAPIVFS, ExtensionDirectories, *Capabilities*, ProtectHome, *Directory, TemporaryFileSystem, PrivateTmp, PrivateDevices, PrivateNetwork, NetworkNamespacePath, PrivateIPC, IPCNamespacePath, PrivateUsers, ProtectClock, ProtectKernelTunables, ProtectKernelModules, ProtectKernelLogs și MountFlags. Această opțiune este disponibilă doar dacă spațiile de nume pentru identificatorii utilizatorului (user namespaces) sunt activate în sistem.
- În configurația LoadCredential a fost permisă specificarea numelui directorului ca argument, în acest caz, se va încerca încărcarea credențialelor din toate fișierele din directorul specificat.
- În systemctl, în parametrul ‘—timestamp’ a apărut posibilitatea specificării flagului ‘unix’ pentru a afișa timpul în format epocal (numărul de secunde de la 1 ianuarie 1970).
- În ‘systemctl status’ a fost implementat flagul ‘old-kernel’, afișat dacă kernelul încărcat în sesiune are un număr de versiune mai vechi decât kernelul de bază disponibil în sistem. De asemenea, a fost adăugat flagul ‘unmerged-usr’ pentru a determina că conținutul directorilor /bin/ și /sbin/ nu a fost generat prin link-uri simbolice către /usr.
- Pentru generatorii rulați de procesul PID 1 au fost introduse noi variabile de mediu $SYSTEMD_SCOPE (încărcare din serviciul de sistem sau utilizator), $SYSTEMD_IN_INITRD (încărcare din initrd sau mediu de gazdă), $SYSTEMD_FIRST_BOOT (indicator pentru prima încărcare), $SYSTEMD_VIRTUALIZATION (prezența virtualizării sau rularea într-un container) și $SYSTEMD_ARCHITECTURE (arhitectura pentru care a fost compilat kernelul).
- În handler-ul PID 1 a fost implementată capacitatea de a încărca parametrii de autentificare a sistemului din interfața fw_cfg a QEMU sau prin specificarea în linia de comandă a parametrului systemd.set_credential. În directiva LoadCredential este asigurată căutarea automată a autentificărilor în folderele /etc/credstore/, /run/credstore/ și /usr/lib/credstore/, dacă ca argument este specificat un drum relativ. Un comportament similar a fost aplicat pentru directiva LoadCredentialEncrypted, în care sunt verificate suplimentar folderele /etc/credstore.encrypted/, /run/credstore.encrypted/ și /usr/lib/credstore.encrypted/.
- În systemd-journald a fost stabilizată capacitatea de export în format JSON. În comenzile „journalctl —list-boots” și „bootctl list” a fost adăugată suportul pentru a produce ieșirea în format JSON (flag-ul „—json”).
- În udev au fost adăugate noi fișiere cu baze de date hwdb, conținând informații despre dispozitivele portabile (PDA-uri, calculatoare de buzunar etc.) și dispozitivele utilizate în crearea audio și video (console DJ, keystrokes).
- În udevadm au fost adăugate noi opțiuni „—prioritized-subsystem” pentru a specifica prioritatea sistemelor (utilizată în systemd-udev-trigger.service pentru a procesa în primul rând dispozitivele de blocare și TPM), „—type=all”, „—initialized-match” și „—initialized-nomatch” pentru a selecta dispozitive inițializate sau neinițializate, „udevadm info —tree” pentru a afișa arborele obiectelor în ierarhia /sys/. În udevadm au fost adăugate, de asemenea, comenzi noi „wait” și „lock” pentru a aștepta apariția unei înregistrări în BD despre dispozitiv și pentru a bloca un dispozitiv de blocare în timpul formatarei sau scrierii unei tabele de partiții.
- A fost adăugat un nou set de linkuri simbolice la dispozitivele /dev/disk/by-diskseq/ pentru identificarea dispozitivelor de blocare în funcție de numărul de ordine („diskseq”).
- În fișierele .link din secțiunea [Match] a fost adăugat suport pentru parametrul „Firmware” pentru a asocia un dispozitiv pe baza unei descrieri a firmware-ului.
- În systemd-networkd pentru rutele unicast, configurate prin secțiunea [Route], valoarea scope a fost schimbată implicit pe „link” pentru a corespunde comportamentului comenzii „ip route”. În secțiunea [Bridge] a fost adăugat parametrul Isolated=true|false pentru a configura atributul corespunzător al punților de rețea în kernel. În secțiunea [Tunnel] a fost adăugat parametrul External pentru a seta un tunel de tip extern (modul de colectare a metadatelor). În secțiunea [DHCPServer] au fost adăugate parametrii BootServerName, BootServerAddress și BootFilename pentru a configura adresa server-ului, numele server-ului și numele fișierului de boot trimise. serverul DHCP la încărcare în modul PXE. În secțiunea [Network] a fost eliminat parametrul L2TP, în locul căruia în fișierele .netdev poate fi utilizată noua setare Local legată de interfața L2TP.
- A fost adăugat un nou unit «systemd-networkd-wait-online@<interface>.service», care poate fi utilizat pentru a aștepta activarea unei anumite interfețe de rețea.
- A fost implementată posibilitatea de a folosi fișiere .netdev pentru a crea dispozitive virtuale WLAN pentru care a fost propusă secțiunea [WLAN].
- În fișierele .link/.network în secțiunea [Match] a fost implementat parametrul Kind pentru potrivirea pe baza tipului de dispozitiv («bond», «bridge», «gre», «tun», «veth»).
- A fost asigurat launch-ul systemd-resolved într-o etapă anterioară a încărcării, inclusiv lansarea din initrd în cazul în care systemd-resolved este prezent în imaginea initrd.
- În systemd-cryptenroll a fost adăugată opțiunea —fido2-credential-algorithm pentru a alege algoritmul de criptare a datelor de autentificare și opțiunea —tpm2-with-pin pentru gestionarea introducerii PIN-ului la deblocarea partiției folosind TPM. În /etc/crypttab a fost adăugată o opțiune similară tpm2-pin. La deblocarea dispozitivelor prin TPM, este asigurată criptarea parametrilor pentru a proteja împotriva interceptării cheilor de criptare.
- În systemd-timesyncd a fost adăugat un API D-Bus pentru obținerea dinamică a informațiilor de la serverul NTP prin IPC.
- Pentru a determina necesitatea ieșirii colorate în toate comenzile, a fost implementată o verificare a variabilei de mediu COLORTERM, pe lângă cele verificate anterior NO_COLOR, SYSTEMD_COLORS și TERM.
- În sistemul de construire Meson a fost implementată opțiunea install_tag pentru compilarea și instalarea selectivă a componentelor necesare: pam, nss, devel (pkg-config), systemd-boot, libsystemd, libudev. A fost adăugată opțiunea de construcție default-compression pentru a alege algoritmul de comprimare pentru systemd-journald și systemd-coredump.
- În sd-boot în loader.conf a fost adăugată o setare experimentală «reboot-for-bitlocker» pentru a lansa Microsoft Windows cu BitLocker TPM.
Sursa: opennet.ro
