După două luni de dezvoltare, a fost lansată versiunea managerului de sistem systemd 242. Dintre noutăți se remarcă suportul pentru tuneluri L2TP, posibilitatea de a gestiona comportamentul systemd-logind la repornire prin variabile de mediu, suportul pentru partiții boot XBOOTLDR pentru montarea /boot, posibilitatea de a boota cu partiția rădăcină în overlayfs, precum și un număr mare de noi opțiuni pentru diferite tipuri de unități.
Modificări principale:
- În systemd-networkd a fost asigurat suportul pentru tuneluri L2TP;
- În sd-boot și bootctl a fost implementat suportul pentru partiții XBOOTLDR (Extended Boot Loader), destinate montării în /boot, pe lângă partițiile ESP, montate în /efi sau /boot/efi. Kernelurile, setările, imaginile initrd și EFI pot fi acum încărcate atât din partițiile ESP, cât și din cele XBOOTLDR. Această modificare permite utilizarea încărcătorului sd-boot în scenarii mai conservatoare, când însăși încărcătorul este plasat în ESP, iar kernelurile și metadatele aferente sunt plasate într-o partiție separată;
- A fost adăugată posibilitatea de a boota cu transmiterea opțiunii către kernel «systemd.volatile=overlay», ceea ce permite plasarea partiției rădăcină în overlayfs și organizarea funcționării pe un sistem de fișiere de rădăcină disponibil doar în citire, cu scrierea modificărilor într-un director separat în tmpfs (modificările în această configurație se pierd după repornire). În mod analog, în systemd-nspawn a fost adăugată opțiunea «—volatile=overlay» pentru a utiliza funcționalitatea similară în containere;
- În systemd-nspawn a fost adăugată opțiunea «—oci-bundle», care permite utilizarea seturilor de runtime pentru asigurarea unei porniri izolate a containerelor, conform cerințelor specificației Open Container Initiative (OCI). Pentru utilizarea în linia de comandă și unitățile nspawn, a fost propus suportul pentru diverse opțiuni, descrise în specificația OCI, de exemplu, pentru excluderea unor părți ale sistemului de fișiere pot fi utilizate opțiunile «—inaccessible» și «Inaccessible», iar pentru configurarea fluxurilor standard de ieșire au fost adăugate opțiunile «—console» și «—pipe»;
- A fost adăugată posibilitatea de a gestiona comportamentul systemd-logind prin variabile de mediu: $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
$SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU și
$SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. Prin aceste variabile se pot conecta propriile handler-e pentru procesul de repornire (/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu și
/run/systemd/reboot-to-boot-loader-entry) или вообще отключить их (при выставлении значения в false); - În comanda «systemctl reboot» au fost adăugate opțiunile «—boot-load-menu=» și
«—boot-loader-entry=», care permit după repornire selectarea unui anumit punct din meniul de boot sau a unui mod de boot; - A fost adăugată o nouă comandă de izolare sandbox «RestrictSUIDSGID=», care utilizează seccomp pentru a interzice crearea de fișiere cu flaguri SUID/SGID;
- S-a asigurat aplicarea implicită a restricțiilor «NoNewPrivileges» și «RestrictSUIDSGID» în serviciile cu modul de generare dinamică a identității utilizatorului («DynamicUser»);
- Setarea MACAddressPolicy=persistent aplicată în mod implicit în fișierele .link a fost modificată pentru a acoperi un număr mai mare de dispozitive. Interfețele podurilor de rețea, tunelurilor (tun, tap) și legăturilor agregate (bond) nu se identifică decât prin numele interfeței de rețea, astfel că acest nume este acum utilizat ca bază pentru asocierea MAC și a adreselor IPv4. În plus, a fost adăugată setarea «MACAddressPolicy=random», care poate fi utilizată pentru a asocia MAC și adrese IPv4 dispozitivelor într-o ordine aleatorie;
- Unit files «.device» generate prin systemd-fstab-generator nu mai includ unități corespunzătoare «.mount» ca dependențe în secțiunea «Wants=». Conectarea simplă a unui dispozitiv nu mai duce la pornirea automată a unității de montare, dar astfel de unități pot fi în continuare lansate din alte motive, de exemplu, ca parte a local-fs.target sau ca o dependență de alte unități care depind de local-fs.target;
- Comenzile «networkctl list/status/lldp» au fost adăugate pentru a suporta măști («*» etc.) pentru a filtra anumite grupuri de interfețe de rețea în funcție de numele lor;
- Variabila de mediu $PIDFILE este acum setată utilizând calea absolută configurată în servicii prin parametrul «PIDFile=;
- DNS serverele de rezervă folosite atunci când DNS-ul principal nu este definit în mod explicit au fost completate cu public servere Cloudflare (1.1.1.1). Pentru a suprascrie lista de servere DNS de rezervă, se poate utiliza opțiunea «-Ddns-servers=»;
- La detectarea unui controller de dispozitiv USB (USB Device Controller) s-a asigurat pornirea automată a noului handler usb-gadget.target (când sistemul funcționează pe un dispozitiv periferic USB);
- Pentru unit files a fost implementată setarea «CPUQuotaPeriodSec=», care definește perioada de timp în raport cu care se măsoară cota de timp alocată procesorului, stabilită prin setarea «CPUQuota=»;
- Pentru fișierele unit, a fost implementată setarea „ProtectHostname=”, care interzice serviciilor să modifice informațiile despre numele gazdei, chiar dacă au permisiunile necesare;
- Pentru fișierele unit, a fost implementată setarea „NetworkNamespacePath=”, care permite asocierea unui spațiu de nume cu serviciile sau unitățile socket prin specificarea căii către fișierul spațiului de nume în pseudo-FS /proc;
- A fost adăugată posibilitatea de a dezactiva substituția variabilelor de mediu pentru procesele lansate cu ajutorul setării „ExecStart=”, prin adăugarea simbolului „:” înaintea comenzii de pornire;
- Pentru temporizatoare (unități .timer) au fost introduse noi fl flags „OnClockChange=” și
„OnTimezoneChange=”, prin intermediul cărora se poate gestiona activarea unității la schimbarea timpului sistemului sau a fusului orar; - Au fost adăugate noi setări „ConditionMemory=” și „ConditionCPUs=”, care definesc condițiile de activare a unității în funcție de dimensiunea memoriei și numărul de nuclee CPU (de exemplu, un serviciu consumator de resurse poate fi lansat doar dacă există suficientă memorie RAM);
- A fost adăugată o nouă unitate time-set.target, care primește timpul sistemului local stabilit, fără a folosi sincronizarea cu serverele externe de timp prin intermediul unității time-sync.target. Noua unitate poate fi utilizată de serviciile care au nevoie doar de precizia ceasurilor locale nesincronizate;
- În „systemctl start” și comenzi similare a fost adăugată opțiunea „—show-transaction”, prin specificarea căreia se oferă un rezumat al tuturor lucrărilor adăugate în coadă ca urmare a operațiunii solicitate;
- În systemd-networkd a fost implementată determinarea unui nou stadiu ‘enslaved’, folosit în loc de ‘degraded’ sau ‘carrier’ pentru interfețele de rețea care fac parte din linkuri agregate sau punți de rețea. Pentru interfețele primare, în cazul problemelor cu unul dintre linkurile componente, a fost adăugat stadiul ‘degraded-carrier’;
- În unitățile .network a fost adăugată opțiunea „IgnoreCarrierLoss=” pentru păstrarea setărilor de rețea în caz de pierdere a conexiunii;
- Prin setarea „RequiredForOnline=” în unitățile .network acum se poate defini stadiul minim acceptabil al linkului, necesar pentru a transforma interfața de rețea în „online” și a activa handlerul systemd-networkd-wait-online;
- În systemd-networkd-wait-online a fost adăugată opțiunea „—any” pentru a aștepta pregătirea oricărui dintre interfețele de rețea specificate în loc de toate, precum și opțiunea „—operational-state=” pentru a defini starea linkului care indică pregătirea.
- În .network au fost adăugate setările „UseAutonomousPrefix=” și „UseOnLinkPrefix=”, care pot fi utilizate pentru a ignora prefixelor la primirea
anunțului de la routerul IPv6 (RA, Router Advertisement); - În .network au fost adăugate setările „MulticastFlood=”, „NeighborSuppression=” și „Learning=” pentru modificarea parametrilor de lucru ai podului de rețea, precum și setarea „TripleSampling=” pentru schimbarea modului de TRIPLE-SAMPLING al interfețelor virtuale CAN;
- În /etc/crypttab au fost adăugate opțiunile same-cpu-crypt și submit-from-crypt-cpus, care controlează comportamentul programatorului în timpul migrației între nuclei CPU pentru lucrări legate de criptare; VPN;
- În systemd-tmpfiles s-a asigurat prelucrarea fișierului de blocare înainte de a efectua operațiuni în directoarele cu fișiere temporare, permițând dezactivarea temporară a curățării fișierelor învechite (de exemplu, la desfășurarea unui arhiv tar în /tmp, pot fi expuse fișiere foarte vechi care nu pot fi șterse până la finalizarea acțiunilor cu acestea);
- În comanda „systemd-analyze cat-config” a fost asigurată analiza configurației dispersate în mai multe fișiere, cum ar fi setările personalizate și sistemice, conținutul tmpfiles.d și sysusers.d, regulile udev etc.
- În „journalctl” a fost adăugată opțiunea „—cursor-file=” pentru a specifica fișierul pentru încărcarea și salvarea pointerului de poziție;
- În systemd-detect-virt a fost adăugată determinarea hipervizorului ACRN și a subsistemului WSL (Windows Subsystem for Linux) pentru ramificarea ulterioară cu ajutorul operatorului condițional „ConditionVirtualization”;
- În timpul instalării systemd (când se execută „ninja install”) s-a întrerupt crearea de link-uri simbolice în directorul /etc pentru fișierele systemd-networkd.service, systemd-networkd.socket,
- systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
systemd-networkd-wait-online.service și systemd-timesyncd.service. Pentru a crea aceste fișiere, acum este necesară executarea comenzii „systemctl preset-all”.
După două luni de dezvoltare, a fost prezentat release-ul managerului de sistem systemd 242.
Sursa: opennet.ro
