Kaks kuud kestnud arendustöö järel esitles Linus Torvalds Linuxi tuuma versiooni 6.1. Peamised muudatused hõlmavad: Rusti keeles draiverite ja moodulite arendamise toetamine, mälu lehekülgede määramiseks mõeldud mehhanismi moderniseerimine, spetsiaalne mäluhaldur BPF-programmide jaoks, mäluprobleemide diagnostika süsteem KMSAN, KCFI (Kernel Control-Flow Integrity) kaitsemehhanism ja Maple tree struktuuri rakendamine.
Uues versioonis on ligi 15115 parandust 2139 arendajalt, patchi suurus on 51 MB, mis on umbes kaks korda väiksem kui tuumade 6.0 ja 5.19 patchide suurus. Muudatused puudutasid 13165 faili, lisatud on 716247 koodireadludi ja kustutatud 304560 rida. Umbes 45% kõikidest 6.1 versioonis tehtud muudatustest on seotud seadme draiveritega, umbes 14% muudatustest puudutab arhitektuurispetsiifilise koodi uuendamist, 14% on seotud võrgu protokolliga, 3% -ga failisüsteemidega ja 3% -ga tuuma sisemiste alamsüsteemidega.
Peamised uuendused tuumas 6.1:
- Mälu ja süsteemiteenused
- Lisatud on võimalus kasutada Rusti keelt teise keelesena tuuma draiverite ja moodulite arendamiseks. Rusti toetamise peamine motiveeriv tegur on draiverite loomise lihtsustamine ning mälu kasutamise vigade tõenäosuse vähendamine. Rusti tugi ei ole vaikimisi sisse lülitatud ja see ei too kaasa Rusti sisestamist tuuma kohustuslikeks kogumise sõltuvusteks. Tumed terafoon on senini võetud minimaalse kärbitud versiooni patchide, mis on kärbitud 40-lt 13 tuhandelt koodirida, ning tagab vaid hädavajaliku miinimumi, mis on piisav lihtsa Rusti keeles kirjutatud tuuma mooduli kogumiseks. Edasi soovitakse järk-järgult funktsionaalsust kasvatada, viies teisi muudatusi Rust-for-Linux harust. Samal ajal arenevad projektid, mis kasutavad pakutud infrastruktuuri Rusti keeles NVMe jõudluse draiverite, võrgu protokolli 9p ja Apple M1 GPU arendamiseks.
- AArch64, RISC-V ja LoongArch arhitektuuride põhiste süsteemide jaoks, mis toetavad EFI, on rakendatud otse koormamise võimalus tihendatud tuuma kujutistest. Lisatud on laadimisprotsesside käsitlejad, mis kutsuvad EFI zboot'ist otse esile tuuma kujutiste laadimise, käivitamise ja eemaldamise. Samuti on lisatud protokollide installeerimise ja eemaldamise käsitlejad EFI protokollide andmebaasist. Varem viidi turvavarustuse avamine läbi eraldi laadijaga, nüüd saavad seda teha ka käsitlejad tuumas — tuuma kujutis vormitakse EFI rakenduseks.
- Kasutusse on võetud osa pathe, mis rakendab mitmetasandilist mäluhaldusmudelit, mis võimaldab eraldada mälupankasid erinevate jõudlusnäitajatega. Näiteks võivad kõige intensiivsemalt kasutatavad leheküljed olla kõige kiiremas mälus, samas kui harva kasutatavad leheküljed võivad asuda suhteliselt aeglases mälus. Tuuma 6.1 on võetud mehhanism, mis tuvastab intensiivselt kasutatavad leheküljed aeglasest mälust nende edestamiseks kiire mäluga, samuti on rakendatud üldine idee mälutasemetest ja nende suhtelisest jõudlusest.
- Sisse on viidud MGLRU (Multi-Generational LRU) mehhanism, mis asendas vana LRU (Least Recently Used) kaheastmelise järjekorra teadlikuma struktuuriga, mis suudab paremini määrata, millised mäluleheküljed on tõeliselt kasutuses ja millised võivad olla vahetusse viidud.
- Lisatud on Oracle inseneride ettepanekul andmestruktuuri "maple tree" toetus, mida peetakse tõhusamaks asenduseks "punase-musta puu" struktuurile. Maple tree on B-puu variant, mis toetab vahemike väärtuste indekseerimist ja on kavandatud tõhusaks vahemälu kasutamiseks. kaasaegsete protsessoriteMaple tree'le on juba tõlgitud mõned mäluhaldussüsteemid, mis on positiivselt mõjutanud nende jõudlust. Tulevikus võiks maple tree muuta vahemike lukustamise rakenduste elluviimist.
- BPF-sse on lisatud võimalus luua "destruktiivseid" BPF-programme, mis on mõeldud spetsiaalselt crash_kexec() väljakutsumiseks. Sellised BPF-programmid võivad osutuda vajalikuks tõrkeotsingu eesmärgil crash-dumpi loomiseks teatud ajahetkel. Destruktiivsetele operatsioonidele BPF-programmi laadimisel juurdepääsu saamiseks on vajalik määrata lipp BPF_F_DESTRUCTIVE, aktiveerida sysctl kernel.destructive_bpf_enabled ning omada õigusi CAP_SYS_BOOT.
- BPF-programmidele on antud võimalus üle vaadata cgroup elemente, samuti teatud lõime või ülesande (nt failid, vma, protsessid jne) ressursse. On rakendatud uus map-tüüp kasutajate ringikujundite (user ring buffer) loomiseks.
- Lisatud spetsiaalne mälu eraldamise kood BPF-programmides, mis tagab mälu jaotuse kontekstis BPF-is turvalisemalt kui tavaline kmalloc().
- Integratsioon esimene osa muudatustest, mis võimaldavad luua HID (Human Interface Device) seadmete draivereid, rakendatud BPF-programmide kujul.
- Kerneli seest on täielikult eemaldatud a.out täidesaatvate failide toe kood, mis muudetud vananenuks versioonis 5.1 ja alates versioonidest 5.18 ja 5.19 oli põhistruktuurides keelatud. a.out formaati ei kasutata enam Linuxi süsteemides ning a.out failide genereerimine ei ole kaasaegsetes tööriistades vaikimisi toetatud. a.out failide laadimist saab täielikult rakendada kasutaja ruumis.
- LoongArch arhitektuuriga süsteemidele, mida rakendavad Loongson 3 5000 protsessorid ja mis implementeerib uut RISC ISA, sarnast MIPS ja RISC-V-le, on rakendatud toimetamise tõhususe mõõtmisürituste (perf event), kexec, kdump ja BPF JIT-kompileerimise tugi.
- Asünkroonse sisendi/väljundi io_uring liideses on pakutud uus režiim IORING_SETUP_DEFER_TASKRUN, mis võimaldab ajutiselt edasi lükata seonduvaid ringbuffri töid, kuni rakendusest saabub päring, võimaldades töid pakettide kaupa täita ja vältida viivitusi, mis võivad tekkida rakenduse mitteõigel ajal tõrjumise tõttu.
- Kasutajaruumis protsessidele on antud võimalus alustada tavaliste mälulehtede vahemike teisendamist suurte mälulehtede komplektiks (Transparent Huge-Pages).
- Lisatud seadme /dev/userfaultfd rakendus, mis võimaldab ligipääsu userfaultfd() süsteemikutse funktsionaalsusele, kasutades failisüsteemi õigusi. userfaultfd funktsionaalsus võimaldab luua katkestusprotsessorite (page faults) töötlejat kasutajaruumis.
- Tõstetud nõudeid GNU Make versioonile — kerneli kokkupanekuks on nüüd nõutav vähemalt versioon 3.82.
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- Btrfs failisüsteemis on tehtud märkimisväärseid tõhususe optimeerimisi, sealhulgas FIEMAP ioctl-kutse tõhususe järsud suurendused. Lisatud asünkroonne puhverdatud kirjutamine rakendustele, mis kasutavad io_uring. Operatsioonile „send” lisatud toe failide kohta, mis on kaitstud fs-verity abil.
- Ext4 failisüsteemi täiendatud toimivuse optimeerimised seoses ajakirjanduse ning ainult lugemise režiimiga töötamisega.
- EROFS (Enhanced Read-Only File System) failisüsteemis, mis on ette nähtud ainult lugemisrežiimis saadaval olevate sektsioonide jaoks, on rakendatud andmete kooskõlastatud hoidmise võimalus, mis kordub erinevates failisüsteemides.
- Süsteemikutsesse statx() on lisatud teavet faili kohta, mis võimaldab otseinvesteeringut.
- FUSE (Filesystems in User Space) alam-süsteemi on lisatud toe ajutiste failide loomiseks, millel on O_TMPFILE lipp.
- Virtualiseerimine ja turvalisus
- CFI (Control Flow Integrity) kaitsemehhanismi rakendus on asendatud, lisades iga kaudse funktsiooni väljakutse ette kontrolli, et tuvastada teatud määratlemise käitumise vormid, mis võivad potentsiaalselt põhjustada tavapärase täitmise järjekorra rikkumisi (control flow) tänu ekspluateerijate kasutamisele, mis muudavad mällu salvestatud funktsiooni osutid. LLVM-i originaal CFI rakendus on asendatud versiooniga, mis on samuti Clangi kasutamisel põhinev, kuid spetsiaalselt kohandatud madalamate süsteemide ja operatsioonisüsteemide tuumade kaitsmiseks. LLVM-is pakutakse uut rakendust Clang 16 väljalaske jooksul ja see lisatakse valikuga „-fsanitize=kcfi”. Uue rakenduse peamine erinevus on see, et see ei ole seotud sidumisetappide (LTO) optimeerimisega ega too kaasa funktsioonide osutite asendamist viidete kaardil.
- LSM-moodulite (Linux Security Module) jaoks on ette nähtud võimalus luua töötlejad, mis peavad kinni nimestruktuuride loomise toimingud.
- Pakutud on vahendeid digitaalse allkirja PKCS#7 kinnitamiseks BPF-programmides.
- Võimalus avada /dev/random mitteblokiseerivas režiimis (O_NONBLOCK) on tagasi toodud, mis oli tähelepanuta jäetud eemaldatud kerneli 5.6.
- X86 arhitektuuriga süsteemides on lisatud hoiatus, kui kernelisüsteemide alamruumid kaardistavad mälulehti, võimaldades samal ajal täitmist ja kirjutamist. Edasi kaalutakse selliste mälukaardistuste täielikku keelamist.
- Lisatud KMSAN (Kernel Memory Sanitizer) silumise mehhanism, et tuvastada algustamata mälu kasutamine kernis ning algustamata mälu leke kasutaja ruumi ja seadmete vahel.
- Parandatud on krüptograafiliselt usaldusväärset pseudojuhuslike numbrite generaatorit CRNG, mida kasutatakse getrandom'i kutses. Muudatused on ette valmistanud Jason A. Donenfeld, autor WireGuard'ile, ja on suunatud pseudojuhuslike täisarvude ekstraheerimise turvalisuse parandamisele. VPN TCP-stekis on rakendatud võimalus (vaikimisi keelatud) kasutada eraldi sokli hash-tabeleid iga nimiruumi jaoks, mis võimaldab parandada jõudlust süsteemides, kus on palju nimiruume.
- Võrgu alamsüsteem
- Eemaldatud on vananenud DECnet-protokolli toetamist sisaldav kood. Kasutaja ruumi on jäetud API-käepidemed, mis võimaldavad rakenduste kompilatsiooni, mis kasutavad DECnet'i, kuid need rakendused ei saa võrku sisse logida.
- Dokumenditud netlink-protokoll.
- amdgpu draiverisse on lisatud DSC (Display Stream Compression) toetus, et võimaldada kaotusteta andmete tihendamist, kui vahetatakse teavet suure lahutusvõimega ekraanidega. Jätkatud on AMD RDNA3 (RX 7000) ja CDNA (Instinct) platvormide toetuse tagamine. Toetatud on IP-komponendid DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x ja GMC 11.x. amdkfd draiveris (AMD diskreetsete GPU-de jaoks, nagu Polaris) on rakendatud GFX 11.0.3 tugi.
- Seadmed
- i915 (Intel) draiveris on lisatud Meteor Lake GPU tugi. Meteor Lake'i ja uuemate GPU-de jaoks on tagatud DP 2.0 (DisplayPort) tugi. Lisatud on identifikaatorid Alder Lake S mikroarhitektuuriga graafikakaartide jaoks.
- Lisatud on toe kõnealusult Apple Silicon, Intel SkyLake ja Intel KabyLake protsessorites teostatud heliallikate jaoks. CS35L41 HDA helidraiveris on tagatud unerežiimi minek. Lisatud on ASoC (ALSA System on Chip) tugi Apple Siliconi, AMD Rembrant DSP-dele, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake ja Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP-dele, Qualcomm SC8280XP, SM8250, SM8450 ja Texas Instruments SRC4392 jaoks.
- Lisatud tugi LCD-paneelidele Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1, AUO B116XAK01.6, BOE NT116WHM-N21, INX N116BCA-EA2, INX N116BCN-EA1, Multi-Inno Technology MI0800FT-9.
- Lisatud tugi AHCI SATA-kontrolleritele, mida kasutatakse SoC Baikal-T1-s.
- Lisatud tugi Bluetooth-kiipidele MediaTek MT7921, Intel Magnetor (CNVi, integreeritud ühenduvus), Realtek RTL8852C, RTW8852AE ja RTL8761BUV (Edimax BT-8500).
- ath11k draiveris Qualcommi traadita moodulite jaoks on lisatud tugi spektraalse skaneerimise jaoks 160 MHz sagedusvahemikus, rakendatud on mitme ahela NAPI, parendatud on Qualcomm WCN6750 Wi-Fi kiipide toimetulekut.
- Lisatud draiverid PinePhone'i klaviatuuri, InterTouch (ThinkPad P1 G3) puuteplaatide, X-Box Adaptive Controller'i, PhoenixRC Flight Controller'i, VRC-2 Car Controller'i, DualSense Edge Controller'i, IBM juhtpaneelide (IBM Operation Panel), XBOX One Elite puldiga, XP-PEN Deco Pro S ja Intuos Pro Small (PTH-460) tahvelarvutitele.
- Lisatud draiver krüptograafiliste kiirendite Aspeed HACE (Hash and Crypto Engine) toetamiseks.
- Lisatud tugi integreeritud Thunderbolt/USB4 kontrolleritele Intel Meteor Lake.
- Lisatud tugi Sony Xperia 1 IV, Samsung Galaxy E5, E7 ja Grand Max, Pine64 Pinephone Pro nutitelefonidele.
- Lisatud tugi ARM SoC ja plaatidele: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 ja RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, Kontron SL/BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Uuendatud on draiverid Samsungi, Mediateki, Renesansi, Tegra, Qualcommi, Broadcomi ja NXP SoC-de jaoks.
- Samaaegselt lõi Ladina-Ameerika Tasuta Tarkvara Fond täiesti tasuta Linux-kernel 6.1 — Linux-libre 6.1-gnu, mis on puhastatud kõigist fikseeritud ja draiverite elementidest, mis sisaldavad mittevaba komponente või koodilõike, mille rakendamine on tootja poolt piiratud. Uues väljaandes on uut draiverit rtw8852b ja DTS-faile erinevate Qualcommi ja Mediateki SoC-de jaoks, mis põhinevad AArch64 arhitektuuril, puhastatud. Uuendatud on puhastuskood amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI draiverite ja alamprogrammide jaoks. Muudetud on tm6000 TV kaardid, cpia2 v4l, sp8870, av7110 vanade draiverite puhastamist.
Pärast kahe kuu arendust esitles Linus Torvalds Linux kernel 6.1 väljaannet. Kõige silmapaistvamad muudatused hõlmavad Rusti keeles draiverite ja moodulite arendamise toetamist, mälu kasutatavate lehtede määratlemise mehhanismi moderniseerimist, erimälu haldurit BPF-programmide jaoks, KMSAN mälu tõrkeotsingu süsteemi, KCFI (Kernel Control-Flow Integrity) kaitse mehhanismi ja Maple tree struktuuri rakendamist. Uude versiooni on vastu võetud 15115.
Allikas: opennet.ru
