Linuxi 6.1 kerneli väljalase

Pärast kahekuulist arendustööd esitles Linus Torvalds Linuxi kerneli 6.1 väljalaset. Märkimisväärsemate muudatuste hulgas: Rust-keele draiverite ja moodulite arendamise tugi, kasutatud mälulehtede määramise mehhanismi moderniseerimine, spetsiaalne mäluhaldur BPF-programmide jaoks, mäluprobleemide diagnoosimise süsteem KMSAN, KCFI (Kernelk Control). -Flow Integrity) kaitsemehhanism, Maple struktuuripuu kasutuselevõtt.

Uus versioon sisaldab 15115 2139 parandust 51 arendajalt, paiga suurus on 2 MB, mis on ligikaudu 6.0 korda väiksem kui tuumade 5.19 ja 13165 paikade suurus. Muudatused puudutasid 716247 304560 faili, lisati 45 6.1 koodirida ja 14 14 rida kustutati. Ligikaudu 3% kõigist versioonis 3 tehtud muudatustest on seotud seadme draiveritega, ligikaudu XNUMX% muudatustest on seotud riistvaraarhitektuurile omase koodi uuendamisega, XNUMX% on seotud võrgupinuga, XNUMX% on seotud failisüsteemidega ja XNUMX% on seotud sisemiste tuuma alamsüsteemidega.

Peamised uuendused kernelis 6.1:

  • Mälu- ja süsteemiteenused
    • Lisati võimalus kasutada Rusti teise keelena draiverite ja kerneli moodulite arendamiseks. Peamine põhjus Rusti toetamiseks on ohutute ja kvaliteetsete seadmedraiverite kirjutamise hõlbustamine, vähendades mäluga töötamisel vigade tekkimise tõenäosust. Rooste tugi on vaikimisi keelatud ja selle tõttu ei kaasata roostet kui vajalikku kerneli ehitussõltuvust. Kernel on seni kasutusele võtnud plaastrite minimaalse, eemaldatud versiooni, mida on vähendatud 40 tuhandelt koodirealt 13 tuhandele ja mis annab vaid vajaliku miinimumi, millest piisab lihtsa Rust keeles kirjutatud kerneli mooduli ehitamiseks. Tulevikus on plaanis olemasolevat funktsionaalsust järk-järgult suurendada, kandes muud muudatused üle Rust-for-Linuxi harust. Paralleelselt töötatakse välja projekte, mille eesmärk on kasutada kavandatud infrastruktuuri NVMe-draivide, 9p võrguprotokolli ja Apple M1 GPU Rust-keeles draiverite arendamiseks.
    • EFI-ga AArch64, RISC-V ja LoongArchi arhitektuuridel põhinevate süsteemide jaoks on rakendatud tihendatud kerneli kujutiste otselaadimise võimalus. Lisatud töötlejad kerneli piltide laadimiseks, käitamiseks ja mahalaadimiseks, kutsutakse otse EFI zbootist. Lisatud on ka käsitlejad EFI protokollide andmebaasist protokollide installimiseks ja kustutamiseks. Kui varem teostas lahtipakkimise eraldi alglaadur, siis nüüd saab seda teha kernelis endas olev töötleja – kerneli kujutis moodustatakse EFI rakendusena.
    • Kompositsioon sisaldab osa plaastritest koos mitmetasandilise mäluhaldusmudeli rakendamisega, mis võimaldab eraldada erinevate jõudlusnäitajatega mälupangad. Näiteks enimkasutatud leheküljed võidakse salvestada kiireimasse mällu, samas kui kõige harvemini kasutatavad lehed võivad olla salvestatud suhteliselt aeglasesse mällu. Kernel 6.1 tutvustab mehhanismi, mille abil saab määrata, kus aeglases mälus tugevalt kasutatud lehed asuvad, et neid saaks üle viia kiireks mäluks, ning tutvustab ka üldist mälutasandite kontseptsiooni ja nende suhtelist jõudlust.
    • See sisaldab MGLRU (Multi-Generational LRU) mehhanismi, mis asendab vana kahel järjekorral põhineva LRU (Least Recently Used) teostuse mitmeastmelise struktuuriga, mis määrab paremini, millised mälulehed on tegelikult kasutusel ja milliseid saab välja lükata. vahetuspartitsioon.
    • Lisatud on tugi Oracle'i inseneride pakutud andmestruktuurile "vahtrapuu", mis on "punase-musta puu" struktuuri tõhusam asendus. Maple tree on B-puu variant, mis toetab vahemiku indekseerimist ja on loodud kaasaegsete protsessorite vahemälu tõhusaks kasutamiseks. Mõned mäluhalduse alamsüsteemid on juba vahtrapuusse üle viidud, mis on nende jõudlust positiivselt mõjutanud. Edaspidi saab vahtrapuud kasutada vahemiku lukustuse rakendamiseks.
    • BPF-i alamsüsteemi on lisatud võimalus luua "hävitavaid" BPF-programme, mis on spetsiaalselt loodud hädaseiskamise algatamiseks väljakutse crash_kexec() kaudu. Sellised BPF-programmid võivad olla vajalikud silumiseks, et teatud ajahetkel krahhi tõmmise loomine algatada. Destruktiivsetele operatsioonidele juurdepääsuks BPF-programmi laadimisel peate määrama lipu BPF_F_DESTRUCTIVE, aktiveerima sysctl kernel.destructive_bpf_enabled ja omama õigusi CAP_SYS_BOOT.
    • BPF-programmide puhul on võimalik loetleda nii cgroupi elemente kui ka konkreetse lõime või ülesande ressursse (failid, vma, protsessid jne). Kasutajate helinapuhvrite loomiseks on kasutusele võetud uus kaarditüüp.
    • Lisatud spetsiaalne üleskutse mälu eraldamiseks BPF-programmides (mälujaotur), mis tagab BPF-i kontekstis turvalisema mälujaotuse kui standardne kmalloc().
    • Esimene osa muudatustest on integreeritud, pakkudes võimalust luua draivereid sisendseadmete jaoks, millel on HID (Human Interface Device) liides, mis on rakendatud BPF-programmide kujul.
    • Tuum on täielikult eemaldanud koodi, et toetada a.out käivitatavat failivormingut, mis versioonis 5.1 aegus ja mis on suuremate arhitektuuride jaoks keelatud alates versioonidest 5.18 ja 5.19. A.out-vorming on Linuxi süsteemides juba ammu aegunud ja Linuxi vaikekonfiguratsioonides kaasaegsed tööriistad ei toeta a.out-failide genereerimist. A.out-failide laadijat saab täielikult rakendada kasutajaruumis.
    • Süsteemidele, mis põhinevad Loongson 3 5000 protsessorites kasutataval LoongArchi käsukomplekti arhitektuuril ja rakendavad uut RISC ISA-t, sarnaselt MIPS-i ja RISC-V-ga, on rakendatud jõudluse mõõtmise sündmuste (perf sündmuste), kexec, kdump ja BPF JIT kompileerimise tugi. .
    • Asünkroonne I/O liides io_uring pakub uut režiimi IORING_SETUP_DEFER_TASKRUN, mis võimaldab helipuhvriga seotud tööd ajutiselt edasi lükata kuni rakenduse taotluse esitamiseni, mida saab kasutada paketttöö tegemiseks ja eelmüügist tulenevate latentsusprobleemide vältimiseks. vale aeg.
    • Kasutajaruumis olevatele protsessidele on antud võimalus käivitada tavaliste mälulehtede vahemiku teisendamine suurte mälulehtede komplektiks (Transparent Huge-Pages).
    • Lisatud on /dev/userfaultfd seadme juurutamine, mis võimaldab juurdepääsu kasutajafaultfd() süsteemikutse funktsioonidele, kasutades FS-i juurdepääsuõigusi. Userfaultfd funktsionaalsus võimaldab luua töötlejaid kasutajaruumis jaotamata mälulehtedele (lehevead) pääsemiseks.
    • GNU Make utiliidi versiooni nõudeid on suurendatud – tuuma ehitamiseks on nüüd vaja vähemalt versiooni 3.82.
  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Btrfs failisüsteemis on tehtud olulisi jõudluse optimeerimisi, muuhulgas on FIEMAP ioctl kõne jõudlust suurendatud suurusjärkude võrra. Lisatud on asünkroonse puhverdatud kirjutamise tugi io_uringi kasutavate rakenduste jaoks. "Saada" toimingule on lisatud tugi fs-verityga kaitstud failidele.
    • Ext4-failisüsteem on lisanud ajakirja hoolduse ja kirjutuskaitstud toimimisega seotud jõudluse optimeerimise.
    • EROFS (täiustatud kirjutuskaitstud failisüsteem) failisüsteem, mis on mõeldud kasutamiseks kirjutuskaitstud režiimis juurdepääsetavates partitsioonides, rakendab võimalust jagada erinevates failisüsteemides dubleeritud andmeid.
    • Süsteemikutse statx() on lisatud teabe kuvamiseks selle kohta, kas failile saab rakendada otsest sisendit/väljundit.
    • Alamsüsteemi FUSE (Failisüsteemid kasutajaruumis) on lisatud O_TMPFILE lipuga ajutiste failide loomise tugi.
  • Virtualiseerimine ja turvalisus
    • CFI (Control Flow Integrity) kaitsemehhanismi rakendamine on asendatud, lisades kontrollid enne iga funktsiooni kaudset väljakutset, et tuvastada teatud määratlemata käitumise vorme, mis võivad potentsiaalselt viia tavapärase täitmisjärjekorra (juhtvoo) rikkumiseni. kasutamine , mis muudab viiteid mällu salvestatud funktsioonidele . LLVM-projekti standardne CFI juurutus on asendatud valikuga, mis põhineb samuti Clangi kasutamisel, kuid on spetsiaalselt kohandatud madala taseme alamsüsteemide ja operatsioonisüsteemi tuumade kaitsmiseks. LLVM-is pakutakse Clang 16 versioonis uut rakendust ja see lubatakse valikuga "-fsanitize=kcfi". Peamine erinevus uue juurutusega on see, et see ei ole seotud lingiaja optimeerimisega (LTO) ega põhjusta funktsiooninäitajate asendamist hüppetabelis linkidega.
    • LSM-moodulite (Linux Security Module) jaoks on võimalik luua töötlejaid, mis peatavad nimeruumide loomiseks toiminguid.
    • Pakutakse tööriistu PKCS#7 digitaalallkirjade kontrollimiseks BPF-programmides.
    • Kerneli versioonis 5.6 kogemata eemaldatud mitteblokeerimisrežiimis (O_NONBLOCK) avamise võimalus on tagastatud kausta /dev/random.
    • x86 arhitektuuriga süsteemides on lisatud hoiatus mälulehtede kaardistamise korral kerneli alamsüsteemide poolt, mis võimaldavad samaaegselt täitmist ja kirjutamist. Tulevikus kaalutakse võimalust selline mälukaardistamine täielikult keelata.
    • Lisatud on KMSAN (Kernel Memory Sanitizer) silumismehhanism, et tuvastada initsialiseerimata mälukasutust kernelis, samuti initsialiseerimata mälulekkeid kasutajaruumi ja seadmete vahel.
    • Juhuslikus kõnes kasutatavas krüptoturvalises CRNG pseudojuhuslike numbrite generaatoris on tehtud täiustusi. Muudatused valmistas ette VPN WireGuardi autor Jason A. Donenfeld ja nende eesmärk on parandada pseudojuhuslike täisarvude ekstraheerimise turvalisust.
  • Võrgu alamsüsteem
    • TCP-pinn annab võimaluse (vaikimisi keelatud) kasutada sokliräsi tabeleid iga nimeruumi jaoks eraldi, mis parandab suure hulga nimeruumidega süsteemide jõudlust.
    • Pärandprotokolli DECnet toetamiseks eemaldati kood. Kasutajaruumi API tüngad jäetakse paika, et võimaldada DECneti kasutavate rakenduste kompileerimist, kuid need rakendused ei saa võrguga ühendust luua.
    • Netlinki protokoll on dokumenteeritud.
  • Оборудование
    • Amdgpu draiver on lisanud DSC (Display Stream Compression) edastamise toe andmete kadudeta tihendamiseks, kui vahetate teavet väga kõrget eraldusvõimet toetavate ekraanidega. Töö jätkub AMD RDNA3 (RX 7000) ja CDNA (Instinct) platvormide toe pakkumiseks. Lisatud on tugi DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x ja GMC 11.x IP komponentidele. Amdkfd draiver (diskreetsete AMD GPU-de (nt Polaris) jaoks) toetab GFX 11.0.3.
    • I915 (Intel) draiver sisaldab Meteor Lake GPU tuge. Meteor Lake ja uuemad GPU-d toetavad DP 2.0 (DisplayPort) liidest. Lisatud Alder Lake S mikroarhitektuuril põhinevad videokaartide identifikaatorid.
    • Lisatud Apple Silicon, Intel SkyLake ja Intel KabyLake protsessorites rakendatud heli alamsüsteemide tugi. CS35L41 HDA helidraiver toetab puhkerežiimi. Lisatud on ASoC (ALSA System on Chip) tugi integreeritud helikiipidele Apple Silicon, AMD Rembrant DSP, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake ja Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP, Qualcomm SC8280XP, Qualcomm SC8250X8450 SM4392 ja Texas Instruments SRCXNUMX
    • Lisatud on tugi LCD-paneelidele Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1AAKUOW-EA116X. N01.6, INX N116BCA- EA21 , INX N116BCN-EA2, Multi-Inno tehnoloogia MI116FT-1.
    • Lisatud on Baikal-T1 SoC-s kasutatavate AHCI SATA kontrollerite tugi.
    • Lisatud on tugi Bluetooth-kiipidele MediaTek MT7921, Intel Magnetor (CNVi, integreeritud ühenduvus), Realtek RTL8852C, RTW8852AE ja RTL8761BUV (Edimax BT-8500).
    • Qualcommi traadita moodulite ath11k draiver on lisanud spektraalse skaneerimise toe 160 MHz vahemikus, rakendanud mitme keermega NAPI ja täiustanud Qualcomm WCN6750 Wi-Fi kiipide tuge.
    • Lisatud draiverid PinePhone'i klaviatuurile, InterTouchi puuteplaatidele (ThinkPad P1 G3), X-Boxi adaptiivsele kontrollerile, PhoenixRC lennukontrollerile, VRC-2 autokontrollerile, DualSense Edge kontrollerile, IBM-i juhtpaneelile, XBOX One Elite kaugjuhtimispuldidele, tahvelarvutitele XP-PEN Deco Pro S ja Intuos Pro Small (PTH-460).
    • Lisatud draiver Aspeed HACE (Hash and Crypto Engine) krüptokiirenditele.
    • Lisatud on integreeritud Thunderbolt/USB4 Intel Meteor Lake kontrollerite tugi.
    • Lisatud on Sony Xperia 1 IV, Samsung Galaxy E5, E7 ja Grand Max, Pine64 Pinephone Pro nutitelefonide tugi.
    • Lisatud tugi ARM SoC-le 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, IPQQ8062 S8065/8. BL i.MX8195MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 4C+, NanoPi R1S Enterprise Edition, JetHome JetHub DXNUMXp. Uuendatud draiverid SoC Samsungi, Mediateki, Renesase, Tegra, Qualcommi, Broadcomi ja NXP jaoks.

Samal ajal moodustas Ladina-Ameerika Vaba Tarkvara Sihtasutus täiesti tasuta kerneli 6.1 versiooni - Linux-libre 6.1-gnu, mis on puhastatud püsivara elementidest ja draiveritest, mis sisaldavad mittevabu komponente või koodilõike, mille ulatus on tootja poolt piiratud. Uus väljalase puhastab AArch8852 arhitektuuril põhinevate protsessoritega erinevate Qualcommi ja MediaTeki SoC-de uue rtw64b draiveri ja DTS-failid. Värskendatud blob-puhastuskood draiverites ja alamsüsteemides amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. Vananenud draiverite tm6000 telekaartide, cpia2 v4l, sp8870, av7110 puhastamine on parandatud.

Allikas: opennet.ru

Lisa kommentaar