Lansarea nucleului Linux 5.17

După două luni de dezvoltare, Linus Torvalds a lansat versiunea kernel-ului Linux 5.17. Cele mai notabile schimbări includ: un nou sistem de gestionare a performanței pentru procesoarele AMD, capacitatea de a realiza mapări recursive ale identificatorilor utilizatorilor în sistemele de fișiere, suport pentru programele BPF compilate portabile, translatorele pentru generarea numerelor pseudo-aleatoare pe algoritmul BLAKE2s, utilitarul RTLA pentru analiza execuției în timp real, un nou backend fscache pentru caching-ul sistemelor de fișiere de rețea, capacitatea de a atașa nume la operațiunile anonime mmap.

Noua versiune include 14.203 corecții din partea a 1.995 de dezvoltatori, dimensiunea patch-ului fiind de 37 MB (modificările au afectat 11.366 de fișiere, 506.043 linii de cod au fost adăugate, iar 250.954 linii au fost eliminate). Aproximativ 44% din toate modificările aduse în 5.17 sunt legate de driverele de dispozitive, aproximativ 16% din modificări se referă la actualizarea codului specific arhitecturilor hardware, 15% sunt legate de stiva de rețea, 4% de sistemele de fișiere și 4% de subsistemele interne ale kernel-ului.

Noile funcționalități din kernel-ul 5.17:

  • Subsistemul de disc, I/O și sistemele de fișiere
    • A fost implementată posibilitatea de mapare înnodată a identificatorilor utilizatorilor în sistemele de fișiere montate, utilizată pentru a potrivi fișierele unui anumit utilizator pe o partiție străină montată cu un alt utilizator din sistemul curent. Funcționalitatea adăugată permite utilizarea recursivă a mapării pe deasupra sistemelor de fișiere pentru care maparea este deja aplicată.
    • Subsistemul fscache a fost complet reîncodat, utilizat pentru a organiza caching-ul în sistemul de fișiere local al datelor transferate prin sistemele de fișiere de rețea. Noua implementare se remarcă printr-o simplificare semnificativă a codului și înlocuirea operațiunilor complicate de planificare și monitorizare a stării obiectelor cu mecanisme mai simple. Suportul pentru noul fscache este implementat în sistemul de fișiere CIFS.
    • În subsistemul de monitorizare a evenimentelor din FS fanotify a fost implementat un nou tip de eveniment FAN_RENAME, care permite captarea simultană a operației de redenumire a fișierelor sau directoarelor (anterior, pentru tratarea redenumirilor erau utilizate două evenimente separate, FAN_MOVED_FROM și FAN_MOVED_TO).
    • În sistemul de fișiere Btrfs au fost optimizate operațiile de jurnalizare și fsync pentru directoare mari, realizate prin copierea doar a cheilor index și reducerea volumului de metadate jurnalizate. Suportul pentru indexare și căutare în funcție de dimensiunea înregistrărilor de spațiu liber a fost asigurat, ceea ce a permis o reducere de aproximativ 30% a întârzierilor și a redus timpul de căutare. S-a permis întreruperea operațiunilor de defragmentare. A fost inclusă posibilitatea de a adăuga dispozitive în timpul dezactivării echilibrării între unități, adică la montarea FS cu opțiunea skip_balance.
    • Un nou sintaxă de montare a sistemului de fișiere Ceph a fost propusă, rezolvând problemele legate de legarea la adresele IP. De asemenea, adreselor IP pentru determinarea serverului acum poate fi folosit identificatorul clusterului (FSID): mount -t ceph user@fsid.fs_name=\/[subdir] mnt -o mon_addr=monip1[:port][\/monip2[:port]]
    • Sistemul de fișiere Ext4 a fost transformat la un nou API pentru montare, care separă etapele de analiză a opțiunilor de montare și configurare a superblock-ului. Suportul pentru opțiunile de montare lazytime și nolazytime a fost retras, acestea fiind adăugate ca o modificare temporară pentru simplificarea conversiei util-linux la utilizarea flag-ului MS_LAZYTIME. A fost adăugată suportul pentru setarea și citirea etichetelor în FS (ioctl FS_IOC_GETFSLABEL și FS_IOC_SETFSLABEL).
    • NFSv4 a adăugat suport pentru operarea în sistemele de fișiere fără distincția între majuscule și minuscule în numele fișierelor și directoarelor. În NFSv4.1+ a fost adăugată suportul pentru determinarea sesiunilor agregate (trunking).
  • Memorie și servicii de sistem
    • A fost adăugat driverul amd-pstate, care oferă gestionarea dinamică a frecvenței pentru a atinge performanța optimă. Driverul suportă CPU și APU AMD începând cu generația Zen 2, dezvoltat împreună cu compania Valve și având ca scop îmbunătățirea eficienței gestionării consumului de energie. Pentru schimbarea adaptivă a frecvenței se utilizează mecanismul CPPC (Collaborative Processor Performance Control), care permite modificarea mai exactă a indicatorilor (fără a fi limitat la trei niveluri de performanță) și o reacție mai rapidă la schimbarea stării, comparativ cu driverele P-state utilizate anterior bazate pe ACPI (CPUFreq).
    • În subsistemul eBPF a fost propus un handler bpf_loop(), care oferă o modalitate alternativă de organizare a ciclicității în programele eBPF, mai rapidă și mai ușor de verificat de către verificator.
    • La un nivel de bază, a fost implementat mecanismul CO-RE (Compile Once — Run Everywhere), care permite compilarea codului programelor eBPF o singură dată și utilizarea unei încărcătoare universale speciale, care adaptează programul încărcat la nucleul curent și la tipurile BTF (BPF Type Format).
    • A fost oferită posibilitatea de a atribui nume zonei de memorie privată anonimă (alocată prin malloc), ceea ce poate simplifica procesul de depanare și optimizarea consumului de memorie în aplicații. Numele sunt atribuite prin prctl cu flag-ul PR_SET_VMA_ANON_NAME și sunt afișate în /proc/pid/maps și /proc/pid/smaps sub forma „[anon:]”.
    • În planificatorul de sarcini a fost asigurat monitorizarea și afișarea în /proc/PID/sched a timpului petrecut de procese în starea de repaus forțat (forced-idle), utilizată, de exemplu, pentru a reduce încărcătura în cazul supraîncălzirii procesorului.
    • A fost adăugat modul gpio-sim, destinat simulării cipurilor GPIO pentru efectuarea testelor.
    • Comenzii „perf ftrace” i-a fost adăugată subcomanda „latency” pentru generarea histogramelor cu informații despre întârzieri.
    • A fost adăugat un set de utilitare „RTLA” pentru analiza funcționării în timp real. Acesta include utilitare precum osnoise (care determină influența sistemului de operare asupra execuției sarcinii) și timerlat (care modifică întârzierile legate de cronometru).
    • A fost integrată a doua serie de patch-uri cu implementarea conceptului de folii de pagină de memorie (page folios), care seamănă cu paginile de memorie unite (compound pages), dar se deosebesc printr-o semantică îmbunătățită și o organizare mai clară a funcționării. Utilizarea foliilor permite accelerarea gestionării memoriei în anumite subsisteme ale nucleului. În patch-urile propuse, a fost finalizată migrarea cache-ului de pagini pentru utilizarea foliilor și a fost adăugată suportul inițial pentru folii în FS XFS.
    • A fost adăugat modul de construcție „make mod2noconfig”, care generează o configurație ce compilează toate subsistemele dezactivate sub formă de module ale nucleului.
    • A fost crescută cerința pentru versiunea LLVM/Clang care poate fi folosită pentru compilarea nucleului. Acum este necesar să se utilizeze cel puțin versiunea 11 de LLVM.
  • Virtualizare și securitate
    • A revised implementation of the RDRAND pseudorandom number generator has been proposed, responsible for the operation of the /dev/random and /dev/urandom devices, noteworthy for transitioning to the use of the BLAKE2s hash function instead of SHA1 for entropy mixing operations. This change has enhanced the security of the pseudorandom number generator by eliminating the problematic SHA1 algorithm and excluding the overwriting of the RNG initialization vector. Since the BLAKE2s algorithm outperforms SHA1 in terms of performance, its application has also positively affected performance.
    • Protection against vulnerabilities in processors caused by speculative execution of instructions after unconditional jumps has been added. The issue arises due to the preemptive processing of instructions immediately following the jump command in memory (SLS, Straight Line Speculation). To enable this protection, a build using GCC 12, which is currently in testing, is required.
    • A reference counting mechanism has been introduced, aimed at reducing the number of errors in reference counting that lead to accessing memory after it has been freed. Currently, this mechanism is limited to the network subsystem, but it may be adapted for other parts of the kernel in the future.
    • Enhanced checks for new entries in the process's memory page table have been implemented, allowing for the detection of certain types of corruption and stopping the system to block attacks at an early stage.
    • The ability for the kernel to unpack kernel modules directly, rather than through a user-space handler, has been added, which allows the use of the LSM module LoadPin to ensure that kernel modules are loaded in memory from a verified storage device.
    • A build with the flag '-Wcast-function-type' has been provided, which includes warnings about function pointers being cast to incompatible types.
    • A pvUSB virtual host driver for the Xen hypervisor has been added, providing access to USB devices passed into guest systems (allowing guest systems to access physical USB devices assigned to them).
    • A fost admodulat un modul care permite interacțiunea prin Wi-Fi cu subsistemul IME (Intel Management Engine), care este inclus în majoritatea plăcilor de bază moderne cu procesoare Intel și este realizat sub formă de microprocesor separat, care funcționează independent de CPU.
    • Pentru arhitectura ARM64, a fost implementat suport pentru instrumentul de depanare KCSAN (Kernel Concurrency Sanitizer), destinat identificării dinamice a stărilor de condiție competițională în cadrul kernel-ului.
    • Pentru sistemele ARM pe 32 de biți, a fost adăugată capacitatea de a aplica mecanismul KFENCE pentru identificarea erorilor în gestionarea memoriei.
    • În hipervizorul KVM a fost adăugat suport pentru instrucțiunile AMX (Advanced Matrix Extensions), implementate în viitoarele procesoare server Intel Xeon Scalable.
  • Subsystema de rețea
    • A fost adăugat suport pentru offloading-ul operațiunilor legate de managementul traficului către dispozitivele de rețea.
    • A fost adăugată posibilitatea de a utiliza protocolul MCTP (Management Component Transport Protocol) peste dispozitive cu interfață serială. MCTP poate fi folosit pentru interacțiunea controlerelor de management și dispozitivelor legate de acestea (procesoare gazdă, dispozitive periferice etc.).
    • A fost realizată optimizarea stivei TCP, de exemplu, pentru îmbunătățirea performanței apelurilor recvmsg, fiind implementată eliberarea întârziată a bufferelor de socket.
    • La nivelul privilegiilor CAP_NET_RAW a fost autorizată configurarea prin funcția setsockopt a modurilor SO_PRIORITY și SO_MARK.
    • Pentru IPv4, a fost permisă atașarea de socketuri raw nu la adresele IP locale, folosind opțiunile IP_FREEBIND și IP_TRANSPARENT.
    • A fost adăugat sysctl arp_missed_max pentru configurarea pragului de erori în timpul verificării de către monitorul ARP, după care interfața de rețea este trecută în stare oprită.
    • A fost oferită posibilitatea de a configura valori sysctl individuale pentru min_pmtu și mtu_expires pentru spațiile de nume de rețea.
    • În API-ul ethtool a fost adăugată posibilitatea de a seta și determina dimensiunile bufferelor pentru pachetele de intrare și ieșire.
    • În Netfilter a fost adăugată suportul pentru filtrarea traficului pppoe de tranzit în podul de rețea.
    • În modulul ksmbd cu implementarea sistemului de fișiere, utilizând protocolul SMB3, a fost adăugată suportul pentru schimbul de chei, utilizând portul de rețea 445 pentru smbdirect și a fost adăugat suportul pentru parametrul „smb2 max credit. server, utilizând protocolul SMB3, a fost adăugată suportul pentru schimbul de chei, a fost folosit portul de rețea 445 pentru smbdirect și a fost adăugat suportul pentru parametrul „smb2 max credit.
  • Echipament
    • În subsistemul drm (Direct Rendering Manager) și în driverul i915 a fost adăugată suport pentru ecrane ce afișează informații confidențiale, de exemplu, unele laptopuri sunt echipate cu ecrane ce au un mod încorporat de vizualizare confidențială, care dificultează vizualizarea din exterior. Schimbările adăugate permit conectarea driverelor specializate pentru aceste ecrane și gestionarea modurilor de vizualizare confidențială prin stabilirea proprietăților în driverele KMS obișnuite.
    • În driverul amdgpu a fost activată suportul pentru tehnologia de depanare STB (Smart Trace Buffer) pentru toate GPU-urile AMD care o susțin. STB simplifică analiza erorilor și identificarea sursei problemelor prin salvarea într-un buffer special a informațiilor despre funcțiile executate înainte de ultima eroare.
    • În driverul i915 a fost adăugată suport pentru cipurile Intel Raptor Lake S și a fost activată în mod implicit suportul pentru subsistemul grafic al cipurilor Intel Alder Lake P. S-a oferit posibilitatea de a gestiona iluminarea ecranului prin interfața DPCD VESA.
    • În driverelor fbcon/fbdev a fost restaurată suportul pentru accelerarea hardware-ului în consolă.
    • Continuarea integrării modificărilor pentru suportul cipurilor Apple M1. S-a implementat posibilitatea de a utiliza driverul simpledrm pe sistemele cu cip Apple M1 pentru a reda prin framebuffer-ul furnizat de firmware.
    • A fost adăugat suport pentru ARM SoC, dispozitive și plăci Snapdragon 7c, 845 și 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (utilizat în routere Wi-Fi), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
    • A fost adăugat suport pentru procesoarele ARM Cortex-M55 și Cortex-M33.
    • A fost adăugat suport pentru dispozitivele bazate pe CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • A fost adăugat suport pentru SoC StarFive JH7100 bazat pe arhitectura RISC-V.
    • A fost adăugat driverul lenovo-yogabook-wmi pentru gestionarea iluminării tastaturii și accesului la diverse senzori în Lenovo Yoga Book.
    • A fost adăugat driverul asus_wmi_sensors pentru accesul la senzori utilizați pe plăcile de bază Asus X370, X470, B450, B550 și X399 din baza procesorului AMD Ryzen.
    • A fost adăugat driverul x86-android-tablets pentru tabletele bazate pe arhitectura x86, livrate cu platforma Android.
    • A fost adăugat suport pentru ecranele tactile TrekStor SurfTab duo W1 și stiloul electronic pentru tabletele Chuwi Hi10 Plus și Pro.
    • În driverele pentru SoC Tegra 20/30 s-a adăugat suport pentru gestionarea puterii și tensiunii. S-a asigurat posibilitatea de bootare pe dispozitivele vechi de 32 de biți bazate pe SoC Tegra, cum ar fi ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 și Pad TF300TG.
    • Au fost adăugate drivere pentru computerele industriale Siemens.
    • A fost adăugat suport pentru panourile LCD Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA și Team Source Display TST043015CMHX.
    • A fost adăugat suport pentru sistemele audio și codec-urile AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, sistemele Intel folosind NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Problemele cu audio HD Tegra194 au fost rezolvate. A fost adăugat suport HDA pentru codec-urile CS35L41. Suportul pentru sistemele audio a fost îmbunătățit pentru laptopurile Lenovo și HP, precum și pentru plăcile de bază Gigabyte.

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