Vydanie jadra Linux 7.0

Po dvoch mesiacoch vývoja vydal Linus Torvalds jadro. Linux 7.0. Medzi najvýznamnejšie zmeny patria: pravidlá pre používanie AI asistentov, presun Rustu do jadra jadra, zlepšenie výkonu swapu, štandardné povolenie režimu PREEMPT_LAZY, podpora filtrov pre operácie io_uring, nový súborový systém Nullfs, framework fserror, nástroje na monitorovanie XFS, podpora premapovania v Btrfs, štandardné povolenie NFS 4.1, integrácia postkvantového kryptografického algoritmu ML-DSA, aktivácia AccECN v sieťovom subsystéme a počiatočná podpora pre WiFi 8.

Číslo 7.0 bolo priradené, pretože vetva 6.x nahromadila dostatok vydaní, ktoré oprávňovali zmenu prvej číslice čísla verzie (verzia 6.0 bola pôvodne vydaná po verzii 5.19). Zmena číslovania sa vykonala z estetických dôvodov a je formálnym krokom na zmiernenie nepohodlia spôsobeného nahromadením veľkého počtu vydaní v sérii.

Nová verzia obsahuje 15 624 opráv od 2 477 vývojárov s veľkosťou záplaty 56 MB (zmeny ovplyvnili 18 053 ​​súborov, pridali 704 060 riadkov kódu a odstránili 278 132 riadkov). Predchádzajúce vydanie obsahovalo 15 657 opráv od 2 237 vývojárov s veľkosťou záplaty 52 MB. Približne 51 % všetkých zmien vo verzii 7.0 sa týka ovládačov zariadení, približne 11 % zmien sa týka aktualizácií kódu špecifického pre hardvérové ​​architektúry, 14 % sa týka sieťového zásobníka, 5 % sa týka súborových systémov a 3 % sa týkajú interných subsystémov jadra.

Hlavné nové funkcie v jadre 7.0 (1, 2, 3):

  • Diskový subsystém, I/O a súborové systémy
    • Bola implementovaná infraštruktúra fserror a bolo pridané API na získavanie informácií o chybách I/O a poškodení metadát pri práci so súbormi. Táto infraštruktúra zjednocuje prenos informácií o chybách do používateľského priestoru naprieč súborovými systémami prostredníctvom mechanizmu fsnotify.
    • XFS bol vylepšený o nové možnosti monitorovania stavu súborového systému z používateľského priestoru. Zavádza sa operácia ioctl XFS_IOC_HEALTH_MONITOR, ktorá vracia deskriptor súboru, ktorý možno použiť na získanie informácií o zlyhaniach súvisiacich s poškodením metadát alebo chybami I/O, ako aj na monitorovanie zmien stavu súborového systému, ako je odpojenie a vypnutie. Okrem toho sa zavádza proces na pozadí spravovaný systémom d, xfs_healer, ktorý spracováva udalosti stavu súborového systému z používateľského priestoru a v prípade potreby automaticky spúšťa procedúry obnovy.
    • Súborový systém Btrfs pridal experimentálnu podporu pre štruktúru „premapovaného stromu“, ktorá sa v budúcnosti môže použiť ako medzivrstva počas I/O operácií. Táto nová funkcia v podstate ukladá staré a nové adresy údajov v dodatočnej štruktúre „premapovaného stromu“ po presunutí údajov na disk namiesto aktualizácie všetkých súvisiacich štruktúr. Tieto adresy sa potom pri prístupe k údajom nahradia. Tento nový prístup je propagovaný ako spoľahlivejší a flexibilnejší a tiež zjednoduší budúce rozširovanie funkčnosti Btrfs.
    • Btrfs implementuje podporu pre priamy I/O v situáciách, keď veľkosť bloku presahuje veľkosť pamäťovej stránky systému.
    • Súčasťou je nový súborový systém „Nullfs“, ktorý možno použiť ako stub pre koreňový súborový systém. Súborový systém Nullfs je vždy prázdny, neobsahuje žiadne údaje a nepodporuje úpravy. Účelom systému Nullfs je slúžiť ako počiatočný súborový systém na zjednodušenie procesu zavádzania systému. Ostatné súborové systémy sa potom pripoja na Nullfs a systémové volanie pivot_root() sa používa na prepnutie koreňového súborového systému, namiesto vymazania obsahu initramfs a použitia priradeného koreňového súborového systému.
    • Bola implementovaná aktualizácia informácií o čase úpravy súboru v neblokujúcom režime. Predtým volanie funkcie file_update_time_flags() s príznakom IOCB_NOWAIT vracalo chybu „-EAGAIN“, čo bránilo použitiu operácií priameho zápisu v neblokujúcom režime.
    • Podpora prenájmu notifikácií bola v súborových systémoch presunutá do samostatnej možnosti. Tento mechanizmus už nie je štandardne povolený kvôli problémom so súborovými systémami, ktoré naň pôvodne neboli navrhnuté. Napríklad 9p a cephfs ho nepodporujú.
    • Systém EROFS (Extendable Read-Only File System), určený na použitie na oddieloch určených len na čítanie, štandardne používa kompresný algoritmus LZMA. DEFLATE a Zstandard, ktoré už nie sú označené ako experimentálne, sú voliteľne dostupné. Položky vyrovnávacej pamäte stránok sú teraz zdieľané medzi identickými súbormi v samostatných súborových systémoch EROFS.
    • Režim laptop_mode, ktorý šetrí energiu odložením a konsolidáciou zápisov na pevný disk, čím sa predĺži čas spánku disku a zníži počet prebudení, bol odstránený. Tento režim už nie je relevantný, pretože pevné disky boli v moderných mobilných zariadeniach nahradené diskami SSD.
    • Súborový systém F2FS bol migrovaný na používanie veľkých portfólií pamäťových stránok.
    • Práca na ovládači NTFS3, ktorý vyvinula spoločnosť Paragon Software, bola obnovená. Bola pridaná podpora pre operácie so súbormi založené na iomap, boli implementované možnosti SEEK_DATA/SEEK_HOLE v llseek a bol pridaný režim delalloc pre oneskorenú alokáciu blokov. Medzitým, vo februári, mailing list vývojárov jadra schválil zahrnutie novej implementácie NTFS, ntfsplus, ktorá má nahradiť NTFS3, do budúcej verzie jadra.
    • Predvolene je počas zostavovania povolený protokol NFS verzie 4.1 (CONFIG_NFS_V4_1). Exporty NFS špecializovaných pseudosúborových systémov, ako sú pidfs a nsfs, sú blokované. NFSD implementuje experimentálnu funkciu na používanie POSIX ACL a pridáva podporu pre dynamickú zmenu fondu vlákien na základe zaťaženia.
  • Pamäťové a systémové služby
    • Boli schválené oficiálne pravidlá pre používanie asistentov umelej inteligencie a zahrnutie automaticky generovaného obsahu do jadra. Pri odosielaní vygenerovaného kódu je potrebné ho označiť tagom „Asistované“ s uvedením použitého asistenta umelej inteligencie. Asistenti umelej inteligencie majú zakázané pridávať tag „Podpísané“ – osoba odosielajúca záplatu sa považuje za jej autora, je zodpovedná za odoslanú zmenu a ručí za jej kvalitu. Vývojári sú povinní manuálne skontrolovať kód vygenerovaný umelou inteligenciou a overiť, či výsledok spĺňa licenčné požiadavky.
    • Podpora Rustu bola presunutá z experimentálnych funkcií do základných funkcií jadra. Podpora Rustu nie je štandardne povolená a neobsahuje Rust ako povinnú závislosť pri zostavovaní jadra.
    • Mechanizmus Swap Table bol integrovaný do jadra, čím sa zlepšil výkon swapu. Toto zlepšenie sa dosiahlo znížením konfliktov vo vyrovnávacej pamäti swapu, efektívnejším vyhľadávaním vo vyrovnávacej pamäti a znížením fragmentácie. Namiesto backendu XArray sa na ukladanie do vyrovnávacej pamäte swapu používa backend založený na Swap Table, čo viedlo k 22 % nárastu počtu spracovaných požiadaviek v redis-benchmarku s BGSAVE.
    • Bola pridaná podpora pre rozšírenie Thread Safety Analysis, ktoré bolo predstavené v Clang 22 a umožňuje detekciu potenciálnych súbehov a chýb spôsobených nesprávnym získaním zámkov počas kompilácie. Rozšírenie ponúka sériu atribútov, ako napríklad GUARDED_BY(…), REQUIRES(…), RELEASE(…) a ACQUIRE(…), ktoré umožňujú označiť funkcie pokryté zámkami a oddeliť rozsahy zámkov (definovať kontext). Overenie správneho použitia synchronizačných primitív, ako sú mutexy, počas kompilácie sa vykonáva na základe aktivity alebo neaktivity priradeného kontextu.
    • Príznak OPEN_TREE_NAMESPACE bol pridaný do systémového volania open_tree, aby sa zjednodušilo nastavenie izolovaných kontajnerov a zrýchlilo spustenie kontajnerov na systémoch s veľkým počtom bodov pripojenia. Podobne ako OPEN_TREE_CLONE, nový príznak kopíruje iba zadaný strom pripojenia, ale namiesto lokálneho deskriptora súboru vracia deskriptor súboru v novom mennom priestore bodu pripojenia, v ktorom je skopírovaný strom pripojený cez kópiu skutočného koreňového súborového systému. Príznak OPEN_TREE_NAMESPACE je užitočný, aby sa zabránilo samostatnému vykonávaniu operácií unshare(CLONE_NEWNS) a pivot_root() používaných počas vytvárania kontajnera.
    • Do systémového volania rseq bol pridaný mechanizmus predĺženia časového úseku, ktorý umožňuje alokovať dodatočný čas CPU pre neprerušené vykonávanie kritickej sekcie. Cieľom je zabrániť plánovaču úloh v prerušení kritickej sekcie s existujúcim zámkom, čo by viedlo k prenosu riadenia na iné vlákna používajúce zdroj, zatiaľ čo zámok zostáva. Predĺženie časového úseku sa vykonáva bez dodatočných režijných nákladov, ale aj bez prísnych záruk, ktoré poskytuje úplná kontrola priorít.
    • Pre architektúry arm64, loongarch, powerpc, riscv, s390 a x86 bol predvolený režim preempcie plánovača zmenený z PREEMPT_NONE na PREEMPT_LAZY. Počet možných režimov bol znížený zo štyroch na dva: PREEMPT_FULL a PREEMPT_LAZY (režimy PREEMPT_NONE a PREEMPT_VOLUNTARY sú zachované iba pre architektúry, ktoré nepodporujú PREEMPT_FULL a PREEMPT_LAZY). Režim PREEMPT_LAZY používa model úplnej preempcie (PREEMPT_FULL) pre úlohy v reálnom čase (RR/FIFO/DEADLINE), ale oneskoruje preempciu bežných úloh (SCHED_NORMAL) až do hranice ticku. Zavedené oneskorenie znižuje počet vyradení držiteľov zámkov, čo umožňuje priblížiť sa k výkonu konfigurácií využívajúcich model dobrovoľnej preempcie, t. j. PREEMPT_LAZY umožňuje zachovať plné možnosti preempcie pre úlohy v reálnom čase, ale minimalizuje stratu výkonu pre bežné úlohy.

      Povolenie PREEMPT_LAZY viedlo k vážnemu poklesu výkonu PostgreSQL na systémoch ARM64 o polovicu. Na riešenie tohto zníženia výkonu sa vývojárom PostgreSQL odporúča povoliť možnosť PR_RSEQ_SLICE_EXTENSION, aby sa znížila pravdepodobnosť vyradenia držiteľa zámku.

    • Pokračovanie migrácie zmien z verzie Rust pre branchLinuxSúvisí s používaním Rustu ako druhého jazyka na vývoj ovládačov a modulov jadra. Vďaka predtým integrovanej knižnici „syn“, ktorá zjednodušuje písanie zložitých makier, sme dokázali zmenšiť veľkosť kódu Rust v jadre zjednodušením definícií existujúcich procedurálnych makier. Možnosti jadra, makier a knižníc pin-init boli rozšírené.
    • Asynchrónny I/O systém io_uring má teraz možnosť používať nekruhové fronty na odosielanie, ktoré sa efektívnejšie ukladajú do vyrovnávacej pamäte v situáciách, keď sa požiadavka dokončí pred návratom systémového volania.
    • V subsystéme eBPF mechanizmus BTF (BPF Type Format), ktorý poskytuje informácie o kontrole typov v pseudokóde BPF, používa binárne vyhľadávanie na nájdenie ladiacich informácií, čím sa zvyšuje efektivita načítavania programov BPF. eBPF teraz podporuje implicitné argumenty pri volaní kfunc (funkcie jadra dostupné na použitie v programoch BPF), definované príznakom KF_IMPLICIT_ARGS.
    • Kód podporujúci počiatočný RAM disk (initrd) založený na linuxrc, ktorý bol dlho zastaraný, bol odstránený. Zostávajúce implementácie initrd sú naplánované na odstránenie v roku 2027. Namiesto initrd by sa mal používať Initramfs (rozdiel je v tom, že initrd umiestni počiatočné bootovacie prostredie do obrazu disku, zatiaľ čo initramfs ho umiestni do súborového systému).
    • Blokové zariadenie zram, používané na komprimované swapovacie úložisko v pamäti, zmenilo logiku spracovania komprimovaných pamäťových stránok pri voliteľnom presune dát do trvalého úložiska, keď je dostupná RAM plná. Predtým boli pamäťové stránky dekomprimované pred zápisom do fyzického úložiska, ale teraz sú uložené v komprimovanej forme, čo znižuje zaťaženie CPU a šetrí energiu počas prevádzky na batériu.
    • Nástroj timerlat, určený na meranie oneskorení pri spustení plánovača úloh, bol aktualizovaný o možnosť „--bpf-action“ na spustenie programov BPF pri prekročení zadanej prahovej hodnoty.
    • Systém sledovania ftrace bol aktualizovaný o nastavenie „bitmask-list“ na zobrazenie bitových masiek v čitateľnom formáte (ako zoznam bitov, nie hexadecimálnych hodnôt). Tracefs teraz podporuje auditovanie filtrov a spúšťačov. Bol pridaný príkaz „perf sched stats“ na zhromažďovanie a zobrazovanie štatistík plánovača úloh.
    • Pridané možnosti zostavenia LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE a LOGO_LINUX_CLUT224_FILE na definovanie súboru s obrázkom loga, ktorý sa zobrazí pri spustení jadra namiesto štandardného loga tučniaka Tux.
  • Virtualizácia a bezpečnosť
    • Asynchrónny I/O systém io_uring teraz podporuje pripojenie BPF programov s filtrami, ktoré riadia možnosti špecifických operácií SQE (Submission Queue Entry) (podobne ako systémové volania v io_uring). Táto pridaná funkcia je analogická s filtrami systémových volaní. Filtre je možné pripojiť ku špecifickým úlohám a dedia sa pri rozvetvení iných procesov po volaní fork(). Ak sú filtre aktívne, ďalšie filtre môžu pripojiť iba ďalšie obmedzenia, ale nie zakázať existujúce. Táto funkcia umožní blokovacím metódam obísť filtrovanie systémových volaní v sandbox prostrediach, ktoré sa spoliehajú na vykonávanie podobných operácií poskytovaných io_uring namiesto systémových volaní.
    • Na juhovýchodeLinux Pridaná možnosť riadenia prístupu k tokenom BPF, čo umožňuje neprivilegovaným procesom vykonávať niektoré privilegované operácie s BPF, ako napríklad načítanie programov BPF do jadra a vytváranie štruktúr máp.
    • Bola pridaná podpora pre algoritmus generovania digitálnych podpisov ML-DSA (CRYSTALS-Dilithium), ktorý je založený na teórii mriežok a je odolný voči útokom hrubou silou na kvantový počítač. ML-DSA je teraz možné použiť na autentifikáciu modulov jadra.
    • Možnosť používať schémy generovania digitálnych podpisov s algoritmom SHA-1 na certifikáciu modulov jadra bola odstránená (podpora pre načítanie podpísaných modulov je zachovaná).
    • Do audítorských záznamov NETFILTER_PKT boli pridané polia „sport“ a „dport“ na kontrolu čísel sieťových portov namiesto iba... IP adresy.
    • Pre systémy s architektúrou RISC-V bola implementovaná podpora pre rozšírenia Zicfiss a Zicfilp, ktoré poskytujú hardvérové ​​možnosti pre aplikáciu ochrany CFI (Control Flow Integrity), ktorá blokuje narušenia normálneho poradia vykonávania inštrukcií (riadiaceho toku) v dôsledku exploitov, ktoré modifikujú ukazovatele funkcií uložené v pamäti.
    • V hypervízore KVM Bola implementovaná možnosť prenosu informácií o podpore procesora pre rozšírenie Enhanced Return Address Predictor Security (ERAPS) do hosťujúcich systémov. To umožňuje vyhnúť sa niektorým operáciám resetovania stavu CPU, keď hosťujúci systém vráti riadenie hostiteľovi. Okrem toho bola pridaná podpora pre priradenie jednotiek monitorovania výkonu (PMU) hosťujúcim systémom, čím sa zlepšuje presnosť profilovania v porovnaní s použitím emulovaných PMU.
    • Ovládač hypervízora Hyper-V teraz podporuje rozhranie debugfs na zobrazenie štatistík hypervízora.
  • Sieťový subsystém
    • Rozšírenie AccECN (Accurate Explicit Congestion Notification) je predvolene povolené. Implementuje vylepšenú verziu rozšírenia ECN, ktorá umožňuje hostiteľom označiť IP pakety v prípade preťaženia namiesto ich straty. To umožňuje detekovať začiatok preťaženia na komunikačných kanáloch bez straty paketov. Pôvodné rozšírenie ECN má obmedzenie, ktoré umožňuje vyvolať iba jeden signál preťaženia počas jedného TCP round-tripu (RTT, Round-Trip Time, odoslanie požiadavky a prijatie odpovede). AccECN toto obmedzenie odstraňuje a umožňuje prijímaču preniesť odosielateľovi viac ako jeden signál preťaženia v hlavičke TCP paketu. Algoritmy riadenia preťaženia môžu tieto informácie použiť na presnejšiu reakciu na preťaženie a na zabránenie náhlemu zníženiu rýchlosti paketov pri výskyte menšieho preťaženia.
    • Implementácia algoritmu správy frontov siete Cake bola vylepšená tak, aby spracovávala viacero frontov a rozložila záťaž medzi viacero jadier CPU. Algoritmus CAKE sa používa na zníženie negatívneho vplyvu medziľahlého ukladania paketov do vyrovnávacej pamäte na zariadenia na okraji siete a jeho cieľom je dosiahnuť maximálnu priepustnosť a minimálnu latenciu, a to aj na pomalých komunikačných linkách.
    • Do soketov VSOCK používaných na komunikáciu s virtuálnymi počítačmi bola pridaná podpora pre sieťové menné priestory.
    • Pridaná počiatočná implementácia budúceho štandardu WiFi 8 (802.11bn, WiFi s ultra vysokou spoľahlivosťou).
    • Pridané optimalizácie, ktoré zvýšili výkon spracovania prichádzajúcich UDP paketov o 12 % pri záťažovom testovaní v sieti s rýchlosťou 100 Gb/s.
  • Оборудование
    • Ovládač AMDGPU implementuje podporu pre IP bloky používané v nových grafických procesoroch AMD, ako napríklad SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 a JPEG 5.3.
    • Ovládač Nouveau vylepšil správu frekvencií v systémoch Tegra 186+.
    • Ovládač i915 teraz obsahuje počiatočnú podporu pre IP adresu displeja Xe3p_LPD používanú v procesoroch Intel Nova Lake-P.
    • Pokračovala práca na ovládači Xe DRM (Direct Rendering Manager) pre GPU založené na architektúre Intel Xe, ktorá sa používa v grafických kartách radu Intel Arc a integrovaných grafických kartách, počnúc procesormi Tiger Lake. Bol pridaný režim Multi-Queue. Boli pridané komponenty potrebné na diagnostiku zaseknutí GPU v Mesa. Bola pridaná podpora pre mechanizmus MERT na správu prístupu k pamäti GPU.
    • Pokračovali sme v integrácii komponentov ovládača Nova pre grafické karty NVIDIA vybavené firmvérom GSP, ktorý sa používa od série NVIDIA GeForce RTX 2000 založených na mikroarchitektúre Turing. Ovládač je napísaný v jazyku Rust. Táto nová verzia sa pripravuje na podporu grafických kariet založených na mikroarchitektúre Turing a obsahuje rôzne interné zmeny.
    • Pridaná podpora pre ovládače a periférne zariadenia s viackanálovým rozhraním SPI (Serial Peripheral Interface), ktoré umožňuje prenos údajov v niekoľkých paralelných streamoch.
    • Pridaný ovládač pre kombinované konektory typu C používané na zariadeniach založených na čipoch Apple Silicon a kombinujúcich rozhrania USB3, DP-AltMode a Thunderbolt/USB4.
    • Pridaná podpora zvukových subsystémov čipov Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S a Focusrite Forte.
    • Pridaná podpora pre dosky ARM, SoC a zariadenia: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur,
    • Pridaná podpora pre smartfóny a tablety: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft Surface Pro 11.

Zároveň Latinskoamerická nadácia pre slobodný softvér vytvorila verziu úplne slobodného jadra 7.0 - Linux-libre 7.0-gnu, vyčistené prvky firmvéru a ovládača obsahujúce nevoľné komponenty alebo sekcie kódu s obmedzeným rozsahom výrobcom. Verzia 7.0 obsahuje čistenie blobov pre ovládač iwlwifi. Čistiaci kód bol aktualizovaný pre ovládače amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783 a Intel catpt. Názvy blobov v súboroch devicetree (dts) pre čipy ARM boli vyčistené.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster