Linux 6.1 branduolio leidimas

Po dviejų mėnesių kūrimo Linusas Torvaldsas pristatė Linux branduolio 6.1 versiją. Tarp ryškiausių pakeitimų: palaikymas tvarkyklių ir modulių kūrimui Rust kalba, panaudotų atminties puslapių nustatymo mechanizmo modernizavimas, speciali atminties tvarkyklė BPF programoms, atminties problemų diagnozavimo sistema KMSAN, KCFI (Kernelk Control). -Flow Integrity) apsaugos mechanizmas, klevo struktūros medžio įvedimas.

Naujoje versijoje yra 15115 2139 pataisymų iš 51 2 kūrėjų, pataisų dydis yra 6.0 MB, o tai yra maždaug 5.19 kartus mažesnis nei pataisų iš 13165 ir 716247 branduolių. Pakeitimai paveikė 304560 45 failus, buvo pridėta 6.1 14 kodo eilučių ir ištrinta 14 3 eilučių. Apie 3% visų pakeitimų, pateiktų XNUMX versijoje, yra susiję su įrenginių tvarkyklėmis, maždaug XNUMX% pakeitimų yra susiję su aparatinės įrangos architektūroms būdingo kodo atnaujinimu, XNUMX% yra susiję su tinklo dėku, XNUMX% yra susiję su failų sistemomis ir XNUMX%. yra susiję su vidiniais branduolio posistemiais.

Pagrindinės 6.1 branduolio naujovės:

  • Atminties ir sistemos paslaugos
    • Pridėta galimybė naudoti Rust kaip antrąją kalbą kuriant tvarkykles ir branduolio modulius. Pagrindinė „Rust“ palaikymo priežastis – palengvinti saugių ir kokybiškų įrenginių tvarkyklių rašymą, sumažinant klaidų tikimybę dirbant su atmintimi. Rūdžių palaikymas pagal numatytuosius nustatymus yra išjungtas, todėl Rust neįtraukiama kaip būtina branduolio kūrimo priklausomybė. Branduolys iki šiol priėmė minimaliai nuimtą pataisų versiją, kuri sumažinta nuo 40 iki 13 tūkstančių kodo eilučių ir suteikia tik būtiną minimumą, kurio pakanka sukurti paprastą branduolio modulį, parašytą Rust kalba. Ateityje planuojama palaipsniui didinti esamą funkcionalumą, kitus pakeitimus perkeliant iš „Rust-for-Linux“ šakos. Lygiagrečiai kuriami projektai, skirti panaudoti siūlomą infrastruktūrą kuriant NVMe diskų tvarkykles, 9p tinklo protokolą ir Apple M1 GPU Rust kalba.
    • Sistemoms, pagrįstoms AArch64, RISC-V ir LoongArch architektūromis su EFI, buvo įdiegta galimybė tiesiogiai įkelti suglaudintus branduolio vaizdus. Pridėtos branduolio vaizdų įkėlimo, paleidimo ir iškrovimo tvarkyklės, iškviestos tiesiai iš EFI zboot. Taip pat buvo pridėtos tvarkyklės, skirtos protokolams įdiegti ir ištrinti iš EFI protokolų duomenų bazės. Anksčiau išpakavimą atlikdavo atskiras įkrovos įkroviklis, o dabar tai gali padaryti ir pačiame branduolyje esantis tvarkytuvas – branduolio vaizdas formuojamas kaip EFI programa.
    • Kompozicijoje yra dalis pataisų su kelių lygių atminties valdymo modeliu, kuris leidžia atskirti atminties bankus su skirtingomis veikimo charakteristikomis. Pavyzdžiui, labiausiai naudojami puslapiai gali būti saugomi greičiausioje atmintyje, o rečiausiai naudojami puslapiai gali būti saugomi santykinai lėtoje atmintyje. Branduolys 6.1 pristato mechanizmą, leidžiantį nustatyti, kur lėtoje atmintyje yra labai naudojami puslapiai, kad juos būtų galima perkelti į greitąją atmintį, taip pat pristatoma bendra atminties pakopų ir jų santykinio našumo samprata.
    • Jame yra MGLRU (kelių kartų LRU) mechanizmas, kuris pakeičia seną LRU (mažiausiai neseniai naudotą) įgyvendinimą, pagrįstą dviem eilėmis, su daugiapakope struktūra, kuri geriau nustato, kurie atminties puslapiai iš tikrųjų naudojami ir kuriuos galima išstumti. apsikeitimo skaidinys.
    • Pridėtas „Oracle“ inžinierių pasiūlytos „klevo medžio“ duomenų struktūros palaikymas, kuris yra veiksmingesnis „raudonojo-juodo medžio“ struktūros pakaitalas. Klevo medis yra B-tree variantas, palaikantis diapazono indeksavimą ir skirtas efektyviai išnaudoti šiuolaikinių procesorių talpyklą. Kai kurios atminties valdymo posistemės jau buvo perkeltos į klevo medį, o tai turėjo teigiamos įtakos jų veikimui. Ateityje klevas gali būti naudojamas diapazono fiksavimui įgyvendinti.
    • Į BPF posistemį įtraukta galimybė kurti „destruktyvias“ BPF programas, specialiai sukurtas inicijuoti avarinį išjungimą naudojant crash_kexec() iškvietimą. Tokios BPF programos gali būti reikalingos derinimo tikslais, kad tam tikru momentu būtų sukurtas gedimų išvadas. Norėdami pasiekti destruktyvias operacijas įkeldami BPF programą, turite nurodyti BPF_F_DESTRUCTIVE vėliavėlę, aktyvuoti sysctl kernel.destructive_bpf_enabled ir turėti CAP_SYS_BOOT teises.
    • BPF programoms galima surašyti cgroup elementus, taip pat išvardinti konkrečios gijos ar užduoties išteklius (failus, vma, procesus ir kt.). Buvo įdiegtas naujas žemėlapio tipas, siekiant sukurti vartotojo skambėjimo buferius.
    • Pridėtas specialus atminties paskirstymo iškvietimas BPF programose (atminties skirstytuvas), kuris užtikrina saugesnį atminties paskirstymą BPF kontekste nei standartinis kmalloc().
    • Pirmoji pakeitimų dalis buvo integruota, suteikianti galimybę kurti įvesties įrenginių tvarkykles su HID (Human Interface Device) sąsaja, įdiegta BPF programų pavidalu.
    • Branduolys visiškai pašalino kodą, kad palaikytų a.out vykdomojo failo formatą, kuris buvo nebenaudojamas 5.1 versijoje ir buvo išjungtas pagrindinėse architektūrose nuo 5.18 ir 5.19 versijų. A.out formatas jau seniai nebenaudojamas Linux sistemose, o a.out failų generavimas nepalaikomas šiuolaikiniais įrankiais numatytosiose Linux konfigūracijose. A.out failų įkroviklis gali būti visiškai įdiegtas vartotojo erdvėje.
    • Sistemoms, pagrįstoms LoongArch instrukcijų rinkinio architektūra, naudojama Loongson 3 5000 procesoriuose ir įdiegiančiose naują RISC ISA, panašią į MIPS ir RISC-V, įdiegtas našumo matavimo įvykių (perf įvykių), kexec, kdump ir BPF JIT kompiliavimo palaikymas. .
    • „io_uring“ asinchroninė įvesties / išvesties sąsaja siūlo naują režimą IORING_SETUP_DEFER_TASKRUN, kuris leidžia laikinai atidėti su skambėjimo buferiu susijusį darbą, kol bus pateikta užklausa, kurią galima naudoti paketiniam darbui ir išvengti delsos problemų dėl išankstinių programų netinkamas laikas.
    • Vartotojo erdvėje vykstantiems procesams suteikiama galimybė inicijuoti įprastų atminties puslapių diapazono konvertavimą į didelių atminties puslapių rinkinį (Transparent Huge-Pages).
    • Pridėtas /dev/userfaultfd įrenginio įgyvendinimas, kuris leidžia pasiekti userfaultfd() sistemos iškvietimo funkcijas naudojant prieigos teises FS. Funkcija userfaultfd leidžia sukurti tvarkykles, skirtas prieiti prie nepaskirstytų atminties puslapių (puslapių gedimų) vartotojo erdvėje.
    • Reikalavimai programos GNU Make versijai buvo padidinti – branduoliui sukurti dabar reikalinga bent 3.82 versija.
  • Disko posistemis, I/O ir failų sistemos
    • Be kita ko, buvo atliktas reikšmingas Btrfs failų sistemos našumo optimizavimas, FIEMAP ioctl skambučio našumas buvo padidintas dydžiu. Pridėtas asinchroninio buferinio įrašymo palaikymas programoms, kuriose naudojamas io_uring. Pridėtas failų, apsaugotų fs-verity, palaikymas prie operacijos „siųsti“.
    • Ext4 failų sistema papildė našumo optimizavimą, susijusį su žurnalo priežiūra ir tik skaitymo veikimu.
    • EROFS (patobulinta tik skaitymo failų sistema) failų sistema, sukurta naudoti skaidiniuose, pasiekiamuose tik skaitymo režimu, įgyvendina galimybę dalytis duomenimis, dubliuotais skirtingose ​​failų sistemose.
    • Sistemos iškvietimas statx() buvo pridėtas, kad būtų rodoma informacija apie tai, ar failui galima pritaikyti tiesioginį įvestį / išvestį.
    • Laikinųjų failų kūrimo su O_TMPFILE vėliava palaikymas buvo įtrauktas į FUSE (Failų sistemos vartotojo erdvėje) posistemį.
  • Virtualizacija ir saugumas
    • CFI (Control Flow Integrity) apsaugos mechanizmas buvo pakeistas, pridedant patikrinimus prieš kiekvieną netiesioginį funkcijos iškvietimą, siekiant aptikti kai kurias neapibrėžtos elgsenos formas, dėl kurių gali būti pažeista įprasta vykdymo tvarka (valdymo srautas). naudojant išnaudojimus, kurie pakeičia rodykles į atmintyje saugomas funkcijas. Standartinis CFI įgyvendinimas iš LLVM projekto buvo pakeistas parinktimi, taip pat pagrįsta Clang naudojimu, tačiau specialiai pritaikyta apsaugoti žemo lygio posistemes ir operacinių sistemų branduolius. LLVM sistemoje „Clang 16“ leidime bus pasiūlytas naujas diegimas, kuris bus įjungtas naudojant „-fsanitize=kcfi“ parinktį. Pagrindinis naujojo diegimo skirtumas yra tas, kad jis nėra susietas su nuorodos laiko optimizavimu (LTO) ir dėl to funkcijų rodyklės nepakeičiamos nuorodomis šuolio lentelėje.
    • LSM moduliams („Linux Security Module“) galima sukurti tvarkykles, kurios perima operacijas, kad sukurtų vardų sritis.
    • Pateikiami įrankiai, skirti patikrinti PKCS#7 skaitmeninius parašus BPF programose.
    • Galimybė atidaryti neblokuojančiu režimu (O_NONBLOCK), kuri buvo netyčia pašalinta 5.6 branduolyje, buvo grąžinta į /dev/random.
    • Sistemose su x86 architektūra buvo pridėtas įspėjimas, jei branduolio posistemiai atvaizduoja atminties puslapius, kurie vienu metu leidžia vykdyti ir rašyti. Ateityje svarstoma galimybė visiškai uždrausti tokį atminties kartografavimą.
    • Pridėtas KMSAN (Kernel Memory Sanitizer) derinimo mechanizmas, leidžiantis aptikti neinicializuotą atminties naudojimą branduolyje, taip pat neinicializuotą atminties nutekėjimą tarp vartotojo vietos ir įrenginių.
    • Buvo patobulintas kriptografiškai saugus CRNG pseudoatsitiktinių skaičių generatorius, naudojamas atsitiktiniam skambučiui. Pakeitimus parengė VPN WireGuard autorius Jasonas A. Donenfeldas, jais siekiama pagerinti pseudoatsitiktinių sveikųjų skaičių išgavimo saugumą.
  • Tinklo posistemis
    • TCP krūva suteikia galimybę (pagal numatytuosius nustatymus išjungta) naudoti lizdų maišos lenteles atskirai kiekvienai vardų erdvei, o tai pagerina sistemų, kuriose yra daug vardų erdvių, našumą.
    • Pašalintas kodas, skirtas palaikyti seną DECnet protokolą. Vartotojo erdvės API skiltys paliekamos, kad būtų galima kompiliuoti programas, kurios naudoja DECnet, tačiau šios programos negalės prisijungti prie tinklo.
    • Netlink protokolas yra dokumentuotas.
  • įranga
    • Amdgpu tvarkyklė papildė DSC (Display Stream Compression) persiuntimo palaikymą, kad duomenys būtų suglaudinti be nuostolių, kai keičiamasi informacija su ekranais, kurie palaiko labai didelę skiriamąją gebą. Toliau dirbama siekiant palaikyti AMD RDNA3 (RX 7000) ir CDNA (Instinct) platformas. Pridėtas DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x ir GMC 11.x IP komponentų palaikymas. Amdkfd tvarkyklė (skirta atskiriems AMD GPU, pvz., „Polaris“) palaiko GFX 11.0.3.
    • „i915“ („Intel“) tvarkyklė palaiko „Meteor Lake“ GPU. „Meteor Lake“ ir naujesni GPU palaiko DP 2.0 („DisplayPort“) sąsają. Pridėti vaizdo plokščių identifikatoriai, pagrįsti Alder Lake S mikroarchitektūra.
    • Pridėtas palaikymas garso posistemėms, įdiegtoms Apple Silicon, Intel SkyLake ir Intel KabyLake procesoriuose. CS35L41 HDA garso tvarkyklė palaiko miego režimą. Pridėtas ASoC (ALSA System on Chip) palaikymas integruotiems garso lustams Apple Silicon, AMD Rembrant DSP, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake ir Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP, Qualcomm SC8280XP, Qualcomm SC8250XP SM8450 ir Texas Instruments SRC4392
    • Pridėtas palaikymas LCD skydams Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1X,116 01.6, INX N116BCA-EA21 , INX N116BCN-EA2, Multi-Inno technologija MI116FT-1.
    • Pridėtas AHCI SATA valdiklių, naudojamų Baikal-T1 SoC, palaikymas.
    • Pridėtas Bluetooth lustų MediaTek MT7921, Intel Magnetor (CNVi, Integrated Connectivity), Realtek RTL8852C, RTW8852AE ir RTL8761BUV (Edimax BT-8500) palaikymas.
    • „Qualcomm“ belaidžių modulių „ath11k“ tvarkyklė papildė spektrinį nuskaitymą 160 MHz diapazone, įdiegė kelių gijų NAPI ir pagerino „Qualcomm WCN6750 Wi-Fi“ lustų palaikymą.
    • Pridėtos „PinePhone“ klaviatūros, „InterTouch“ jutiklinių kilimėlių („ThinkPad P1 G3“, „X-Box Adaptive Controller“, „PhoenixRC Flight Controller“, „VRC-2“ automobilio valdiklio, „DualSense Edge Controller“, „IBM Operation Panel“, „XBOX One Elite“ nuotolinio valdymo pultų, planšetinių kompiuterių XP-PEN Deco Pro S) tvarkyklės. ir Intuos Pro Small (PTH-460).
    • Pridėta Aspeed HACE (Hash and Crypto Engine) kriptografinių greitintuvų tvarkyklė.
    • Pridėtas integruotų Thunderbolt/USB4 Intel Meteor Lake valdiklių palaikymas.
    • Pridėtas Sony Xperia 1 IV, Samsung Galaxy E5, E7 ir Grand Max, Pine64 Pinephone Pro išmaniųjų telefonų palaikymas.
    • Pridėtas ARM SoC ir plokščių palaikymas: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 ir RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IP8062, IPQQ8065/8L BL i.MX8195MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 4C+, NanoPi R1S Enterprise Edition, JetHome JetHub DXNUMXp. Atnaujintos SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom ir NXP tvarkyklės.

Tuo pačiu metu Lotynų Amerikos laisvosios programinės įrangos fondas sukūrė visiškai nemokamo branduolio 6.1 versiją - Linux-libre 6.1-gnu, išvalyta nuo programinės įrangos elementų ir tvarkyklių, kuriuose yra nelaisvų komponentų ar kodo dalių, kurių apimtis yra riboja gamintojas. Naujasis leidimas išvalo naują rtw8852b tvarkyklę ir DTS failus, skirtus įvairiems Qualcomm ir MediaTek SoC su procesoriais, pagrįstais AArch64 architektūra. Atnaujintas blob valymo kodas tvarkyklėse ir posistemėse amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. Ištaisyta pasenusių tvarkyklių tm6000 TV kortelių, cpia2 v4l, sp8870, av7110 valymas.

Šaltinis: opennet.ru

Добавить комментарий