Linux 6.2 branduolio leidimas

Po dviejų mėnesių kūrimo Linusas Torvaldsas pristatė Linux branduolio 6.2 versiją. Tarp ryškiausių pakeitimų: leidžiama priimti kodą pagal Copyleft-Next licenciją, patobulintas RAID5/6 diegimas Btrfs, tęsiamas Rust kalbos palaikymo integravimas, sumažintos apsaugos nuo Retbleed atakų išlaidos, pridėta galimybė reguliuoti atminties suvartojimą perrašymo metu, pridėtas mechanizmas TCP balansavimui PLB (Protective Load Balancing), pridėtas hibridinis komandų srauto apsaugos mechanizmas (FineIBT), BPF dabar turi galimybę apibrėžti savo objektus ir duomenų struktūras. , įtraukta rv (Runtime Verification) programa, sumažintas energijos suvartojimas diegiant RCU užraktus.

Naujoje versijoje yra 16843 2178 pataisymai iš 62 14108 kūrėjų, pataisos dydis – 730195 MB (pakeitimai palietė 409485 42 failus, pridėta 6.2 16 kodo eilutės, ištrinta 12 4 eilutės). 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.2 branduolio naujovės:

  • Atminties ir sistemos paslaugos
    • Leidžiama įtraukti į branduolio kodą ir pakeitimus, pateiktus pagal Copyleft-Next 0.3.1 licenciją. „Copyleft-Next“ licenciją sukūrė vienas iš GPLv3 autorių ir yra visiškai suderinamas su GPLv2 licencija, kaip patvirtino SUSE ir Red Hat teisininkai. Lyginant su GPLv2, Copyleft-Next licencija yra daug kompaktiškesnė ir lengviau suprantama (pašalinta įžanginė dalis ir pasenusių kompromisų paminėjimas), apibrėžia pažeidimų pašalinimo terminus ir tvarką bei automatiškai pašalina copyleft reikalavimus pasenusiai programinei įrangai. yra daugiau nei 15 metų.

      Copyleft-Next taip pat yra patentuotos technologijos suteikimo sąlyga, dėl kurios, skirtingai nei GPLv2, ši licencija suderinama su Apache 2.0 licencija. Siekiant užtikrinti visišką suderinamumą su GPLv2, Copyleft-Next aiškiai nurodo, kad išvestinis kūrinys gali būti platinamas pagal GPL licenciją be originalios Copyleft-Next licencijos.

    • Struktūroje yra „rv“ programa, kuri suteikia sąsają sąveikai iš vartotojo erdvės su RV (vykdymo laiko patikros) posistemio tvarkytojais, skirta patikrinti, ar labai patikimos sistemos veikia tinkamai, kad būtų užtikrintas gedimų nebuvimas. Patikrinimas atliekamas vykdymo metu, prie sekimo taškų prijungiant tvarkykles, kurios tikrina tikrąją vykdymo eigą pagal iš anksto nustatytą atskaitos deterministinį mašinos modelį, kuris apibrėžia numatomą sistemos elgseną.
    • zRAM įrenginys, leidžiantis keitimo skaidinį išsaugoti atmintyje suglaudintu pavidalu (atmintyje sukuriamas blokinis įrenginys, į kurį suglaudinant atliekamas sukeitimas), įgyvendina galimybę perpakuoti puslapius naudojant alternatyvų algoritmą, kad būtų pasiektas aukštesnis lygis. suspaudimo. Pagrindinė idėja yra suteikti pasirinkimą tarp kelių algoritmų (lzo, lzo-rle, lz4, lz4hc, zstd), siūlančių savo kompromisus tarp suspaudimo / išskleidimo greičio ir suspaudimo lygio arba optimalaus ypatingose ​​situacijose (pavyzdžiui, glaudinant didelius). atminties puslapiai).
    • Pridėta „iommufd“ API, skirta I/O atminties valdymo sistemai valdyti – IOMMU (I/O Memory-Management Unit) iš vartotojo erdvės. Naujoji API leidžia valdyti I/O atminties puslapių lenteles naudojant failų aprašus.
    • BPF suteikia galimybę kurti tipus, apibrėžti savo objektus, kurti savo objektų hierarchiją ir lanksčiai kurti savo duomenų struktūras, pvz., susietus sąrašus. BPF programoms, kurios pereina į miego režimą (BPF_F_SLEEPABLE), buvo pridėtas bpf_rcu_read_{,un}lock() užraktų palaikymas. Įdiegta užduoties_struktūros objektų išsaugojimo palaikymas. Pridėtas žemėlapio tipas BPF_MAP_TYPE_CGRP_STORAGE, suteikiantis vietinę cgroups saugyklą.
    • RCU (Read-copy-update) blokavimo mechanizmui įdiegtas pasirenkamas „tingių“ atgalinių skambučių mechanizmas, kuriame vienu metu apdorojami keli atgalinio skambučiai naudojant laikmatį paketiniu režimu. Siūlomo optimizavimo taikymas leidžia sumažinti energijos sąnaudas Android ir ChromeOS įrenginiuose 5-10%, atidedant RCU užklausas tuščiosios eigos metu arba mažos sistemos apkrovos metu.
    • Pridėta sysctl split_lock_mitigate, kad būtų galima valdyti, kaip sistema reaguoja, kai aptinka suskaidytus užraktus, atsirandančius pasiekiant nesuderintus duomenis atmintyje dėl to, kad vykdant atominę komandą duomenys kerta dvi procesoriaus talpyklos linijas. Tokie užsikimšimai žymiai sumažina našumą. Nustačius split_lock_mitigate į 0, tik įspėjama, kad yra problema, o nustačius split_lock_mitigate į 1 taip pat sukeliamas procesas, dėl kurio užraktas buvo sulėtinas, kad būtų išsaugotas likusios sistemos veikimas.
    • PowerPC architektūrai buvo pasiūlytas naujas qspinlock diegimas, kuris demonstruoja didesnį našumą ir išsprendžia kai kurias užrakinimo problemas, kylančias išskirtiniais atvejais.
    • MSI (Message-Signaled Interrupts) pertraukimų apdorojimo kodas buvo perdarytas, pašalinant susikaupusias architektūrines problemas ir pridedant palaikymą atskiriems tvarkytojams susieti su skirtingais įrenginiais.
    • Sistemoms, pagrįstoms LoongArch instrukcijų rinkinio architektūra, naudojama Loongson 3 5000 procesoriuose ir įdiegiant naują RISC ISA, panašią į MIPS ir RISC-V, įdiegtas ftrace, stack apsaugos, miego ir budėjimo režimų palaikymas.
    • Suteikta galimybė priskirti vardus bendros anoniminės atminties sritims (anksčiau vardus buvo galima priskirti tik privačiai anoniminei atminčiai, priskirtai konkrečiam procesui).
    • Pridėtas naujas branduolio komandinės eilutės parametras „trace_trigger“, skirtas aktyvuoti sekimo paleidiklį, naudojamą sąlyginėms komandoms, iškviestoms, kai suaktyvinamas valdymo patikrinimas, surišti (pavyzdžiui, trace_trigger=”sched_switch.stacktrace, jei prev_state == 2″).
    • Padidinti reikalavimai binutils paketo versijai. Branduolio kūrimui dabar reikia bent binutils 2.25.
    • Iškviečiant exec(), buvo pridėta galimybė įdėti procesą į laiko vardų erdvę, kurioje laikas skiriasi nuo sistemos laiko.
    • Pradėjome perkelti papildomų funkcijų iš Rust-for-Linux šakos, susijusios su Rust kalbos, kaip antrosios kalbos, naudojimu kuriant tvarkykles ir branduolio modulius. Rūdžių palaikymas pagal numatytuosius nustatymus yra išjungtas, todėl Rust neįtraukiama kaip būtina branduolio kūrimo priklausomybė. Paskutiniame leidime siūlomos pagrindinės funkcijos yra išplėstos, kad būtų palaikomas žemo lygio kodas, pvz., Vec tipas ir makrokomandos pr_debug!(), pr_cont!() ir pr_alert!(), taip pat procedūrinė makrokomanda „#[vtable“. ]“, kuris supaprastina darbą su funkcijų rodyklėmis. Tikimasi, kad būsimose versijose bus pridėta aukšto lygio „Rust“ sąsajų per branduolio posistemes, kurios leis „Rust“ sukurti visavertes tvarkykles.
    • Branduolio tipas „char“ pagal numatytuosius nustatymus paskelbiamas nepasirašytu visoms architektūroms.
    • Slab atminties paskirstymo mechanizmas - SLOB (slab allocator), kuris buvo skirtas sistemoms su nedideliu atminties kiekiu, paskelbtas pasenusiu. Vietoj SLOB normaliomis sąlygomis rekomenduojama naudoti SLUB arba SLAB. Sistemoms su nedideliu atminties kiekiu rekomenduojama naudoti SLUB SLUB_TINY režimu.
  • Disko posistemis, I/O ir failų sistemos
    • Buvo atlikti Btrfs patobulinimai, kuriais siekiama išspręsti „rašymo skylės“ problemą RAID 5/6 diegimuose (bandymas atkurti RAID, jei rašymo metu įvyksta gedimas ir neįmanoma suprasti, kuriame bloke, kuriame RAID įrenginyje buvo įrašytas teisingai, dėl kurių gali būti sunaikintas blokas, atitinkantis pasirašytus blokus). Be to, dabar SSD diskai pagal numatytuosius nustatymus automatiškai įgalina asinchroninį išmetimo veikimą, o tai leidžia pagerinti našumą dėl efektyvaus išmetimo operacijų grupavimo į eiles ir eilės apdorojimo fono procesoriumi. Pagerintas siuntimo ir paieškos operacijų, taip pat FIEMAP ioctl, našumas.
    • Išplėstos blokinių įrenginių atidėto rašymo (perrašymo, pakeistų duomenų išsaugojimo fone) valdymo galimybės. Kai kuriose situacijose, pavyzdžiui, naudojant tinklo blokų įrenginius arba USB diskus, tingus rašymas gali sukelti daug RAM sunaudojimo. Siekiant kontroliuoti tingaus rašymo elgesį ir išlaikyti puslapio talpyklos dydį tam tikrose ribose, sysfs (/sys/class/bdi/) buvo įdiegti nauji parametrai strict_limit, min_bytes, max_bytes, min_ratio_fine ir max_ratio_fine.
    • F2FS failų sistema įgyvendina atominio pakeitimo ioctl operaciją, kuri leidžia įrašyti duomenis į failą per vieną atominę operaciją. F2FS taip pat prideda bloko apimties talpyklą, kad padėtų nustatyti aktyviai naudojamus duomenis arba duomenis, kurie ilgą laiką nebuvo pasiekti.
    • Ext4 FS pažymimi tik klaidų taisymai.
    • ntfs3 failų sistema siūlo keletą naujų prijungimo parinkčių: „nocase“, skirta valdyti didžiųjų ir mažųjų raidžių jautrumą failų ir katalogų pavadinimuose; windows_name, kad būtų uždrausta kurti failų pavadinimus su simboliais, kurie negalioja Windows; hide_dot_files, norėdami valdyti paslėpto failo etiketės priskyrimą failams, prasidedantiems tašku.
    • „Squashfs“ failų sistemoje įdiegta „threads=“ prijungimo parinktis, leidžianti apibrėžti gijų skaičių, kad būtų lygiagrečios dekompresijos operacijos. Squashfs taip pat pristatė galimybę susieti prijungtų failų sistemų vartotojo ID, naudojamus konkretaus vartotojo failams prijungtame svetimame skaidinyje suderinti su kitu dabartinės sistemos vartotoju.
    • POSIX prieigos valdymo sąrašų (POSIX ACL) diegimas buvo perdarytas. Naujasis diegimas pašalina architektūrines problemas, supaprastina kodų bazės priežiūrą ir įveda saugesnių duomenų tipų.
    • Fscrypt posistemis, naudojamas skaidriam failų ir katalogų šifravimui, papildė SM4 šifravimo algoritmo palaikymą (Kinijos standartas GB/T 32907-2016).
    • Suteikta galimybė kurti branduolį be NFSv2 palaikymo (ateityje jie planuoja visiškai nustoti palaikyti NFSv2).
    • Pakeistas NVMe įrenginių prieigos teisių tikrinimo organizavimas. Suteikia galimybę skaityti ir rašyti į NVMe įrenginį, jei rašymo procesas turi prieigą prie įrenginio tam skirto failo (anksčiau procesas turėjo turėti CAP_SYS_ADMIN leidimą).
    • Pašalinta CD / DVD paketo tvarkyklė, kuri buvo nebenaudojama 2016 m.
  • Virtualizacija ir saugumas
    • „Intel“ ir AMD procesoriuose įdiegtas naujas apsaugos nuo „Retbleed“ pažeidžiamumo metodas, naudojant skambučio gylio stebėjimą, kuris nesulėtina darbo taip, kaip anksčiau buvusi apsauga nuo „Retbleed“. Norint įjungti naują režimą, buvo pasiūlytas branduolio komandinės eilutės parametras „retbleed=stuff“.
    • Pridėtas hibridinis FineIBT instrukcijų srauto apsaugos mechanizmas, apjungiantis aparatinės įrangos Intel IBT (Netiesioginio šakų sekimo) instrukcijų naudojimą ir programinės įrangos apsaugą kCFI (branduolių valdymo srauto vientisumas), kad būtų užblokuotas įprastos vykdymo tvarkos (valdymo srauto) pažeidimas dėl naudojimo. išnaudojimų, kurie modifikuoja funkcijų atmintyje saugomas rodykles. FineIBT leidžia vykdyti netiesioginį šuolį tik tuo atveju, kai peršokama į ENDBR komandą, kuri yra pačioje funkcijos pradžioje. Be to, pagal analogiją su kCFI mechanizmu, maišos tikrinamos, kad būtų užtikrintas rodyklių nekintamumas.
    • Pridėta apribojimų blokuoti atakas, kurios manipuliuoja „oops“ būsenų generavimu, po kurių atliekamos probleminės užduotys ir atkuriama būsena nestabdant sistemos. Esant labai dideliam iškvietimų į „oops“ būseną skaičiui, įvyksta nuorodos skaitiklio perpildymas (perskaitymas), kuris leidžia išnaudoti pažeidžiamumą, kurį sukelia NULL rodyklės nukrypimai. Siekiant apsisaugoti nuo tokių atakų, branduoliui buvo pridėtas maksimalaus „oops“ aktyviklių skaičiaus limitas, kurį viršijus branduolys pradės perėjimą į „panikos“ būseną, o po to bus paleistas iš naujo, o tai neleis pasiekti pakartojimų skaičius, reikalingas pakartotiniam skaičiavimui. Pagal numatytuosius nustatymus limitas yra 10 tūkstančių „oops“, tačiau, jei pageidaujama, jį galima pakeisti naudojant parametrą oops_limit.
    • Pridėtas konfigūracijos parametras LEGACY_TIOCSTI ir sysctl legacy_tiocsti, kad būtų išjungta galimybė įdėti duomenis į terminalą naudojant ioctl TIOCSTI, nes ši funkcija gali būti naudojama norint pakeisti savavališkus simbolius į terminalo įvesties buferį ir imituoti vartotojo įvestį.
    • Siūloma naujo tipo vidinė struktūra encoded_page, kurioje apatiniai rodyklės bitai naudojami papildomai informacijai, naudojamai apsaugoti nuo atsitiktinio rodyklės nukrypimo, saugoti (jei nuoroda iš tikrųjų būtina, pirmiausia reikia išvalyti šiuos papildomus bitus). .
    • ARM64 platformoje įkrovos stadijoje galima įjungti arba išjungti programinės įrangos „Shadow Stack“ mechanizmo įgyvendinimą, kuris naudojamas apsisaugoti nuo grįžtamojo adreso perrašymo iš funkcijos, jei kamino buferis perpildytas ( apsaugos esmė yra išsaugoti grįžtamąjį adresą atskirame „šešėliniame“ krūvelėje, kai valdymas yra perkeltas į funkciją ir nuskaitant nurodytą adresą prieš išeinant iš funkcijos). „Shadow Stack“ aparatinės ir programinės įrangos diegimo palaikymas viename branduolio rinkinyje leidžia naudoti vieną branduolį skirtingose ​​ARM sistemose, neatsižvelgiant į tai, ar jos palaiko žymiklio autentifikavimo instrukcijas. Programinės įrangos diegimas įtraukiamas pakeičiant būtinas instrukcijas kode įkeliant.
    • Pridėtas asinchroninio išėjimo pranešimo mechanizmo naudojimo Intel procesoriuose palaikymas, leidžiantis aptikti vieno žingsnio atakas prieš kodą, vykdomą SGX anklavuose.
    • Siūlomas operacijų rinkinys, leidžiantis hipervizoriui palaikyti užklausas iš Intel TDX (patikimų domenų plėtinių) svečių sistemų.
    • Branduolio kūrimo parametrai RANDOM_TRUST_BOOTLOADER ir RANDOM_TRUST_CPU buvo pašalinti, o atitinkamos komandų eilutės parinktys random.trust_bootloader ir random.trust_cpu.
    • „Landlock“ mechanizmas, leidžiantis apriboti procesų grupės sąveiką su išorine aplinka, papildė vėliavėlės LANDLOCK_ACCESS_FS_TRUNCATE palaikymą, leidžiančią kontroliuoti failų sutrumpinimo operacijų vykdymą.
  • Tinklo posistemis
    • Prie IPv6 pridėtas PLB (apsauginio apkrovos balansavimo) palaikymas – apkrovos balansavimo tarp tinklo jungčių mechanizmas, skirtas sumažinti duomenų centro jungiklių perkrovos taškus. Pakeitus IPv6 srauto etiketę, PLB atsitiktinai keičia paketų kelius, kad subalansuotų komutatoriaus prievadų apkrovą. Siekiant sumažinti paketų pertvarkymą, ši operacija atliekama po neaktyvumo laikotarpių, kai tik įmanoma. PLB naudojimas „Google“ duomenų centruose sumažino apkrovos disbalansą perjungimo prievaduose vidutiniškai 60%, paketų praradimą sumažino 33%, o delsą sumažino 20%.
    • Pridėta MediaTek įrenginių tvarkyklė, palaikanti Wi-Fi 7 (802.11be).
    • Pridėtas 800 gigabitų nuorodų palaikymas.
    • Pridėta galimybė greitai pervardyti tinklo sąsajas, nestabdant darbo.
    • Prie žurnalo pranešimų apie SYN potvynį buvo įtrauktas IP adreso, į kurį atkeliavo paketas, paminėjimas.
    • UDP atveju buvo įdiegta galimybė naudoti atskiras maišos lenteles skirtingoms tinklo vardų erdvėms.
    • Tinklo tiltams įdiegtas MAB (MAC Authentication Bypass) autentifikavimo metodo palaikymas.
    • CAN protokolui (CAN_RAW) įdiegtas SO_MARK lizdo režimo palaikymas, skirtas prijungti fwmark pagrįstus srauto filtrus.
    • ipset įdiegia naują bitmask parametrą, leidžiantį nustatyti kaukę pagal savavališkus IP adreso bitus (pavyzdžiui, "ipset create set1 hash:ip bitmask 255.128.255.0").
    • Pridėtas nf_tables vidinių antraščių apdorojimo tuneliniuose paketuose palaikymas.
  • įranga
    • „Accel“ posistemis buvo pridėtas įdiegus skaičiavimo greitintuvų sistemą, kuri gali būti tiekiama atskirų ASIC arba IP blokų pavidalu SoC ir GPU viduje. Šie greitintuvai daugiausia skirti paspartinti mašininio mokymosi problemų sprendimą.
    • „amdgpu“ tvarkyklė palaiko GC, PSP, SMU ir NBIO IP komponentus. ARM64 sistemose įdiegtas DCN (Display Core Next) palaikymas. Apsaugoto ekrano išvesties įgyvendinimas buvo perkeltas iš DCN10 į DCN21 ir dabar gali būti naudojamas jungiant kelis ekranus.
    • „i915“ („Intel“) tvarkyklė stabilizavo diskrečiųjų „Intel Arc“ (DG2/Alchemist) vaizdo plokščių palaikymą.
    • Nouveau tvarkyklė palaiko NVIDIA GA102 (RTX 30) GPU, pagrįstus Ampere architektūra. nva3 (GT215) kortelėms buvo pridėta galimybė valdyti foninį apšvietimą.
    • Pridėtas belaidžių adapterių palaikymas, pagrįstas Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) ir MediaTek MT7996 lustais, Broadcom BCM4377/4378/4387 Bluetooth sąsajomis, taip pat eternetu NVID8521 TegraXNUMX, Ethernet.
    • Pridėtas ASoC (ALSA System on Chip) palaikymas įtaisytoms garso lustams HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588. Pridėtas Focusrite Saffire Pro 40 garso sąsajos palaikymas Pridėtas Realtek RT1318 garso kodekas.
    • Pridėtas palaikymas Sony išmaniesiems telefonams ir planšetiniams kompiuteriams (Xperia 10 IV, 5 IV, X ir X compact, OnePlus One, 3, 3T ir Nord N100, Xiaomi Poco F1 ir Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1.
    • Pridėtas ARM SoC ir Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695), (Snap670) palaikymas. plokštės , SDM670 (Snapdragon 8976), MSM652 (Snapdragon 8956), MSM650 (Snapdragon 3326), RK351 Odroid-Go/rg310, Zyxel NSA8S, InnoComm i.MXXNUMXMM, Odroid Go Ultra.

Tuo pačiu metu Lotynų Amerikos laisvosios programinės įrangos fondas sukūrė visiškai nemokamo branduolio 6.2 versiją - Linux-libre 6.2-gnu, išvalyta nuo programinės įrangos elementų ir tvarkyklių, kuriuose yra patentuotų komponentų ar kodo dalių, kurių apimtį riboja gamintojas. Naujasis leidimas išvalo naujas dėmeles naujojoje tvarkyklėje. Blob įkėlimas išjungtas mt7622, ​​​​mt7996 wifi ir bcm4377 Bluetooth tvarkyklėse. Išvalyti Aarch64 architektūros dts failų blob pavadinimai. Atnaujintas blob valymo kodas įvairiose tvarkyklėse ir posistemėse. Nustojo valyti s5k4ecgx tvarkyklę, nes ji buvo pašalinta iš branduolio.

Šaltinis: opennet.ru

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