Uvoľnenie jadra Linux 6.17

Po dvoch mesiacoch vývoja Linus Torvalds predstavil uvoľnenie jadra Linux 6.17. Medzi najvýraznejšie zmeny patrí zvýšenie výkonu Btrfs, systémové volania file_getattr() a file_setattr(), zjednotenie jednoprozorových a multiprozorových konfigurácií v plánovači úloh, modul DAMON_STAT so štatistikami prístupu k pamäti, podpora Live-patchov na systémoch ARM64, odosielanie core-dumpov cez socket AF_UNIX, limitovanie SCHED_EXT cez cgroup, zjednodušené nastavenie ochrany pred zraniteľnosťami v CPU, kompilácia v Clang s inicializáciou premenných na zásobníku, ochrana pred výmenou /proc, rozšírenie subsystému RV (Runtime Verification), obmedzenie socketov AF_UNIX cez AppArmor a algoritmus kontroly preťaženia TCP DualPI2.

Do novej verzie bolo prijatých 14334 opráv od 2118 vývojárov, veľkosť patchu je 46 MB (zmeny sa dotkli 12841 súborov, pridalo sa 646654 riadkov kódu a odstránilo 398782 riadkov). V predchádzajúcej vydanej verzii bolo 15924 opráv od 2145 vývojárov, veľkosť patchu bola 50 MB. Približne 43 % všetkých zmien v 6.17 súvisí s ovládačmi zariadení, približne 12 % zmien sa týka aktualizácie kódu špecifického pre hardvérové architektúry, 14 % je spojených so sieťovým zásobníkom, 4 % s súborovými systémami a 3 % s vnútornými subsystémami jadra.

Hlavné novinky v jadre 6.17 (1, 2, 3):

  • Diskový subsystém, I/O a súborové systémy
    • V Btrfs bola pridaná experimentálna podpora veľkých strán pamäte (large folios), čo umožňuje znížiť prevádzkové náklady a zvýšiť výkon niektorých operácií. Implementované bolo vyrovnávanie požiadaviek na bitové mapy rozdelenia voľného miesta, vďaka čomu sa výkon pri vytváraní prázdnych súborov zvýšil o 20 %. Zlepšila sa práca predbežného čítania v systémoch, ktoré používajú kompresiu dát. Boli poskytnuté dodatočné nastavenia na využívanie kompresie v defragmentovaných extento.
    • Vo FS ext4 bola pridaná podpora pre vyrovnané vstupy/výstupy s indikátorom RWF_DONTCACHE, pri ktorom sa dáta odstraňujú zo stránkového cache ihneď po dokončení operácie.
    • Vo FS EROFS bola implementovaná podpora kompresie metadát.
    • NFS server now can delegate write operations to clients opening files in read-only mode.
    • A flag FALLOC_FL_WRITE_ZEROES has been added to the system call fallocate(), allowing a specified range in a file to be filled with zeros using the WRITE_ZERO command supported by certain SSDs, performing zeroing without input/output operations. This option is currently only available in the ext4 file system.
    • The system calls file_getattr() and file_setattr() have been added to manipulate the attributes of the inode of a specified file.
    • The 'pktcdvd' driver for working with optical media in packet mode has been removed, which was marked as deprecated in 2016.
    • The Bcachefs file system in the Linux kernel has been transitioned to external maintenance mode, implying that changes for Bcachefs will no longer be accepted into the mainline kernel while keeping this file system in the kernel codebase. Bcachefs development will occur outside the kernel codebase until Kent Overstreet can prove the potential for correct interaction with other kernel developers and the ability to adhere to established development rules.
  • Pamäť a systémové služby
    • Support for single-processor configurations has been removed from the scheduler. Systems with a single processor should now use kernels built for multiprocessor systems (SMP). Code for uniprocessor and multiprocessor systems has been unified and freed from unnecessary bindings to the kernel parameter CONFIG_SMP.
    • The DAMON_STAT (Data Access Monitoring Results Stat) kernel module has been added, allowing the monitoring of memory access using the DAMON (Data Access MONitor) subsystem. The module provides statistics on inactivity (memory_idle_ms_percentiles) and estimated memory bandwidth (estimated_memory_bandwidth).
    • Support for Live patching has been implemented on ARM64 architecture systems, allowing patches to be applied to the Linux kernel on the fly without rebooting or stopping the system.
    • Support for SuperH, x32, MIPS n32, and MIPS n34 architectures has been implemented in the minimalist C library nolibc, provided as part of the Linux kernel source code and offering a wrapper over basic system calls.
    • Rozšírená možnosť posielania obsahu core dumpov cez soket AF_UNIX, ktorá umožňuje vytvárať v priestore používateľa bezpečnejšie spracovateľské rutiny core dumpov, nezávislé na privátnych procesoch volaných jadrom. V novej verzii bol pridaný protokol na vytváranie serverov, ktorý dokáže spravovať spracovanie core dumpov na úrovni jednotlivých úloh. Napríklad pre niektoré procesy je možné ignorovať core dumpy, zatiaľ čo pre iné ich prenášať cez soket. Bol pripravený prototyp servera na správu core dumpov.
    • Pridaná možnosť príkazového riadku jadra „crashkernel=size,cma“ na rezerváciu pamäte cez CMA (Contiguous Memory Allocator) na ukladanie crash dumpu jadra.
    • Rozšírené možnosti mechanizmu pidfd, ktorý umožňuje používať identifikátory viazané na konkrétne procesy, ktoré sa na rozdiel od pid znovu nepriraďujú. Pridaná možnosť viazania k pidfd rozšírených atribútov z priestoru používateľa. Povolené otváranie súborových deskriptorov pre pidfd cez funkciu open_by_handle_at() bez viazania na súborový systém. Interné informácie vytvorené jadrom spolu s pidfd sú teraz viazané na proces, a nie na pidfd, a sú uchovávané medzi opätovným otvorením toho istého procesu.
    • Do subsystému BPF bola pridaná funkcia bpf_cgroup_read_xattr() na čítanie rozšírených atribútov súborov. Poskytla sa možnosť používať v BPF programoch typové reťazcové operácie ako bpf_strcmp, bpf_strnchr, bpf_strchrnul, bpf_strlen a bpf_strspn fungujúce v režime iba na čítanie. Bola pridaná možnosť využívať štandardné prúdy stdout a stderr na interakciu s komponentmi v priestore používateľa. Pre systémy založené na architektúre LoongArch bola v BPF implementovaná možnosť dynamickej modifikácie kódu, mechanizmu „BPF trampoline“ (znižuje náklady pri prenose volaní medzi jadrom a programami BPF) a spustenia programov, ktoré používajú struct_ops na vytváranie spracovateľských funkcií jadra cez BPF.
    • V systéme sledovania času bola implementovaná podpora pomocných hodín (auxiliary), ktoré nie sú viazané na bežné systémové hodiny a idú vlastným rytmom (predtým všetky hodiny išli rovnakým rytmom a líšili sa len posunom).
    • Pridaná počiatočná podpora proxy vykonávania (Proxy Execution) na zmiernenie problémov s inverziou priorít. Proxy vykonávanie umožňuje úlohe, ktorá čaká na uvoľnenie zámku, preniesť svoj kontext vykonávania úlohe, ktorá zámok drží, aby urýchlila uvoľnenie tohto zámku.
    • Pokračoval prenos zmien z vetvy Rust-for-Linux, súvisiacich s používaním jazyka Rust ako druhého jazyka na vývoj ovládačov a modulov jadra (podpora Rust nie je predvolene aktivovaná a nevedie k tomu, aby sa Rust stal povinnou závislosťou na zostavenie jadra). Pridané abstrakcie pre správu regulátorov napätia a prúdu, vlastností firmvéru, prostriedkov vstupu/výstupu a pamäte vstupu/výstupu. Implementovaný makro "warn_on!()". Pridaný typ UserPtr pre ukazovatele v priestore používateľa. Rozšírené funkcie modulov workqueue, uaccess, dma, time a list. Pridaný modul 'bits' s funkciami 'bit' a 'genmask'.
    • Prepracovaný kód na výpočet kontrolných súčtov CRC a pridané nové volania na generovanie hashov SHA-1 a SHA-2. Pridané optimalizácie špecifické pre hardvérové architektúry. Zvýšený výkon funkcie crc32c() na nových procesoroch x86_64, ktoré podporujú rozšírenie VPCLMULQDQ (Vector Carry-Less Multiplication of Quadwords).
    • Pre systémy S390 implementovaná podpora presunu do swapovacieho oddielu a migrácie veľkých stránok pamäte (transparent huge page).
    • Pridaná možnosť nastavenia agresivity uvoľňovania stránok pamäte (proactive-reclaim) pri jej nedostatku v súvislosti s jednotlivými uzlami NUMA, čo umožňuje vyčleniť uzly NUMA, pre ktoré sa bude uplatňovať aktívnejšie uvoľnenie pamäte. Napríklad, "echo "512M swappiness=10" > /sys/devices/system/node/node1/reclaim".
    • Do mechanizmu SCHED_EXT, ktorý umožňuje používať BPF na vytváranie plánovačov CPU, pridaná možnosť správy propustnosti cez cgroup. Napríklad, možno použiť parameter cpu.max na obmedzenie záťaže CPU.
    • Vyhlásené za zastarané automatické montovanie virtuálneho FS tracefs do adresára /sys/kernel/debug/tracing, namiesto ktorého sa má používať /sys/kernel/tracing.
  • Virtualizácia a bezpečnosť
    • Pridaná možnosť zapnutia ochrany pred zraniteľnosťami v CPU prostredníctvom výberu blokovaných vektorov útoku namiesto určenia konkrétnych zraniteľností v nastaveniach. Metódy blokovania sa vyberajú v závislosti od typu porušenia izolácie: medzi používateľom a jadrom (user-kernel), medzi používateľmi (user-user), medzi hosťujúcim systémom a hostiteľským prostredím (guest-host), medzi rôznymi hosťujúcimi systémami (guest-guest) a medzi rôznymi vláknami (cross-thread). Navrhnutý prístup umožňuje aktivovať ochranu len proti tým triedam zraniteľností, ktoré skutočne zaujímajú používateľa. Napríklad vlastníci cloudových prostredí môžu zapnúť režimy guest-host a guest-guest, po ktorých sa aktivujú metódy ochrany proti zraniteľnostiam BHI, GD, L1TF, MDS, MMIO, Retbleed, RFDS, Spectre_v2, SRBDS, SRSO a TAA.
    • Pridaná podpora pre kompilátor Clang so zapnutým režimom sledovania hĺbky zásobníka, v ktorom sa inicializujú všetky premenné uložené v zásobníku. Inicializácia sa uskutočňuje s cieľom zabrániť úniku informácií z jadra cez neinicializované premenné, ktoré môžu obsahovať pozostatky predtým uložených dát v zásobníku. Predtým bola podobná možnosť podporovaná pri použití GCC pluginu STACKLEAK.
    • Pridaná ochrana proti podvrhnutiu súborového systému /proc útočníkom prostredníctvom pripojenia v režime ‘bind’. Inode číslo koreňa /proc je teraz fixované (PROCFS_ROOT_INO) a môže byť overené procesom v priestore používateľa.
    • Do subsystému RV (Runtime Verification), určeného na overenie správnosti fungovania vysoko spoľahlivých systémov, bol pridaný komponent monitorovania rtapp (Real-time application monitor) na sledovanie typických problémov v aplikáciách pracujúcich v reálnom čase, ako aj komponenty rp, sssw a opid na testovanie plánovača úloh. Realizovaná bola možnosť vytvárania komponentov monitorovania, ktoré používajú na určenie modelu správania lineárnu temporálnu logiku namiesto deterministického automatu. Overovanie sa vykonáva počas behu prostredníctvom pripojenia spracovateľov k trasovacím bodom, ktoré porovnávajú skutočný priebeh vykonávania s vopred určeným referenčným modelom, ktorý určuje očakávané správanie systému.
    • Do systému AppArmor bola pridaná podpora správy prístupu k zásuvkám AF_UNIX.
    • V hypervízore KVM na systémoch ARM bola realizovaná podpora pre kontrolér prerušenia GICv5.
    • Pridaná nastavenie CONFIG_KVM_IOAPIC, ktoré umožňuje vypnúť podporu emulácie APIC, PIC a PIT v KVM.
    • Pridaná ochrana proti zraniteľnosti VMSCAPE.
    • Pridaná ioctl-príkaz FS_IOC_GETLBMD_CAP na získanie informácií o použití prostriedkov na ochranu integrity súboru z užívateľského priestoru.
    • Rozhranie /sys/fs/selinux/user bolo vyhlásené za zastarané, pri prístupe k nemu teraz dochádza k päťsekundovému oneskoreniu a do logu sa zapisuje varovanie.
  • Sieťový subsystém
    • Do implementácie technológie PSE (Power Sourcing Equipment), používaného na napájanie cez Ethernet pre zariadenia ako IP kamery a bezdrôtové prístupové body, bola pridaná podpora nastaviteľných stratégií hodnotenia rozpočtu napájania (celkovej dostupnej energie). Tieto stratégie umožňujú určiť, ktoré ports by sa mali odpojiť ako prvé na zabránenie preťaženiu.
    • Do implementácie protokolu MCTP (Management Component Transport Protocol) bola pridaná podpora smerovania paketov k externým uzlom cez medziuzly (gateway-routing). Napríklad nasledujúce pravidlá umožňujú nasmerovať pakety k uzlu s identifikátorom 10 (Endpoint ID 10) cez zariadenie mctpi2c0, s priamym pripojením na uzol s identifikátorom 9. mctp route add 9 via mctpi2c0 mctp neigh add 9 dev mctpi2c0 lladdr 0x1d mctp route add 10 gw 9
    • Pre UNIX sokety (AF_UNIX) bola implementovaná možnosť SO_INC, a pre adresný rod VSOCK možnosť SIOCINQ. Implementované možnosti sú podobné možnosti TCP_INQ pre TCP a umožňujú získať informácie o počte bajtov, ktoré sú dostupné na čítanie zo soketu pomocou riadiacej správy.
    • Pre TCP bola zapnutá prísna kontrola vyhláseného veľkosti okna prijatia, ktoré určuje veľkosť dát, ktoré je možné poslať pred prijatím ACK-potvrdenia od druhej strany. Predtým jadro pokračovalo v spracovaní dát, ktoré prišli nad vyhlásené okno prijatia, ale teraz s tým prestane.
    • V MPTCP (Multipath TCP) bola pridaná možnosť využitia možnosti soketu TCP_MAXSEG na obmedzenie maximálnej veľkosti odosielaných segmentov. MPTCP predstavuje rozšírenie protokolu TCP pre riadenie dodávky paketov súčasne cez niekoľko trás cez rôzne sieťové rozhrania priradené k rôznym IP adresám.
    • Pridaná podpora algoritmu riadenia preťaženia TCP DualPI2 (RFC 9332), ktorý umožňuje používať škálovateľné kontroléry preťaženia pre prevádzku s vysokými požiadavkami na kvalitu služby (napríklad TCP-Prague a DCTCP), bez zhoršenia výkonu klasickej prevádzky, pre ktorú sa používajú také kontroléry preťaženia ako Reno a Cubic.
    • Pridaný sysctl „force_forwarding“, cez ktorý je možné aktivovať presmerovanie prevádzky na vybraných sieťových rozhraní s IPv6.
    • Odstránená podpora algoritmu určovania strát paketov SACK (Selective Acknowledgment), popísaného v RFC 6675. Tento algoritmus bol vyhlásený za zastaraný v roku 2018. Pre určenie strát TCP paketov sa odporúča používať algoritmus RACK-TLP.
  • Zariadenie
    • Pokračuje sa v práci na drm ovládači (Direct Rendering Manager) Xe pre GPU založené na architektúre Intel Xe, ktorá sa používa vo grafických kartách Intel rodiny Arc a integrovaných grafikách, počnúc procesormi Tiger Lake. V novej verzii je predvolene pridaná podpora čipov na základe mikroarchitektúry Panthor Lake a pridaná podpora mikroarchitektúry WildCat Lake.
    • V ovládači AMDGPU pre GPU GFX9.x bola implementovaná podpora mechanizmu Cleaner Shader, ktorý zabezpečuje vyčistenie pamäte GPU pred jej opätovným použitím, aby sa predišlo úniku dát, ktoré zostali po práci iného procesu. Zlepšená podpora pohotovostného režimu. Pridaná možnosť prechodu do spacieho režimu v prostrediach s AMD SR-IOV. Zlepšené riadenie podsvietenia.
    • V ovládači i915 bola implementovaná podpora mechanizmu drm_panic, ktorý zobrazuje pri chybách podobu „modrej obrazovky smrti“. Pridaná podpora displejového ovládača, ktorý sa používa v čipoch rodiny Wildcat Lake.
    • Pokračuje integrácia komponentov ovládača Nova pre GPU NVIDIA, vybavených GSP firmvérmi, ktoré sa používajú od série NVIDIA GeForce RTX 2000 založenej na mikroarchitektúre Turing. Ovládač je napísaný v jazyku Rust. V novej verzii bol pridaný úroveň abstrakcie pre prácu s DMA, implementovaný parser VBIOS, pridaný kód na konfiguráciu rámcového buffera a zabezpečená podpora urýchlenej načítania v režime Falcon.
    • V ovládači adreno bola pridaná podpora GPU Qualcomm Adreno x1-45 a x1-85.
    • V ovládači msm bola pridaná podpora GPU Adreno SM8750 a mapovania videopamäte (VM_BIND).
    • V ovládači panfrost bola pridaná podpora GPU Mali, používaných v SoC Mediatek mt8370.
    • Do ovládača lima bola pridaná podpora GPU používaných v SoC Rockchip RK3528.
    • Bol pridaný ovládač mtd (Memory Technology Devices) pre prístup k NVM pamäti integrovanej do GPU Intel.
    • Pridaná podpora zvukových systémov ASoC IMX WM8524, AMD ACP7.2, SoundWire ACP 7.1, Fairphone 4 & 5, Qualcomm QCS8275, Framework Laptop 13 (AMD Ryzen AI 300), CS35L41 HDA (používaný v prenosných počítačoch ASUS), Richtek RTQ9124, TI TAS5753, HP EliteBook x360 830 G6, EliteBook 830 G6, LG 16Z90R-A, HP 15-fc000. Prebehla reorganizácia kódu HD-audio.
    • Bol pridaný podpora ARM platforiem, SoC a zariadení: NVIDIA Tegra264, Marvell PXA1908 (prvý 64-bitový čip od Marvell pre smartfóny), CIX P1, Axiado AX3000, Sophgo SG2000 (kombinujúci jadra ARM a RISC-V), Mediatek mt6572, exynos2200 (používaný v Samsung Galaxy S22), Renesas R-Car V4M-7, TI am62d2 a Sophgo sg2042, prenosné počítače na báze Mediatek mt8186 a Qualcomm Snapdragon X1, smartfóny a tablety na báze SoC mt6572, tegra30 a msm8976.

Zároveň latinskoamerická Nadácia slobodného softvéru vytvorila variantu úplne slobodného jadra 6.17 — Linux-libre 6.17-gnu, vyčisteného od prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo úseky kódu, ktorých použitie je obmedzené výrobcom. V vydaní 6.17 bol aktualizovaný kód čistenia blobov v ovládačoch amdgpu, prueth, iwlwifi, btusb, pci mhi host, adreno a6xx, nova-core a Intel AVS. Prebehlo čistenie názvov blobov v dts súboroch (devicetree) pre ARM čipy a Intel IPU7. Nahrávanie blobov v nových ovládačoch pci hda bolo neutralizované. Čistenie blobov v ovládači QLogic infiniband, ktorý bol odstránený z jadra, bolo zastavené.

Zdroj: opennet.ru

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