Linux kernvrystelling 6.1

Na twee maande se ontwikkeling het Linus Torvalds die vrystelling van die Linux-kern 6.1 aangebied. Onder die opvallendste veranderinge: ondersteuning vir die ontwikkeling van drywers en modules in die Rust-taal, modernisering van die meganisme vir die bepaling van gebruikte geheuebladsye, 'n spesiale geheuebestuurder vir BPF-programme, 'n stelsel vir die diagnose van geheueprobleme KMSAN, die KCFI (Kernelk Control -Flow Integrity) beskermingsmeganisme, die bekendstelling van die Maple-struktuurboom.

Die nuwe weergawe bevat 15115 2139 regstellings van 51 2 ontwikkelaars, die pleistergrootte is 6.0 MB, wat ongeveer 5.19 keer kleiner is as die grootte van pleisters vanaf pitte 13165 en 716247. Die veranderinge het 304560 45 lêers geraak, 6.1 14 reëls kode is bygevoeg en 14 3 reëls is uitgevee. Ongeveer 3% van alle veranderinge wat in XNUMX aangebring is, hou verband met toestelbestuurders, ongeveer XNUMX% van veranderinge hou verband met die opdatering van kode spesifiek vir hardeware-argitekture, XNUMX% hou verband met die netwerkstapel, XNUMX% hou verband met lêerstelsels en XNUMX% hou verband met interne kernsubstelsels.

Sleutel innovasies in kern 6.1:

  • Geheue en stelseldienste
    • Bygevoeg die vermoë om Rust as 'n tweede taal te gebruik vir die ontwikkeling van drywers en kernmodules. Die hoofrede vir die ondersteuning van Rust is om dit makliker te maak om veilige en hoëgehalte-toestelbestuurders te skryf deur die waarskynlikheid dat jy foute maak wanneer jy met geheue werk, verminder. Roes-ondersteuning is by verstek gedeaktiveer en lei nie daartoe dat Rust ingesluit word as 'n vereiste kernbou-afhanklikheid nie. Die kern het tot dusver 'n minimale, gestroopte weergawe van die pleisters aangeneem, wat verminder is van 40 tot 13 duisend reëls kode en bied slegs die nodige minimum, voldoende om 'n eenvoudige kernmodule te bou wat in die Rust-taal geskryf is. In die toekoms word beplan om die bestaande funksionaliteit geleidelik te verhoog, deur ander veranderinge van die Rust-for-Linux-tak oor te dra. Terselfdertyd word projekte ontwikkel om die voorgestelde infrastruktuur te gebruik om drywers vir NVMe-aandrywers, die 9p-netwerkprotokol en die Apple M1 GPU in die Rust-taal te ontwikkel.
    • Vir stelsels gebaseer op AArch64-, RISC-V- en LoongArch-argitekture met EFI, is die vermoë om saamgeperste kernbeelde direk te laai, geïmplementeer. Bygevoeg hanteerders vir die laai, hardloop en aflaai van kernbeelde, direk vanaf EFI zboot genoem. Hanteerders vir die installering en verwydering van protokolle vanaf die EFI-protokoldatabasis is ook bygevoeg. Voorheen is uitpak deur 'n aparte selflaaiprogram uitgevoer, maar nou kan dit deur 'n hanteerder in die kern self gedoen word - die kernbeeld word as 'n EFI-toepassing gevorm.
    • Die samestelling sluit 'n deel van die kolle in met die implementering van 'n multi-vlak geheue bestuur model, wat jou toelaat om geheue banke met verskillende prestasie eienskappe te skei. Byvoorbeeld, die mees gebruikte bladsye kan in die vinnigste geheue gestoor word, terwyl die mees selde gebruikte bladsye in relatief stadige geheue gestoor kan word. Kernel 6.1 stel 'n meganisme bekend om te bepaal waar baie gebruikte bladsye in stadige geheue geleë is sodat hulle bevorder kan word tot vinnige geheue, en stel ook 'n algemene konsep van geheuevlakke en hul relatiewe werkverrigting bekend.
    • Dit sluit die MGLRU (Multi-Generational LRU) meganisme in, wat die ou LRU (Least Recently Used) implementering vervang wat gebaseer is op twee rye met 'n multi-stadium struktuur wat beter bepaal watter geheue bladsye werklik in gebruik is en wat uitgestoot kan word na die ruilpartisie.
    • Bygevoeg ondersteuning vir die "esdoornboom" datastruktuur voorgestel deur Oracle ingenieurs, wat geposisioneer is as 'n meer effektiewe plaasvervanger vir die "rooi-swart boom" struktuur. Maple tree is 'n variant van B-tree wat reeksindeksering ondersteun en is ontwerp om doeltreffend gebruik te maak van die kas van moderne verwerkers. Sommige geheuebestuursubstelsels is reeds na maple tree oorgedra, wat 'n positiewe uitwerking op hul werkverrigting gehad het. In die toekoms kan esdoornboom gebruik word om reekssluiting te implementeer.
    • Die vermoë om "vernietigende" BPF-programme te skep wat spesiaal ontwerp is om 'n noodafsluiting te begin via die crash_kexec()-oproep is by die BPF-substelsel gevoeg. Sulke BPF-programme kan nodig wees vir ontfoutingsdoeleindes om die skepping van 'n ongelukstorting op 'n sekere tydstip te begin. Om toegang tot vernietigende bewerkings te verkry wanneer 'n BPF-program gelaai word, moet jy die BPF_F_DESTRUCTIVE vlag spesifiseer, sysctl kernel.destructive_bpf_enabled aktiveer en CAP_SYS_BOOT regte hê.
    • Vir BPF-programme is dit moontlik om cgroup-elemente op te noem, sowel as hulpbronne (lêers, vma, prosesse, ens.) van 'n spesifieke draad of taak op te noem. 'n Nuwe kaarttipe is geïmplementeer om gebruikersringbuffers te skep.
    • Bygevoeg 'n spesiale oproep vir geheue toewysing in BPF programme (geheue toewyser), wat veiliger geheue toewysing in die BPF konteks bied as die standaard kmalloc().
    • Die eerste deel van die veranderinge is geïntegreer, wat die vermoë bied om drywers vir invoertoestelle te skep met 'n HID (Human Interface Device)-koppelvlak, geïmplementeer in die vorm van BPF-programme.
    • Die kern het die kode heeltemal verwyder om die a.out-uitvoerbare lêerformaat te ondersteun, wat in vrystelling 5.1 opgeskort is en sedert weergawes 5.18 en 5.19 vir groot argitekture gedeaktiveer is. Die a.out-formaat is lankal afgekeur op Linux-stelsels, en generering van a.out-lêers word nie deur moderne nutsgoed in verstek Linux-konfigurasies ondersteun nie. Die laaier vir a.out-lêers kan geheel en al in gebruikersruimte geïmplementeer word.
    • Vir stelsels gebaseer op die LoongArch-instruksiestel-argitektuur wat in die Loongson 3 5000-verwerkers gebruik word en die nuwe RISC ISA implementeer, soortgelyk aan MIPS en RISC-V, word ondersteuning vir prestasiemetingsgebeurtenisse (perf events), kexec, kdump en BPF JIT-samestelling geïmplementeer .
    • Die io_uring asynchrone I/O-koppelvlak bied 'n nuwe modus, IORING_SETUP_DEFER_TASKRUN, wat toelaat dat ringbufferverwante werk tydelik uitgestel word totdat 'n toepassingversoek gemaak word, wat gebruik kan word om bondelwerk te gebruik en vertragingskwessies te vermy as gevolg van voorrang. toepassings by die verkeerde tyd.
    • Prosesse in gebruikersruimte word die vermoë gegee om die omskakeling van 'n reeks normale geheuebladsye na 'n stel groot geheuebladsye (Transparent Huge-Pages) te begin.
    • Bygevoeg implementering van die /dev/userfaultfd-toestel, wat toegang verleen tot die funksionaliteit van die userfaultfd()-stelseloproep deur toegangsregte in die FS te gebruik. Die userfaultfd-funksie laat jou toe om hanteerders te skep vir toegang tot ongeallokeerde geheuebladsye (bladsyfoute) in gebruikersruimte.
    • Die vereistes vir die weergawe van die GNU Make-hulpprogram is verhoog - ten minste weergawe 3.82 word nou benodig om die kern te bou.
  • Skyfsubstelsel, I/O en lêerstelsels
    • Beduidende werkverrigtingoptimalisasies is aan die Btrfs-lêerstelsel gemaak; onder andere is die werkverrigting van die FIEMAP ioctl-oproep met ordes van grootte verhoog. Bygevoeg ondersteuning vir asynchrone gebufferde skryfwerk vir toepassings wat io_uring gebruik. Ondersteuning bygevoeg vir lêers wat met fs-verity beskerm word by die "stuur"-operasie.
    • Die ext4-lêerstelsel het prestasieoptimalisasies bygevoeg wat verband hou met joernaalinstandhouding en leesalleen-werking.
    • Die EROFS (Enhanced Read-Only File System) lêerstelsel, ontwerp vir gebruik op partisies wat toeganklik is in leesalleen-modus, implementeer die vermoë om data wat in verskillende lêerstelsels gedupliseer is, te deel.
    • Die statx()-stelseloproep is bygevoeg om inligting te vertoon oor of direkte I/O op 'n lêer toegepas kan word.
    • Ondersteuning vir die skep van tydelike lêers met die O_TMPFILE-vlag is by die FUSE (Lêerstelsels in gebruikersruimte)-substelsel gevoeg.
  • Virtualisering en sekuriteit
    • Die implementering van die CFI (Control Flow Integrity)-beskermingsmeganisme is vervang, deur kontroles voor elke indirekte oproep van 'n funksie by te voeg om sommige vorme van ongedefinieerde gedrag op te spoor wat moontlik kan lei tot 'n skending van die normale uitvoeringsbevel (beheervloei) as 'n gevolg van die gebruik van uitbuitings wat wysers verander na funksies wat in die geheue gestoor is. Die standaardimplementering van CFI vanaf die LLVM-projek is vervang deur 'n opsie wat ook gebaseer is op die gebruik van Clang, maar spesiaal aangepas om laevlaksubstelsels en bedryfstelselpitte te beskerm. In LLVM sal 'n nuwe implementering in die Clang 16-vrystelling aangebied word en sal geaktiveer word met die "-fsanitize=kcfi" opsie. Die belangrikste verskil met die nuwe implementering is dat dit nie gekoppel is aan skakeltydoptimalisasies (LTO) nie en nie daartoe lei dat funksiewysers deur skakels in die springtabel vervang word nie.
    • Vir LSM-modules (Linux Security Module), is dit moontlik om hanteerders te skep wat bewerkings onderskep om naamruimtes te skep.
    • Gereedskap word verskaf om PKCS#7 digitale handtekeninge in BPF-programme te verifieer.
    • Die vermoë om oop te maak in nie-blokkerende modus (O_NONBLOCK), wat per ongeluk in kern 5.6 verwyder is, is teruggekeer na /dev/random.
    • Op stelsels met x86-argitektuur is 'n waarskuwing bygevoeg in die geval van kartering van geheuebladsye deur kernsubstelsels wat gelyktydig uitvoering en skryf toelaat. In die toekoms word die moontlikheid oorweeg om sulke geheuekartering heeltemal te verbied.
    • Bygevoeg KMSAN (Kernel Memory Sanitizer) ontfoutingsmeganisme om ongeinitialiseerde geheuegebruik in die kern op te spoor, sowel as ongeinitialiseerde geheuelekkasies tussen gebruikersspasie en toestelle.
    • Verbeterings is aangebring aan die kripto-veilige CRNG pseudo-ewekansige nommergenerator wat in die ewekansige oproep gebruik word. Die veranderinge is voorberei deur Jason A. Donenfeld, skrywer van VPN WireGuard, en is daarop gemik om die sekuriteit van pseudo-ewekansige heelgetalonttrekking te verbeter.
  • Netwerk substelsel
    • Die TCP-stapel bied die vermoë (by verstek gedeaktiveer) om socket hash-tabelle afsonderlik vir elke naamruimte te gebruik, wat werkverrigting op stelsels met 'n groot aantal naamruimtes verbeter.
    • Kode verwyder om die ou DECnet-protokol te ondersteun. Gebruikerspasie-API-stubs word in plek gelaat om toepassings wat DECnet gebruik, saam te stel, maar hierdie toepassings sal nie aan die netwerk kan koppel nie.
    • Die netlink-protokol is gedokumenteer.
  • Оборудование
    • Die amdgpu-bestuurder het ondersteuning bygevoeg vir DSC (Display Stream Compression) aanstuur vir verlieslose datakompressie wanneer inligting uitgeruil word met skerms wat baie hoë resolusies ondersteun. Werk gaan voort om ondersteuning te bied vir die AMD RDNA3 (RX 7000) en CDNA (Instinct) platforms. Bygevoeg ondersteuning vir DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x en GMC 11.x IP-komponente. Die amdkfd-bestuurder (vir diskrete AMD GPU's soos Polaris) bied ondersteuning vir GFX 11.0.3.
    • Die i915 (Intel)-bestuurder sluit ondersteuning vir Meteor Lake GPU in. Meteor Lake en nuwer GPU's ondersteun DP 2.0 (DisplayPort)-koppelvlak. Bygevoeg identifiseerders vir videokaarte gebaseer op die Alder Lake S mikroargitektuur.
    • Bygevoeg ondersteuning vir klank substelsels geïmplementeer in Apple Silicon, Intel SkyLake en Intel KabyLake verwerkers. Die CS35L41 HDA klankbestuurder ondersteun slaapmodus. Bygevoeg ASoC (ALSA System on Chip) ondersteuning vir geïntegreerde klankskyfies Apple Silicon, AMD Rembrant DSP's, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake en Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP's, Qualcomm SC8280XP, SM SM8250 en Texas Instruments SRC8450
    • Bygevoeg ondersteuning vir LCD-panele Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA, B1ACA-EA116H -N01.6, INX N116BCA- EA21 , INX N116BCN-EA2, Multi-Inno Tegnologie MI116FT-1.
    • Bygevoeg ondersteuning vir AHCI SATA-beheerders wat in die Baikal-T1 SoC gebruik word.
    • Bygevoeg ondersteuning vir Bluetooth-skyfies MediaTek MT7921, Intel Magnetor (CNVi, Geïntegreerde Konnektiwiteit), Realtek RTL8852C, RTW8852AE en RTL8761BUV (Edimax BT-8500).
    • Die ath11k-bestuurder vir Qualcomm-draadlose modules het ondersteuning bygevoeg vir spektrale skandering in die 160 MHz-reeks, geïmplementeer multi-threaded NAPI, en verbeterde ondersteuning vir Qualcomm WCN6750 Wi-Fi-skyfies.
    • Bygevoeg drywers vir PinePhone-sleutelbord, InterTouch touchpads (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operating Panel, XBOX One Elite afstandbeheerders, tablette XP-PEN Deco Pro S en Intuos Pro Small (PTH-460).
    • Bygevoeg bestuurder vir Aspeed HACE (Hash and Crypto Engine) kriptografiese versnellers.
    • Bygevoeg ondersteuning vir geïntegreerde Thunderbolt/USB4 Intel Meteor Lake-beheerders.
    • Bygevoeg ondersteuning vir Sony Xperia 1 IV, Samsung Galaxy E5, E7 en Grand Max, Pine64 Pinephone Pro-slimfone.
    • Bygevoeg ondersteuning vir ARM SoC en planke: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 en RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ/8065, IPQ/8 BL i.MX8195MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 4C+, NanoPi R1S Enterprise Edition, JetHome JetHub DXNUMXp. Opgedateerde drywers vir SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom en NXP.

Terselfdertyd het die Latyns-Amerikaanse Vrye Sagteware-stigting 'n weergawe gevorm van die heeltemal gratis kern 6.1 - Linux-libre 6.1-gnu, skoongemaak van elemente van firmware en drywers wat nie-vrye komponente of dele van kode bevat, waarvan die omvang is beperk deur die vervaardiger. Die nuwe vrystelling maak die nuwe rtw8852b-bestuurder en DTS-lêers skoon vir verskeie Qualcomm en MediaTek SoC's met verwerkers gebaseer op die AArch64-argitektuur. Opgedateerde blob-skoonmaakkode in drywers en substelsels amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. Skoonmaak van verouderde drywers tm6000 TV-kaarte, cpia2 v4l, sp8870, av7110 is reggestel.

Bron: opennet.ru

Voeg 'n opmerking