Linux kernvrystelling 6.2

Na twee maande se ontwikkeling het Linus Torvalds die vrystelling van die Linux-kern 6.2 aangebied. Van die mees noemenswaardige veranderinge: aanvaarding van kode onder die Copyleft-Next-lisensie word toegelaat, die implementering van RAID5/6 in Btrfs word verbeter, die integrasie van ondersteuning vir die Rust-taal gaan voort, die oorhoofse beskerming teen Retbleed-aanvalle word verminder, die vermoë om geheueverbruik tydens terugskrywing te reguleer word bygevoeg, 'n meganisme word bygevoeg vir TCP-balansering PLB (Protective Load Balancing), 'n hibriede opdragvloeibeskermingsmeganisme (FineIBT) is bygevoeg, BPF het nou die vermoë om sy eie voorwerpe en datastrukture te definieer , die rv (Runtime Verification) nut is ingesluit, kragverbruik in die implementering van RCU-slotte is verminder.

Die nuwe weergawe bevat 16843 2178 regstellings van 62 14108 ontwikkelaars, die pleistergrootte is 730195 MB (die veranderinge het 409485 42 lêers geraak, 6.2 16 reëls kode is bygevoeg, 12 4 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.2:

  • Geheue en stelseldienste
    • Dit word toegelaat om in die kernkode en veranderinge wat onder die Copyleft-Next 0.3.1-lisensie voorsien word, in te sluit. Die Copyleft-Next-lisensie is geskep deur een van die skrywers van GPLv3 en is ten volle versoenbaar met die GPLv2-lisensie, soos bevestig deur prokureurs van SUSE en Red Hat. In vergelyking met GPLv2, is die Copyleft-Next-lisensie baie meer kompak en makliker om te verstaan ​​(die inleidende deel en vermelding van verouderde kompromieë is verwyder), definieer die tydraamwerk en prosedure vir die uitskakeling van oortredings, en verwyder outomaties copyleft-vereistes vir verouderde sagteware wat is meer as 15 jaar oud.

      Copyleft-Next bevat ook 'n eie tegnologietoekenningsklousule, wat, anders as GPLv2, hierdie lisensie versoenbaar maak met die Apache 2.0-lisensie. Om volle versoenbaarheid met GPLv2 te verseker, stel Copyleft-Next uitdruklik dat 'n afgeleide werk onder die GPL-lisensie bykomend tot die oorspronklike Copyleft-Next-lisensie verskaf kan word.

    • Die struktuur sluit die "rv"-hulpmiddel in, wat 'n koppelvlak bied vir interaksie vanuit gebruikersruimte met hanteerders van die RV (Runtime Verification) substelsel, wat ontwerp is om die korrekte werking op hoogs betroubare stelsels na te gaan wat die afwesigheid van mislukkings waarborg. Verifikasie word tydens looptyd uitgevoer deur hanteerders aan spoorpunte te heg wat die werklike vordering van uitvoering nagaan teen 'n voorafbepaalde verwysing deterministiese model van die masjien wat die verwagte gedrag van die stelsel definieer.
    • Die zRAM-toestel, wat toelaat dat die ruilpartisie in 'n saamgeperste vorm in die geheue gestoor word ('n bloktoestel word in die geheue geskep waarna omruiling met kompressie uitgevoer word), implementeer die vermoë om bladsye te herverpak deur 'n alternatiewe algoritme te gebruik om 'n hoër vlak te bereik van kompressie. Die hoofgedagte is om 'n keuse te bied tussen verskeie algoritmes (lzo, lzo-rle, lz4, lz4hc, zstd), wat hul eie kompromieë bied tussen kompressie/dekompressiespoed en kompressievlak, of optimaal in spesiale situasies (byvoorbeeld vir die saampersing van groot geheue bladsye).
    • Bygevoeg die "iommufd" API vir die bestuur van die I/O geheue bestuurstelsel - IOMMU (I/O Memory-Management Unit) vanaf gebruikersruimte. Die nuwe API maak dit moontlik om I/O-geheuebladsytabelle te bestuur deur lêerbeskrywings te gebruik.
    • BPF bied die vermoë om tipes te skep, jou eie voorwerpe te definieer, jou eie hiërargie van voorwerpe te bou en jou eie datastrukture, soos gekoppelde lyste, buigsaam te skep. Vir BPF-programme wat in slaapmodus gaan (BPF_F_SLEEPABLE), is ondersteuning vir bpf_rcu_read_{,un}lock()-slotte bygevoeg. Geïmplementeerde ondersteuning vir die stoor van task_struct-objekte. Bygevoeg kaarttipe BPF_MAP_TYPE_CGRP_STORAGE, wat plaaslike berging vir cgroups verskaf.
    • Vir die RCU (Read-copy-update) blokkeermeganisme word 'n opsionele meganisme van "lui" terugbeloproepe geïmplementeer, waarin verskeie terugbeloproepe gelyktydig verwerk word deur 'n tydhouer in bondelmodus te gebruik. Toepassing van die voorgestelde optimalisering stel ons in staat om kragverbruik op Android- en ChromeOS-toestelle met 5-10% te verminder deur RCU-versoeke uit te stel tydens ledige tye of lae las op die stelsel.
    • Sysctl split_lock_mitigate bygevoeg om te beheer hoe die stelsel reageer wanneer dit gesplete slotte opspoor wat plaasvind wanneer toegang tot ongelynde data in die geheue verkry word as gevolg van die data wat twee SVE-kaslyne kruis wanneer 'n atoominstruksie uitgevoer word. Sulke blokkasies lei tot 'n aansienlike afname in prestasie. Deur split_lock_mitigate op 0 te stel, gee slegs 'n waarskuwing dat daar 'n probleem is, terwyl die stel van split_lock_mitigate op 1 ook veroorsaak dat die proses wat veroorsaak het dat die slot vertraag word om werkverrigting vir die res van die stelsel te behou.
    • 'n Nuwe implementering van qspinlock is voorgestel vir die PowerPC-argitektuur, wat hoër werkverrigting demonstreer en sommige sluitprobleme oplos wat in uitsonderlike gevalle ontstaan.
    • Die MSI (Message-Signaled Interrupts) onderbrekingshanteringskode is herwerk, wat opgehoopte argitektoniese probleme uitskakel en ondersteuning byvoeg om individuele hanteerders aan verskillende toestelle te bind.
    • 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 ftrace, stapelbeskerming, slaap- en bystandmodusse geïmplementeer.
    • Die vermoë om name aan gebiede van gedeelde anonieme geheue toe te ken, is verskaf (voorheen kon name slegs toegeken word aan private anonieme geheue wat aan 'n spesifieke proses toegewys is).
    • Het 'n nuwe kernbevellynparameter "trace_trigger" bygevoeg, wat ontwerp is om 'n spoorsneller te aktiveer wat gebruik word om voorwaardelike opdragte te bind wat genoem word wanneer 'n beheerkontrole geaktiveer word (byvoorbeeld, trace_trigger=”sched_switch.stacktrace as prev_state == 2″).
    • Die vereistes vir die weergawe van die binutils-pakket is verhoog. Die bou van die kern vereis nou ten minste binutils 2.25.
    • Wanneer exec() geroep word, is die vermoë om 'n proses in 'n tydnaamruimte te plaas, waarin die tyd verskil van die stelseltyd, bygevoeg.
    • Ons het begin om bykomende funksionaliteit van die Rust-vir-Linux-tak oor te dra wat verband hou met die gebruik van die Rust-taal as 'n tweede taal vir die ontwikkeling van drywers en kernmodules. Roes-ondersteuning is by verstek gedeaktiveer en lei nie daartoe dat Rust ingesluit word as 'n vereiste kernbou-afhanklikheid nie. Die basiese funksionaliteit wat in die laaste vrystelling aangebied word, word uitgebrei om laevlakkode te ondersteun, soos die Vec-tipe en die makros pr_debug!(), pr_cont!() en pr_alert!(), sowel as die prosedurele makro "#[vtable" ]”, wat die werk met wysertabelle oor funksies vergemaklik. Die byvoeging van hoëvlak-roesbindings oor kernsubstelsels, wat die skepping van volwaardige drywers in Rust sal toelaat, word in toekomstige vrystellings verwag.
    • Die "char" tipe wat in die kern gebruik word, word nou by verstek ongeteken verklaar vir alle argitekture.
    • Die bladgeheue-toewysingsmeganisme - SLOB (plaattoewyser), wat ontwerp is vir stelsels met 'n klein hoeveelheid geheue, is verouderd verklaar. In plaas van SLOB, word dit onder normale toestande aanbeveel om SLUB of SLAB te gebruik. Vir stelsels met 'n klein hoeveelheid geheue, word dit aanbeveel om SLUB in die SLUB_TINY-modus te gebruik.
  • Skyfsubstelsel, I/O en lêerstelsels
    • Verbeterings is aangebring aan Btrfs wat daarop gemik is om die "skryfgat"-probleem in RAID 5/6-implementerings reg te stel ('n poging om 'n RAID te herstel as 'n ongeluk tydens skryf plaasvind en dit is onmoontlik om te verstaan ​​watter blok op watter RAID-toestel korrek geskryf is, wat kan lei tot blokvernietiging, wat ooreenstem met ondergeskrewe blokke). Daarbenewens aktiveer SSD's nou outomaties asinchroniese weggooi-operasie by verstek wanneer moontlik, wat voorsiening maak vir verbeterde werkverrigting as gevolg van doeltreffende groepering van weggooi-bewerkings in toue en verwerking van die tou deur 'n agtergrondverwerker. Verbeterde prestasie van die stuur- en lseek-operasies, sowel as die FIEMAP ioctl.
    • Die vermoëns vir die bestuur van uitgestelde skryfwerk (terugskryf, agtergrondstoor van veranderde data) vir bloktoestelle is uitgebrei. In sommige situasies, soos wanneer netwerkbloktoestelle of USB-aandrywers gebruik word, kan lui skryfwerk tot groot RAM-verbruik lei. Om die gedrag van lui skryfwerk te beheer en die grootte van die bladsykas binne sekere perke te hou, is nuwe parameters strict_limit, min_bytes, max_bytes, min_ratio_fine en max_ratio_fine in sysfs (/sys/class/bdi/) ingestel.
    • Die F2FS-lêerstelsel implementeer 'n atomic replace ioctl-operasie, wat jou toelaat om data na 'n lêer binne 'n enkele atoombewerking te skryf. F2FS voeg ook 'n blok-omvang-kas by om te help om aktief gebruikte data of data wat vir 'n lang tyd nie toegang verkry het nie, te identifiseer.
    • In die ext4 FS word slegs foutkorreksies aangeteken.
    • Die ntfs3-lêerstelsel bied verskeie nuwe monteeropsies: "nocase" om hooflettergevoeligheid in lêer- en gidsname te beheer; windows_name om die skep van lêername te verbied wat karakters bevat wat nie vir Windows geldig is nie; hide_dot_files om die toewysing van die verborge lêeretiket vir lêers wat met 'n punt begin, te beheer.
    • Die Squashfs-lêerstelsel implementeer 'n “threads=”-monteeropsie, wat jou toelaat om die aantal drade te definieer om dekompressie-operasies te paralleliseer. Squashfs het ook die vermoë bekendgestel om gebruikers-ID's van gemonteerde lêerstelsels te karteer, wat gebruik word om die lêers van 'n spesifieke gebruiker op 'n gemonteerde vreemde partisie met 'n ander gebruiker op die huidige stelsel te pas.
    • Die implementering van POSIX-toegangsbeheerlyste (POSIX ACL's) is herwerk. Die nuwe implementering skakel argitektoniese kwessies uit, vereenvoudig kodebasis-instandhouding en stel veiliger datatipes bekend.
    • Die fscrypt-substelsel, wat gebruik word vir deursigtige enkripsie van lêers en gidse, het ondersteuning bygevoeg vir die SM4-enkripsiealgoritme (Chinese standaard GB/T 32907-2016).
    • Die vermoë om die kern te bou sonder NFSv2-ondersteuning is verskaf (in die toekoms beplan hulle om heeltemal op te hou om NFSv2 te ondersteun).
    • Die organisasie van die nagaan van toegangsregte tot NVMe-toestelle is verander. Bied die vermoë om na 'n NVMe-toestel te lees en te skryf as die skryfproses toegang het tot die toestel se toegewyde lêer (voorheen moes die proses die CAP_SYS_ADMIN-toestemming hê).
    • Het die CD/DVD-pakketbestuurder verwyder, wat in 2016 opgeskort is.
  • Virtualisering en sekuriteit
    • 'n Nuwe metode van beskerming teen die Retbleed-kwesbaarheid is in Intel- en AMD-SVE's geïmplementeer, met behulp van oproepdiepte-nasporing, wat nie werk so vertraag as die voorheen huidige beskerming teen Retbleed nie. Om die nuwe modus te aktiveer, is die kern-opdragreëlparameter “retbleed=stuff” voorgestel.
    • Het 'n hibriede FineIBT-instruksievloeibeskermingsmeganisme bygevoeg, wat die gebruik van hardeware Intel IBT (Indirect Branch Tracking)-instruksies en sagtewarebeskerming kCFI (kernel Control Flow Integrity) kombineer om skending van die normale uitvoeringsbevel (beheervloei) as gevolg van die gebruik te blokkeer van uitbuitings wat wysers wat in die geheue gestoor is op funksies verander. FineIBT laat uitvoering deur indirekte sprong slegs toe in die geval van 'n sprong na die ENDBR-instruksie, wat heel aan die begin van die funksie geplaas word. Daarbenewens, in analogie met die kCFI-meganisme, word hashes dan nagegaan om die onveranderlikheid van wysers te waarborg.
    • Bygevoeg beperkings om aanvalle te blokkeer wat die generering van "oeps"-toestande manipuleer, waarna problematiese take voltooi word en die toestand herstel word sonder om die stelsel te stop. Met 'n baie groot aantal oproepe na die "oeps"-toestand, vind 'n verwysingtelleroorloop plaas (hertelling), wat die uitbuiting van kwesbaarhede moontlik maak wat veroorsaak word deur NULL-wyserverwysings. Om teen sulke aanvalle te beskerm, is 'n limiet by die kern gevoeg vir die maksimum aantal "oeps"-snellers, waarna die kern 'n oorgang na die "paniek"-toestand sal begin, gevolg deur 'n herlaai, wat nie die bereiking van die aantal iterasies wat nodig is om die hertelling te oorloop. By verstek is die limiet gestel op 10 duisend "oeps", maar as jy wil, kan dit verander word deur die oops_limit parameter.
    • Bygevoeg konfigurasie parameter LEGACY_TIOCSTI en sysctl legacy_tiocsti om die vermoë om data in die terminale te plaas met behulp van die ioctl TIOCSTI deaktiveer, aangesien hierdie funksionaliteit gebruik kan word om arbitrêre karakters in die terminale invoerbuffer te vervang en gebruikersinvoer te simuleer.
    • 'n Nuwe tipe interne struktuur, encoded_page, word voorgestel, waarin die onderste stukkies van die wyser gebruik word om bykomende inligting te stoor wat gebruik word om te beskerm teen toevallige dereference van die wyser (indien dereference eintlik nodig is, moet hierdie bykomende bisse eers uitgevee word) .
    • Op die ARM64-platform, tydens die selflaaistadium, is dit moontlik om die sagteware-implementering van die Shadow Stack-meganisme te aktiveer of te deaktiveer, wat gebruik word om te beskerm teen die oorskryf van die terugkeeradres van 'n funksie in die geval van 'n buffer-oorloop op die stapel ( die kern van die beskerming is om die terugstuuradres in 'n aparte "skadu"-stapel te stoor nadat beheer na die funksie oorgedra is en die gegewe adres herwin is voordat die funksie verlaat word). Ondersteuning vir hardeware- en sagteware-implementerings van Shadow Stack in een kernsamestelling laat jou toe om een ​​kern op verskillende ARM-stelsels te gebruik, ongeag hul ondersteuning vir instruksies vir wyserverifikasie. Die insluiting van 'n sagteware-implementering word uitgevoer deur die vervanging van die nodige instruksies in die kode tydens laai.
    • Bygevoeg ondersteuning vir die gebruik van die asynchroniese uitgangkennisgewingmeganisme op Intel-verwerkers, wat dit moontlik maak om enkelstap-aanvalle op kode wat in SGX-enklawes uitgevoer word, op te spoor.
    • 'n Stel bewerkings word voorgestel wat die hipervisor toelaat om versoeke van Intel TDX (Trusted Domain Extensions)-gasstelsels te ondersteun.
    • Die kernbouinstellings RANDOM_TRUST_BOOTLOADER en RANDOM_TRUST_CPU is verwyder, ten gunste van die ooreenstemmende opdragreëlopsies random.trust_bootloader en random.trust_cpu.
    • Die Landlock-meganisme, wat jou toelaat om die interaksie van 'n groep prosesse met die eksterne omgewing te beperk, het ondersteuning bygevoeg vir die LANDLOCK_ACCESS_FS_TRUNCATE-vlag, wat dit moontlik maak om die uitvoering van lêerafkappingsoperasies te beheer.
  • Netwerk substelsel
    • Vir IPv6 is ondersteuning vir PLB (Protective Load Balancing) bygevoeg, 'n lasbalanseringsmeganisme tussen netwerkskakels wat daarop gemik is om oorladingspunte op datasentrumskakelaars te verminder. Deur die IPv6-vloeietiket te verander, verander die PLB lukraak pakkiepaaie om las op skakelaarpoorte te balanseer. Om pakketherrangskikking te verminder, word hierdie bewerking uitgevoer na periodes van ledigheid, waar moontlik. Die gebruik van PLB in Google-datasentrums het laswanbalans op skakelpoorte met gemiddeld 60% verminder, pakkieverlies met 33% verminder en latensie met 20% verminder.
    • Bygevoeg drywer vir MediaTek-toestelle wat Wi-Fi 7 (802.11be) ondersteun.
    • Bygevoeg ondersteuning vir 800-gigabit skakels.
    • Bygevoeg die vermoë om netwerk koppelvlakke op die vlieg te hernoem, sonder om op te hou werk.
    • 'n Vermelding van die IP-adres waarheen die pakkie aangekom het, is by die logboodskappe oor SYN-vloed gevoeg.
    • Vir UDP is die vermoë om aparte hash-tabelle vir verskillende netwerknaamruimtes te gebruik, geïmplementeer.
    • Vir netwerkbrûe is ondersteuning vir die MAB (MAC Authentication Bypass) verifikasiemetode geïmplementeer.
    • Vir die CAN-protokol (CAN_RAW) is ondersteuning vir die SO_MARK-sokmodus geïmplementeer vir die aanheg van fwmark-gebaseerde verkeersfilters.
    • ipset implementeer 'n nuwe bitmask parameter wat jou toelaat om 'n masker te stel gebaseer op arbitrêre bisse in die IP-adres (byvoorbeeld, "ipset create set1 hash:ip bitmask 255.128.255.0").
    • Bygevoeg ondersteuning vir die verwerking van interne opskrifte binne tonnel pakkies na nf_tables.
  • Оборудование
    • Die "versnelling"-substelsel is bygevoeg met die implementering van 'n raamwerk vir rekenaarversnellers, wat óf in die vorm van individuele ASIC's óf in die vorm van IP-blokke binne die SoC en GPU verskaf kan word. Hierdie versnellers is hoofsaaklik daarop gemik om die oplossing van masjienleerprobleme te versnel.
    • Die amdgpu-bestuurder sluit ondersteuning vir die GC-, PSP-, SMU- en NBIO IP-komponente in. Vir ARM64-stelsels word ondersteuning vir DCN (Display Core Next) geïmplementeer. Die implementering van beskermde skermuitset is geskuif van die gebruik van DCN10 na DCN21 en kan nou gebruik word wanneer verskeie skerms verbind word.
    • Die i915 (Intel) bestuurder het gestabiliseerde ondersteuning vir diskrete Intel Arc (DG2/Alchemist) videokaarte.
    • Die Nouveau-bestuurder ondersteun NVIDIA GA102 (RTX 30) GPU's gebaseer op die Ampere-argitektuur. Vir nva3 (GT215)-kaarte is die vermoë om die agtergrondlig te beheer bygevoeg.
    • Bygevoeg ondersteuning vir draadlose adapters gebaseer op Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) en MediaTek MT7996-skyfies, Broadcom BCM4377/4378/4387 Bluetooth-koppelvlakke, sowel as Motorcomm NVIDIA-kontroleerder Tegra8521 GEXNUMX en Ethernet YtXNUMX.
    • Bygevoeg ASoC (ALSA System on Chip) ondersteuning vir ingeboude klankskyfies HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588. Bygevoeg ondersteuning vir Focusrite Saffire Pro 40 oudio-koppelvlak. Bygevoeg Realtek RT1318 oudio-kodek.
    • Bygevoeg ondersteuning vir Sony-slimfone en -tablette (Xperia 10 IV, 5 IV, X en X compact, OnePlus One, 3, 3T en Nord N100, Xiaomi Poco F1 en Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1.
    • Bygevoeg ondersteuning vir ARM SoC en Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), (Snapdragon 6375), 695 planke , SDM670 (Snapdragon 670), MSM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), RK3326 Odroid-Go/rg351, Zyxel NSA310S, InnoComm i.MX8MM, Odroid Go Ultra.

Terselfdertyd het die Latyns-Amerikaanse Vrye Sagteware-stigting 'n weergawe gevorm van die heeltemal gratis kern 6.2 - Linux-libre 6.2-gnu, skoongemaak van elemente van firmware en drywers wat eie komponente of dele van kode bevat, waarvan die omvang beperk word deur die vervaardiger. Die nuwe vrystelling maak nuwe blobs skoon in die nouveau-bestuurder. Blob-laai is gedeaktiveer in mt7622, ​​​​mt7996 wifi en bcm4377 bluetooth-bestuurders. Blob-name in dts-lêers vir die Aarch64-argitektuur skoongemaak. Opgedateerde blob-skoonmaakkode in verskeie drywers en substelsels. Het opgehou om die s5k4ecgx-bestuurder skoon te maak, aangesien dit uit die kern verwyder is.

Bron: opennet.ru

Voeg 'n opmerking