Versiunea managerului de sistem systemd 261 și fork-ul liberated-systemd 261

După trei luni de dezvoltare, este disponibilă versiunea 261 a managerului de sistem systemd. Schimbările cheie includ pregătirea pentru suportul API pentru verificarea vârstei, suport pentru subsistemele Kexec Handover și Live Update Orchestration pentru repornirea fără pierderea stării, subsistemul IMDS (Instance Metadata Service), funcționalitate pentru protecția boot-ului pe sisteme fără TPM (Trusted Platform Module) fizic, componenta systemd-sysinstall cu implementarea installer-ului.

Printre modificările din noua versiune:

  • A fost adăugat un nou component systemd-sysinstall cu implementarea unui installer simplu pentru sistemul de operare, care poate fi gestionat din linia de comandă sau printr-o interfață text interactivă. Funcționalitatea systemd-sysinstall a fost formată din capacitățile existente ale systemd: pentru configurarea partițiilor de disc s-a folosit systemd-repart, pentru instalarea nucleului și generarea meniului de boot — comanda „bootctl link”, pentru instalarea bootloader-ului systemd-boot — comanda „bootctl install”, iar pentru configurarea inițială a sistemului instalat (de exemplu, alegerea localizării și a layout-ului tastaturii) — systemd-creds.
  • În pregătirea pentru implementarea cerințelor legilor privind integrarea în OS a API-ului pentru verificarea vârstei, în baza de date userdb a fost adăugat un câmp birthDate cu data nașterii utilizatorului. Câmpul adăugat va putea fi folosit în portalul xdg-desktop-portal, dezvoltat pentru distribuții, și în serviciul AccountsService pentru a furniza aplicațiilor informații despre categoria de vârstă a utilizatorului prin intermediul interfeței D-Bus „org.freedesktop.AgeVerification1” sau „org.freedesktop.ParentalControls”. Pentru stabilirea vârstei, utilitarului homectl i s-a adăugat opțiunea „—birth-date”.
  • În handler-ul PID1 a fost adăugat suport pentru subsistemele nucleului Linux LUO (Live Update Orchestration) și KHO (Kexec Handover), care permit repornirea și actualizarea nucleului fără a opri funcționarea și fără a pierde starea sistemului, a dispozitivelor și a proceselor. KHO oferă posibilități de a lansa un nou nucleu dintr-unul vechi fără pierderea stării sistemului, iar LUO implementează salvarea stării dispozitivelor și a memoriei RAM, asigurând, de asemenea, continuitatea operațiunilor legate de DMA și gestionarea întreruperilor.

    În systemd, pentru unitățile sistemice și utilizator, a fost implementată posibilitatea de a salva descriptorii de fișiere înainte de apelarea kexec și de a-i restaura după repornirea nucleului prin kexec. În unități, se pot crea, de asemenea, sesiuni LUO personalizate, care sunt salvate și restaurate în timpul executării kexec. Pentru a activa salvarea stării descriptorilor de fișiere, trebuie utilizată setarea ‘FileDescriptorStorePreserve=yes’.

  • A fost implementată subsistemul systemd-imdsd, care oferă un API bazat pe Varlink IPC pentru accesarea serviciilor IMDS (Instance Metadata Service) de către programele locale, furnizate de diverși furnizori de sisteme cloud. IMDS permite mașini virtuale obținerea informațiilor despre mediul de cloud, cum ar fi obținerea detalii despre configurația rețelei, amplasamentul geografic al nodului, tipul CPU și dimensiunea stocării. În systemd-imdsd este disponibil atât un API de nivel inferior pentru accesarea câmpurilor individuale, cât și o interfață de nivel înalt pentru a efectua cereri pe tipuri de chei, mapate la chei specifice anumitor platforme cloud. Pentru interacțiunea cu systemd-imdsd, a fost adăugată utilitarul systemd-imds, care permite importarea câmpurilor din IMDS în sistemul local de conturi.

    Pentru recunoașterea platformelor cloud pe baza informațiilor din SMBIOS și pentru a determina funcționalitatea IMDS disponibilă pe nodul curent, a fost adăugată o nouă bază de date hwdb.d/40-imds.hwdb. A fost implementată recunoașterea platformelor cloud Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS și Vultr. Este disponibil un generator systemd-imds pentru a substitui automat serviciul de obținere a datelor prin IMDS în cazul detecției funcționării sub o platformă cloud suportată. Este posibil să se creeze imagini universale, care să suporte utilizarea IMDS la rularea în medii cloud, dar care pot funcționa și fără IMDS.

  • În systemd-stub a fost realizată funcționalitatea «boot secret», care permite generarea unei chei pe baza unei variabile EFI, stocată într-o zonă inaccesibilă pentru sistemul de operare și inițializată cu o valoare aleatorie. În initrd, cheia este transmisă printr-un fișier \/.extra\/boot-secret. Această posibilitate poate fi necesară pentru obținerea unei chei aleatorii specifice sistemului pentru a verifica procesul de boot sau pentru criptare pe sistemele fără un TPM hardware (Trusted Platform Module).
  • A fost adăugat serviciul systemd-tpm2-swtpm.service pentru a lansa emulatorul de cipuri TPM swtpm (Software TPM Emulator), care poate fi folosit pentru a reveni automat la o implementare software a TPM-ului pentru bootare protectivă pe sistemele fără TPM hardware. TPM-ul software funcționează în spațiul utilizatorului și nu oferă un nivel de securitate la fel de bun ca TPM-ul hardware, dar în anumite situații utilizarea sa este justificată, comparativ cu absența TPM-ului. De exemplu, TPM-ul software poate obține cheia de criptare a partițiilor prin noua funcționalitate „boot secret” și poate folosi pentru stocarea stării sale partiția ESP (EFI System Partition) de pe disc. Pentru activarea automată a TPM-ului software, a fost propus un parametru de linie de comandă a nucleului systemd.tpm2_software_fallback.
  • Componenta systemd-sysupdate a fost declarată stabilă și plasată în /usr/bin/, fiind destinată detectării automate, descărcării și instalării actualizărilor folosind mecanismul atomic de înlocuire a partițiilor, fișierelor sau directoarelor (se folosesc două partiții/fișiere/directoare independente, pe unul dintre acestea aflându-se resursa activă curentă, iar pe celălalt se instalează actualizarea următoare, după care partițiile/fișierele/directoarele sunt schimbate între ele).
  • În systemd-resolved a fost implementată capacitatea de a suprascrie sau de a indica noi înregistrări DNS prin plasarea fișierelor în format JSON în directoarele systemd/resolve/static.d/. Spre deosebire de /etc/hosts, în noile fișiere se pot lega NU doar de numele gazdelor, ci și de a defini înregistrările DNS RR de resursă, diferite de „A” și „AAAA”. În plus, în systemd-resolved au fost adăugate setările dimensiunii cache-ului DNS: ‘DNSCacheSize’, ‘MulticastDNSCacheSize’ și ‘LLMNRCacheSize’. adrese IP A fost adăugată utilitarul ‘storagectl’ pentru inspectarea dispozitivelor de stocare și gestionarea conectării dispozitivelor bloc și a sistemelor de fișiere.
  • În cadrul inițiativei de reducere a dependențelor, în libsystemd a fost implementată încărcarea dinamică a bibliotecilor libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk și libcryptsetup
  • prin apelul dlopen() în situații în care funcțiile lor sunt necesare.
    prin apelul dlopen() în situațiile în care funcțiile lor sunt într-adevăr necesare.
  • În systemd-tmpfiles a fost adăugat flag-ul «—inline», care permite setarea directivelor din linia de comandă fără a crea fișiere de configurație în tmpfiles.d/ și fără a trimite setările prin STDIN. A fost adăugat un nou tip de directivă ‘k/K’ pentru setarea capacităților. A fost adăugat fișierul de configurare tmpfiles.d/root.conf, care setează permisiunile de acces 0555 (-r-xr-xr-x) pentru directorul rădăcină (/) pentru a proteja împotriva setării incorecte a permisiunilor în timpul formării dinamice a FS-ului rădăcină.
  • În utilitarul bootctl s-a asigurat salvarea unei copii de rezervă a bootloader-ului systemd-boot și a înregistrării versiunii vechi în UEFI ca variantă de rezervă de boot.
  • În systemd-vmspawn a fost adăugată suportul pentru bootarea directă a nucleului fără a folosi firmware UEFI. A fost implementată opțiunea «—firmware-features» pentru activarea sau dezactivarea selectivă a unor funcții ale firmware-urilor. A fost adăugat modul «—console=headless» pentru pornirea mașinii virtuale fără console și ecran. A fost adăugată opțiunea «—image-disk-type» pentru alegerea tipului de stocare block folosit în VM (virtio-blk, virtio-scsi, nvme, scsi-cd). A fost adăugată opțiunea «—coco» (Confidential Computing) pentru activarea modului de criptare a memoriei. mașini virtuale folosind tehnologia AMD SEV-SNP.
  • În systemd-hostnamed și /etc/machine-info a fost adăugată suportul pentru a atașa la sistemul curent etichete arbitrare, folosind parametrul „Tags”. Etichetele setate pot fi apoi utilizate pentru aplicarea selectivă a setărilor cu verificare prin expresia ConditionMachineTag.
  • Au fost adăugate setările EventLoopRateLimitIntervalSec și EventLoopRateLimitBurst, care limitează intensitatea ciclului de procesare a evenimentelor în PID1 pentru a elibera resursele CPU în caz de blocare.
  • În managerul de servicii a fost implementată setarea MinimumUptimeSec pentru a stabili timpul minim de funcționare a sistemului (implicit 15 secunde). Dacă se inițiază o oprire sau o repornire înainte de expirarea acestui timp, se adaugă o întârziere corespunzătoare în etapa finală.
  • Pentru unități au fost implementate noi setări CPUSetPartition pentru setarea tipului de partajare cpuset în cgroup („root”, „isolated”, „member”), RestrictFileSystemAccess pentru a permite rularea doar a fișierelor executabile, verificate prin semnătură digitală folosind dm-verity, și CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec pentru a primi notificări legate de o încărcare ridicată a CPU-ului și a I/O-ului.
  • Lista metricilor furnizate de utilitarul systemd-report a fost extinsă. De exemplu, au fost adăugate informații despre dimensiunea memoriei fizice și nucleele active ale CPU-ului, date despre conținutul câmpurilor SMBIOS și /etc/machine-info, informații despre suportul modului Confidential Computing și detalii despre producătorul cipului TPM2.
  • În systemd-oomd a fost implementată opțiunea de a defini reguli pentru eliminarea proceselor în cazul în care apare o lipsă de memorie în sistem. Regulile pot fi stabilite în directorul /etc/systemd/oomd/rules.d/ sau în unitățile de serviciu prin directiva OOMRule.
  • În systemd-socket-proxy a fost adăugat suport pentru protocolul „PROXY”, corespunzător primei versiuni a protocolului „haproxy”.
  • În systemd-networkd a fost implementat un nou backend sd-dhcp-relay pentru releele DHCP. Au fost declarate învechite setările din secțiunea „[DHCPServer]” — BindToInterface, RelayTarget, RelayAgentCircuitId și RelayAgentRemoteId, în locul cărora ar trebui folosit parametrul DHCPRelay în secțiunea „[Network]” și o serie de noi setări în secțiunea [DHCPRelay] și în fișierul networkd.conf. A fost adăugată comanda ‘networkctl dhcp-lease INTERFACE’ pentru a salva un dump cu informații despre asocierile adreselor IP (DHCP lease).
  • În utilitarul systemd-nspawn a fost adăugată opțiunea „—restrict-address-families”, iar în fișierele .nspawn setarea RestrictAddressFamilies pentru a limita familiile de adrese de socket-uri utilizate în container. În versiunile viitoare, vor fi permise în mod implicit doar familiile AF_INET, AF_INET6 și AF_UNIX.
  • Suportul pentru vechiul format de bază de date udev (versiunea 0.x) a fost suspendat. Actualizarea în timpul rulării din versiunile systemd până la versiunea 247 nu mai este susținută.
  • La compilarea cu biblioteca C musl, este acum necesară cel puțin versiunea musl 1.2.6.

De asemenea, se remarcă lansarea proiectului liberated-systemd 261, care dezvoltă un fork al systemd, lipsit de codul care poate fi utilizat pentru a urmări utilizatorii. În versiunea propusă, modificările se rezumă la eliminarea codului care adăuga în userdb câmpul birthDate cu data nașterii utilizatorului, iar în utilitarul homectl opțiunea „—birth-date” pentru a seta vârsta.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster