Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds releasen av Linux-kÀrnan 6.3. Bland de mest anmÀrkningsvÀrda förÀndringarna finns: rengöring av förÄldrade ARM-plattformar och grafiska drivrutiner, fortsatt integration av stöd för programmet Rust, verktyget hwnoise, stöd för trÀstruktur av röd-svart i BPF, BIG TCP-lÀge för IPv4, en inbyggd prestandatest Dhrystone, möjlighet att förbjuda exekvering i memfd, stöd för att skapa HID-drivrutiner med BPF, samt förÀndringar i Btrfs för att minska fragmenteringen av blockgrupper.
I den nya versionen har 15637 korrigeringar godkÀnts av 2055 utvecklare; patchens storlek Àr 76 MB (Àndringarna berör 14296 filer, 1023183 rader kod har lagts till, 883103 rader har tagits bort). För jÀmförelse föreslogs i den förra versionen 16843 korrigeringar av 2178 utvecklare; patchens storlek var 62 MB. UngefÀr 39 % av alla förÀndringar i kÀrnan 6.3 Àr kopplade till enhetsdrivrutiner, cirka 15 % av förÀndringarna rör uppdatering av kod som Àr specifik för hÄrdvaruarkitekturer, 10 % Àr relaterade till nÀtverksstacken, 5 % till filsystem och 3 % till interna kÀrnsystem.
De viktigaste nyheterna i kÀrnan 6.3:
- Minne och systemtjÀnster
- En betydande stĂ€dning av koden relaterad till gamla och oanvĂ€nda ARM-plattformar har genomförts, vilket har minskat storleken pĂ„ kĂ€rnans kĂ€llkod med 150 000 rader. Ăver 40 gamla ARM-plattformar har tagits bort.
- Det har skapats en möjlighet att utveckla drivrutiner för enheter med HID (Human Interface Device) grÀnssnitt, implementerade som BPF-program.
- Ăverföringen frĂ„n grenen Rust-for-Linux av ytterligare funktionalitet relaterad till anvĂ€ndningen av Rust som det andra sprĂ„ket för utveckling av drivrutiner och kĂ€rnmoduler har fortsatt. Stödet för Rust Ă€r inte aktivt som standard och leder inte till att Rust inkluderas bland de obligatoriska byggberoenden för kĂ€rnan. Funktionaliteten som föreslogs i tidigare utslĂ€pp har utvidgats med stöd för typer som Arc (implementering av referensrĂ€knade pekare), ScopeGuard (stĂ€dar vid uttrĂ€de frĂ„n omfattningen) och ForeignOwnable (möjliggör flyttning av pekare mellan C och Rust-kod). Modulen 'borrow' (typ 'Cow' och typ 'ToOwned') har tagits bort frĂ„n paketet 'alloc'. Det noteras att stödet för Rust i kĂ€rnan redan Ă€r nĂ€ra att börja acceptera de första modulerna skrivna i Rust.
- I User-mode Linux (att köra kÀrnan som en anvÀndarprocess) pÄ x86-64-system har stödet för kod skriven i Rust implementerats. Stöd för att bygga User-mode Linux med clang har lagts till med aktiverad optimering under lÀnkningen (LTO).
- Verktyget hwnoise har lagts till för att spÄra fördröjningar orsakade av mjukvarans egenskaper. Tidsavvikelser (jitter) för operationernas utförande bestÀms nÀr avbrottshanteringen Àr avstÀngd, vilket överskrider en mikrosekund under 10 minuter av berÀkningar.
- En kÀrnmodul med implementering av prestandatestet Dhrystone har lagts till, vilket kan anvÀndas för att bedöma CPU-prestanda i konfigurationer utan anvÀndarutrymmeskomponenter (till exempel under porteringsfasen för nya SoC dÀr endast kÀrnladdningen implementeras).
- En kÀrnkommandoradsparameter "cgroup.memory=nobpf" har lagts till, som stÀnger av övervakningen av minnesanvÀndning för BPF-program, vilket kan vara anvÀndbart för system med isolerade containrar.
- För BPF-program föreslÄs en implementering av datakonstruktionen red-black tree, dÀr kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) anvÀnds istÀllet för att införa en ny typ av mappning.
- I mekanismen för omstartbara sekvenser (rseq, restartable sequences) har möjlighet till överföring av processidentiteter för parallell exekvering (memory-map concurrency ID) lagts till, vilket identifieras med CPU-numret. Rseq tillhandahÄller verktyg för snabb atomÀr exekvering av operationer, som vid avbrott frÄn en annan trÄd rensas och ett nytt försök görs.
- Stöd för SME 2-instruktioner (Scalable Matrix Extension) har implementerats för ARM-processorer.
- För s390x- och RISC-V RV64-arkitekturer har stödet för mekanismen "BPF trampoline" implementerats, vilket minimerar overhead vid överföring av anrop mellan kÀrnan och BPF-program.
- För system med RISC-V-processorarkitektur har anvÀndningen av "ZBB"-instruktioner implementerats för att pÄskynda strÀngoperationer.
- För system baserade pÄ kommandosetsarkitekturen LoongArch (anvÀnds i Loongson 3 5000-processorer och implementerar en ny RISC ISA som liknar MIPS och RISC-V) har stöd för kÀrnans addressrandomisering (KASLR), förÀndring av kÀrnplacering i minnet (relocation), hÄrdvaruavbrott och kprobe-mekanism implementerats.
- I mekanismen DAMOS (Data Access Monitoring-based Operation Schemes), som möjliggör frigöring av minne baserat pÄ hur ofta minnet anvÀnds, har stöd för filter implementerats för att utesluta vissa omrÄden av minnet frÄn bearbetning i DAMOS.
- I det minimala standard C-biblioteket Nolibc har stöd för s390-arkitekturen och Arm Thumb1-instruktionsuppsÀttningen implementerats (förutom stöd för ARM, AArch64, i386, x86_64, RISC-V och MIPS).
- Objtool har optimerats för att öka hastigheten vid kÀrnbygget och minska den toppiga minnesanvÀndningen vid bygget (nÀr kÀrnan byggs med lÀget 'allyesconfig' uppstÄr nu inga problem med att processer tvingas avslutas pÄ system med 32 GB RAM).
- Stödet för byggnation av kÀrnan med Intels ICC-kompilator har upphört, vilket har varit inaktivt under en lÀngre tid och ingen har visat intresse för att ÄtgÀrda det.
- Disksubsystem, in- och utmatning och filsystem
- I tmpfs har stöd för mappning av anvÀndar-ID:n för monterade filsystem implementerats, vilket tillÀmpas för att matcha filer frÄn en viss anvÀndare pÄ ett monterat frÀmmande partition med en annan anvÀndare i det aktuella systemet.
- I Btrfs har gruppering av block minskats genom att dela upp extenter efter storlek vid blockallokering, dvs. varje blockgrupp begrÀnsas nu till smÄ (upp till 128KB), medelstora (upp till 8 MB) och stora extenter. Omstrukturering av implementationen av raid56 har genomförts. Koden för kontroll av kontrollsummor har omarbetats. Prestandaoptimeringar har genomförts, vilket möjliggjort en upp till 10 gÄnger snabbare 'send'-operation genom att cacha utdata för kataloger och utföra kommandon endast vid behov. Utförandet av 'fiemap'-operationer har tredubblats tack vare att kontroller av bakÄtreferenser för delade data (snaps) har utelÀmnats. Metadataoperationer har ökat i hastighet med 10% genom optimering av nyckelsökningar i b-tree-strukturer.
- Prestandan för filsystemet ext4 har ökat tack vare möjligheten till samtidig utförande av direkta in-/utdataoperationer av flera processer i förutbestÀmda block, genom att anvÀnda delade inode-lÄs istÀllet för exklusiva lÄs.
- I f2fs har arbete genomförts för att förbÀttra kodens lÀsbarhet. Viktiga problem relaterade till atomÀr skrivning och den nya extent-cachen har ÄtgÀrdats.
- I filsystemet EROFS (Enhanced Read-Only File System), avsett för anvÀndning i partitioner som Àr tillgÀngliga i lÀslÀge, implementerades möjligheten att binda CPU:n till avkomprimeringsoperationer av komprimerat innehÄll i filer för att minska latensen vid datatillgÄng.
- SchemalÀggaren BFQ för in- och utdata har fÄtt stöd för avancerade lagringsenheter pÄ roterande skivor, sÄsom de som anvÀnder flera separat styrda huvuddrivningar (Multi Actuator).
- Stödet för NFS klientimplementeringen och servern har lagts till för kryptering av data med hjÀlp av AES-SHA2-algoritmen.
- FUSE (Filesystems In User Space) subsystems har fÄtt stöd för en begÀransextensionsmekanism som gör det möjligt att inkludera ytterligare information i begÀran. Denna funktionalitet har möjliggjort tillÀgg av gruppidentifierare till FS-begÀran, vilket Àr nödvÀndigt för att ta hÀnsyn till ÄtkomstrÀttigheter vid skapandet av objekt i FS (create, mkdir, symlink, mknod).
- Virtualisering och sÀkerhet
- I KVM-hypervisorn för x86-system har stöd för avancerade hypercalls av Hyper-V lagts till och dirigeras till en hanterare som körs i vĂ€rdmiljö inom anvĂ€ndarrummet. Ăndringen har möjliggjort stöd för inbĂ€ddad körning av Hyper-V-hypervisorn.
- I KVM har begrÀnsningen av gÀstsystemets Ätkomst till PMU (Performance Monitor Unit)-hÀndelser, kopplade till prestandamÀtning, förenklats.
- I memfd-mekanismen, som gör det möjligt att identifiera minnesomrÄden via en filbeskrivare som överförs mellan processer, har möjligheten att skapa omrÄden dÀr kodexekvering Àr förbjuden (non-executable memfd) och dÀr exekveringsrÀttigheter Àr omöjliga att stÀlla in i framtiden, lagts till.
- En ny prctl-operation PR_SET_MDWE har lagts till som blockerar försök att aktivera minnesbehörigheter som samtidigt tillÄter skrivning och exekvering.
- Skydd mot Spectre-liknande attacker har lagts till och aktiverats som standard, implementerat baserat pÄ den automatiska IBRS-lÀget (Enhanced Indirect Branch Restricted Speculation), föreslaget i AMD:s Zen 4-processorer, vilket möjliggör adaptiv tillÄtelse och avslag av spekulativ exekvering av instruktioner under hantering av avbrott, systemanrop och kontextvÀxlingar. Det föreslagna skyddet medför lÀgre overhead jÀmfört med Retpoline-skydd.
- SÀkerhetsbristen som tillÄter att skyddet mot Spectre v2-attacker kringgÄs vid anvÀndning av samtidiga flertrÄdad teknik (SMT eller Hyper-Threading) har ÄtgÀrdats, vilket beror pÄ avstÀngningen av mekanismen STIBP (Single Thread Indirect Branch Predictors) nÀr skyddslÀget IBRS vÀljs.
- För system baserade pÄ ARM64-arkitekturen har ett nytt byggmÄl 'virtconfig' lagts till, vilket aktiverar endast den minimi uppsÀttning kÀrnkomponenter som krÀvs för att starta i virtualiseringssystem.
- Stöd för filtrering av systemanrop med hjÀlp av seccomp-mekanismen har lagts till för m68k-arkitekturen.
- Stöd för inbyggda CRB TPM2-enheter (Command Response Buffer) i AMD Ryzen-processorer, baserade pÄ Microsoft Pluton-teknologi, har lagts till.
- NĂ€tverkssystemet
- Ett netlink-grÀnssnitt för konfiguration av undernivÄn för kollisionsförebyggande PLCA (Physical Layer Collision Avoidance) har lagts till, som definieras i specifikationen IEEE 802.3cg-2019 och anvÀnds i Ethernet-nÀt 802.3cg (10Base-T1S), optimerade för anslutning av IoT-enheter och industriella system. TillÀmpningen av PLCA gör det möjligt att öka prestandan i Ethernet-nÀt med delad media.
- Stödet för API:et 'wireless extensions' för hantering av WiFi 7 (802.11be) trÄdlösa grÀnssnitt har upphört, eftersom detta API inte tÀcker alla nödvÀndiga instÀllningar. Vid försök att anvÀnda API:et 'wireless extensions', som fortfarande stöds som ett emulerat lager, kommer en varning nu att visas för de flesta aktuella enheter.
- Detaljerad dokumentation för netlink-API:et har förberetts (för kÀrnutvecklare och utvecklare av anvÀndarapplikationer). Ett verktyg, ynl-gen-c, har implementerats för att generera C-kod baserat pÄ YAML-specifikationer för netlink-protokollet.
- I nÀtverksockets har stöd för IP_LOCAL_PORT_RANGE-alternativet lagts till för att förenkla konfigurationen av utgÄende anslutningar via adressöversÀttare utan att anvÀnda SNAT. Vid anvÀndning av flera IP-adresser IP_LOCAL_PORT_RANGE ger möjlighet att anvÀnda sin egen uppsÀttning av utgÄende nÀtverksportar pÄ varje vÀrd, medan paket kan omdirigeras pÄ gatewayen baserat pÄ portnummer.
- För MPTCP (MultiPath TCP) har möjligheten att hantera blandade strömmar, dÀr protokollen IPv4 och IPv6 anvÀnds, införts. MPTCP Àr en utvidgning av TCP-protokollet för att organisera arbetet med TCP-anslutningar dÀr paket levereras samtidigt över flera vÀgar genom olika nÀtverksgrÀnssnitt kopplade till olika IP-adresser.
- För IPv4 har möjligheten att anvÀnda BIG TCP-utvidgningen införts, vilket gör det möjligt att öka den maximala storleken pÄ TCP-paket till 4 GB för att optimera arbetet i höghastighets interna nÀtverk i datacenter. SÄdan ökning av paketstorleken vid 16-bitars storlek i rubriken uppnÄs genom implementering av "jumbo"-paket, vars storlek i IP-rubriken sÀtts till 0, medan den faktiska storleken överförs i ett separat 32-bitarsfÀlt i en separat bifogad rubrik.
- En ny sysctl-parameter default_rps_mask har lagts till, genom vilken den anvÀnda standardkonfigurationen för RPS (Receive Packet Steering) kan anges, ansvarig för att fördela behandlingen av inkommande trafik över CPU-kÀrnor pÄ avbrottshanterarnivÄ.
- Stödet för köhanteringsdiscipliner för trafikbegrÀnsning, som CBQ (class-based queuing), ATM (ATM virtual circuits), dsmark (differentiated service marker), tcindex (traffic-control index) och RSVP (resource reservation protocol), har upphört. Dessa discipliner har lÀnge varit övergivna och det har inte funnits nÄgra intressenter att fortsÀtta underhÄllet.
- Utrustning
- Alla grafiska drivrutiner baserade pÄ DRI1 har tagits bort: i810 (gamla integrerade grafikkort Intel 8xx), mga (Matrox GPU), r128 (ATI Rage 128 GPU, inklusive kort som Rage Fury, XPERT 99 och XPERT 128), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) och via (VIA IGP), som aviserades som förÄldrade 2016 och som inte har stödts i Mesa sedan 2012.
- FörÄldrade framebuffer-drivrutiner (fbdev) omap1, s3c2410, tmiofb och w100fb har tagits bort.
- DRM-drivrutinen för integrerade VPU-enheter (Versatile Processing Unit) i Intel Meteor Lake (14:e generationen) har lagts till, avsedd för att pÄskynda operationer relaterade till datorseende och maskininlÀrning. Drivrutinen har implementerats med hjÀlp av "accel"-systemet, som Àr inriktat pÄ att sÀkerstÀlla stöd för accelererade berÀkningar som kan tillhandahÄllas antingen som separata ASIC eller som IP-block inuti SoC och GPU.
- Stödet för diskreta grafikkort Intel Arc (DG2/Alchemist) har utökats i drivrutinen i915 (Intel), preliminÀrt stöd för GPU Meteor Lake har implementerats, och stöd för GPU Intel Xe HP 4tile har lagts till.
- I drivrutinen amdgpu har stöd för AdaptiveSync-teknologi lagts till samt möjligheten att anvÀnda flera skÀrmar i lÀget för skydd mot avlyssning av visad information (Secure Display). Stödet för DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x och DP 2.1 har ocksÄ uppdaterats.
- I drivrutinen msm (GPU Qualcomm Adreno) har stöd för plattformarna SM8350, SM8450, SM8550, SDM845 och SC8280XP lagts till.
- I drivrutinen Nouveau har stöd för gamla ioctl-anrop avbrutits.
- I drivrutinen etnaviv har experimentellt stöd för NPU VerSilicon (VeriSilicon Neural Network Processor) lagts till.
- En drivrutin pata_parport för IDE-enheter anslutna via parallellport har implementerats. Den tillagda drivrutinen har gjort det möjligt att ta bort den gamla drivrutinen PARIDE frÄn kÀrnan och modernisera ATA-underkonstruktionen. En begrÀnsning för den nya drivrutinen Àr att det inte gÄr att ansluta bÄde en skrivare och en disk samtidigt via parallellport.
- Drivrutinen ath12k för trÄdlösa kort med Qualcomm-chips som stödjer Wi-Fi 7 har lagts till. Stöd har Àven tillförts för trÄdlösa kort med RealTek RTL8188EU-chips.
- Stöd för 46 plattformer med ARM64-baserade processorer har lagts till, bland dessa Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD samt enheter baserade pÄ SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 och SDM632, Rockchips RK3128 TV-box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 och RK3328, TI K3 (AM642/AM654/AM68/AM69).
Samtidigt har den latinamerikanska Stiftelsen för fri programvara sammanstĂ€llt en helt fri kĂ€rnversion 6.3 â Linux-libre 6.3-gnu, rensad frĂ„n element i firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndningsomrĂ„de begrĂ€nsas av tillverkaren. I version 6.3 har rensningen av blobbar i de nya drivrutinerna ath12k, aw88395 och peb2466 genomförts, liksom i de nya devicetree-filerna för qcom-enheter baserade pĂ„ AArch64-arkitekturen. Koden för blobbrensning i drivrutiner och underkonstruktioner som amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 samt drivrutiner för DVB-kort med mjukvaruavkodning och i förkompilerade BPF-filer har uppdaterats. Rensningen av drivrutinerna mga, r128, tm6000, cpia2 och r8188eu har avbrutits eftersom de har tagits bort frĂ„n kĂ€rnan. Rensningen för blobbar i drivrutinen i915 har förbĂ€ttrats.
KĂ€lla: opennet.ru
