Lansarea managerului de sistem systemd 252 cu suport UKI (Unified Kernel Image).

După cinci luni de dezvoltare, a fost prezentată lansarea managerului de sistem systemd 252. Schimbarea cheie în noua versiune a fost integrarea suportului pentru un proces de boot modernizat, care vă permite să verificați nu numai nucleul și bootloader-ul, ci și componentele. a mediului de bază al sistemului folosind semnături digitale.

Metoda propusă implică utilizarea unei imagini unificate de kernel UKI (Unified Kernel Image) la încărcare, care combină un handler pentru încărcarea nucleului din UEFI (UEFI boot stub), o imagine a nucleului Linux și mediul de sistem initrd încărcat în memorie, folosit pentru inițializarea inițială în etapa înainte de montarea rădăcinii FS. Imaginea UKI este ambalată ca un singur fișier executabil în format PE, care poate fi încărcat folosind bootloadere tradiționale sau apelat direct din firmware-ul UEFI. Când este apelat de la UEFI, este posibil să se verifice integritatea și fiabilitatea semnăturii digitale nu numai a nucleului, ci și a conținutului initrd-ului.

Pentru a calcula parametrii registrelor TPM PCR (Trusted Platform Module Platform Configuration Register) utilizate pentru a monitoriza integritatea și a genera o semnătură digitală a imaginii UKI, este inclusă o nouă măsură de sistem de utilitate. Cheia publică și informațiile PCR însoțitoare utilizate în semnătură pot fi încorporate direct în imaginea de pornire UKI (cheia și semnătura sunt salvate într-un fișier PE în câmpurile „.pcrsig” și „.pcrkey”) și extrase din acesta de către extern. sau utilitati interne.

În special, utilitarele systemd-cryptsetup, systemd-cryptenroll și systemd-creds au fost adaptate pentru a utiliza aceste informații, cu ajutorul cărora vă puteți asigura că partițiile de disc criptate sunt legate la un nucleu semnat digital (în acest caz, accesul la partiția criptată este furnizat numai dacă imaginea UKI a trecut verificarea prin semnătură digitală pe baza parametrilor aflați în TPM).

În plus, este inclus utilitarul systemd-pcrphase, care vă permite să controlați legarea diferitelor etape de pornire la parametrii aflați în memoria criptoprocesoarelor care acceptă specificația TPM 2.0 (de exemplu, puteți face ca cheia de decriptare a partiției LUKS2 să fie disponibilă numai în imaginea initrd și blocați accesul la ea la descărcări ulterioare).

Alte modificari:

  • Se asigură că localitatea implicită este C.UTF-8, cu excepția cazului în care este specificată o altă locație în setări.
  • Acum este posibil să efectuați o operație completă de presetare a serviciului („systemctl preset”) în timpul primei porniri. Activarea presetărilor la pornire necesită construirea cu opțiunea „-Dfirst-boot-full-preset”, dar este planificat să fie activată implicit în versiunile viitoare.
  • Unitățile de gestionare a utilizatorilor implică un controler de resurse CPU, ceea ce a făcut posibilă asigurarea faptului că setările CPUWeight sunt aplicate tuturor unităților slice utilizate pentru a împărți sistemul în părți (app.slice, background.slice, session.slice) pentru a izola resursele între servicii diferite pentru utilizatori, concurând pentru resurse CPU. CPUWeight acceptă, de asemenea, valoarea „inactiv” pentru a activa modul adecvat de furnizare a resurselor.
  • În unitățile temporare („tranzitorii”) și în utilitarul systemd-repart, suprascrierea setărilor este permisă prin crearea fișierelor drop-in în directorul /etc/systemd/system/name.d/.
  • Pentru imaginile de sistem este setat indicatorul de terminare a suportului, determinând acest fapt pe baza valorii noului parametru „SUPPORT_END=” din fișierul /etc/os-release.
  • S-au adăugat setările „ConditionCredential=" și „AssertCredential=", care pot fi folosite pentru a ignora sau bloca unitățile dacă anumite acreditări nu sunt prezente în sistem.
  • S-au adăugat setările „DefaultSmackProcessLabel=" și „DefaultDeviceTimeoutSec=" la system.conf și user.conf pentru a defini nivelul implicit de securitate SMACK și expirarea timpului de activare a unității.
  • În setările „ConditionFirmware=" și „AssertFirmware=", a fost adăugată capacitatea de a specifica câmpuri SMBIOS individuale, de exemplu, pentru a lansa o unitate numai dacă câmpul /sys/class/dmi/id/board_name conține valoarea „Custom Board”, puteți specifica „ConditionFirmware=smbios” -field(board_name = „Custom Board”)”.
  • În timpul procesului de inițializare (PID 1), capacitatea de a importa acreditări din câmpurile SMBIOS (Tip 11, „șiruri de furnizor OEM”) a fost adăugată în plus față de definirea acestora prin qemu_fwcfg, care simplifică furnizarea de acreditări către mașinile virtuale și elimină nevoie de instrumente terțe, cum ar fi cloud -init și ignition.
  • În timpul opririi, logica pentru demontarea sistemelor de fișiere virtuale (proc, sys) a fost modificată și informațiile despre procesele care blochează demontarea sistemelor de fișiere sunt salvate în jurnal.
  • Filtrul de apel de sistem (SystemCallFilter) permite accesul implicit la apelul de sistem riscv_flush_icache.
  • Bootloader-ul sd-boot adaugă capacitatea de a porni în modul mixt, în care nucleul Linux pe 64 de biți rulează de la firmware-ul UEFI pe 32 de biți. S-a adăugat capacitatea experimentală de a aplica automat cheile SecureBoot din fișierele găsite în ESP (partiția de sistem EFI).
  • Au fost adăugate noi opțiuni la utilitarul bootctl: „—all-architectures” pentru instalarea binarelor pentru toate arhitecturile EFI acceptate, „—root=" și „—image=" pentru a lucra cu un director sau imagine de disc, „—install-source =" pentru definirea sursei pentru instalare, "-efi-boot-option-description=" pentru a controla numele intrărilor de boot.
  • Comanda „list-automounts” a fost adăugată la utilitarul systemctl pentru a afișa o listă de directoare montate automat și opțiunea „--image=" pentru a executa comenzi în legătură cu imaginea de disc specificată. S-au adăugat opțiunile „--state=" și „--type=" la comenzile „show” și „status”.
  • systemd-networkd a adăugat opțiuni „TCPCongestionControlAlgorithm=” pentru a selecta algoritmul de control al congestionării TCP, „KeepFileDescriptor=" pentru a salva descriptorul de fișier al interfețelor TUN/TAP, „NetLabel=” pentru a seta NetLabels, „RapidCommit=” pentru a accelera configurarea prin DHCPv6 (RFC 3315). Parametrul „RouteTable=" permite specificarea numelor tabelelor de rutare.
  • systemd-nspawn permite utilizarea căilor de fișiere relative în opțiunile „--bind=" și „--overlay=". S-a adăugat suport pentru parametrul „rootidmap” la opțiunea „--bind=" pentru a lega ID-ul utilizatorului rădăcină din container de proprietarul directorului montat din partea gazdă.
  • systemd-resolved folosește OpenSSL ca backend de criptare în mod implicit (suportul gnutls este păstrat ca opțiune). Algoritmii DNSSEC neacceptați sunt acum tratați ca nesiguri în loc să returneze o eroare (SERVFAIL).
  • systemd-sysusers, systemd-tmpfiles și systemd-sysctl implementează capacitatea de a transfera setările printr-un mecanism de stocare a acreditărilor.
  • S-a adăugat comanda „compare-versions” la systemd-analyze pentru a compara șirurile cu numerele de versiune (similar cu „rpmdev-vercmp” și „dpkg --compare-versions”). S-a adăugat posibilitatea de a filtra unitățile după mască la comanda „systemd-analyze dump”.
  • Când selectați un mod de repaus în mai multe etape (suspend-apoi-hibernare), timpul petrecut în modul de așteptare este acum selectat pe baza prognozei privind durata de viață rămasă a bateriei. Trecerea instantanee la modul de repaus are loc atunci când încărcarea bateriei rămâne mai mică de 5%.
  • Un nou mod de ieșire „-o short-delta” a fost adăugat la „journalctl”, afișând diferența de timp dintre diferitele mesaje din jurnal.
  • systemd-repart adaugă suport pentru crearea de partiții cu sistemul de fișiere Squashfs și partiții pentru dm-verity, inclusiv cu semnături digitale.
  • S-a adăugat setarea „StopIdleSessionSec=" la systemd-logind pentru a încheia o sesiune inactivă după un timeout specificat.
  • Systemd-cryptenroll a adăugat o opțiune „--unlock-key-file=" pentru a extrage cheia de decriptare dintr-un fișier, în loc să solicite utilizatorului.
  • Acum este posibil să rulați utilitarul systemd-growfs în medii fără udev.
  • systemd-backlight are suport îmbunătățit pentru sistemele cu mai multe plăci grafice.
  • Licența pentru exemplele de cod furnizate în documentație a fost schimbată de la CC0 la MIT-0.

Modificări care întrerup compatibilitatea:

  • Când se verifică numărul versiunii kernelului folosind directiva ConditionKernelVersion, acum se utilizează o comparație simplă de șiruri în operatorii „=” și „!=”, iar dacă operatorul de comparație nu este specificat deloc, potrivirea glob-mask poate fi utilizată folosind caracterele '*', '?' Și '[', ']'. Pentru a compara versiunile de stil stverscmp(), utilizați operatorii „<”, „>”, „<=” și „>=”.
  • Eticheta SELinux folosită pentru a verifica accesul dintr-un fișier unitate este acum citită în momentul în care fișierul este încărcat, mai degrabă decât în ​​momentul verificării accesului.
  • Condiția „ConditionFirstBoot” este acum declanșată la prima pornire a sistemului numai direct în faza de pornire și revine „false” la apelarea unităților după finalizarea pornirii.
  • În 2024, systemd intenționează să nu mai susțină mecanismul de limitare a resurselor cgroup v1, care a fost depreciat în versiunea 248 de systemd. Administratorii sunt sfătuiți să aibă grijă înainte de a migra serviciile bazate pe cgroup v2 la cgroup v1. Diferența cheie dintre cgroups v2 și v1 este utilizarea unei ierarhii comune cgroups pentru toate tipurile de resurse, în loc de ierarhii separate pentru alocarea resurselor CPU, pentru reglarea consumului de memorie și pentru I/O. Ierarhiile separate duc la dificultăți în organizarea interacțiunii între handler și la costuri suplimentare cu resursele nucleului atunci când se aplică reguli pentru un proces referit în diferite ierarhii.
  • În a doua jumătate a anului 2023, intenționăm să încetăm suportul pentru ierarhiile de directoare divizate, unde /usr este montat separat de rădăcină sau /bin și /usr/bin, /lib și /usr/lib sunt separate.

Sursa: opennet.ru

Adauga un comentariu