Linuxi tuuma 6.11 väljaanne

Kaks kuud kestnud arendustöö järel tutvustas Linus Torvalds Linuxi tuuma versiooni 6.11. Kõige märgatavamate muudatuste seas on: toe rakendamisele atomaarsete kirjutamisoperatsioonide jaoks plokkide tasemel, toetamine bind() ja listen() operatsioonide jaoks io_uringis, uus mehhanism katkestuste töötlejate lukustamiseks, võimalus kirjutada peegeldatud mällu täitmise faile ja toetamine plokkseadmute draiverite kirjutamiseks Rusti keeles, optimiseerimine getrandom() funktsioonile, uus AES-GCM teostus.

Uues versioonis on 15130 parandust 2078 arendajalt, patši suurus on 85 MB (muudatused hõlmasid 13282 faili, lisatud 985857 rida koodi, eemaldatud 268915 rida). Eelmises väljaandes oli 14564 parandus 1989 arendajalt, patši suurus oli 41 MB (kaks korda väiksem kui tuuma 6.11 patš). Umbes 46% kõikidest 6.11 esitatud muudatustest on seotud seadme draiveritega, umbes 17% muudatustest on seotud riistvaraarhitektuuridele spetsiifilise koodiga, 10% on seotud võrgu kihtidega, 5% failisüsteemidega ja 3% tuuma sisemiste alamsüsteemidega.

Peamised uuendused tuumas 6.11:

  • Diskisüsteem, sisend/väljund ja failisüsteemid
    • On rakendatud toe atomaarsete kirjutamisoperatsioonide jaoks plokkide tasemel, kus kõvakettale kirjutatakse kas kogu määratud plokkide kogum või mitte ükski plokk, mis kaitseb olukordade eest, kus pärast riistvararikkumist kirjutatakse ainult osa plokkidest, samas kui teistes jääb vana teave. Atomaarse kirjutamisrežiimi lubamiseks on süsteemi väljakutsele pwritev() lisatud lipp RWF_ATOMIC. Teavet atomaarse kirjutamise toe kohta (atomic_write_unit_min, atomic_write_unit_max ja atomic_write_segments_max) seoses üksikute failidega on võimalik saada funktsiooni statx() abil.
    • Pakutakse tuge kirjutamiseks täitmise faile, mis on seotud töötavate protsessidega. Varem andis tuum, nagu muudes Unixitaolistes süsteemides, tõrke, kui prooviti kirjutada käivitusfaili aktiveeritud protses. See piirang on tühistatud, kuna see ei oma praktilist mõtet.
    • On rakendatud võimalus arendada plokkseadmute draivereid Rust keeles. Näiteks on tuuma lisatud draiver rnull, mis on Rustis kirjutatud analoog draiverist null_blk.
    • Btrfs-failisüsteemis on montaaži optiooni «rescue=» rakendatud uus toetust režiimidele «ignoremetacsums» ja «ignoresuperflags», mida saab kasutada teatud kontrollide viimiseks kasutaja ruumi FS-i taastamisel pärast tõrke tekkimist. Dynaamilise rühmade blokide tagasipanemise operatsiooni rakendus on ümber tehtud, et vältida olukorda, kus vaba ruumi napib, kuna FS on osaliselt täidetud.
    • Ntfs3-failisüsteemis on rakendatud atribuutide «compressed» ja «immutable» toetus, mis määratlevad tihendatud ja muutmatud failid.
    • F2FS- ja Ext4-failisüsteemides on failinimede töötlemine suurendatud jaotamata suurusnime (casefold) kaudu, salvestades nimed qstr-stringidena ilma liigsete suuruse teisendusteta.
    • Ext4-failisüsteemis on jbd2_transaction_committed funktsiooni rakendus optimeeritud, et parandada jõudlust väga kiiretel salvestusseadmetel (testides on märgatud töötlemisoperatsioonide kasvu kuni 20%).
    • Süsteemi kõnes statx() on lubatud NULL-punkti ülekandmine failitee tühja stringi asemel, kui on seatud AT_EMPTY_PATH lip.
    • Süsteemi kõnes open_by_handle_at() on leevendatud failile juurdepääsu õiguste kontrolli vähemalt määratletud õiguste CAP_DAC_READ_SEARCH jaoks algses nime ruumis. Varasemalt ei võimaldanud CAP_DAC_READ_SEARCH nõuded algses nime ruumis kasutada süsteemi kõnet open_by_handle_at() konteinerites.
    • Süsteemi kõnede listmount() ja statmount() võimalusi on laiendatud. Listmount() on lisatud lipp LISTMOUNT_REVERSE, mis tagastab punktide montaaži tabeli sisu vastupidises järjekorras (uusimad kirjed ülas). Statmount() on rakendatud väljastamine FS-i monteerimise ajal seatud valikute jaoks. Mõlemad süsteemi kõned võimaldavad töötamist, kui algses nime ruumis pole juurdepääsu (kui on ainult juurdepääs lokaalsesse või välistesse nime ruumidesse).
    • Bcachefs-failisüsteemis on rakendatud automatiseeritud läbipaistva probleemsete andmete taastamise toetus, kasutades vigade taastamise koode — kui lugemise ajal tekib sisendi/väljundi viga või kontrollsumma ei ühti, kirjutatakse probleemne andmeplokk automaatselt üle, kui selle taastamiseks on üleliigset ruumi.
  • Mälu ja süsteemiteenused
    • Komplekti on lisatud plaastrid, mis rakendavad uut mehhanismi interaktiivsete katkestuste (BH, bottom-half) programmi töötlejate blokeerimiseks, mis tagavad, et kasutatavaid andmestruktuure blokeeritakse, ilma et samal ajal takistatakse mitteseotud koodi paralleelset täitmist. Täheldatakse, et see muudatus on võimaldanud mitte ainult vähendada viivitusi reaalajas režiimis töötavates tuumades, vaid ka suurendada tavaliste tuumade jõudlust (näiteks teatud koormuste puhul on võrgu alamsüsteemi jõudlus tõusnud kuni 14,5%).
    • Asünkroonse sisendi/väljundi io_uring alamsüsteemi on lisatud toetust bind() ja listen() funktsioonide jaoks, mis on vajalikud vastuvõtvas ühenduses olevate võrgusokettide loomiseks.
    • On lisatud ioctl-operatsioonide komplekt pseudofailis NSFS (NameSpace FS), mida kasutatakse nimede ruumide haldamiseks. Uued ioctl-id võimaldavad muuta protsesside ja lubade gruppide identifikaatoreid erinevatesse protsesside identifikaatorite (PID namespace) nimede ruumidesse. Sarnased ioctl-id, mis võimaldavad pidfd-identifikaatorite põhjal määrata protsesside faili descriptorid eraldi nimede ruumides, on samuti lisatud pseudofailile pidfd.
    • BPF-programmidele on lisatud uus iteratsioonimehhanism bitimaskidega töötamiseks, mida saab kasutada näiteks mälu alade, nagu cpumask, üksikute bitide läbimiseks. On loodud mehhanism, mis saadab kasutajaruumi protsessidele teate objekti struct_ops eemaldamisest (detach/unregister). Laienenud on tüüpide valik, mida saab kasutada massiivides (näiteks on võimalik deklareerida massiivid, mille elemendid on tüüpidega kptr, bpf_rb_root ja bpf_list_head). Pakutakse usaldusväärsemat mehhanismi Split BTF (BPF tüüpide formaat), mida kasutatakse tüüpide kontrollimiseks BPF pseudokoodis.
    • On lisatud alamsüsteem, mis võimaldab seadmete toite sisselülitamine kindlas järjekorras, kui üks seade peab olema aktiveeritud enne teist (näiteks Qualcommi platvormide juhtmevabade kiipide aktiveerimisel).
    • On lisatud moodul 'Sloppy logic analyzer', mis võimaldab luua lihtsaid signaalide loogikaanalüüse, kasutades GPIO-d ja töötades eraldi CPU tuumas.
    • Lisatud on tugi runtime-konstantidele, mida saab kasutada ühekordseks initsialiseeritud muutujate asemel. Näiteks võivad runtime-konstantid asendada muutujaid, mis hoiavad viiteid ja suurusi dentry cache'ile. Need muutujad määratakse laadimise ajal ja seejärel ei muutu kunagi. Idee on asendada selliste muutujate väärtused otse koodis käskudesse, välistades viitamisega seotud ülehead.
    • Jätkub muudatuste üleviimine Rust-for-Linux harust, mis on seotud Rusti keele kasutamisega teise keelenäidise loomisel draiverite ja tuumamoodulite arendamiseks (Rusti tugi ei ole vaikimisi lubatud ja ei too kaasa Rusti lisamist tuumasse kohustuslikeks kompositsioonideks). Lisatud on Rust 1.80 väljaande tugi (minimaalse versioonina jääb kehtima Rust 1.78). Lisaks varem mainitud blokiseade draiverite arendamiseks mõeldud tööriistadele on uues versioonis lisatud abstraktsioonid püsivara laadimise, kasutajaruumi (uaccess) ligipääsu ja struktuuri „page” töötamiseks.
    • x86-64 süsteemide jaoks on ellu viidud uus süsteemi kutse uretprobe(), mis optimeerib uretprobe jälgimise mehhanismi, mis võimaldab jälgida funktsioonide tagastatavaid väärtusi kasutajaruumis.
    • Tuumale on lisatud käskluse parameetrid: 'reserve_mem', et eraldada nimeline mälupiirkond laadimise ajal ja 'ramoops.mem_name', kasutamiseks pstore mälupiirkonnas, mis on loodud reserve_mem kaudu.
    • Cgroupi mälukontrollerisse on lisatud memory.reclaim faili, mis määrab mälu eemaldamise seadeid, parameeter 'swappiness', mis võimaldab muuta tasakaalu anonyümselt mälulehtede eemaldamise ja failikaustu kasutavate mälulehtede vabastamise vahel.
    • Lisatud on ioctl-liidest PROCMAP_QUERY, et tõhusamalt otsida virtuaalseid mälupiirkondi (Virtual Memory Area) failis /proc/PID/maps.
    • Süsteemi kutsele mmap() on lisatud lipp MAP_DROPPABLE, et taotleda mälu, mida kunagi ei kirjutata vahetusse, kuid mida võib vajaduse korral mälu puudumise korral kustutada.
    • ARM64 arhitektuuri jaoks on rakendatud füüsiliste ja virtuaalsete CPU-de kuumplugimise (ülemineku online/offline režiimides) tugi ACPI süsteemides.
    • RISC-V arhitektuur toetab mälu soojendamist ja on lisatud GCC pistikprogrammi STACKLEAK tugi (see initialiseeri kõik tühjas virnas olevad muutujad, et vältida teabe leket tuuma kaudu mitte-initsialiseeritud muutujate kaudu, mis võivad sisaldada eelmistes virnas salvestatud andmete jääke).
    • EFI vale mälu kaardistamise mehhanism eemaldati käivitamisetapist. Seda mehhanismi ei kasutatud praktikas ja see segas konfidentsiaalse täitmise arendusi. virtuaalmasinate.
    • PowerPC 40x platvormi toetus lõpetati.
    • GNU Make’i versiooninõuded on suurenenud — tuuma kompileerimiseks on vajalik vähemalt 2013. aastal avaldatud GNU Make’i väljaanne.
  • Virtualiseerimine ja turvalisus
    • Integreeritud on plaastrid, mis kiirendavad oluliselt (kuni 15 korda) juhuslike numbrite saamist süsteemikõne getrandom() kaudu. Optimeerimine põhineb vDSO (virtuaalne dünaamiline jagatud objekt) mehhanismi kasutamisel, mis võimaldab süsteemikõne töötlejat tuumast kasutajaruumi viia ja konteksti vahetusi vältida. Süsteemikõne teostuse laadimine protsessi aadressiruumi toimub otse tuumast.
    • x86-64 süsteemidele on lisatud uus AES-GCM krüpteerimisalgoritmi teostus, mis toetab VAES, VPCLMULQDQ ja AVX512/AVX10 vektorite juhiseid arvutuste kiirendamiseks. Testides jõudluse tõus uuele teostusele ületas 156%. AES-GCM assemblerteostus on täielikult ümber kirjutatud, arvestades korrektsust, jõudlust, suurust ja koodi põhjalikku dokumenteerimist.
    • On rakendatud tuuma käitamise võimalus virtuaalsetes keskkondades, mis kasutavad AMD SEV-SNP (Secure Nested Paging) protsessorite laiendust, mis on mõeldud mälu sisetabelite turvaliseks töötlemiseks. Ressursside juurdepääsu lisaisolatsiooni virtuaalmasinatest võib rakendada SVSM (Linux Secure VM Service Module) moodul. KVM Hüpervisorisse on lisatud algne tugi AMD SEV-SNP abil kaitstud külgsüsteemide käitamiseks.
    • Lisatud on eraldi bucket slab allocator, mis on aktiveeritav CONFIG_SLAB_BUCKETS parameetri kaudu ja pakub kaitset „heap spraying“ tehnika kasutamisest tulenevate rünnakute eest.
    • KVM hüperviisoris on lisatud ioctl-kutse, et reserveerida mälumahtu külgjuhisele enne selle tegelikku käivitamist.
  • Võrgusüsteem
    • Lisaud sysctl-parameeter net.tcp_rto_min_us, mille kaudu saab seadistada minimaalse taaskandmistajaga (retransmission timeout) TCP-sokettide jaoks.
    • Ethtool utiliiti on lisatud võimalus kohandada katkestuste töötlejate konfiguratsiooni võrkahelates, mis kasutavad Net DIM liidest.
  • Varustus
    • AMDGPU draiveris on lisatud algne toe GPU AMD RDNA4 ('GFX12') jaoks. Toetatakse tehnoloogiaid DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 ja MMHUB 4.1.
    • Jätkatakse tööd Xe drm-draiveri (Direct Rendering Manager) kallal, mis on mõeldud Intel Xe arhitektuuril põhinevatele GPU-dele, mida kasutatakse Intel Arc seeria videokaartides ja integreeritud graafikas alates Tiger Lake protsessoritest. Parandatud GPU toe toimet mikroarhitektuuridele Battlemage, Arrow Lake ja Lunar Lake.
    • DRM alamdokumendis (Direct Rendering Manager) on ümber kirjutatud monitori poolt pakutavate EDID (Extended Display Identification Data) parameetrite töötleja.
    • i915 draiverisse on lisatud toetust GPU Battlemage Xe2-le ja vaikimisi on lubatud CMRR (Content Match Refresh Rate) režiim.
    • DRM-draiveris msm (Qualcomm Adreno GPU) on lisatud tugi platvormile SM7150 ja GPU-d X185 ja a505.
    • Lisatud on tugi ekraanipaneelidele Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070WL4, Lincoln Technologies LCD197, Ortustech COM35H3P70ULC, AUO G104STN01, K&d kd101ne3-40ti.
    • Helialamsüsteemis on lisatud tugi Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 ja Texas Instruments PCM5242 kiipidele ja koodekutele.
    • Viimased muudatused on tehtud ARM SoC Snapdragon X Elite toe tagamiseks, kus kasutatakse Qualcomm Oryon 12-tuumalist CPU-d ja Qualcomm Adreno GPU-d. Kiip on suunatud kasutamiseks sülearvutites ja lauaarvutites ning ületab paljusid Apple M3 ja Intel Core Ultra 155H kiipide jõudlustestides. 6.11 kernelisse lisatud muudatused on seotud GPU Adreno X1-85 ja toitehalduse toetamisega. SoC Snapdragon X Elite põhinevaid seadmeid on reklaamitud, sealhulgas ASUS Vivobook S15 ja Lenovo Yoga Slim7x.

Sama ajal lõi Ladina-Ameerika Vaba Tarkvara Fond täiesti vabast tuumast 6.11 — Linux-libre 6.10-gnu, mis on puhastatud kõigist püsivara ja draiverite elementidest, mis sisaldavad mitte-vabu komponente või koodilõike, mille kasutusala on tootja poolt piiratud. Versioonis 6.11 on uuendatud puhastuskoodi blobide jaoks draiverites mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth ja tas2781. Uute draiverite amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 ja pcie-rcar-gen4 puhastamine on teostatud. Tehtud on blobide nimede puhastus dts-failides (seadmepuu) Aarch64 arhitektuuri jaoks. Lisatud on ettepanete versioon, mis ei genereeri hoiatavaid ja küsitavaid märke (nowait-nowarn), et laadida püsivara. Lisatud on kood püsivara laadimisprotsessi määramiseks Rust keeles.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster