Nakon dva mjeseca razvoja, Linus Torvalds je objavio kernel. Linux 6.12. Među najznačajnijim promjenama: mogućnost omogućavanja Realtime moda, sched_ext za kreiranje CPU planera putem eBPF-a, izlaz QR koda u vanrednim uslovima, TCP mehanizam memorije uređaja, mehanizam rezervacije serverskih resursa SCHED_DEADLINE, poboljšanje EEVDF planera zadataka, IPE modul za postavljanje politika integriteta.
Nova verzija uključuje 14607 popravki od 2167 programera, veličina zakrpe je 37 MB (promjene su uticale na 13087 datoteka, dodano je 507913 linija koda, 234083 linije su obrisane). Posljednje izdanje je imalo 15130 popravki od 2078 programera, veličina zakrpe je bila 85 MB (u kernelu 6.10 zakrpa je bila veličine 41 MB). Oko 45% svih promjena uvedenih u 6.12 odnosi se na drajvere uređaja, otprilike 12% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 13% se odnosi na mrežni stog, 6% se odnosi na sistem datoteka i 3% odnose se na interne podsisteme kernela.
Ključne inovacije u kernelu 6.12:
- Memorijski i sistemski servisi
- Sada je dostupna mogućnost izgradnje kernela s opcijom PREEMPT_RT bez dodatnih zakrpa za rad u realnom vremenu. Posljednja nedostajuća funkcija kernela koja je sprječavala omogućavanje PREEMPT_RT moda bila je podrška za neblokirajući atomski izlaz putem funkcije printk, koja je također uključena u kernel. Podrška za PREEMPT_RT dostupna je za arhitekture x86, x86_64, ARM64 i RISC-V. Do sada je implementacija PREEMPT_RT moda bila dostupna u obliku eksternih zakrpa, koje neke distribucije, kao što su RHEL, SUSE i... Ubuntu, kreirali su odvojena Realtime izdanja svojih proizvoda, traženih u oblastima kao što su finansijski sistemi, uređaji za obradu zvuka i videa, avijacija, medicina, robotika, telekomunikacije i industrijski sistemi, gdje je potrebno osigurati predvidljivo vrijeme obrade događaja.
- Dodan je mehanizam "sched_ext" (SCX), koji omogućava korištenje eBPF-a za kreiranje CPU planera koji pokrivaju gotovo sve aspekte raspoređivanja zadataka i alokacije CPU resursa. Takvi planeri se mogu dinamički učitati i izvršavati unutar kernela. Linux в virtuelna mašina eBPF. Mehanizam sched_ext pojednostavljuje kreiranje planera specifičnih za zadatke, omogućava eksperimentiranje s različitim tehnikama i strategijama raspoređivanja te dopušta brzo kreiranje radnih prototipova i zamjenu planera u hodu u produkcijskim infrastrukturama. Na primjer, korištenjem sched_ext možete kreirati planer koji uzima u obzir specifičnosti određene aplikacije i dinamički mijenja svoju strategiju raspoređivanja ovisno o stanju sistema i drugim faktorima.
- Sastav uključuje preostali dio zakrpa neophodnih za rad serverskog mehanizma SCHED_DEADLINE, koji rješava problem nedovoljne iskorištenosti CPU resursa običnim zadacima kada je CPU monopoliziran zadacima visokog prioriteta (u realnom vremenu). Da bi spriječio monopolizaciju CPU-a, kernel je prethodno koristio mehanizam prigušenja u realnom vremenu, koji je pokušavao rezervisati 5% za zadatke niskog prioriteta, ostavljajući 95% vremena za zadatke u realnom vremenu. Ovaj mehanizam je ostavio mnogo da se poželi, budući da obični zadaci u mnogim situacijama nisu dobili dovoljno procesorskog vremena. SCHED_DEADLINE server implementira efikasniji mehanizam za rezervaciju resursa.
- Završena je integracija planera zadataka EEVDF (Prvo najraniji prihvatljivi virtuelni rok) koji je zamenio CFS (Potpuno pošteni planer), koji se isporučuje počevši od kernela 2.6.23. Novi planer, kada bira sljedeći proces na koji će prenijeti izvršenje, uzima u obzir procese koji nisu primili dovoljno procesorskih resursa ili su primili nepravedno veliku količinu procesorskog vremena. U prvom slučaju, prijenos kontrole na proces je prisiljen, au drugom se, naprotiv, odgađa. Stari CFS planer je koristio heuristiku i fino podešavanje da identifikuje procese kojima je potrebna posebna pažnja, dok ih novi planer prati eksplicitnije i ne zahteva fino podešavanje. Očekuje se da će EEVDF smanjiti kašnjenja u zadacima za koje je CFS imao problema s rasporedom.
- U kernelu rukovaocu hitnim slučajevima - DRM Panic, koji koristi DRM (Direct Rendering Manager) podsistem za prikaz vizuelnog izveštaja u stilu „plavog ekrana smrti“, mogućnost prikaza logotipa i QR koda sa kmsg izveštajem na dodat je ekran kada dođe do hitnog stanja. Budući da samo 2953 bajta stane u QR kod, omogućena je opcija DRM_PANIC_SCREEN_QR_CODE_URL, u kojoj se kmsg izvještaj komprimuje pomoću zlib-a i prilaže kao parametar URL-u, što omogućava prijenos oko 40 bajtova kroz V7500 QR kod. Prilikom izrade paketa sa kernelom, distribucije mogu postaviti osnovni URL za URL, koji će im omogućiti navigaciju na stranicu za prijavu problema. Za odabir formata QR koda, predviđena je postavka DRM_PANIC_SCREEN_QR_VERSION.
- Dodata podrška za ARM POE (Permission Overlay Extension), koja vam omogućava da postavite prava pristupa memorijskim područjima. Koristeći ovu ekstenziju, na sistemima sa ARM64 procesorima, može se implementirati mehanizam ključeva za zaštitu memorije, koji se koristi za ograničavanje pristupa memorijskim stranicama bez promjene tablice memorijskih stranica.
- Za Loongarch, ARM64, PowerPC i s390 arhitekture, implementacija getrandom() sistemskog poziva je pomjerena, optimizirana korištenjem vDSO (virtuelni dinamički zajednički objekt) mehanizma, što omogućava premještanje rukovatelja sistemskim pozivima iz kernela na korisnika prostor i izbjegavajte promjene konteksta. Optimizacija vam omogućava da ubrzate generiranje slučajnih brojeva do 15 puta.
- Mogućnost korištenja apsolutnih tajmauta, koji se aktiviraju kada se dostigne određeno vrijeme na sistemskom satu, dodata je io_uring asinkronom ulazno/izlaznom podsistemu (ranije su se mogla podesiti samo relativna vremenska ograničenja koja su označavala trajanje od početka operacije ).
- Dodati fajlovi za generisanje povezivanja za biblioteku libcpupower pomoću SWIG alata, koji vam omogućava da generišete veze iz C/C++ koda za različite programske jezike. Vezivanja vam omogućavaju da kreirate skripte na Python-u i drugim jezicima i da ih koristite za proširenje funkcionalnosti biblioteke libcpupower, koja obezbeđuje API za upravljanje cpufreq-om i drajverima iz korisničkog prostora.
- Uslužni program cpuidle prikazuje vrijednost stanja mirovanja "rezidencija", koja se koristi za sisteme u realnom vremenu i uzima u obzir minimalno vrijeme koje procesor mora biti u stanju mirovanja da bi opravdao troškove energije prelaska u i iz ovog stanja.
- Dodata je mogućnost korištenja Clang kompajlera za izgradnju standardne C biblioteke nolibc, koja je uključena u izvorni kod kernela. Linux i pruža omotač oko osnovnih sistemskih poziva. Prilikom izgradnje nolibc-a u Clangu, omogućena je optimizacija vremena povezivanja (LTO).
- Neka sučelja cgroup1 su zastarjela, kao što je TCP računovodstvo, meka limit verzija XNUMX i upravljanje iscrpljivanjem memorije. Podrška za ove funkcije za sada ostaje u potpunosti, a upozorenje je upućeno da se prouči broj korisnika koji nastavljaju koristiti ove funkcije.
- Dodata je mogućnost konfigurisanja bafera za praćenje prstena za spremanje akumuliranih podataka nakon ponovnog pokretanja, što će vam omogućiti da ne izgubite akumulirane informacije za otklanjanje grešaka u slučaju pada kernela. Podaci se pohranjuju u memoriju. Omogućavanje se vrši preko parametra komandne linije trace_instance kernela, na primjer, postavka “trace_instance=boot_map@0x285400000:12M” će rezervisati 12 MB memorije na 0x285400000 za bafer “boot_map”, koji će / biti dostupan/ kroz fajl kernela /tracing/instances/boot_map.
- 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 aktivna po defaultu i ne uključuje Rust među obavezne zavisnosti kernela). Dodani su moduli 'list' i 'rbtree' za rad sa dvostruko povezanim listama i crveno-crnim stablima pretraživanja. Proširene su mogućnosti modula 'init', 'sync', 'types' i 'error'. Dodana je mogućnost korištenja Rust koda prilikom izgradnje kernela sa zaštitom od Spectre napada (opcije MITIGATION_{RETHUNK,RETPOLINE,SLS}), korištenjem KASAN sistema za otklanjanje grešaka, mehanizmima zaštite kCFI (kernel Control Flow Integrity) i Shadow Call, te pri korištenju dodatnih GCC dodataka. Dodan je drajver za Applied Micro QT2025 PHY Ethernet kontroler, napisan u Rustu. Pripremljena je zasebna web stranica sa dokumentacijom: rust.docs.kernel.org.
- U izvorni kod kernela dodat je uslužni program xdrgen za pretvaranje XDR (eXternal Data Representation) specifikacija u XDR funkcije kodiranja i dekodiranja napisane korištenjem C stila koji je usvojilo kernel. Linux.
- Kernel je izmijenjen da implementira mehanizam maskiranja pokazivača za smanjenje broja sporih poziva barrier_nospec() u 64-bitnoj funkciji copy_from_user(), koja se koristi za kopiranje podataka u kernel iz korisničkog prostora. Korištenje maskiranja ubrzava test “per_thread_ops”, koji procjenjuje broj operacija koje se mogu izvesti u jednoj niti, za 2.6%.
- Dodan je novi USB drajver koji vam omogućava da koristite 9pfs protokol kao transport za slanje i primanje podataka sa USB uređaja kada montirate sistem datoteka 9p preko USB-a (na primjer, “mount -t 9p -o trans=usbg, aname=/put/do/fs /mnt/9"). Primjer korištenja novog drajvera je korištenje njega umjesto NFS-a za organiziranje pokretanja root particije prilikom razvoja ugrađenih uređaja.
- Diskovni podsistem, I/O i sistemi datoteka
- VFS podsistemu je dodana mogućnost rada sa uređajima za skladištenje čija je veličina bloka veća od veličine memorijske stranice u sistemu. U sistemima datoteka, ova funkcija je trenutno podržana samo u XFS-u.
- FUSE podsistem, koji vam omogućava da kreirate implementacije sistema datoteka koji rade u korisničkom prostoru, dodao je podršku za mapiranje korisničkih identifikatora montiranih sistema datoteka, koji se koriste za uparivanje datoteka određenog korisnika na montiranoj stranoj particiji sa drugim korisnikom na trenutnoj sistem.
- Implementirana je nova fcntl operacija, F_CREATED_QUERY, koja daje aplikaciji mogućnost da odredi da li je datoteka otvorena pomoću oznake O_CREAT kreirana ili je već postojala prije.
- Dodata je mogućnost korištenja jedinstvenih 64-bitnih ID-ova tačaka montiranja u sistemski poziv name_to_handle_at() kako bi se izbjegli uvjeti utrke prilikom raščlanjivanja /proc/mountinfo.
- Veličina strukture "datoteka" u kernelu smanjena je sa 232 na 184 bajta, što smanjuje potrošnju memorije na sistemima koji aktivno rade sa datotekama.
- Montiranje sistema datoteka za montiranje tačaka unutar /proc hijerarhije, kao što je /proc/PID/fd, bilo je zabranjeno, što je stvorilo potencijalne sigurnosne probleme.
- Pseudo-FS NSFS (NameSpace FS), koji se koristi za rad sa imenskim prostorima, pruža dodatne informacije o imenskim prostorima tačaka montiranja.
- Sistem datoteka EROFS (Proširivi sistem datoteka samo za čitanje), dizajniran za upotrebu na particijama samo za čitanje, sada podržava montiranje sistema datoteka direktno sa slika diska sačuvanih kao datoteke.
- Nove ioctl komande XFS_IOC_START_COMMIT i XFS_IOC_COMMIT_RANGE su dodane u XFS za razmjenu sadržaja između dva fajla.
- NFS ima dodatu podršku za protokol "LOCALIO", što vam omogućava da utvrdite da li klijent i server NFS na istom hostu kako bi se omogućile odgovarajuće optimizacije.
- U sistemu datoteka Btrfs, predložene su optimizacije performansi, kod je refaktorisan, područje zaključavanja opsega tokom operacija čitanja je smanjeno, nastavljen je rad na pretvaranju memorijskih stranica da koriste folio stranica, a automatsko oslobađanje memorije je implementirano za strukturu btrfs_path.
- U sistemu datoteka Ext4, ispravljene su greške vezane za alokaciju blokova, upravljanje opsegom, brzo urezivanje i vođenje dnevnika.
- Virtuelizacija i sigurnost
- Dodan je IPE (Integrity Policy Enforcement) LSM modul, koji je razvio Microsoft za proširenje postojećeg sistema obavezne kontrole pristupa. Modul vam omogućava da definišete opštu politiku integriteta za ceo sistem, naznačujući koje su operacije dozvoljene i kako treba verificirati autentičnost komponenti. Na primjer, koristeći IPE, možete odrediti koje se izvršne datoteke smiju pokrenuti, uzimajući u obzir njihovu usklađenost sa referentnom verzijom koristeći kriptografske hešove koje obezbjeđuje dm-verity sistem.
- U fazi kompilacije kernela, moguće je odvojeno omogućiti dostupne metode zaštite od različitih ranjivosti Spectre klase u CPU-u. Kconfig nudi nove parametre: MITIGATE_MDS (zaštita od ranjivosti mikroarhitekturnog uzorkovanja podataka), MITIGATE_TAA (zaštita od ranjivosti TSX Asynchronous Abort), MITIGATE_MMIO_STALE_DATA (zaštita od ranjivosti MMIO zastarjelih podataka vl IGATE_RETBLEED (zaštita od retbleed ranjivosti), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V1 (zaštita od ranjivosti Spectre), MITIGATE_SRBDS (zaštita od ranjivosti uzorkovanja podataka bafera specijalnog registra), MITIGATE_SSB (zaštita od Bypass v Speculner memorije).
- Dodata opcija komandne linije proc_mem.force_override i skup postavki sklopa u Kconfig-u (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE i PROC_MEM_FORCE_NEVER) kako bi se spriječile promjene memorije putem /proc/pid/mem.
- LSM podsistem (Linux sigurnosni modul) je prebačen na korištenje statičkih poziva, što je poboljšalo sigurnost i performanse.
- Mogućnost korištenja standardnih jezgara za ARM64 arhitekturu u gostujućim okruženjima koja rade na Android-sistemi sa modificiranim KVM hipervizorom (zaštićeni KVM).
- Landlock LSM modul, koji vam omogućava da ograničite interakciju grupe procesa sa eksternim okruženjem, implementira koncept „IPC scoping“ kako bi selektivno ograničio interakciju sa sandbox okruženjima koristeći Unix utičnice i signale. Na primjer, možete zabraniti veze koje koriste Unix utičnice iz okruženja sandboxa sa procesima koji nemaju primijenjenu izolaciju, ali dopuštaju veze s procesima u istom opsegu.
- U KVM hipervizoru, CPUID-u je dodana zastavica za gostujuće sisteme koja ukazuje na podršku za AVX10.1 ekstenzije.
- Mrežni podsistem
- Dodan je TCP mehanizam za memoriju uređaja, koji omogućava korištenje mrežnih utičnica za direktno slanje sadržaja memorije perifernih uređaja preko mreže (način nulte kopije) i direktno postavljanje sadržaja mrežnih paketa u područje memorije uređaja na strani primaoca. Podaci koji se prenose u paketima prenose se sa mrežne kartice u memoriju perifernog uređaja ili iz memorije uređaja na mrežnu karticu direktno, zaobilazeći CPU, a zaglavlja paketa završavaju u regularnim baferima kernela.
- Mogućnosti mnogih Ethernet i bežičnih drajvera su proširene. Na primjer, Intel iwlwifi drajver je dodao podršku za premještanje RLC/SMPS operacija na stranu firmvera, RealTek rtw89 drajver je povećao performanse i dodao podršku za RTL8852BT/8852BE-VT (WiFi 6) čipove, upravljački program za mikročip Ethernet dodao je podršku za IEEE 802.3 bw (100BASE) specifikacije -T1) i IEEE 802.3bp, Microsoft vNIC i IBM veth virtualne Ethernet implementacije su poboljšane. Dodati novi drajveri za Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 i Microchip LAN8650/1 10BASE-T1S MAC-PHY Ethernet čipove.
- U MPTCP (MultiPath TCP), proširenju TCP protokola za organizovanje isporuke TCP paketa istovremeno duž nekoliko ruta kroz različita mrežna sučelja, veličina težine koja se koristi u rutiranju je povećana sa 8 na 16 bita. Implementirano otkrivanje izgubljenog (blackhole) saobraćaja i obustava na neko vrijeme pokušaja uspostavljanja veze sa sistemima što dovodi do gubitka saobraćaja.
- Za IPv6, implementirana je podrška za oznaku „p“ u PIO (Prefiks Information Option), koja se koristi u RA oglasima (IPv6 Router Advertisements) za odabir klijentskog modela implementacije putem DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) umjesto dodjeljivanja pojedinačne adrese zasnovane na prefiksima koji koriste SLAAC (autokonfiguracija adrese bez stanja). IPv6 IOAM6 dodaje podršku za novi režim tunsrc enkapsulacije koji omogućava bolje performanse.
- Poboljšane performanse za obradu IPsec kontrolnih paketa.
- Poboljšane performanse ispiranja velikih skupova pravila nftables. nfnetlink_queue ima poboljšanu podršku za SCTP protokol.
- ethtool API je dodao podršku za povezivanje više mrežnih kartica na jedno mrežno sučelje.
- Oprema
- U AMDGPU drajveru se nastavlja rad na implementaciji podrške za AMD RDNA4 (“GFX12”) GPU-ove. Dodana je mogućnost resetiranja pojedinačnih redova zadataka bez resetiranja cijelog GPU-a.
- Nastavljen je rad na Xe drm drajveru (Direct Rendering Manager) za GPU zasnovane na Intel Xe arhitekturi, koji se koristi u Intel Arc familiji video kartica i integrisane grafike, počevši od Tiger Lake procesora. Nova verzija uključuje podršku za GPU-ove bazirane na Battlemage i Lunar Lake mikroarhitekturama. Podrška za Xe2 CCS (Color Control Surface) modifikatore je uvedena za kontrolu parametara integrisanih i diskretnih GPU-a.
- i915 drajver implementira mogućnost izlaza informacija o brzini ventilatora preko HWMON ili sysfs interfejsa (atribut “fan1_input”). Parametar "i915.modeset" je zastario. Parametar "i915.nomodeset" treba koristiti umjesto "i0.modeset=915".
- Dodata podrška za A615, A306 i A621 GPU za msm DRM drajver (Qualcomm Adreno GPU).
- Nouveau drajver je imao svoje unutrašnje strukture prerađene i očišćene.
- Intel_pstate drajver, koji kontroliše parametre potrošnje energije (P-state) na sistemima sa Intel procesorima, dodao je podršku za hibridne sisteme sa asimetričnim (različitim karakteristikama) CPU-ima, kao i podršku za upravljanje napajanjem procesora zasnovanih na Granite Rapids i Sierra Forest mikroarhitekture. Dodata podrška za Xeon Granite Rapids CPU intel_idle drajveru. Intel_rapl drajver omogućava prepoznavanje procesa porodice AMD 1Ah i Intel ArrowLake-U procesora.
- Kontinuirano uključivanje promjena za podršku ARM SoC Snapdragon X Elite, koji koristi Qualcommov vlastiti 12-jezgreni Oryon CPU i Qualcomm Adreno GPU. Čip je namijenjen upotrebi u prijenosnim i PC računarima, a ispred Apple M3 i Intel Core Ultra 155H čipova u mnogim testovima performansi.
- Dodata podrška za ARM ploče, SoC-ove i uređaje: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/A6010/A7/A35 , Firefly Core-PX30-JD4, Lunzn Fastrhino R68S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS433, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R2S Plus, ExynosAuto v920, SOPHGO2002, SG5332m, SOPHGO4, SG815m ), Cool Pi CM5 GenBook, Anbernic RG35XXSP, GameForce Ace, IBM P11, Kontron i.MX93 OSM-S, NanoPC-T6
- Dodata podrška za ekranske panele Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08UX116A02.3A, .116, B06.1XAT116, BOE TV04.1WUM -LL101, BOE NV2WUM-N140, BOE NV41WUM-N133, BOE NV63WHM-A116D, BOE NE4WUM-N140G, CMN N6BCA-EA116, CMN N2BCP-EA116, CSW MNEB2, CSW MNEB601
- Audio podsistem je dodao podršku za čipove i kodeke RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825. Stari upravljački programi za zvuk za Intel ASoC su proglašeni zastarjelima i preporučuje se korištenje AVS drajvera umjesto njih. Mnoga poboljšanja su napravljena na SoundWire drajveru.
izvor: opennet.ru
