Lansarea kernel-ului Linux 6.10

După două luni de dezvoltare, Linus Torvalds a lansat versiunea kernelului Linux 6.10. Printre cele mai notabile schimbări se numără: driverul ntsync cu primitive de sincronizare Windows NT, componentele DRM Panic pentru implementarea unei analogii a „ecranului albastru al morții”, încetarea suportului pentru vechile CPU Alpha, posibilitatea de verificare a integrității în sistemul de fișiere bazat pe FUSE, restricționarea accesului la ioctl prin mecanismul Landlock, un subsistem pentru profilarea operațiunilor de alocare a memoriei, apelul de sistem mseal(), posibilitatea schimbului criptat de date cu dispozitivele TPM, suport pentru cozi de lucru cu prioritate înaltă în dm-crypt, driverul panthor pentru generația a zecea de GPU Mali.

Noua versiune include 14564 corecții de la 1989 dezvoltatori, dimensiunea patch-ului fiind de 41 MB (modificările au afectat 12509 fișiere, au fost adăugate 547663 linii de cod și șterse 312464 linii). În versiunea anterioară au fost 15680 corecții de la 2106 dezvoltatori, dimensiunea patch-ului a fost de 54 MB. Aproape 41% din toate modificările prezentate în 6.10 sunt legate de driverele de dispozitive, aproximativ 15% sunt legate de actualizarea codului specific arhitecturilor hardware, 13% sunt legate de stiva de rețea, 5% referitoare la sistemele de fișiere și 4% la subsistemele interne ale kernelului.

Principalele noutăți în kernelul 6.10:

  • Subsistemul de disc, I/O și sistemele de fișiere
    • A fost adăugată o nouă operațiune fcntl F_DUPFD_QUERY, prin care un proces poate determina că două descriptorii de fișiere diferite se referă la același fișier. Spre deosebire de funcționalitățile similare oferite de apelul de sistem kcmp(), F_DUPFD_QUERY nu duce la divulgarea de informații suplimentare și funcționează pe sistemele cu kcmp dezactivat.
    • În subsistemul FUSE, utilizat pentru implementarea sistemelor de fișiere în spațiul utilizatorului, a fost implementată posibilitatea de a aplica mecanismul fs-verity pentru verificarea integrității și autenticității fișierelor.
    • În modulul dm-crypt, utilizat pentru criptarea dispozitivelor bloc, a fost adăugată opțiunea „high_priority”, care permite activarea cozilor de lucru cu prioritate înaltă pentru a îmbunătăți performanța pe sisteme puternice. servere. În mod implicit, modul este dezactivat, deoarece poate duce pe PC-urile obișnuite la creșterea întârzierilor în execuția lucrărilor care nu sunt legate de criptare, cum ar fi procesarea sunetului.
    • A fost adăugat un protocol bazat pe netlink pentru gestionarea serverului NFS în nucleu. În spațiul utilizatorului, pe baza acestui protocol, a fost pregătită utilitarul nfsdctl. Suportul pentru montarea NFS v2 este dezactivat în mod implicit (suportul pentru NFS v2 în utilitarul mount.nfs a fost oprit încă din 2021).
    • În sistemul de fișiere XFS, a continuat lucrul asupra implementării funcționalității utilitarului fsck pentru a verifica și corecta problemele identificate în mod online, fără a de-monta sistemul de fișiere. A fost adăugat ioctl XFS_IOC_EXCHANGE_RANGE pentru schimbul de intervale de bytes între două fișiere într-un mod atomic.
    • În Btrfs a fost implementat suportul pentru reduceri (shrinker) ale hărților neatașate (extent maps), ceea ce poate fi util pentru reducerea consumului de memorie în condiții de lipsă de memorie în sistem. Codul pentru comprimarea datelor și funcția put_file_data() au fost migrate pentru a utiliza folio-urile de pagină de memorie. Mecanișmul de blocare a extensiilor a fost revizuit în timpul operațiunilor de scriere inversă.
    • În FS Ext4 a fost adăugat suportul pentru ioctl FS_IOC_GETFSSYSFSPATH pentru a determina locația unui sistem de fișiere montat în ierarhia /sys/fs.
    • Sistemele de fișiere OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX și FREEVXFS au fost migrate pentru a utiliza noul API pentru montarea partițiilor.
    • În sistemul de fișiere EROFS (Extendable Read-Only File System), destinat utilizării pe partiții disponibile în mod exclusiv pentru citire, a fost adăugat suportul pentru algoritmul de comprimare Zstandard.
    • În Bcachefs s-a efectuat pregătirea pentru a desfășura fsck fără a de-monta partiția (verificare online). S-au adus modificări și corecții pentru îmbunătățirea fiabilității. A fost implementată opțiunea de a actualiza și restaura formatul FS în modul „nochanges”, care dezactivează scrierea și stochează metadatele doar în memorie.
    • În sistemul de fișiere OverlayFS a fost adăugat suportul pentru crearea fișierelor temporare folosind opțiunea O_TMPFILE.
    • Suportul pentru mecanismul de limitare a lățimii de bandă a dispozitivelor de bloc „CONFIG_BLK_DEV_THROTTLING_LOW” a fost întrerupt, care din 2017 a păstrat statutul experimental, nu s-a răspândit pe scară largă în practică și îngreunează întreținerea subsistemului dispozitivelor de bloc.
  • Memorie și servicii de sistem
    • Adăugat, dar dezactivat în timpul compilării, driverul ntsync, care implementează un dispozitiv simbolic /dev/ntsync și un set de primitive pentru sincronizare, utilizate în nucleul Windows NT. Implementarea acestor primitive la nivel de nucleu permite îmbunătățirea semnificativă a performanței jocurilor Windows rulate prin Wine. Creșterea performanței este realizată prin eliminarea cheltuielilor asociate utilizării RPC în spațiul utilizatorului. Crearea unui driver separat pentru nucleul Linux se explică prin dificultățile de implementare corectă a API-ului de sincronizare NT deasupra primitivelor existente în nucleu.
    • A fost adăugată o subsistem pentru profilarea operațiunilor de alocare a memoriei în nucleul Linux, care permite identificarea scurgerilor de memorie în nucleu și facilitează optimizările consumului de memorie. Subsistemul asigură cheltuieli reduse, ceea ce îl face utilizabil nu doar în versiunile de debug ale nucleului, ci și pe sistemele de producție.
    • A fost adăugată o implementare inițială a handler-ului de panică în nucleu — DRM Panic, care folosește subsistemul DRM (Direct Rendering Manager) pentru a afișa un raport colorat vizual în stilul „ecranului albastru al morții”. În următoarea versiune se preconizează adăugarea posibilității de a afișa un logo și un cod QR pe ecran în caz de stare de panică.
    • Continuarea transferului modificărilor din ramura Rust-for-Linux, legate de utilizarea limbajului Rust ca al doilea limbaj pentru dezvoltarea driverelor și modulelor nucleului (suportul pentru Rust nu este activat implicit și nu duce la includerea Rust în dependențele de compilare obligatorii ale nucleului). S-a realizat trecerea la utilizarea versiunii Rust 1.78, ceea ce a permis utilizarea bibliotecii standard alloc, în loc de un fork propriu. S-au adăugat abstracții pentru gestionarea timpului în nucleu (wrapper peste structura ktime_t). A fost adăugat suport pentru utilizarea componentelor nucleului în limbajul Rust pe sisteme cu arhitectură RISC-V.
    • În programele BPF, a fost implementată posibilitatea de a utiliza cozi de așteptare (wait queue) în nucleu. Au fost adăugate funcțiile bpf_preempt_disable și bpf_preempt_enable, care permit crearea de secțiuni de cod neîntrerupte de planificatorul de sarcini. A fost oferită posibilitatea accesului programelor BPF la funcțiile criptografice ale nucleului (crypto). A fost implementat suportul pentru compilarea JIT a programelor BPF pe sistemele cu procesoare pe 32 de biți ARCv2.
    • Pentru sistemele cu arhitectură ARM pe 32 de biți, a fost implementat suportul pentru compilarea nucleului cu compilatorul Clang cu modul de protecție CFI (Control Flow Integrity) activat, care blochează încălcările ordinii normale de executare (control flow) cauzate de exploatări care modifică pointerii pe funcții stocați în memorie.
    • A fost adăugată posibilitatea de reflecție directă prin mmap() a buferilor circulare de urmărire pentru a transmite conținutul lor în spațiul utilizatorului fără copiere suplimentară.
    • A fost adăugat apelul de sistem „mseal”, care permite proceselor să impună blocarea modificării anumitor părți ale spațiului lor de adresare. În practică, noul apel de sistem este planificat să fie utilizat în browserul Chrome pentru a întări izolarea sandbox.
    • Pentru subarhitectura x32, care oferă un ABI hibrid x86_64, permițând utilizarea modelului de adresare pe 32 de biți pe sisteme pe 64 de biți (procesorul funcționează în modul pe 64 de biți, dar utilizează pointeri și operații aritmetice pe 32 de biți), a fost adăugat suport pentru mecanismul Shadow Stack, care permite blocarea activității multor exploatări, utilizând capacitățile hardware ale procesoarelor Intel pentru a proteja împotriva înlocuirii adresei de returnare din funcție în cazul unui overflow de buffer în stivă.
    • Pe sistemele cu arhitectură ARM64, în apelul de sistem userfaultfd(), care permite crearea de gestionari pentru accesările paginilor de memorie nealocate (page faults) în spațiul utilizatorului, au fost implementate funcționalități legate de protecția împotriva scrierii în zonele de memorie și elementele din tabela de pagini de memorie.
    • Codul pentru suportul procesoarelor Alpha 21164 (EV5) și seria anterioară a fost eliminat. Menținerea codului pentru aceste procesoare a fost complicată din cauza lipsei accesului la memorie la nivel de byte individual. Alpha a fost prima arhitectură pe care a fost portat nucleul Linux, disponibil inițial doar pentru sistemele x86.
  • Virtualizare și securitate
    • S-a adăugat suport pentru schimbul de date criptate cu dispozitivele TPM (Trusted Platform Module) și pentru verificarea integrității tranzacțiilor.
    • În modulul LSM Landlock, care permite restricționarea interacțiunii unui grup de procese cu mediul extern, a fost adăugată capacitatea de a aplica reguli pentru a restricționa accesul la apelurile ioctl().
    • A fost propusă o opțiune init_mlocked_on_free, disponibilă la încărcare, care asigură ștergerea conținutului memoriei protejate de ejectare în fișierul de swap prin apelul mlock(), dacă această memorie este eliberată fără deblocare prin apelul munlock(). Utilizarea acestei opțiuni permite eliminarea rămânerii cheilor criptografice în memorie în cazul unei închideri necontrolate a aplicației care le gestionează.
    • În subsistemul crypto, s-a accelerat efectuarea operațiunilor de criptare a discurilor folosind algoritmul AES-XTS pe sistemele x86_64 cu procesoare Intel și AMD care suportă extensiile VAES, AVX2, VPCLMULQDQ, AVX10 sau AVX512.
    • Posibilitatea de a colecta statistici despre utilizarea subsistemului criptografic al nucleului (CONFIG_CRYPTO_STATS) a fost eliminată. Această funcționalitate nu era utilizată în practică și cauza o scădere semnificativă a performanței, precum și o sarcină suplimentară considerabilă asupra întreținerii.
  • Subsystema de rețea
    • Performanța operațiunilor de trimitere a datelor în modul zero-copy utilizând subsistemul io_uring a fost semnificativ îmbunătățită. A fost adăugată posibilitatea de a combina („bundle”) mai multe buffer-uri pentru operațiunile de trimitere și primire a datelor.
    • Codul pentru colectarea gunoiului a fost rescris, utilizat atunci când se trimit descriptorii de fișiere prin intermediul Unix-socket-urilor cu ajutorul mesajelor SCM_RIGHTS. Această modificare permite rezolvarea problemei acumulării contorilor de referință ciclici.
    • A fost adăugată posibilitatea de a seta filtre pentru protocolul PFCP (Packet Forwarding Control Protocol), utilizat în rețelele 4G și 5G.
    • A fost adătat suport pentru opțiunea de socketuri de rețea SO_PEEK_OFF, care, similar cu aceeași opțiune pentru socketurile Unix, permite determinarea decalajului de date din coadă, utilizat de apelul sistemului recv atunci când se specifică flag-ul MSG_PEEK (marchează datele ca nelecturate și vor fi returnate din nou la următorul apel recv).
    • În subsistemul io_uring a fost adăugat suport pentru operația IORING_CQE_F_SOCK_NONEMPTY, permițând identificarea existenței solicitărilor de conectare pe un socket de rețea, care așteaptă procesare.
    • A fost propusă implementarea tehnologiei PoE (Power over Ethernet), bazată pe codul anterior disponibil pentru suportul PoDL (Power over Data Line) și compatibilă cu controlerele PoE Microchip PD692x0 și TI TPS23881.
    • Pentru protocoalele TCP, DCCP și MPTC a fost adăugat suport pentru mecanismul rstreason, care permite determinarea motivului pentru trimiterea pachetelor RST (de exemplu, NO_SOCKET).
  • Echipament
    • A fost inclus driverul panthor pentru a zecea generație de GPU-uri Mali (G310, G510, G710), care utilizează tehnologia CSF (Command Stream Frontend), mutând pe partea de firmware unele funcții ale driverului pentru a reduce încărcătura pe CPU și oferind un nou model de organizare a execuției pe GPU. Modificările pentru suportul noului driver au fost, de asemenea, adoptate în Mesa și incluse în driverul Gallium panfrost pentru GPU-uri Mali.
    • În driverul i915 au fost adăugate identificatori PCI pentru noile plăci grafice discrete Intel Arc (DG2/Alchemist).
    • Se continuă lucrările la driverul drm (Direct Rendering Manager) Xe pentru GPU-uri bazate pe arhitectura Intel Xe, utilizată în plăcile grafice Intel din familia Arc și grafica integrată, începând cu procesoarele Tiger Lake. A fost adăugat suport pentru CPU Arrow Lake H. Se continuă implementarea suportului pentru procesoarele Lunar Lake. A fost adătat suport inițial pentru mecanismul SR-IOV (Single Root I/O Virtualization).
    • În driverul AMDGPU a fost adăugat suport pentru SMU 14.0 (System Management Unit). A fost adăugată posibilitatea utilizării noilor GPU-uri AMD pe sistemele cu arhitectură RISC-V.
    • A fost adătat driverul pentru acceleratorul de operații criptografice Tegra Security Engine, care poate fi utilizat pentru accelerarea AES și a diferitelor algoritmi de hashing.
    • A fost adătat suport pentru panourile de ecran LG SW43408, Innolux G121XCE-L01 LVDS, RK3326 GameForce Chi, Crystal Clear CMT430B19N00, POWERTIP PH128800T006-ZHC01, Startek KD050HDFIA020-C020A, Pixel 3a, Khadas TS050 V2, Raydium RM69380, BOE NT116WHM-N44, CMN N116BCA-EA1 și AUO B120XAN01.0.
    • A fost adăugat suport pentru subsistemul audio al laptopurilor Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X și ASUS Zenbook 2024 HN7306. A fost adăugat suport pentru plăcile audio externe Vocaster One și Vocaster Two. A fost adăugat driver pentru amplificatoarele NAU8325 de la Nuvoton Technology.
    • În driverul HID-Steam a fost adăugat suport pentru IMU (Unitatea de Măsurare Inerțială) a controlerului de joc Steam Deck, permițând utilizarea unui nod evdev separat pentru accesarea datelor giroscopului și accelerometrului.
    • Au fost incluse modificări pentru suportul ARM SoC Snapdragon X Elite, care utilizează propriul CPU Qualcomm Oryon cu 12 nuclee și GPU Qualcomm Adreno. Chipul este destinat utilizării în laptopuri și PC-uri și depășește în multe teste de performanță chipurile Apple M3 și Intel Core Ultra 155H.
    • A fost adăugat suport pentru plăci ARM, SoC și dispozitive: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 China, Motorola Moto G, RK3326 GameForce Chi, Anbernic RG35XX (Plus/H/2024), Airoha EN7581, Radxa ROCK 3C, ArmSom Sige7, Tanix TX1, Toradex Colibri iMX8DX, Renesas RZ/V2H, Forlinx OK3588-C, Protonic MECSBC, Emcraft Systems NavQ+, NXP S32G3, Wolfvision pf5, Amlogic A4/A5, ASUS RT-AC3200, ASUS RT-AC5300, ASrock E3C256D4I, IBM system1 BMC, Meta Harma BMC(AST2600), ASRock X570D4U BMC, Au-Zone Maivin AI Vision Starter Kit.
    • A fost adăugat suport pentru plăcile Milk-V Mars, care utilizează SoC Starfive JH7110 bazat pe arhitectura RISC-V.

Între timp, Fundația Software-ului Liber din America Latină a creat o variantă complet liberă a nucleului 6.10 — Linux-libre 6.10-gnu, curățată de elementele de firmware și driver care conțin componente sau segmente de cod ne-liberate, având domeniul de aplicare restricționat de producător. În versiunea 6.10 a fost actualizat codul de curățare a bloburilor în driverii Intel i915, rtl8xxxu, qla2xxx și QCAI sahara. A fost realizată curățarea numelui bloburilor în fișierele dts (devicetree) pentru arhitectura Aarch64. Au fost curățate bloburile din fișierele noi, adăugate în driverii Adreno, Intel IPU3 și PRUEth. A fost realizată curățarea noilor driveri Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID și pcm6240. A fost oprită curățarea driverului USB Prism2.5/3 USB, care a fost eliminat din nucleu.

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