Lansarea kernelului Linux 5.13

După două luni de dezvoltare, Linus Torvalds a lansat versiunea nucleului Linux 5.13. Printre cele mai notabile modificări se numără: sistemul de fișiere EROFS, suportul inițial pentru cipurile Apple M1, controlerul cgroup „misc”, încetarea suportului pentru /dev/kmem, suportul pentru GPU-urile noi Intel și AMD, posibilitatea apelării directe a funcțiilor nucleului din programele BPF, randomizarea stivei nucleului pentru fiecare apel de sistem, posibilitatea compilării în Clang cu protecție CFI (Control Flow Integrity), modul LSM Landlock pentru restricționarea suplimentară a proceselor, un dispozitiv audio virtual bazat pe virtio, și modul multi-shot în io_uring.

Noua versiune include 17189 de corecturi din partea a 2150 de dezvoltatori (cea mai mare cifră din istorie), dimensiunea patch-ului fiind de 60 MB (modificările au afectat 12996 de fișiere, fiind adăugate 794705 de linii de cod și șterse 399590 de linii). Aproape 47% din toate modificările aduse în 5.13 sunt legate de driverele de dispozitive, aproximativ 14% sunt referitoare la actualizări ale codului specifice arhitecturilor hardware, 13% sunt legate de stiva de rețea, 5% - de sistemele de fișiere și 4% de subsystemele interne ale nucleului.

Noutăți principale:

  • Subsistemul de disc, I/O și sistemele de fișiere
    • A fost adăugat suport pentru sistemul de fișiere EROFS (Enhanced Read-Only File System), propus de compania Huawei pentru utilizarea pe partiții accesibile în modul de citire. Noua FS suportă stocarea datelor într-o formă comprimată și, comparativ cu Ext4, arată o performanță similară în execuția operațiunilor de citire secvențială, dar depășește de câteva ori Ext4 în accesul aleatoriu la date. De exemplu, la un nivel de compresie de 4 și testat pe server hard disk, FS EROFS a depășit Ext4 în operațiunile de citire aleatorie de mai mult de șase ori, iar în utilizarea unui smartphone Android cu Flash de aproape trei ori. Ca și în alte FS-uri de tip read-only, structura EROFS este semnificativ simplificată prin eliminarea la implementare a unor domenii de metadate, precum harta de blocuri libere.
    • Pentru sistemul de fișiere SMB3 a fost implementată opțiunea de montare „rasize”, prin care se poate determina dimensiunea feronului de citire anticipată (readahead) pentru a crește performanța anumitor tipuri de sarcini.
    • În FS ext4 a fost asigurată rescrierea elementelor de catalog la ștergerea fișierelor. În ext4, de asemenea, este permisă utilizarea simultană a modului de operare fără a ține cont de literele majuscule și criptare.
    • În FS exFAT a fost adăugat suport pentru comanda ioctl FITRIM (discard), pentru a informa unitatea de stocare despre blocurile nefolosite din FS.
    • În FS XFS a fost adăugată posibilitatea de a restaura spațiul din ultima grupă de alocare din FS, ceea ce a devenit primul pas în implementarea funcției de reducere a dimensiunii secțiunilor existente din FS XFS.
    • A fost adăugată o nouă apelare de sistem quotactl_path, care diferă de quotactl în sensul că permite gestionarea cotelor nu printr-un fișier special, ci prin specificarea unei căi către punctul de montare al FS.
    • În mecanismul fanotify au fost extinse capacitățile disponibile utilizatorilor fără privilegii. De exemplu, în mod similar cu inotify, fără drepturi SYS_CAP_ADMIN, acum este posibil să urmăriți evenimentele OPEN, ACCESS, MODIFY și CLOSE pentru fișiere și directoare.
  • Memorie și servicii de sistem
    • A fost adăugat un nou controler cgroup - "Misc" (CONFIG_CGROUP_MISC), destinat limitării și monitorizării resurselor scalare, care pot fi gestionate folosind un simplu contor și limitate prin stabilirea unor valori maxime admise. Ca exemplu de aplicare a noului controler cgroup, se menționează gestionarea identificatorilor de spațiu de adresare utilizate în mecanismul AMD SEV (Secure Encrypted Virtualization).
    • În interfața de intrare/ieșire asincronă io_uring pentru cererile POLL a fost implementat un mod "multi-shot", în care POLL nu este eliminat după generarea unui eveniment, ci rămâne activ și poate genera mai multe evenimente.
    • Din ramura realtime a nucleului a fost transferat codul care asigură procesarea întreruperilor generate software în firele nucleului, ceea ce permite înlocuirea lor cu procese cu prioritate mai mare.
    • A fost adăugată o bibliotecă internă netfs, în care au fost extrase funcțiile tipice utilizate în sistemele de fișiere de rețea.
    • Pentru arhitectura PowerPC a fost implementat suport pentru spații de nume de timp (time namespaces), care permit utilizarea unui timp specific în container.
    • Pentru arhitectura RISC-V a fost implementat suport pentru kexec, crash dump, kprobe și rularea nucleului în loc (execute-in-place, execuția de pe suportul original, fără copiere în RAM).
    • În programele de urmărire BPF a apărut posibilitatea de a utiliza stocarea de date locală pentru sarcină (task-local storage), asigurând o performanță mai bună datorită legării datelor la un anumit handler BPF.
    • A fost implementat un nou mecanism pentru apelarea directă a funcțiilor nucleului din programele BPF, care este deja utilizat în realizarea algoritmelor de suprasarcină TCP. Pentru a asigura securitatea, funcțiile apelate trebuie să fie definite explicit într-o listă albă.
    • În sistemul de urmărire a funcțiilor ftrace a fost adăugată opțiunea func-no-repeats, care permite reflectarea apelurilor de funcție consecutive repetate sub formă de contor.
    • În apelul de sistem userfaultfd(), destinat gestionării erorilor de pagină (accesarea paginilor de memorie nealocate) în spațiul utilizatorului, a fost adăugată posibilitatea de gestionare a erorilor parțiale, în cadrul cărora pagina de memorie este prezentă, dar nu există o înregistrare în tabela paginilor de memorie.
    • A fost oprit suportul pentru fișierul special /dev/kmem, prin intermediul căruia se poate accesa întregul spațiu de adresare al nucleului. Acest fișier a fost considerat învechit și a creat probleme de securitate.
    • Pentru cipurile Intel a fost implementat un nou driver pentru gestionarea răcirii, care permite reducerea frecvenței procesorului în cazul unei posibile supraîncălziri. Spre deosebire de mecanismul existent de activare TCC (Thermal Control Circuit), noul driver manipulează valori relative, adică poate reduce frecvența în stadiul de început al creșterii semnificative a temperaturii, fără a aștepta depășirea unei limite critice.
  • Virtualizare și securitate
    • A fost inclus un modul LSM pentru asigurarea izolării aplicațiilor, Landlock, care permite limitarea interacțiunii cu mediul extern al unui grup de procese și care a fost dezvoltat având în vedere mecanismele de izolare precum XNU Sandbox, FreeBSD Capsicum și OpenBSD Pledge/Unveil. Logica de acordare a accesului este determinată printr-un program BPF, dar spre deosebire de seccomp-bpf, Landlock nu filtrază apelurile de sistem și argumentele acestora, ci permite limitarea utilizării obiectelor nucleului, cum ar fi ierarhiile de fișiere. Prin intermediul Landlock, orice proces, inclusiv unul neprivilegiat, își poate izola în siguranță sine și poate preveni ocolirea izolației în cazul descoperirii vulnerabilităților sau modificărilor rău intenționate în aplicație. Landlock permite procesului să creeze medii izolate protejate, realizate sub forma unei straturi suplimentare deasupra mecanismelor existente de control al accesului.
    • A fost adăugată posibilitatea de a randomiza deplasările în stiva kernel-ului atunci când se procesează apelurile de sistem, cu scopul de a complica atacurile asupra stivei. Esența acestei protecții constă în alegerea unei deplasări aleatorii a stivei la fiecare apel de sistem, complicând astfel determinarea aranjamentului stivei în memorie chiar și în cazul obținerii informațiilor despre adrese, deoarece la următorul apel de sistem adresa de bază a stivei se va schimba. Pentru a activa randomizarea, sunt propuse parametrii liniei de comandă a kernel-ului „randomize_kstack_offset=on/off” și setarea CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Costurile suplimentare sunt estimate la aproximativ 1% pierdere a performanței.
    • A fost adăugată suportul pentru compilarea kernel-ului cu activarea mecanismului de protecție CFI (Control Flow Integrity) în compilatorul Clang, care adaugă o verificare înainte de fiecare apel indirect al funcției pentru a identifica anumite forme de comportament nedefinit, care ar putea duce la perturbarea ordinii normale de execuție (control flow) ca urmare a exploatărilor care modifică pointerii la funcții stocați în memorie. Pentru a activa CFI, este propus parametru CONFIG_CFI_CLANG.
    • În serviciul de stocare a cheilor de criptare (key ring) oferit de kernel, mecanismul cheilor de încredere (Trusted Keys) acoperă acum nu doar cheile din modulele TPM, ci și din medii TEE (Trusted Execution Environment). Pentru a gestiona sursa cheilor de încredere, este propus un parametru de boot „trusted.source”. În plus, a fost adăugată posibilitatea de a procesa cheile de încredere în format ASN.1.
    • A fost adăugat un parametru pentru încărcarea anticipată a listei certificatelor revocate în timpul boot-ului kernel-ului. A fost rezolvată problema (CVE-2020-26541) legată de ignorarea certificatelor UEFI Secure Boot din lista neagră, livrate în format EFI_CERT_X509_GUID, care permitea încărcarea sistemului cu un certificat revocat.
    • În subsystema criptografică a kernel-ului a fost adăugat suportul pentru verificarea semnăturilor digitale ECDSA pe baza curbelor eliptice.
    • A fost implementată posibilitatea de verificare a politicilor SELinux prin intermediul subsystemului IMA (Integrity Measurement Architecture), care asigură menținerea unei baze de hash-uri pentru verificarea integrității datelor.
  • Subsystema de rețea
    • Suportul pentru tehnologia WiMAX a fost eliminat, aceasta nefiind utilizată în rețelele publice, iar în nucleu singurul driver care poate utiliza WiMAX rămâne vechiul driver Intel 2400m. În configuratorul de rețea NetworkManager, suportul pentru WiMAX a fost oprit în 2015. În prezent, WiMAX este practic complet înlocuit de tehnologii precum LTE, HSPA+ și Wi-Fi 802.11n.
    • A fost adăugat driverul pentru adaptorul de rețea MANA (Microsoft Azure Network Adapter).
    • Driverul ath11k a primit suport pentru modulele wireless Qualcomm QCN9074 cu suport pentru 802.11ax.
    • În driverul iwlwifi a fost implementată posibilitatea de scanare pasivă a canalelor în banda de 6GHz. Pentru Ucraina, a fost adăugat suportul pentru activarea/dezactivarea IEEE 802.11ax pe baza parametrilor din BIOS.
    • A fost realizată optimizarea subsistemului XDP (eXpress Data Path), permițând manipularea pachetelor de rețea înainte de procesarea acestora de către stiva de rețea a nucleului Linux. Testele efectuate demonstrează o creștere a performanței XDP de 4-8%. Pentru dispozitivele virtio, creșterea performanței prelucrării software AF_XDP poate ajunge la 33%.
    • În ICMP a fost implementat suportul pentru mesaje PROBE extinse, definite în RFC 8335.
    • Continua integrarea în nucleu a MPTCP (MultiPath TCP), extensia protocolului TCP pentru organizarea funcționării conexiunii TCP cu livrarea pachetelor simultan pe mai multe rute prin diferite interfete de rețea, legate de diferite. adrese IP.. În noua versiune a fost adăugat suport pentru sockopt pentru setarea opțiunilor tipice TCP. A fost realizată posibilitatea de resetare a anumitor subfluxuri (subflow).
    • În netfilter a fost adăugat suportul pentru gestionarea resurselor printr-o ierarhie unificată cgroups v2.
    • În ethtool a fost implementat un interfață pentru citirea statisticilor IEEE MIB cu suport pentru mlx5 și bnxt. Driverelor de rețea li s-a permis extragerea de date arbitrare din SFP EEPROM, manipulând nu un offset+dimensiune legat, ci paginile de memorie.
  • Echipament
    • A fost implementat suportul inițial pentru chipul ARM Apple M1, acoperind controlerul de întreruperi, timerul, UART, SMP, funcții pentru organizarea intrării/ieșirii și MMIO. Ingineria inversă a GPU-ului nu este încă finalizată, pentru organizarea ieșirii fiind disponibil suport pentru frame buffer și consolă prin portul serial.
    • Continuă curățarea nucleului de drivere vechi, fiind eliminate driverele „gasket” (Google ASIC), „sysace”, „umem” și mai multe drivere vechi pentru porturi seriale.
    • După 13 ani în ramura staging, driverul „comedi” a fost stabilizat și transferat în componenta principală pentru suportul dispozitivelor de colectare a datelor.
    • A fost adăugat driverul GUD (Generic USB Display) cu implementarea unui driver de bază pentru monitoare și adaptoare TV conectate prin interfața USB. Driverul furnizează proprietăți DRM (Direct Rendering Manager) pentru rotirea imaginii, controlul luminozității, accesul la EDID, configurarea modurilor video și conectarea TV, care pot fi utilizate ca bază pentru crearea driverelor pentru dispozitive specifice.
    • A fost adăugat driverul de sunet „virtio” cu implementarea unui dispozitiv de sunet virtual, care poate fi utilizat în sistemele guest pentru redarea și înregistrarea sunetului fără a necesita acces la placa de sunet și fără emulatie.
    • În driverul amdgpu a fost adăugată suportul inițial pentru GPU Aldebaran (gfx90a). A fost activat suportul inițial pentru tehnologia de sincronizare adaptivă FreeSync pentru HDMI (anterior disponibil doar pentru DisplayPort), care permite ajustarea ratei de reîmprospătare a informațiilor de pe ecran. A fost inclus suport pentru ASSR (Alternate Scrambler Seed Reset). A fost adăugat ioctl pentru a solicita capabilități legate de codificarea și decodificarea video. A fost adăugat modul CONFIG_DRM_AMD_SECURE_DISPLAY pentru detectarea modificărilor în ecranele care afișează informații critice. A fost inclus suport pentru mecanismul de economisire a energiei ASPM.
    • În driverul i915 pentru plăcile grafice Intel a fost activat suportul pentru cipurile Intel Alderlake-S. A fost inclus suport pentru eDP MSO (Embedded DisplayPort Multi-SST Operation).
    • A fost adăugat suport pentru controlerul de joc Luna (Amazon) și pentru ecranele tactile Hycon HY46XX, ILITEK Lego Series și MStar MSG2638.

Între timp, Fundația Software-ului Liber din America Latină a creat o variantă complet liberă a nucleului 5.11 — Linux-libre 5.11-gnu, curățată de elementele de firmware și drivere care conțin componente sau fragmente de cod ne-liber, a căror utilizare este limitată de producător. În această nouă versiune, a fost curățat driverul comedi. Curățarea driverelor cyclades, isicom tty și i2400m wimax a fost oprită, deoarece acestea au fost eliminate din nucleu. Codul de curățare a bloburilor în driverele și subsistemele amdgpu, i915 csr, r8152 usb, mhi bus, x86 touchscreen și qualcomm arm64 a fost actualizat.

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