Lansarea nucleului Linux 5.12.

După două luni de dezvoltare, Linus Torvalds a lansat versiunea nucleului Linux 5.12. Printre cele mai notabile schimbări se numără: suportul pentru dispozitivele de bloc zonate în Btrfs, posibilitatea de a mapa identificatorii utilizatorilor pentru sistemele de fișiere, eliminarea arhitecturilor ARM învechite, modul de scriere "nerăbdătoare" în NFS, mecanismul LOOKUP_CACHED pentru determinarea căilor fișierelor din cache, suportul pentru instrucțiuni atomice în BPF, sistemul de depanare KFENCE pentru identificarea erorilor de memorie, un mod de poll NAPI care funcționează în thread-ul nucleului în stiva de rețea, hipervizorul ACRN, posibilitatea de a schimba dinamic modelul de preemptare în programatorul de sarcini și suportul pentru optimizările LTO în compilarea cu Clang.

În noua versiune s-au adoptat 14170 (în versiunea anterioară 15480) de corecturi de la 1946 (1991) de dezvoltatori, dimensiunea patch-ului fiind de 38 MB (modificările au afectat 12102 (12090) fișiere, au fost adăugate 538599 (868025) linii de cod, iar 333377 (261456) linii au fost șterse). Aproximativ 43% din toate modificările din 5.12 se referă la driverele dispozitivelor, în jur de 17% din modificări sunt legate de actualizarea codului specific arhitecturilor hardware, 12% se referă la stiva de rețea, 5% la sistemele de fișiere și 4% la subsistemele interne ale nucleului.

Noutăți principale:

  • Subsistemul de disc, I/O și sistemele de fișiere
    • A fost implementată posibilitatea de a mapa identificatorii utilizatorilor pentru sistemele de fișiere montate (fișierele unui utilizator de pe o partiție străină pot fi asociate cu alt utilizator în sistemul curent). Mapping-ul este suportat pentru sistemele de fișiere FAT, ext4 și XFS. Funcționalitatea propusă permite simplificarea partajării fișierelor între diferiți utilizatori și pe diferite computere, inclusiv mapping-ul va fi aplicat în mecanismul directorilor acasă portabili systemd-homed, oferind utilizatorilor posibilitatea de a muta directoarele lor acasă pe unități externe și de a le folosi pe diferite computere, unde alinierea identificatorilor utilizatorilor nu coincide. O altă utilizare utilă este organizarea accesului partajat la fișiere de pe un gazdă externă, fără a modifica efectiv datele despre proprietarii fișierelor în sistemul de fișiere.
    • În kernel au fost acceptate patch-uri LOOKUP_CACHED, care permit executarea operațiunilor de determinare a căii fișierului din spațiul utilizatorului fără blocare, doar pe baza datelor disponibile în cache. Modului LOOKUP_CACHED se activează în apelul openat2() prin transmiterea flag-ului RESOLVE_CACHED, în care datele sunt returnate doar din cache, iar dacă determinarea căii necesită accesul la stocare, se returnează eroarea EAGAIN.
    • Sistemul de fișiere Btrfs a introdus suport inițial pentru dispozitivele de bloc zonate (dispozitive pe discuri magnetice sau NVMe SSD, unde spațiul de stocare este împărțit în zone, formând grupuri de blocuri sau sectoare, în care se permite doar adăugarea secvențială de date prin actualizarea întregului grup de blocuri). În modul de lectură, a fost implementat suport pentru blocuri cu metadate și date, având dimensiuni mai mici decât pagina (subpage).
    • În sistemul de fișiere F2FS a fost adăugată posibilitatea de a alege algoritmul și nivelul de compresie. A fost adăugat suport pentru un nivel înalt de compresie pentru algoritmul LZ4. A fost implementată opțiunea de montare checkpoint_merge.
    • A fost implementată o nouă comandă ioctl FS_IOC_READ_VERITY_METADATA pentru citirea metadatelor din fișierele protejate cu fs-verity.
    • În clientul NFS a fost implementat modul de scriere „nerăbdătoare” (writes=eager), în care operațiile de scriere în fișier sunt transmise imediat pe server, ocolind cache-ul de pagină. Acest modul reduce consumul de memorie, asigură obținerea instantanee a informațiilor despre finalizarea spațiului liber în FS și în anumite situații oferă posibilitatea de a îmbunătăți performanța.
    • În CIFS (SMB) au fost adăugate noi opțiuni de montare: acregmax pentru gestionarea cache-ului fișierelor și acdirmax pentru gestionarea cache-ului metadatelor directoarelor.
    • În XFS a fost activat modul de verificare multiplă a cotelor, a fost accelerată execuția fsync, și s-a pregătit codul growfs pentru implementarea funcției de reducere a dimensiunii FS.
  • Memorie și servicii de sistem
    • A fost adăugată subsistemul DTMP (Dynamic Thermal Power Management), care permite reglarea dinamică a consumului de energie al diferitelor dispozitive pe baza limitărilor generale de temperatură stabilite.
    • A fost implementată posibilitatea de compilare a nucleului cu compilatorul Clang, inclusiv optimizări în etapa de legare (LTO, Link Time Optimization). Optimizarile LTO se deosebesc prin luarea în considerare a stării tuturor fișierelor implicate în procesul de compilare, în timp ce modurile tradiționale de optimizare optimizează fiecare fișier în parte și nu iau în calcul condițiile apelurilor funcțiilor definite în alte fișiere. De exemplu, în cazul LTO, pentru funcțiile din alte fișiere este posibilă desfășurarea inline, codul neutilizat nu este inclus în fișierul executabil, se realizează verificări de tip și o optimizare generală la nivel de proiect în ansamblu. Suportul LTO este momentan limitat la arhitecturile x86 și ARM64.
    • A fost oferită posibilitatea de a selecta modurile de preemțiune (PREEMPT) în planificatorul de sarcini în etapa de încărcare (preempt=none/voluntary/full) sau în timpul execuției prin debugfs (/debug/sched_debug), în cazul în care la compilarea nucleului sunt indicate setările PREEMPT_DYNAMIC. Anterior, modul de preemțiune putea fi setat doar la nivel de parametrii de compilare. Această modificare permite distribuțiilor să livreze nuclee cu modul PREEMPT activat, care oferă întârzieri minime pentru interfețele desktop, în detrimentul unei scăderi neglijabile a lățimii de bandă, și, dacă este necesar, să revină la modurile PREEMPT_VOLUNTARY (mod intermediar pentru desktopuri) sau PREEMPT_NONE (care asigură lățime de bandă maximă pentru servere).
    • În subsistemul BPF a fost adăugată suportul pentru operațiuni atomice BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG și BPF_CMPXCHG.
    • Programelor BPF le este oferită acces la datele din stivă prin intermediul pointerilor cu deplasare variabilă. De exemplu, dacă anterior pentru a accesa un tablou în stivă putea fi folosit doar un index constant al unui element, acum se poate folosi unul variabil. Controlul asupra accesului se realizează în cadrul limitelor existente de către verificatorul BPF. Această posibilitate este disponibilă doar programelor privilegiate din cauza temerilor legate de exploatarea vulnerabilităților asociate cu executarea speculativă a codului.
    • A fost adăugată posibilitatea de a atașa programele BPF la „puncte de urmărire bare” (bare tracepoints), nespecificate cu evenimente de urmărire vizibile în spațiul utilizatorului (pentru aceste puncte de urmărire nu se garantează păstrarea ABI).
    • A fost implementat suportul pentru CXL 2.0 (Compute Express Link), utilizat pentru a organiza interacțiunea de mare viteză între CPU și dispozitivele de memorie (permite utilizarea dispozitivelor externe de memorie ca parte a RAM-ului sau a memoriei permanente, ca și cum acea memorie ar fi conectată printr-un controler standard de memorie în CPU).
    • A fost adăugat driverul nvmem pentru a obține date din zonele de memorie rezervate de firmware, care nu sunt accesibile direct pentru Linux (de exemplu, memorie EEPROM, accesibilă fizic doar firmware-ului sau date disponibile doar în stadiile timpurii de boot).
    • Suportul pentru sistemul de profilare „oprofile” a fost eliminat, acesta neavând răspândire semnificativă și fiind înlocuit de un mecanism mai modern, perf.
    • În interfața de intrare/ieșire asincronă io_uring a fost asigurată integrarea cu cgroup, care controlează utilizarea memoriei.
    • Pentru arhitectura RISC-V a fost implementat suportul pentru sistemele NUMA, precum și pentru mecanismele kprobes și uprobes.
    • A fost adăugată posibilitatea de a utiliza apelul de sistem kcmp() independent de funcționalitatea salvării stării proceselor (checkpoint/restore).
    • Macro-urile EXPORT_UNUSED_SYMBOL() și EXPORT_SYMBOL_GPL_FUTURE() au fost eliminate, deoarece nu au fost utilizate în practică de mulți ani.
  • Virtualizare și securitate
    • A fost adăugat mecanismul de protecție KFence (Kernel Electric Fence), care detectează erorile în lucru cu memoria, cum ar fi depășirea limitelor buffer-ului și accesul după eliberarea memoriei. Spre deosebire de mecanismul de depanare KASAN, subsistemul KFence se distinge prin viteză mare de lucru și costuri de supraveghere scăzute, ceea ce permite detectarea erorilor legate de memorie care apar doar pe sistemele funcționale sau în timpul unei utilizări prelungite.
    • A fost adăugat suportul pentru hipervizorul ACRN, scris cu gândul la pregătirea pentru a îndeplini sarcini în timp real și viabilitatea utilizării în sistemele critice. ACRN asigură costuri minime, garantează latențe scăzute și o reacție adecvată în interacțiunea cu hardware-ul. Se suportă virtualizarea resurselor CPU, a intrărilor/ieșirilor, a subsistemului de rețea, a operațiunilor cu grafică și sunet. ACRN poate fi folosit pentru a rula mai multe instanțe izolate. mașini virtuale în unitățile electronice de control, panourile de instrumente, sistemele de informații pentru automobile, dispozitivele IoT de consum și alte tehnici încorporate. ACRN suportă două tipuri de sisteme guest — Service VM privilegiate, care sunt utilizate pentru gestionarea resurselor sistemului (CPU, memorie, input/output etc.), și User VM personalizate, în care pot fi rulate distribuții Linux, Android și Windows.
    • În subsistemul IMA (Integrity Measurement Architecture), care asigură menținerea unei baze de hash pentru verificarea integrității fișierelor și a metadatelor aferente, a apărut posibilitatea de a verifica integritatea datelor nucleului în sine, de exemplu, pentru a urmări modificările regulilor SELinux.
    • Hypervizorul KVM a fost îmbunătățit cu posibilitatea de a intercepta apelurile hypervisor Xen și de a le redirecționa către emulatorul care funcționează în spațiul utilizatorului.
    • A fost adăugată posibilitatea de a utiliza Linux ca mediu rădăcină pentru hypervizorul Hyper-V. Mediu de bază are acces direct la hardware și este folosit pentru a rula sisteme guest (analog cu Dom0 în Xen). Până acum, Hyper-V (Microsoft Hypervisor) accepta Linux doar în medii guest, dar hypervizorul în sine era gestionat dintr-un mediu bazat pe Windows.
    • A fost adăugată suportul pentru criptarea inline pentru cardurile eMMC, care permite utilizarea mecanismelor de criptare încorporate în controllerul de stocare, care efectuează criptarea și decriptarea transparentă a input/output-ului.
    • Subsistemul criptografic a eliminat suportul pentru hash-urile RIPE-MD 128/256/320 și Tiger 128/160/192, care nu erau utilizate în nucleu, precum și pentru cifrarea în flux Salsa20, fiind înlocuită cu algoritmul ChaCha20. Algoritmul blake2 a fost actualizat la implementarea blake2s.
  • Subsystema de rețea
    • A fost adăugată posibilitatea de a muta handler-ul NAPI pentru polling-ul dispozitivelor de rețea într-un fir de execuție separat al nucleului, ceea ce permite îmbunătățirea performanței pentru anumite tipuri de sarcini. Înainte, polling-ul era efectuat în contextul softirq și nu era acoperit de planificatorul de sarcini, ceea ce îngreuna optimizarea fină pentru atingerea unei performanțe maxime. Execuția într-un fir de execuție separat al nucleului permite monitorizarea handler-ului de polling din spațiul utilizatorului, atașarea acestuia la nucleele CPU separate și luarea în considerare la planificarea comutărilor de sarcini. Pentru a activa noul mod în sysfs, a fost propus parametrul /sys/class/net//threaded.
    • A fost continuată integrarea în nucleul MPTCP (MultiPath TCP), o extensie a protocolului TCP pentru a organiza funcționarea conexiunii TCP cu livrarea pachetelor simultan pe mai multe rute prin diferite interfețe de rețea, legate la adrese IP diferite. În noua versiune, a fost adăugată capacitatea de a atașa un priorități anumitor fluxuri, ceea ce permite, de exemplu, organizarea funcționării fluxurilor de rezervă care se activează numai în cazul problemelor cu fluxul principal.
    • În IGMPv3 a fost adăugată suportul pentru mecanismul EHT (Explicit Host Tracking).
    • În mecanismul de filtrare a pachetelor netfilter a fost implementată capacitatea de a deține anumite tabele pentru a obține control exclusiv (de exemplu, un proces de fundal al firewall-ului poate să blocheze anumite tabele, interzicând altora să intervină în ele).
  • Echipament
    • A fost efectuată o curățare a platformelor ARM ieșite din uz și neîntreținute. A fost eliminat codul platformelor efm32, picoxcell, prima2, tango, u300, zx și c6x, precum și driverele asociate acestora.
    • În driverul amdgpu a fost implementată capacitatea de overclocking (OverDrive) pentru plăcile bazate pe GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). A fost adăugat suport pentru formatul pixelilor FP16 pentru DCE (display controller engine) de generația 8 până la 11. Pentru GPU Navy Flounder (Navi 21) și APU Van Gogh a fost implementată capacitatea de resetare a GPU-ului.
    • În driverul i915 pentru plăcile video Intel a fost implementat parametrul i915.mitigations pentru dezactivarea mecanismelor de izolare și protecție în favoarea creșterii performanței. Pentru cipurile începând cu Tiger Lake a fost activat suportul pentru mecanismul VRR (Variable Rate Refresh), care permite schimbarea adaptivă a frecvenței de actualizare a monitoarelor pentru a asigura fluiditate și eliminarea stutter-ului în timpul jocurilor. A fost activat suportul pentru tehnologia Intel Clear Color pentru îmbunătățirea acurateței reproducerii culorilor. A fost adăugat suport pentru DP-HDMI 2.1. A fost implementată capacitatea de control al iluminării panourilor eDP. Pentru GPU Gen9 cu suport LSPCON (Level Shifter and Protocol Converter) a fost activat suportul HDR.
    • În driverul nouveau a fost adăugată suportul inițial pentru GPU NVIDIA bazate pe arhitectura GA100 (Ampere).
    • În driverul msm a fost adăugat suportul pentru GPU Adreno 508, 509 și 512, folosite în cipurile SDM (Snapdragon) 630, 636 și 660.
    • A fost adăugat suport pentru plăcile de sunet Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s și Pioneer DJM-750. A fost adăugat suport pentru subsistemul audio Intel Alder Lake PCH-P. A fost implementat suport pentru simularea software a conectării și deconectării jack-ului audio pentru depanarea handler-elor în spațiul utilizatorului.
    • Suport adăugat pentru consolele de jocuri Nintendo 64, produse între 1996 și 2003 (încercările anterioare de a porta Linux pentru Nintendo 64 nu au fost finalizate și aveau statutul de Vaporware). Motivul creării noului port pentru această platformă învechită, care nu mai este fabricată de aproape două decenii, este dorința de a stimula dezvoltarea emulatorilor și de a simplifica transferul jocurilor.
    • Adăugat driver pentru controlerul de jocuri Sony PlayStation 5 DualSense.
    • Suport adăugat pentru platformele și dispozitivele ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Suport adăugat pentru smartphone-urile Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
    • Adăugat driver bcm-vk pentru plăcile accelerate Broadcom VK (de exemplu, plăcile PCIe Valkyrie și Viper), care pot fi folosite pentru a externaliza pe un dispozitiv separat operațiile de procesare a sunetului, video și imagini, precum și acțiunile legate de criptare.
    • Suport adăugat pentru platforma Lenovo IdeaPad, cu capacitatea de a gestiona încărcarea constantă și iluminarea tastaturii. De asemenea, s-a asigurat suport pentru profilul ACPI al platformei ThinkPad, cu capacitatea de a gestiona modurile de consum energetic. Adăugat driver pentru subsistemul HID al Lenovo ThinkPad X1 Tablet Gen 2.
    • Adăugat driver ov5647 pentru modulul cu cameră pentru Raspberry Pi.
    • Suport adăugat pentru SoC RISC-V FU740 și plăcile HiFive Unleashed. De asemenea, a fost adăugat un nou driver pentru chipul Kendryte K210.

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