Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie jadra Linux 5.17. Medzi najvýraznejšími zmenami sa nachádzajú: nový systém správy výkonu pre procesory AMD, schopnosť rekurzívne mapovať identifikátory používateľov v súborových systémoch, podpora prenosných skompilovaných BPF programov, prechod generátora pseudonáhodných čísel na algoritmus BLAKE2s, nástroj RTLA na analýzu vykonávania v reálnom čase, nový backend fscache na cacheovanie sieťových FS a možnosť pripevniť mená k anonymným operáciám mmap.
Nová verzia obsahuje 14203 opráv od 1995 vývojárov, veľkosť patchu je 37 MB (zmeny sa dotkli 11366 súborov, bola pridaná 506043 riadkov kódu, 250954 riadkov bolo odstránených). Približne 44% všetkých zmien v 5.17 je spojených s ovládačmi zariadení, okolo 16% zmien súvisí s aktualizáciou kódu špecifického pre hardvérové architektúry, 15% je spojených s sieťovým zásobníkom, 4% s súborovými systémami a 4% s internými subsystémami jadra.
Hlavné novinky v jadre 5.17:
- Diskový subsystém, I/O a súborové systémy
- Bola implementovaná možnosť vnoreného mapovania identifikátorov používateľov pripojených súborových systémov, ktorá sa používa na mapovanie súborov konkrétneho používateľa na pripojenom cudzom partíci s iným používateľom v aktuálnom systéme. Pridaná funkcia umožňuje rekurzívne používať mapovanie nad súborovými systémami, pre ktoré už je mapovanie aplikované.
- Podsysť fscache bola úplne prepracovaná a používa sa na organizáciu cacheovania v lokálnom súborovom systéme dát prenášaných cez sieťové súborové systémy. Nová implementácia sa vyznačuje významným zjednodušením kódu a nahradením zložitých operácií plánovania a sledovania stavov objektov jednoduchšími mechanizmami. Podpora nového fscache je implementovaná v súborovom systéme CIFS.
- V subsystéme sledovania udalostí v FS fanotify bol implementovaný nový typ udalostí FAN_RENAME, ktorý umožňuje zachytiť operáciu premenovania súborov alebo priečinkov naraz (predtým sa na spracovanie premenovaní používali dve oddelené udalosti FAN_MOVED_FROM a FAN_MOVED_TO).
- V súborovom systéme Btrfs bola optimalizovaná logovacia a fsync operácia pre veľké adresáre, realizovaná prostredníctvom kopírovania iba indexových kľúčov a zníženia objemu logovaných metadát. Bola zabezpečená podpora indexovania a vyhľadávania podľa veľkosti záznamov o voľnom priestore, čo umožnilo približne o 30% znížiť oneskorenia a skrátiť čas vyhľadávania. Povolené je prerušovať operácie defragmentácie. Je zahrnutá možnosť pridávať zariadenia pri vypnutí vyvažovania medzi úložiskami, t.j. pri pripojení FS s voľbou skip_balance.
- Bol navrhnutý nový syntax pripojenia súborového systému Ceph, ktorý rieši existujúce problémy súvisiace s viazaním na IP adresy. Okrem IP adresy na určenie servera je teraz možné použiť identifikátor klastera (FSID): mount -t ceph user@fsid.fs_name=\/[subdir] mnt -o mon_addr=monip1[:port][\/monip2[:port]]
- Súborový systém Ext4 bol prevedený na nový API pre pripojenie, ktorý oddelí fázy rozboru možností pripojenia a nastavenia superbloku. Podpora pripojovacích možností lazytime a nolazytime bola zastavená, ktoré boli pridané ako dočasná zmena na zjednodušenie prechodu util-linux na použitie príznaku MS_LAZYTIME. Bola pridaná podpora nastavovania a čítania štítkov v FS (ioctl FS_IOC_GETFSLABEL a FS_IOC_SETFSLABEL).
- Do NFSv4 bola pridaná podpora práce v súborových systémoch bez rozlišovania veľkosti písmen v názvoch súborov a adresárov. V NFSv4.1+ bola pridaná podpora určenia agregovaných relácií (trunking).
- Pamäť a systémové služby
- Bol pridaný ovládač amd-pstate, ktorý zabezpečuje dynamické riadenie frekvencie pre dosiahnutie optimálneho výkonu. Ovládač podporuje CPU a APU AMD od generácie Zen 2, bol vyvinutý v spolupráci s firmou Valve a zameriava sa na zvýšenie efektivity riadenia spotreby energie. Pre adaptívnu zmenu frekvencie sa používa mechanizmus CPPC (Collaborative Processor Performance Control), ktorý umožňuje presnejšie meniť ukazovatele (nie je obmedzený na tri úrovne výkonu) a rýchlejšie reagovať na zmenu stavu, než predtým používané P-state ovládače na báze ACPI (CPUFreq).
- V subsystéme eBPF bol navrhnutý spracovateľ bpf_loop(), ktorý poskytuje alternatívny spôsob organizovania slučiek v eBPF programoch, rýchlejší a jednoduchší na kontrolu verifikátorom.
- Na úrovni jadra bol implementovaný mechanizmus CO-RE (Compile Once — Run Everywhere), ktorý umožňuje zostavovať kód eBPF-programov len raz a používať špeciálny univerzálny načítač, ktorý prispôsobuje načítavaný program aktuálnemu jadru a typom BTF (BPF Type Format).
- Bola pridaná možnosť priraďovania názvov pre oblasti privátnej anonymnej (vyhradené cez malloc) pamäte, čo môže zjednodušiť ladenie a optimalizáciu spotreby pamäte v aplikáciách. Názvy sa priraďujú cez prctl s príznakom PR_SET_VMA_ANON_NAME a zobrazujú sa v /proc/pid/maps a /proc/pid/smaps vo forme „[anon:]“.
- V plánovači úloh je zabezpečené sledovanie a zobrazovanie v /proc/PID/sched času stráveného procesmi v stave núteného nečinnosti (forced-idle), ktorý sa používa napríklad na zníženie zaťaženia pri prehriatí procesora.
- Bol pridaný modul gpio-sim, určený na simuláciu čipov GPIO na testovanie.
- Do príkazu „perf ftrace“ bola pridaná podpríkaz „latency“ na generovanie histogramov s informáciami o oneskoreniach.
- Bol pridaný súbor nástrojov „RTLA“ na analýzu práce v reálnom čase. Obsahuje také nástroje, ako osnoise (určuje vplyv operačného systému na vykonávanie úlohy) a timerlat (mení oneskorenia spojené s časovačom).
- Integrována druhá séria opráv s implementáciou koncepcie foliantov strán pamäte (page folios), ktoré pripomínajú zjednotené stránky pamäte (compound pages), ale líšia sa vylepšenou sémantikou a prehľadnejšou organizáciou práce. Používanie foliantov umožňuje urýchliť správu pamäte v niektorých subsystémoch jadra. V navrhovaných opravách bol dokončený prechod stránkového cache na používanie foliantov a bola pridaná základná podpora foliantov vo FS XFS.
- Bol pridaný režim zostavovania „make mod2noconfig“, pri ktorom sa generuje konfigurácia, ktorá zbiera všetky vypnuté subsystémy vo forme jadrových modulov.
- Zvýšené požiadavky na verziu LLVM/Clang, ktorú je možné použiť na zostavovanie jadra. Na zostavenie je teraz potrebné minimálne vydanie LLVM 11.
- Virtualizácia a bezpečnosť
- Navrhnutá aktualizovaná implementácia generátora pseudo-náhodných čísel RDRAND, ktorý je zodpovedný za fungovanie zariadení /dev/random a /dev/urandom, sa vyznačuje prechodom na používanie hash funkcie BLAKE2s namiesto SHA1 pre operácie miešania entropie. Zmena umožnila zvýšiť bezpečnosť generátora pseudo-náhodných čísel tým, že sa odstránil problematický algoritmus SHA1 a vylúčila sa prepívanie inicializačného vektora RNG. Keďže algoritmus BLAKE2s prekonáva SHA1 z hľadiska výkonu, jeho aplikácia mala tiež pozitívny dopad na výkonnosť.
- Pridaná ochrana proti zraniteľnostiam v procesoroch, ktoré sú spôsobené špekulatívnym vykonávaním pokynov po operáciách bezpodmienečného priameho skoku. Problém vzniká z dôvodu predikčného spracovania pokynov, ktoré nasledujú v pamäti bezprostredne za príkazom skoku (SLS, Straight Line Speculation). Na aktiváciu ochrany je potrebné zostavenie s použitím verzie GCC 12, ktorá je momentálne v testovacej fáze.
- Pridaný mechanizmus sledovania počtu odkazov (refcount, reference-count), zameraný na zníženie počtu chýb pri počítaní odkazov, ktoré vedú k prístupu do pamäte po jej uvoľnení. Mechanizmus je zatiaľ obmedzený na sieťovú subsystém, ale v budúcnosti môže byť prispôsobený aj pre iné časti jadra.
- Realizované rozšírené kontroly nových záznamov v tabuľke strán pamäte procesu, ktoré umožňujú identifikovať niektoré typy poškodení a zastaviť systém, čím sa blokujú útoky v ranných fázach.
- Pridaná možnosť dekomprimácie modulov jadra priamo jadrom, a nie spracovateľom v užívateľskom priestore, čo umožňuje pomocou LSM-modulu LoadPin zabezpečiť, aby sa moduly jadra načítali do pamäte z overeného úložného zariadenia.
- Zabezpečené zostavenie s prepínačom „-Wcast-function-type“, ktorý zahŕňa výstup varovaní o prevode ukazovateľov funkcií na nekompatibilný typ.
- Pridaný virtuálny hostiteľský ovládač pvUSB pre hypervízor Xen, poskytujúci prístup k USB zariadeniam pripojeným do hosťovacích systémov (umožňuje hosťovacím systémom pristupovať k fyzickým USB zariadeniam, ktoré sú priradené k hosťovaciemu systému).
- Bol pridaný modul, ktorý umožňuje prístup k subsystému IME (Intel Management Engine) prostredníctvom Wi-Fi. Ten je dodávaný vo väčšine moderných základných dosiek s procesormi Intel a je realizovaný ako samostatný mikročip, ktorý pracuje nezávisle od CPU.
- Pre architektúru ARM64 bola implementovaná podpora debuggovacieho nástroja KCSAN (Kernel Concurrency Sanitizer), ktorý je určený na dynamické odhaľovanie podmienok závodov v rámci jadra.
- Pre 32-bitové systémy ARM bola pridaná možnosť použití mechanizmu KFENCE na odhaľovanie chýb pri práci s pamäťou.
- Do hypervízora KVM bola pridaná podpora inštrukcií AMX (Advanced Matrix Extensions), ktoré sú implementované v nadchádzajúcich serverových procesoroch Intel Xeon Scalable.
- Sieťový subsystém
- Bola pridaná podpora offloadingu na stranu sieťových zariadení pre operácie spojené s riadením prevádzky.
- Bola pridaná možnosť používať protokol MCTP (Management Component Transport Protocol) nad zariadeniami so sériovým rozhraním. MCTP môže byť použitý na komunikáciu medzi riadiacimi kontrolérmi a prislúchajúcimi zariadeniami (host procesory, periférne zariadenia atď.).
- Bola optimalizovaná TCP stoh, napríklad pre zvýšenie výkonu volaní recvmsg bolo implementované oneskorené uvoľnenie svojich zásobníkov.
- Na úrovni oprávnení CAP_NET_RAW je povolené nastaviť prostredníctvom funkcie setsockopt režimy SO_PRIORITY a SO_MARK.
- Pre IPv4 je povolené pripojenie raw socketov nie k lokálnym IP adresám, pomocou možností IP_FREEBIND a IP_TRANSPARENT.
- Bol pridaný sysctl arp_missed_max na nastavenie prahovej hodnoty počtu zlyhaní pri kontrole ARP monitorom, po ktorej je sieťové rozhranie preložené do vypnutého stavu.
- Bola poskytnutá možnosť nastaviť jednotlivé hodnoty sysctl min_pmtu a mtu_expires pre sieťové mená priestorov.
- V API ethtool bola pridaná možnosť nastaviť a zistiť veľkosť zásobníkov prichádzajúcich a odchádzajúcich paketov.
- V Netfilter bola pridaná podpora filtrovania tranzitného pppoe prevádzky v sieťovom moste.
- V module ksmbd, ktorý implementuje súborový protokol SMB3, bola pridaná podpora výmeny kľúčov, pričom bol aktivovaný sieťový port 445 pre smbdirect a bola pridaná podpora parametra "smb2 max credit". servera, ktorý používa protokol SMB3, bola pridaná podpora výmeny kľúčov, využíva sa sieťový port 445 pre smbdirect a bola pridaná podpora pre parameter 'smb2 max credit.
- Zariadenie
- Do subsystéme drm (Direct Rendering Manager) a ovládači i915 bola pridaná podpora obrazoviek na zobrazenie dôverných informácií, napríklad niektoré notebooky sú vybavené obrazovkami so zabudovaným režimom dôverného prezerania, ktorý sťažuje pozorovanie zvonku. Pridané zmeny umožňujú pripojiť špecializované ovládače pre takéto obrazovky a spravovať režimy dôverného prezerania prostredníctvom nastavenia vlastností v bežných KMS ovládačoch.
- V ovládači amdgpu bola pridaná podpora debugovacej technológie STB (Smart Trace Buffer) pre všetky podporované GPU AMD. STB zjednodušuje analýzu zlyhaní a identifikáciu zdroja problémov ukladaním v špeciálnom bufferi informácií o funkciách vykonávaných pred posledným zlyhaním.
- V ovládači i915 bola pridaná podpora čipov Intel Raptor Lake S a predvolene bola aktivovaná podpora grafickej subsystému čipov Intel Alder Lake P. Bola poskytnutá možnosť spravovania podsvietenia obrazovky cez rozhranie DPCD VESA.
- V ovládačoch fbcon/fbdev bola opätovne zavedená podpora hardvérovo urýchlenej rolovania v konzole.
- Pokračuje integrácia zmien na podporu čipov Apple M1. Implementovala sa možnosť používať ovládač simpledrm na systémoch s čipom Apple M1 na výstup cez framebuffer poskytovaný firmvérom.
- Bola pridaná podpora ARM SoC, zariadení a platforiem Snapdragon 7c, 845 a 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (používané v Wi-fi smerovačoch), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
- Bola pridaná podpora procesorov ARM Cortex-M55 a Cortex-M33.
- Bola pridaná podpora zariadení založených na CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
- Bola pridaná podpora SoC StarFive JH7100 založeného na architektúre RISC-V.
- Bol pridaný ovládač lenovo-yogabook-wmi na spravovanie podsvietenia klávesnice a prístup k rôznym senzorom v Lenovo Yoga Book.
- Bol pridaný ovládač asus_wmi_sensors na prístup k senzorom používaným na základných doskách Asus X370, X470, B450, B550 a X399 na báze procesorov AMD Ryzen.
- Bol pridaný ovládač x86-android-tablets pre tabletové počítače založené na architektúre x86, dodávané s platformou Android.
- Pridaná podpora pre dotykové obrazovky TrekStor SurfTab duo W1 a elektronické pero pre tablety Chuwi Hi10 Plus a Pro.
- Do ovládačov pre SoC Tegra 20/30 bola pridaná podpora správy napájania a napätia. Zabezpečená je možnosť spustenia na starších 32-bitových zariadeniach na báze SoC Tegra, ako sú ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 a Pad TF300TG.
- Pridané ovládače pre priemyselné počítače Siemens.
- Pridaná podpora LCD panelov Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA a Team Source Display TST043015CMHX.
- Pridaná podpora zvukových systémov a kodekov AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel systémy používajúce NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Riešené problémy s Tegra194 HD-audio. Pridaná podpora HDA pre kodeky CS35L41. Zlepšená podpora zvukových systémov pre notebooky Lenovo a HP, ako aj základné dosky Gigabyte.
Zdroj: opennet.ru
