Uvoľnenie jadra Linux 6.3

Po dvoch mesiacoch vývoja Linus Torvalds predstavil vydanie jadra Linux 6.3. Medzi najvýznamnejšie zmeny patrí čistenie zastaraných platforiem ARM a grafických ovládačov, pokračovanie integrácie podpory jazyka Rust, nástroj hwnoise, podpora stromových štruktúr red-black v BPF, režim BIG TCP pre IPv4, zabudovaný test výkonu Dhrystone, možnosť zakázať vykonávanie v memfd, podpora vytvárania HID-ovládačov pomocou BPF, v Btrfs boli prijaté zmeny na zníženie fragmentácie blokových skupín.

V novej verzii bolo prijatých 15637 opráv od 2055 vývojárov; veľkosť patchu je 76 MB (zmeny sa dotkli 14296 súborov, bolo pridaných 1023183 riadkov kódu, odstránených 883103 riadkov). Pre porovnanie, v predchádzajúcej verzii bolo navrhnutých 16843 opráv od 2178 vývojárov; veľkosť patchu bola 62 MB. Približne 39% všetkých zmien v jadre 6.3 súvisí s ovládačmi zariadení, asi 15% zmien sa týka aktualizácie kódu špecifického pre hardvérové architektúry, 10% súvisí so sieťovým stackom, 5% s файловými системами a 3% s vnútornými subsystémami jadra.

Hlavné novinky v jadre 6.3:

  • Pamäť a systémové služby
    • Bola vykonaná významná čistka kódu súvisiaceho so starými a nepoužívanými platforiemi ARM, čo umožnilo znížiť veľkosť zdrojových textov jadra o 150 tisíc riadkov. Odstránených bolo viac ako 40 starých platforiem ARM.
    • Bola implementovaná možnosť vytvárania ovládačov pre zariadenia s rozhraním HID (Human Interface Device), realizovaných ako BPF-programy.
    • Pokračoval prenos z vetvy Rust-for-Linux doplnkovej funkcionality súvisiacej s využitím jazyka Rust ako druhého jazyka na vývoj ovládačov a modulov jadra. Podpora Rust nie je aktívna predvolene a nevedie k zaradeniu Rust medzi povinné závislosti na zostavenie jadra. Funkcionalita navrhnutá v predchádzajúcich vydaniach bola rozšírená o podporu typov Arc (implementácia ukazovateľov s počítadlom referencií), ScopeGuard (vykonáva čistenie pri výstupe z dosahu) a ForeignOwnable (umožňuje premiestnenie ukazovateľov medzi kódmi v C a Rust). Z balíka ‘alloc’ bol odstránený modul ‘borrow’ (typ ‘Cow’ a typáž ‘ToOwned’). Uvádza sa, že stav podpory Rust v jadre je už blízko k tomu, aby sa začalo prijímať do jadra prvé moduly napísané v jazyku Rust.
    • Vo variante User-mode Linux (spustenie jadra ako používateľského procesu) na systémoch x86-64 bola implementovaná podpora kódu napísaného v jazyku Rust. Pridaná podpora pre zostavovanie User-mode Linux pomocou clang s aktivovanými optimalizáciami počas prepojenia (LTO).
    • Pridaný nástroj hwnoise na sledovanie oneskorení spôsobených špecifikami hardvérovej práce. Určujú sa odchýlky času vykonávania operácií (jitter) pri vypnutí spracovania prerušenia, ktoré presahujú jednu mikrosekundu za 10 minút výpočtov.
    • Pridaný modul jadra s implementovaným testom výkonu Dhrystone, ktorý je možné použiť na hodnotenie výkonu CPU v konfiguráciách bez komponentov užívateľského priestoru (napríklad v štádiu portovania pre nové SoC, na ktorých je implementované iba načítanie jadra).
    • Pridaný parameter príkazového riadku jadra „cgroup.memory=nobpf“, ktorý vypína sledovanie spotreby pamäte pre programy BPF, čo môže byť užitočné pre systémy s izolovanými kontajnermi.
    • Pre programy BPF bola navrhnutá implementácia dátovej štruktúry červeno-čierneho stromu, v ktorej sa používajú kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) namiesto pridávania nového typu mapovania.
    • Do mechanizmu opätovne spustiteľných sekvencií (rseq, restartable sequences) bola pridaná možnosť posielať procesom identifikátory paralelného vykonávania (memory-map concurrency ID), identifikované s číslom CPU. Rseq poskytuje prostriedky pre rýchle atómové vykonávanie operácií, ktoré sa v prípade prerušenia iným vláknom vyčistia a vykonáva sa opakovaný pokus o vykonanie.
    • Na procesoroch ARM bola zabezpečená podpora príkazov SME 2 (Scalable Matrix Extension).
    • Pre architektúry s390x a RISC-V RV64 bola implementovaná podpora mechanizmu „BPF trampoline“, ktorý minimalizuje režijné náklady pri prenose volaní medzi jadrom a programami BPF.
    • Na systémoch s procesormi založenými na architektúre RISC-V bola implementovaná podpora príkazov „ZBB“ na zrýchlenie operácií so reťazcami.
    • Pre systémy založené na architektúre príkazového súboru LoongArch (používanej v procesoroch Loongson 3 5000 a implementujúcej nový RISC ISA, podobný MIPS a RISC-V) bola implementovaná podpora pre randomizáciu adresného priestoru jadra (KASLR), zmeny umiestnenia jadra v pamäti (relocation), hardvérové body zastavenia a mechanizmus kprobe.
    • V mechanizme DAMOS (Data Access Monitoring-based Operation Schemes), ktorý umožňuje uvoľňovanie pamäte na základe frekvencie prístupu k pamäti, bola implementovaná podpora filtrov na vylúčenie určitej pamäte z spracovania v DAMOS.
    • V minimálnej štandardnej C knižnici Nolibc bola implementovaná podpora architektúry s390 a súboru inštrukcií Arm Thumb1 (okrem podpory ARM, AArch64, i386, x86_64, RISC-V a MIPS).
    • Bola vykonaná optimalizácia objtool na urýchlenie zostavovania jadra a zníženie vrcholovej spotreby pamäte pri zostavovaní (pri zostavovaní jadra v režime „allyesconfig“ už nevznikajú problémy so zastavovaním procesov na systémoch s 32 GB RAM).
    • Bola ukončená podpora zostavovania jadra kompilátorom Intel ICC, ktorý už dlhšiu dobu nefungoval a nikto neprejavil záujem to opraviť.
  • Diskový subsystém, I/O a súborové systémy
    • V tmpfs bola implementovaná podpora mapovania identifikátorov používateľov pripojených súborových systémov, používaná na priradenie súborov určitého používateľa na pripojenom zahraničnom partíci s iným používateľom v aktuálnom systéme.
    • V Btrfs pre zníženie fragmentácie skupín blokov bola zabezpečená separácia extents podľa veľkosti pri pridelovaní blokov, t.j. akákoľvek skupina blokov je teraz obmedzená na malé (do 128 KB), stredné (do 8 MB) a veľké extenty. Prebehla refaktorizácia implementácie raid56. Boli prepracované kódy na kontrolu kontrolných súčtov. Vykonali sa optimalizácie výkonu, ktoré umožnili až 10-násobné zrýchlenie operácie send vďaka caching utime pre adresáre a vykonaniu príkazov iba pri potrebe. Zrýchlenie operácií fiemap bolo trikrát vďaka preskočeniu kontrol spätných odkazov pre zdieľané dáta (snapshoty). Operácie s metadátami sa zrýchlili o 10% optimalizáciou vyhľadávania kľúčov v štruktúrach b-tree.
    • Zvýšený výkon FS ext4 vďaka možnosti súčasného vykonávania operácií priameho vstupu/výstupu viacerými procesmi v predrezervovaných blokoch, pričom sa používajú zdieľané zamknutia inode namiesto exkluzívnych zamknutí.
    • V f2fs bola vykonaná práca na zlepšení čitateľnosti kódu. Riešili sa dôležité problémy týkajúce sa atómového zápisu a nového cache extents.
    • V súborovom systéme EROFS (Enhanced Read-Only File System), určenom pre oblasti s prístupom len na čítanie, je implementovaná možnosť priradenia operácií dekompresie komprimovaných súborov k CPU na zníženie latencie pri prístupe k dátam.
    • Do plánovača I/O BFQ bola pridaná podpora pre pokročilé diskové jednotky, napríklad pre tie, ktoré využívajú viacero samostatne riadených pohonov hláv (Multi Actuator).
    • Do implementácie klienta a servera NFS bola pridaná podpora šifrovania dát pomocou algoritmu AES-SHA2.
    • Do subsystému FUSE (Filesystems In User Space) bola pridaná podpora mechanizmu rozšírenia požiadaviek, ktorý umožňuje pridávanie dodatočných informácií do požiadaviek. Na základe tejto možnosti bola implementovaná funkcia pridávania identifikátorov skupín do požiadaviek FS, potrebná na zohľadnenie prístupových práv pri vytváraní objektov v FS (create, mkdir, symlink, mknod).
  • Virtualizácia a bezpečnosť
    • Do hypervízora KVM pre systémy x86 bola pridaná podpora rozšírených hypervýziev Hyper-V a zabezpečeno ich presmerovanie do spracovateľa, ktorý funguje v hostiteľskom prostredí v užívateľskom priestore. Zmeny umožnili implementovať podporu pre vnorené spustenie hypervízora Hyper-V.
    • V KVM bolo zjednodušené obmedzenie prístupu hosťovského systému k udalostiam PMU (Performance Monitor Unit) súvisiacim s meraním výkonu.
    • Do mechanizmu memfd, ktorý umožňuje identifikáciu oblasti pamäte prostredníctvom prenášaného súborového deskriptoru medzi procesmi, bola pridaná možnosť vytvárania oblastí, v ktorých je zakázané vykonávanie kódu (non-executable memfd) a nemožno v budúcnosti nastaviť práva na vykonávanie.
    • Bola pridaná nová prctl operácia PR_SET_MDWE, ktorá blokuje pokusy o zapnutie prístupových práv do pamäte, ktoré súčasne povolujú zápis a vykonávanie.
    • Bola pridaná a predvolene povolená ochrana pred útokmi typu Spectre, implementovaná na základe automatického režimu IBRS (Enhanced Indirect Branch Restricted Speculation) navrhnutého v procesoroch AMD Zen 4, ktorý umožňuje adaptívne povolenie a zakázanie špekulatívneho vykonávania inštrukcií počas spracovania prerušených požiadaviek, systémových volaní a prepínania kontextov. Navrhnutá ochrana vedie k menším nákladom v porovnaní s ochranou Retpoline.
    • Bola odstránená zraniteľnosť, ktorá umožňovala obísť ochranu pred útokmi Spectre v2 pri aplikácii technológie súčasného multithreadingu (SMT alebo Hyper-Threading) a spôsobená vypnutím mechanizmu STIBP (Single Thread Indirect Branch Predictors) pri výbere režimu ochrany IBRS.
    • Pre systémy založené na architektúre ARM64 bola pridaná nová cieľová konfigurácia „virtconfig“, pri ktorej sa aktivuje iba minimálny súbor komponentov jadra potrebný na bootovanie vo virtualizovaných systémoch.
    • Pre architektúru m68k bola pridaná podpora filtrácie systémových volaní pomocou mechanizmu seccomp.
    • Bola pridaná podpora integrovaných zariadení CRB TPM2 (Command Response Buffer) v procesoroch AMD Ryzen, založených na technológii Microsoft Pluton.
  • Sieťový subsystém
    • Bol pridaný netlink rozhranie na nastavenie podúrovne prevencie kolízií PLCA (Physical Layer Collision Avoidance), definovaného vo špecifikácii IEEE 802.3cg-2019 a používaného v Ethernetových sieťach 802.3cg (10Base-T1S), optimalizovaných na pripojenie zariadení internetu vecí a priemyselných systémov. Použitie PLCA zvyšuje výkon v Ethernetových sieťach s deleným médiom.
    • Bola ukončená podpora API „wireless extensions“ na správu bezdrôtových rozhraní WiFi 7 (802.11be), pretože toto API nezahŕňa všetky potrebné nastavenia. Pri pokuse o použitie API „wireless extensions“, ktoré naďalej zostáva podporované ako emulovaná vrstva, sa teraz pre väčšinu aktuálnych zariadení vyžaduje varovanie.
    • Bola pripravená podrobná dokumentácia k API netlink (pre vývojárov jadra a pre vývojárov aplikácií v užívateľskom priestore). Implementovaný nástroj ynl-gen-c na generovanie C kódu na základe YAML špecifikácií protokolu Netlink.
    • Do sieťových socketov bola pridaná podpora možnosti IP_LOCAL_PORT_RANGE na zjednodušenie konfigurácie odchádzajúcich spojení cez adresové prekladače bez použitia SNAT. Pri použití jedného IP adresy na viacerých hostiteľoch IP_LOCAL_PORT_RANGE umožňuje použiť na každom hostiteľovi vlastný rozsah odchádzajúcich sieťových portov a na bráne presmerovávať pakety na základe čísel portov.
    • Pre MPTCP (MultiPath TCP) je implementovaná možnosť spracovania zmiešaných tokov, v ktorých sa používajú protokoly IPv4 a IPv6. MPTCP je rozšírenie protokolu TCP, ktoré umožňuje vytvárať TCP pripojenie s doručovaním paketov súčasne cez niekoľko trás prostredníctvom rôznych sieťových rozhraní, priradených k rôznym IP adresám.
    • Pre IPv4 je implementovaná možnosť používania rozšírenia BIG TCP, ktoré umožňuje zvýšiť maximálnu veľkosť TCP paketu na 4GB na optimalizáciu prevádzky vo vysokorýchlostných vnútorných sieťach dátových centier. Takéto zvýšenie veľkosti paketu pri 16-bitovom poli v hlavičke sa dosahuje implementáciou «jumbo» paketov, kde je veľkosť v IP hlavičke nastavená na 0 a skutočná veľkosť je odoslaná v samostatnom 32-bitovom poli v pripojenej hlavičke.
    • Bol pridaný nový parameter sysctl default_rps_mask, ktorým možno nastaviť predvolenú konfiguráciu RPS (Receive Packet Steering), ktorá zodpovedá za rozdeľovanie spracovania prichádzajúceho prenosu medzi CPU jadrami na úrovni spracovateľov prerušení.
    • Podpora pre politiku spracovania frontov pre obmedzenie prenosu CBQ (class-based queuing), ATM (ATM virtuálne okruhy), dsmark (diferenciovaný marker služby), tcindex (index riadenia prenosu) a RSVP (protokol rezervácie zdrojov) bola zastavená. Tieto politiky boli dlhodobo zanedbávané a nenašli sa záujemcovia na ich pokračovanie.
  • Zariadenie
    • Všetky grafické ovládače založené na DRI1 boli odstránené: i810 (staré integrované grafické karty Intel 8xx), mga (Matrox GPU), r128 (ATI Rage 128 GPU vrátane kariet Rage Fury, XPERT 99 a XPERT 128), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) a via (VIA IGP), ktoré boli vyhlásené za zastarané v roku 2016 a nie sú podporované v Mesa od roku 2012.
    • Zastaralé framebuffer ovládače (fbdev) omap1, s3c2410, tmiofb a w100fb boli odstránené.
    • Bol pridaný DRM ovládač pre integrované v CPU Intel Meteor Lake (14. generácia) bloky VPU (Versatile Processing Unit), určené na urýchlenie operácií súvisiacich s počítačovým videním a strojovým učením. Ovládač je implementovaný s použitím subsystémy «accel», zameraného na zabezpečenie podpory urýchľovačov výpočtov, ktoré môžu byť dodávané ako samostatné ASIC, tak aj vo forme IP blokov vo vnútri SoC a GPU.
    • V ovládači i915 (Intel) bola rozšírená podpora diskrétnych grafických kariet Intel Arc (DG2/Alchemist), implementovaná predbežná podpora GPU Meteor Lake a pridaná podpora GPU Intel Xe HP 4tile.
    • V ovládači amdgpu bola pridaná podpora technológie AdaptiveSync a možnosť používať režim ochrany pred zachytávaním údajov zobrazených na obrazovke (Secure Display) s viacerými displejmi. Aktualizovaná podpora DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x a DP 2.1.
    • V ovládači msm (GPU Qualcomm Adreno) bola pridaná podpora platforiem SM8350, SM8450, SM8550, SDM845 a SC8280XP.
    • V ovládači Nouveau bola ukončená podpora starých volaní ioctl.
    • V ovládači etnaviv bola pridaná experimentálna podpora NPU VerSilicon (VeriSilicon Neural Network Processor).
    • Bol implementovaný ovládač pata_parport pre IDE úložiská pripojiteľné cez paralelný port. Pridaný ovládač umožnil odstrániť z jadra starý ovládač PARIDE a modernizovať subsystém ATA. Obmedzením nového ovládača je nemožnosť súčasného pripojenia tlačiarne a disku cez paralelný port.
    • Bol pridaný ovládač ath12k pre bezdrôtové karty na čipoch Qualcomm s podporou Wi-Fi 7. Pridaná podpora bezdrôtových kariet na čipoch RealTek RTL8188EU.
    • Pridala sa podpora 46 dosiek s procesormi na báze architektúry ARM64, medzi ktoré patrí Samsung Galaxy Tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, ako aj zariadenia na báze SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 a SDM632, Rockchips RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 a RK3328, TI K3 (AM642/AM654/AM68/AM69).

Zároveň latinskoamerický Fond voľného softvéru vytvoril variant úplne voľného jadra 6.3 — Linux-libre 6.3-gnu, vyčisteného od prvkov firmvéru a ovládačov obsahujúcich nevlastné komponenty alebo časti kódu, ktorých použitie je obmedzené výrobcom. V vydaní 6.3 bola vykonaná čistka blobov v nových ovládačoch ath12k, aw88395 a peb2466, ako aj v nových súboroch device tree pre zariadenia qcom na báze architektúry AArch64. Bol aktualizovaný kód na čistenie blobov v ovládačoch a subsystémoch amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, ako aj v ovládačoch pre DVB karty s programovým dekódovaním a v predkompilovaných súboroch BPF. Čistenie ovládačov mga, r128, tm6000, cpia2 a r8188eu bolo ukončené, pretože boli odstránené z jadra. Vylepšené čistenie blobov ovládača i915.

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