Nakon dva mjeseca razvoja, Linus Torvalds je objavio kernel. Linux 7.2. Među najznačajnijim promjenama: mehanizam strimovanja podataka USB4STREAM, optimizacije performansi btrfs, xfs i ext4, nastavak uklanjanja koda za podršku i486 CPU-a, mogućnost kreiranja ugniježđenih SCHED_EXT planera, smanjena potrošnja memorije u swap podsistemu, ubrzani neimenovani cjevovodi, podrška za Intel MBEC i AMD GMET ekstenzije u KVM-u, uklanjanje AppleTalk protokola, početna podrška za HDMI 2.1 FRL u AMDGPU drajveru.
Glavne nove funkcije u kernelu 7.2 (1, 2, 3):
- Diskovni podsistem, I/O i sistemi datoteka
- U mehanizmu iomap uklonjen je dodatni poziv funkcije memset za već završene iteracije u funkciji iomap_iter(), što je, uz visoki intenzitet ulazno/izlaznih operacija na brzim NVMe diskovima, povećavalo broj ulazno/izlaznih operacija u sekundi (IOPS) za 5% u testovima provedenim korištenjem datotečnih sistema ext4 i xfs.
- XFS je proglašen stabilnim za podršku zonskih uređaja za pohranu podataka (dijeljenje grupa blokova ili sektora u zone, u koje je dozvoljeno samo sekvencijalno dodavanje podataka, ažuriranje cijele grupe blokova).
- Btrfs sada podržava velike folije po zadanim postavkama, smanjujući opterećenje i poboljšavajući performanse tokom intenzivnog sekvencijalnog I/O operacija. Dodana je eksperimentalna podrška za ogromne folije (do 2 MB). Dodan je novi ioctl, GET_CSUMS, za preuzimanje informacija o kontrolnoj sumi u korisničkom prostoru, na primjer, za uslužni program mkfs i optimizaciju deduplikacije. Performanse sekvencijalnog pisanja su povećane za 15%, a performanse direktnog I/O operacija za 59%.
- Mehanizam "brzog potvrđivanja" (fast commit) Ext4 datotečnog sistema je značajno redizajniran kako bi se eliminisali sukobi i zastoji. Dodan je izvoz statistike snimaka inode-a putem /proc/fs/ext4/*/fc_info. Performanse izračunavanja heša direktorijuma su optimizovane (skoro udvostručena brzina za imena od 255 znakova, 27% za imena od 64 znaka i 11% za imena od 32 znaka).
- F2FS sada podržava vraćanje greške fserror, što omogućava praćenje problema sa datotečnim sistemom iz korisničkog prostora. Vrijeme provedeno u obradi prekida je smanjeno.
- Novi dm-inlinecrypt rukovatelj je dodan u Device Mapper (DM) za transparentno šifriranje i dešifriranje blokovskih uređaja pomoću hardverskih uređaja s funkcionalnošću inline šifriranja.
- Dokumentacija o dodavanju novih datotečnih sistema u kernel je obezbijeđena.
- U NFS-u, zadana veličina bloka je povećana na 4 MB na sistemima sa najmanje 16 GB RAM-a (možete koristiti /proc/fs/nfsd/max_block_size za ručnu promjenu veličine bloka). Dodana je podrška za delegiranje direktorija, što omogućava izvođenje operacija sa datim direktorijem tokom određenog vremenskog perioda bez provjere promjena stanja na... server.
- SMB server sada podržava datoteke pohranjene u komprimiranom obliku, kao i kompresiju podataka tokom prenosa preko mreže.
- Nova NTFS implementacija (ntfsplus) dodaje podršku za simboličke veze. Windows i osigurano je ispravno rukovanje mnogim vrstama korupcije metapodataka.
- Uklonjen je fscache backend za keširanje podataka EROFS-a (Enhanced Read-Only File System), koji je zastario prije dvije godine.
- Ceph FS sada podržava ručno resetovanje klijentskih sesija.
- 9P sistem datoteka je optimizovan za poboljšanje performansi u scenarijima kao što su izrada projekata.
- Zastavice za preuzimanje informacija o osjetljivosti na velika i mala slova u datotečnom sistemu dodane su sistemskom pozivu file_getattr(). Zastavica FS_XFLAG_CASEFOLD označava da se provjera imena datoteke vrši bez obzira na velika i mala slova, a zastavica FS_XFLAG_CASENONPRESERVING označava da se informacije o velikim i malim slovima ne čuvaju prilikom kreiranja novih imena datoteka. Ove zastavice se mogu koristiti u NFS klijentima koji ne razlikuju velika i mala slova.
- Zastavica O_EMPTYPATH je dodana sistemskom pozivu openat2(), što omogućava prosljeđivanje putanje prazne datoteke. U ovom slučaju, putanja do datoteke koja se otvara određuje se na osnovu proslijeđenog deskriptora datoteke.
- Zastavica OPENAT2_REGULAR je dodana sistemskom pozivu openat2(), što omogućava otvaranje samo regularnih datoteka (greška EFTYPE će biti vraćena ako se pokuša otvoriti posebna datoteka kao što je socket, pipe ili uređaj).
- Memorijski i sistemski servisi
- Mehanizam USB4STREAM je implementiran za strimovanje podataka između računara povezanih putem USB4 portova. Dodan je uređaj /dev/tbstreamX, koji vam omogućava čitanje i pisanje podataka pomoću standardnih funkcija read() i write(), slično čitanju i pisanju datoteka. Na primjer, na jednom hostu možete slati informacije pomoću naredbe "echo hello > /dev/tbstream0", a na drugom ih čitati pomoću naredbe "cat /dev/tbstream0". Mehanizam USB4STREAM se može kombinovati sa mogućnošću uspostavljanja mrežne veze putem USB4 kabla (thunderbolt_net) ili koristiti odvojeno za prenos podataka između aplikacija koje ne podržavaju mrežne utičnice.
- Uključena je druga serija promjena za uklanjanje podrške za i486 procesore. Uklonjeno je preko 13 linija koda vezanih za emulaciju jedinica s pomičnim zarezom za procesore bez FPU-a. Podrška za i486 procesore bez hardverskih operacija CX8 (upoređivanje i razmjena 8 bajtova) i TSC (brojač ciklusa CPU-a koji se koristi u raspoređivaču zadataka) je uklonjena, jer je uklonjen i kod za emulaciju za njih.
- Podrška za AMD Geode procesore korištene u OLPC XO-1 računaru je najavljena kao napuštena.
- Dodana je podrška za ažuriranje implementacije Intelovog TDX-a (Trusted Domain Extensions), mehanizma koji se koristi za šifriranje RAM-a gostujućeg sistema. TDX je implementiran kao poseban softverski modul za izvršavanje koji BIOS prenosi iz fleš memorije u RAM tokom pokretanja. Kernel sada uključuje mogućnosti za upravljanje ovim modulom i njegovu zamjenu novijom verzijom na pokrenutom sistemu bez potrebe za ponovnim pokretanjem.
- Implementiran je novi planer alokacije GPU resursa (Fair GPU planer). Koristi se za određivanje redoslijeda kojim se radovi koje dostavljaju procesi koji koriste GPU izvršavaju na GPU-u. Umjesto korištenja tradicionalnog FIDO reda čekanja za GPU zahtjeve, novi planer koristi mehanizme pravedne alokacije resursa zasnovane na planeru zadataka Completely Fair Scheduler (CFS), koji koristi plan pokretanja s vremenom prelaska za sljedeći proces. Najuočljiviji učinak novog planera primjećuje se tokom paralelnog izvršavanja interaktivnih zadataka koji uveliko koriste GPU. U posljednjem trenutku prije izdavanja kernela 7.2, Fair GPU planer je deaktiviran, a stari FIFO planer je vraćen zbog potrebe za otklanjanjem grešaka u regresiji, što je uzrokovalo smanjenje performansi i 100% iskorištenost GPU-a pri pokretanju određenih igara u Protonu.
- Promjene u eBPF podsistemu: Dodana je mogućnost povezivanja jednog BPF programa s više tačaka praćenja. BPF programi povezani s tačkama praćenja sada mogu pristupiti memoriji komponenti korisničkog prostora, uz ispravno rukovanje nedodijeljenim memorijskim stranicama (greškama stranica). Sistemski poziv bpf() sada podržava standardne atribute (log_buf, log_size, log_level i log_true_size), što omogućava objedinjeni prijenos metapodataka u svim BPF naredbama, ne ograničavajući se na BPF_PROG_LOAD, BPF_BTF_LOAD i BPF_MAP_CREATE. Uklonjeno je ograničenje prosljeđivanja ne više od 5 parametara BPF funkcijama. Dodana je mogućnost sigurnog pristupa dijeljenoj memoriji bpf_arena bez straha od pristupanja nedodijeljenim memorijskim stranicama (greškama stranica). Implementirana je nova verzija BPF strukture hash mape, koja omogućava dinamičku promjenu veličine.
- Generisanje izlaza "/proc/interrupts" sa statistikom prekida je optimizovano, a strukture za čuvanje brojača prekida su modernizovane i dodato je keširanje.
- Generisanje datoteke "/proc/filesystems" koja se koristi u libselinuxu je ubrzano.
- Raspoređivač zadataka sada podržava balansiranje opterećenja između jezgara CPU-a, uzimajući u obzir stanje interne keš memorije procesora. Raspoređivač sada pokušava grupirati procese koristeći dijeljene resurse, kao što su niti unutar jednog procesa, kako bi dijelili istu keš memoriju visokog nivoa, poboljšavajući efikasnost pristupa podacima povećanjem vjerovatnoće da će se potrebni podaci pronaći u kešu.
- Mehanizam SCHED_EXT, koji omogućava korištenje BPF-a za kreiranje CPU planera, nastavio je implementirati mogućnost kreiranja ugniježđenih planera (podplanera), koji omogućavaju svakoj kontrolnoj grupi da koristi vlastiti planer zadataka.
- Nastavak migracije promjena iz Rust-for-branchLinux, vezano za korištenje Rusta kao drugog jezika za razvoj drajvera i modula kernela (podrška za Rust nije omogućena po defaultu i ne uključuje Rust kao obaveznu zavisnost pri izgradnji kernela). Podrška za Rust u kernelu je implementirana za s390 arhitekturu. Uključen je paket "zerocopy", koji pruža brze memorijske primitive za kod u "nesigurnom" režimu.
- Minimalna verzija LLVM alata potrebna za izgradnju kernela povećana je na 17.0.1.
- U minimalističkoj C biblioteci nolibc, koja se isporučuje s izvornim kodom kernela Linux i pruža okvir za osnovne sistemske pozive, podržavajući OpenRISC i 32-bitne PA-RISC arhitekture.
- Swap podsistem je optimizovan za poboljšanje performansi i smanjenje potrošnje memorije unutar samog podsistema eliminisanjem opterećenja prilikom pohranjivanja statičkih metapodataka i objedinjavanjem anonimne i dijeljene memorije pri korištenju tomova. Smanjenje memorije je prilično značajno; na primjer, montiranje swap particije od 1 TB smanjuje potrošnju memorije za približno 512 MB.
- Poboljšane su performanse mehanizma za deložaciju memorije, koji briše ili premješta memoriju u swap prostor kako bi se oslobodio prostor kada je sistem pod opterećenjem. Pod određenim opterećenjima, kao što je testiranje MongoDB-a pomoću YCSB-a (Yahoo! Cloud Serving Benchmark), uočeno je povećanje performansi do 30%.
- Komanda "make sbom" je dodana u sistem za izgradnju kako bi generirala SBOM (Software Bill Of Materials) liste koje odražavaju komponente, biblioteke i zavisnosti korištene u trenutnoj izgradnji kernela, kao i njihove informacije o licenci dobijene iz SPDX zaglavlja u datotekama koda.
- Implementacija neimenovanih cijevi je optimizirana za rukovanje bravama (operacije alokacije memorije su premještene izvan opsega brave), što je povećalo propusnost neimenovanih cijevi za 21-48% i smanjilo latenciju za 17-33%.
- Virtuelizacija i sigurnost
- Alokator slaba sada podržava upotrebu tokena za alokaciju, implementiranih u kompajleru Clang 22. Tokeni za alokaciju omogućavaju jedinstvene identifikatore za operacije alokacije memorije i odvojenu alokaciju različitih tipova objekata kako bi se otežalo iskorištavanje ranjivosti prelijevanja bafera (sa odvojenom alokacijom, prelijevanje bafera u jednom tipu objekta se ne može lako iskoristiti za oštećenje drugih tipova objekata).
- Mehanizam AF_ALG, koji se koristi u ranjivosti Copy Fail za izmjenu podataka u kešu stranica, je zastario i planirano je za uklanjanje u budućem izdanju. AF_ALG omogućava hardverske akceleratore za kriptografska izračunavanja u Crypto API-ju kernela, ali se koristi u prilično specifičnim situacijama. U kernelu 7.2, podrška za asinhroni I/O, naslijeđene drajvere i mehanizam nulte kopije u implementacijama skcipher i aead uklonjena je iz AF_ALG. Zadržane su samo softverske implementacije kriptografskih algoritama, a podrška za hardverske kriptografske akceleratore u Crypto API-ju kernela je uklonjena, jer AF_ALG značajno proširuje površinu napada, ali ne pruža nikakvu prednost u performansama u poređenju s implementacijama kriptografije u korisničkom prostoru. AF_ALG je korišten u Cryptsetup alatu, ali je njegova podrška uklonjena u nedavnom izdanju 2.8.7.
- Mehanizam IMA (Integrity Measurement Architecture), koji omogućava vanjskom servisu da provjeri stanje podsistema jezgra kako bi se osigurala njihova autentičnost, dopunjen je podrškom za izvoz internih tabela s rezultatima mjerenja u korisnički prostor i njihovo brisanje iz međuspremnika jezgra radi uštede memorije.
- U modulu Landlock, koji neprivilegovanim programima pruža sredstva za ograničavanje upotrebe objekata kernela Linux (hijerarhije datoteka, mrežni soketi, ioctl, itd.), dodana je podrška za kontrolu pristupa UDP soketima, kao i mogućnost selektivnog onemogućavanja ispisa informacija o zaključavanju objekata u dnevnik kako bi se spriječilo zatrpavanje dnevnika nebitnim informacijama.
- Jezgro je zastarjelo u korištenju funkcije strncpy(), koja kopira određeni broj bajtova iz ulaznog niza. Korištenje strncpy() stvorilo je rizik od grešaka zbog nedostajućeg null znaka na kraju niza ili dodatnog popunjavanja nulama. Umjesto strncpy(), preporučuje se korištenje funkcija strscpy() i strscpy_pad() za kopiranje nizova koji se završavaju null znakom, kao i strtomem_pad(), memcpy_and_pad() i memcpy() za kopiranje nizova poznate fiksne veličine. Rad na ukidanju upotrebe strncpy() u jezgru započeo je 2020. godine i zahtijevao je 362 commita od 70 programera.
- U hipervizoru KVM Dodana je podrška za proširenja Intel MBEC (Mode-Based Execution Control) i AMD GMET (Guest-Mode Execution Trap), koja omogućavaju odvojeno rukovanje pravima izvršavanja kernela i korisničkog prostora u gostujućim sistemima u tabelama prevođenja memorije. Ranije su proširenja za virtualizaciju hardvera Intela i AMD-a omogućavala da se memorijske stranice označe kao izvršne sa samo jednim bitom, sa softverski zasnovanim razdvajanjem prava kernela i korisničkog prostora na nivou hipervizora. Korištenje MBEC-a i GMET-a eliminiše provjere dozvola na strani hipervizora i značajno smanjuje prenose kontrola sa gostujućeg sistema na VMexit hipervizor koji zahtijevaju mnogo resursa.
- Mrežni podsistem
- Proširenje TCP-AO (TCP Authentication Option, RFC 5925) migrirano je u novu kriptografsku biblioteku libcrypto, što pojednostavljuje kod i poboljšava njegove performanse. TCP-AO omogućava verifikaciju TCP zaglavlja pomoću MAC (Message Authentication Code) kodova, koristeći modernije algoritme HMAC-SHA-1-96 i AES-128-CMAC-96, zamjenjujući prethodno dostupnu opciju TCP-MD5, koja se oslanjala na zastarjeli algoritam MD5.
- Broj podstreamova podržanih za Multipath TCP (MPTCP) veze povećan je sa 8 na 64.
- Nastavljen je rad na smanjenju upotrebe globalnog zaključavanja rtnl_lock u mrežnom steku kernela.
- Jezgro je uklonilo implementaciju AppleTalk protokolnog steka, koji se koristio u Apple računarima od 1985. godine, a zamijenjen je 1990-ih od strane... TCP/IPPored toga, uklonjene su komponente ATM tehnologije prijenosa podataka koje nisu povezane sa PPPoATM, kao i ARCnet mrežni interfejsi bazirani na ISA i PCMCIA magistralama, Bluetooth adapteri sa PCMCIA interfejsom, Chelsea TLS akceleratori, kod za integraciju TLS-a sa sockmap-om i podrška za frekvencijske opsege od 5/10 MHz u bežičnom steku cfg80211/mac80211. Zbog neriješenih problema blokiranja i nedostatka održavatelja, uklonjena je specifična implementacija ubrzanja TLS obrade bazirana na TCP Offload Engine-u (zadržana je češća implementacija TLS offload-a). Kod za kompatibilnost sa 32-bitnim x_tables na 64-bitnim sistemima je onemogućen i planirano je uklanjanje.
- PPpoe drajver sada podržava GRO (Generic Receive Offload) i GSO (Generic Segmentation Offload) mehanizme za hardversko ubrzanje ponovnog sastavljanja i segmentacije paketa. Korištenje GRO i GSO značajno povećava propusnost dolaznog prometa. Na primjer, na MediaTek MT7621 uređajima konfiguriranim s prevoditeljem adresa, maksimalna propusnost povećana je sa 130 Mbit/s na 630 Mbit/s.
- Oprema
- Drajver AMDGPU sada uključuje početnu podršku za HDMI 2.1 FRL (Fixed Rate Link) tehnologiju, omogućavajući prenos nekomprimovanog videa na 4K/120Hz i 8K/60Hz. Podrška za HDMI 2.1 ranije je bila nedostižna u drajverima otvorenog koda zbog zahtjeva za licenciranje HDMI Foruma, ali AMD je sada osigurao sličnu implementaciju.
- Drajver i915 sada podržava postavljanje boje pozadine za kontroler ekrana. Parametar pin_params.needs_low_address je implementiran.
- Nastavljen je rad na Xe DRM (Direct Rendering Manager) drajveru za GPU-ove bazirane na Intel Xe arhitekturi, koja se koristi u Intel Arc seriji grafičkih kartica i integriranoj grafici, počevši od Tiger Lake procesora. Dodana je početna podrška za CRI (Crescent Island) platformu. Implementiran je sistemski kontroler za Xe3p dGPU platforme.
- Nouveau drajver rješava probleme sa NVIDIA GA100 GPU-om.
- v3d drajver je ažuriran kako bi uključio mogućnost upravljanja potrošnjom energije v3D GPU-a na Raspberry Pi pločama.
- Nastavili smo integrirati Nova komponente drajvera za NVIDIA GPU-ove opremljene GSP firmverom koji se koristi od NVIDIA GeForce RTX 2000 serije zasnovane na Turing mikroarhitekturi. Drajver je napisan u Rustu. Dodana je podrška za NVIDIA GA100, Hopper i Blackwell serije GPU-ova.
- Dodata podrška za ARM ploče, SoC i uređaje: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.
Istovremeno, Latinoamerička fondacija za slobodni softver kreirala je verziju potpuno besplatnog kernela 7.2 - Linux-libre 7.2-gnu, očišćen od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili dijelove koda s ograničenim opsegom od strane proizvođača. Izdanje 7.2 uključuje čišćenje blob-ova za nove drajvere rt722-sdca i tac5xx2. Kod za čišćenje drajvera amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 i mt792x je ažuriran. Interfejsi za učitavanje firmvera su prilagođeni. Nazivi blob-ova u devicetree (dts) datotekama za ARM čipove su očišćeni.
izvor: opennet.ru
