Utgivning av Linux-kÀrnan 6.8

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds versionen av Linux-kÀrnan 6.8. Bland de mest framtrÀdande förÀndringarna finns: Xe-drivrutinen för Intels GPU, skyddslÀge för blockenheter med monterade filsystem, Deadline server schemalÀggar mekanism, automatisk optimering av sammanslagning av identiska minnessidor, den första drivrutinen pÄ Rust-sprÄket, systemanropen listmount och statmount, borttagning av bpfilter och SLAB, guest_memfd mekanism i KVM, och profilering av datatillgÄng.

I den nya versionen har 15 641 korrigeringar gjorts av 2018 utvecklare, patchens storlek Àr 44 MB (Àndringarna berörde 12 212 filer, 663 864 kodrader har lagts till, 339 094 rader har tagits bort). I den föregÄende utgÄvan fanns 18 405 korrigeringar frÄn 2 066 utvecklare, patchens storlek var 72 MB. Cirka 42 % av alla förÀndringar i 6.8 Àr relaterade till enhetsdrivrutiner, cirka 15 % förÀndringar handlar om uppdatering av kod som Àr specifik för hÄrdvaruarkitekturer, 14 % Àr kopplade till nÀtverksstacken, 6 % till filsystem och 3 % till interna subsystem i kÀrnan.

I Git-repositoriet för kÀrna 6.8 finns det 9,996 miljoner objekt, vilket indikerar att den kommande kÀrnan 6.9 kommer att nÄ den symboliska grÀnsen pÄ 10 miljoner git-objekt. Tidigare har byten av grenenumren 3.x och 4.x korrelerat vÀl med antalet git-objekt i repositoriet - kÀrnan 3.0 slÀpptes nÀr repositoriet hade cirka 2 miljoner objekt, och kÀrnan 4.0 - 4 miljoner objekt. Vidare bröts logiken i 2019 nÀr version 5.0 slÀpptes, eftersom repositoriet dÄ innehöll cirka 6,5 miljoner git-objekt.

Huvudsakliga nyheter i kÀrnan 6.8:

  • Disksubsystem, in- och utmatning och filsystem
    • LĂ€get för blockering av direkt skrivning till blockenheter med monterade filsystem har lagts till (efter aktivering av lĂ€get kan inte anvĂ€ndaren root göra Ă€ndringar i filsystemet via manipulationer pĂ„ nivĂ„ av blockenheten). Som standard Ă€r lĂ€get avstĂ€ngt och krĂ€ver att parametern BLK_DEV_WRITE_MOUNTED anges vid kompilering. För partitioner med Btrfs fungerar blockeringen för nĂ€rvarande inte, eftersom de nödvĂ€ndiga Ă€ndringarna Ă€nnu inte har antagits i Btrfs-koden.
    • Systemanropen listmount() och statmount() har lagts till, vilket möjliggör för anvĂ€ndarrummet att fĂ„ detaljerad information om monterade filsystem.
    • I XFS-filsystemet har arbetet fortsatt med implementeringen av möjligheten att anvĂ€nda verktyget fsck för att kontrollera och Ă„tgĂ€rda identifierade problem i online-lĂ€ge, utan att demontera filsystemet.
    • I Ext4 för block som Ă€r mindre Ă€n minnessidan anvĂ€nds anropet dioread_nolock, vilket möjliggör bĂ€ttre prestanda genom att bli av med onödiga lĂ„sningar. Vissa funktioner har översatts för att anvĂ€nda minnessidans folios.
    • I Btrfs har stöd för monteringsflaggan "nospace_cache" lagts till för att inaktivera cachen för lediga block. Vissa funktioner har översatts för att anvĂ€nda minnessidans folios.
    • I filsystemet EROFS (Extendable Read-Only File System), avsett för anvĂ€ndning pĂ„ partitioner som endast Ă€r tillgĂ€ngliga i skrivskyddat lĂ€ge, har stöd för komprimerade sub-sidor lagts till och prestandan har förbĂ€ttrats i minnesbristsituationer.
    • I filsystemet F2FS har stödet för zonade lagringsenheter förbĂ€ttrats (uppdelning i grupper av block eller sektorer dĂ€r endast sekventiell tillĂ€gg av data Ă€r tillĂ„ten med en fullstĂ€ndig uppdatering av hela blockgruppen).
    • För SMB-filsystemet har möjligheten att skapa block- och symboliska enhetsfiler realiserats.
    • I Bcachefs har delvis stöd för kontroll och Ă„terstĂ€llande av integriteten hos monterade filsystem lagts till.
    • I device-mapper-subsystemet har stöd för handhavande MD_LINEAR, MD_MULTIPATH och MD_FAULTY upphört, dessa förklarades obsoleta 2021.
  • Minne och systemtjĂ€nster
    • I Zswap-subsystemet har en funktion lagts till som aktiveras vid brist pĂ„ RAM, vilket tvingar ut "kalla" sidor frĂ„n minnet till en riktig vĂ€xlingspartition, sidor som inte har begĂ€rts och som troligtvis inte kommer att anvĂ€ndas. Zswap cachelagrar sidor som förvisas till vĂ€xlingspartitionen och lagrar dem i RAM i komprimerad form sĂ„ mycket som möjligt utan att slĂ€ppa dem till den verkliga, okomprimerade vĂ€xlingspartitionen pĂ„ disken. Ändringarna vid minnesbrist gör det möjligt att minska storleken pĂ„ den lagrade Zswap-poolen i RAM och frigöra minne för systemet.
    • I Zswap har ett nytt lĂ€ge föreslagits som helt inaktiverar fördröjd skrivning (writeback) till den verkliga vĂ€xlingspartitionen om skrivningsförsöket misslyckas och inte slĂ€pper sidor som redan finns i Zswap-poolen till vĂ€xlingspartitionen.
    • I schemalĂ€ggaren har en mekanism för SCHED_DEADLINE-servern lagts till, som löser problemet med att CPU-resurser inte tilldelas vanliga uppgifter nĂ€r CPU:n domineras av högprioriterade (realtids) uppgifter. För att förhindra CPU-monopol i kĂ€rnan anvĂ€ndes tidigare mekanismen Realtime throttling, som försökte reservera 5% för lĂ„gt prioriterade uppgifter och lĂ€mnade 95% av tiden till realtidsuppgifter. Denna mekanism var inte tillfredsstĂ€llande eftersom vanliga uppgifter i mĂ„nga situationer inte fick tillrĂ€ckligt med processortid. SCHED_DEADLINE-servern implementerar en mer effektiv resursreservationsmekanism.
    • I DAMON (Data Access MONitor) subsystemet, som möjliggör övervakning av processens Ă„tkomst till data i RAM-minnet (till exempel kan man se vilka minnesomrĂ„den som processen har Ă„tkomst till och vilka omrĂ„den som förblivit oanvĂ€nda), har en mekanism för automatisk justering av minneskonsumtionsaggressivitet lagts till baserat pĂ„ angivna kvoter.
    • Stödet för mĂ„ngstorleks stora minnessidor (mTHP — multi-size Transparent Huge Pages) har lagts till, vilket möjliggör allokering av minne i block som Ă€r större Ă€n grundlĂ€ggande sidor men mindre Ă€n traditionella THP-sidor.
    • Stödet för stora folios (page folios, sammanslagna minnessidor) för anonymt minne (icke-kopplad till filsystemet, till exempel allokerat via malloc) har lagts till. Ändringen syftar till att öka prestanda genom att allokera stora bitar minne nĂ€r man hanterar oanvĂ€nda minnessidor (page faults). AnvĂ€ndningen av stora folios har till exempel möjliggjort en 5% minskning av tiden för att Ă„terkompilera kĂ€rnan (med en minskning av tiden vid kĂ€rnnivĂ„ pĂ„ 40%).
    • I kĂ€rnkonfigurationsfilen har parametern TRANSPARENT_HUGEPAGE_NEVER lagts till, vilket ger möjlighet att inaktivera anvĂ€ndningen av stora minnessidor (Transparent Huge Pages).
    • I systemanropet userfaultfd(), som möjliggör skapande av hanterare för oanvĂ€nda minnessidor (page faults) i anvĂ€ndarutrymmet, har operationen UFFDIO_MOVE lagts till, vilket tillĂ„ter flyttning av minnessidor i det virtuella adressutrymmet utan att utföra operationen för minnesallokering. I genomförda tester möjliggjorde tillĂ€mpningen av UFFDIO_MOVE en 40% minskning av tiden för minnespackning jĂ€mfört med anvĂ€ndningen av operationen UFFDIO_COPY.
    • En mekanism för "KSM advisor" har lagts till, vilket gör det möjligt att automatiskt optimera parametrarna för delsystemet för sammanslagning av identiska minnessidor (KSM - Kernel Samepage Merging).
    • Överföringen av Ă€ndringar frĂ„n Rust-for-Linux-grenen har fortsatt, som rör anvĂ€ndningen av sprĂ„k som det andra sprĂ„ket för utveckling av drivrutiner och kĂ€rnmoduler (stödet för Rust Ă€r inaktiverat som standard och inkluderar inte Rust bland de obligatoriska byggberoenden för kĂ€rnan). I den nya versionen har Ă€ndringar inkluderats som lĂ€gger till en Rust-bindning ovanför abstraheringsnivĂ„n phylib och anvĂ€nder denna bindning drivrutinen ax88796b_rust, som ger stöd för PHY-grĂ€nssnittet för Ethernet-kontrollenheten Asix AX88772A (100MBit). NĂ€r det gĂ€ller funktionalitet Ă€r Rust-drivrutinen helt ekvivalent med den gamla drivrutinen ax88796b, skriven i C, och kan anvĂ€ndas med nĂ€tverkskort frĂ„n X-Surf 100, som har AX88796B-chippet. För LoongArch-arkitekturen har möjligheten att skriva moduler med Rust lagts till. ÖvergĂ„ngen till att anvĂ€nda Rust-version 1.74.1 har genomförts.
    • En BPF-tokenmekanism har lagts till, vilket möjliggör selektiv delegering av hanteringen av specifika BPF-funktioner, sĂ„som laddning av BPF-program eller skapande av BPF-kartor, till icke-privilegierade processer i anvĂ€ndarrummet vars legitimitet bekrĂ€ftas av en speciell token.
    • Funktionaliteten hos verifieraren av BPF-program har utökats.
    • Perf-verktyget har fĂ„tt stöd för dataprofilering, vilket möjliggör spĂ„rning av lĂ€sning och skrivning i datastrukturer, exempelvis för att identifiera de mest aktivt modifierade fĂ€lten i strukturer. PĂ„ system med processorer som stöder insamling av information om minnesoperationer (Intel, AMD, ARM), bör kommandot "perf mem record" anvĂ€ndas för att samla statistiken, och för att generera en rapport om datakonstruktioner - "perf annotate --data-type".
    • Prestandaoptimering av systemanrop pĂ„ s390-arkitekturen (IBM Z) har genomförts, vilket resulterade i en ökning av hastigheten för systemanrop pĂ„ cirka 11% i tester.
    • Möjlighet att Ă€ndra storleken pĂ„ spĂ„rningsbuffertarna, som anvĂ€nds för att buffra information om spĂ„rningsevent som skickas till anvĂ€ndarrummet, har tillhandahĂ„llits.
    • Den tidigare förĂ„ldrade SLAB-minnesallokeringsmekanismen har tagits bort, och istĂ€llet anvĂ€nds nu endast SLUB i kĂ€rnan. Orsaken till detta anges vara underhĂ„llsproblem, kodproblem och duplicering av funktionalitet med den mer avancerade SLUB-allokatorn.
    • Vid kompilering av kĂ€rnan aktiverades flaggan "-Wmissing-prototypes", som genererar varningar för anrop av globala funktioner utan prototyndefinition.
    • För RISC-V-arkitekturen har stöd för övergĂ„ng till vilolĂ€ge med tillstĂ„ndssparande i RAM implementerats pĂ„ system med stöd för SUSP SBI-tillĂ€gget. Ett systemanrop, riscv_hwprobe(), har tillhandahĂ„llits för att hĂ€mta information om de stödda tillĂ€ggen i RISC-V-kommandosatsen.
  • Virtualisering och sĂ€kerhet
    • Nya systemanrop lsm_list_modules(), lsm_get_self_attr() och lsm_set_self_attr() har lagts till för att hĂ€mta en lista över laddade LSM-moduler (Linux Security Modules) och för att fĂ„/setta egenskaper hos LSM-modulen. En ny struktur lsm_ctx har lagts till för kommunikation i LSM-kontakt mellan anvĂ€ndarrum och kĂ€rna.
    • AppArmor-subsystemet har övergĂ„tt till att anvĂ€nda SHA-256-algoritmen för reglerverifiering istĂ€llet för SHA-1-hashar.
    • Implementation av funktionen strlcpy() har tagits bort frĂ„n kĂ€rnan, vilken inkluderades i C-biblioteket Glibc 3.38 i somras. Strlcpy Ă€r ett alternativ till funktionen strncpy(), som erbjuder skydd mot buffertöverskridning och alltid inkluderar en avslutande nollbyte.
    • I hypervisorn KVM har stöd för gĂ€stminneshanteringssystemet guest_memfd (guest-first memory) lagts till, vilket tillhandahĂ„ller minneshanteringsfunktioner som gör det möjligt att implementera funktioner och optimeringar som inte kan uppnĂ„s med den gemensamma minneshanteringssubsystemet. Till exempel gör guest_memfd det möjligt att allokera och spegla ett minnesomrĂ„de pĂ„ gĂ€stsystemet som inte Ă€r tillgĂ€ngligt för vĂ€rdmiljön, vilket kan anvĂ€ndas för att organisera konfidentiella berĂ€kningar.
    • För gĂ€stsystem som körs under KVM-hypervisorn har stöd för den Intel-baserade LAM (Linear Address Masking)-modeet lagts till. Detta gör det möjligt att anvĂ€nda en del av bitarna i 64-bitarspekter (frĂ„n 57 till 62) för att lagra metadata som inte Ă€r relaterat till adressering.
    • I hypervisor KVM för system baserade pĂ„ ARM64-arkitektur har stöd för 52-bitars (LPA2) fysiska adresser lagts till. För system med x86-arkitektur erbjuds möjligheten att bygga utan emulering av Hyper-V-hyperanrop, vilket minskar storleken pĂ„ kĂ€rnan.
    • En drivrutin för iaa (IAA Compression Accelerator) har lagts till för att snabba upp komprimerings- och dekomprimeringsoperationer med DEFLATE-metoden, och anvĂ€nder kapaciteterna hos Intels kryptografiska acceleratorer Intel Analytics Accelerator (IAA).
    • PĂ„ vĂ€rd-miljösidan har stöd för Intel TDX (Trusted Domain Extensions) implementerats, vilket gör det möjligt att skapa skyddade gĂ€stmiljöer med KVM-hypervisorn, dĂ€r minneskryptering anvĂ€nds. virtuella maskiner.
    • I SELinux har SID-identifieraren "init" lagts till, vilket gör det möjligt att isolera processer som startas under initialiseringssteget före tillĂ€mpningen av SELinux-regler. GrĂ€nssnittet \/sys\/fs\/selinux för att hantera SELinux har förbĂ€ttrats.
  • NĂ€tverkssystemet
    • En lĂ„gnivĂ„omorganisering av grundlĂ€ggande nĂ€tverksdatastrukturer har genomförts för att öka effektiviteten av cachehantering. Tidigare var fĂ€lten i nĂ€tverksstackens strukturer som socks, netdev, netns och mibs placerade i tur och ordning, vilket begrĂ€nsade anvĂ€ndningen av processor-cache. Översynen av variablernas placering i strukturerna ledde till en mĂ€rkbar ökning av TCP-prestanda genom att minimera cache-strĂ€ngens anvĂ€ndning under datatransfereringen och optimera Ă„tkomsten till variabler. Vid hantering av mĂ„nga parallella TCP-anslutningar kan hastighetsökningen nĂ„ upp till 40%.
    • Bpsubsystemet för bpfilter, som anvĂ€nde BPF för paketfiltrering, har tagits bort. Bpfilter introducerades med version 4.18, men nĂ„dde aldrig en anvĂ€ndbar nivĂ„ för bred anvĂ€ndning. Under de senaste Ă„ren har koden för bpfilter i kĂ€rnan inte utvecklats, medan utvecklingen fortsatte av Facebook i ett separat repository.
  • Utrustning
    • Den nya drm-drivrutinen (Direct Rendering Manager) Xe för GPU baserad pĂ„ Intels Xe-arkitektur har inkluderats, och anvĂ€nds i Intel Arc grafikkort samt i integrerad grafik frĂ„n och med Tiger Lake-processorer. Xe-drivrutinen positioneras som basen för att stödja nya chips utan att vara bundna till kod som stödjer Ă€ldre plattformar. Drivrutinen Ă€r byggd med en ny arkitektur dĂ€r befintliga komponenter i DRM-subsystemet anvĂ€nds mer aktivt samt typiska komponenter frĂ„n drivrutinen i915, som inte Ă€r kopplade till specifika GPU:er, exempelvis kod för interaktion med skĂ€rmar, minnesmodell och execbuf-implementation. I Mesa har arbetet med OpenGL och Vulkan ovanpĂ„ Xe-drivrutinen genomförts baserat pĂ„ Ă€ndringar gjorda i de existerande Mesa-drivrutinerna Iris och ANV.
    • I i915-drivrutinen har arbetet fortsatt med att implementera stöd för Intel LunarLake-chip (Xe 2). Stödet för Intel Meteor Lake-chip har förbĂ€ttrats.
    • I Nouveau-drivrutinen har en instĂ€llning genomförts för att som standard anvĂ€nda GSP-firmwarefunktioner för att arbeta med NVIDIA GPU:er baserade pĂ„ Turing och Ampere mikroarkitekturer, dĂ€r initialiserings- och styroperationer för GPU:er utförs av en separat mikrokontroller GSP (GPU System Processor). NĂ€r instĂ€llningen Ă€r aktiverad kommer drivrutinen att fungera genom att anropa firmware istĂ€llet för att direkt programmera hĂ„rdvaruinteraktionsoperationer.
    • I AMDGPU-drivrutinen har stöd för ACPI WBRF och VPE DPM implementerats, behandlingen av PCIe-kanalens hastighet har Ă€ndrats, 64-bitars sekvensnummer anvĂ€nds i queues för synkronisering och det har lagts till stöd för AMD-specifika fĂ€rghanteringsmekanismer, vilket löser problemet med att gĂ„ i vilolĂ€ge.
    • En grundimplementering av drivrutinen för GPU Broadcom VideoCore 7.1, som anvĂ€nds i Raspberry Pi 5-kort, har lagts till.
    • En drivrutin för PowerVR 6 GPU:er baserade pĂ„ Rogue mikroarkitektur frĂ„n Imagination Technologies har lagts till.
    • Stöd har lagts till för Thunderbolt/USB4-kontroller integrerade i chips baserade pĂ„ Intels Lunar Lake mikrodesign.
    • Drivrutiner för kameror som anvĂ€nds i SoC Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave och THine THP7312 har lagts till.
    • Stöd för spelkontroller NSO (Nintendo Switch Online) har lagts till — varianter av Ă€ldre kontroller frĂ„n SNES (Super Nintendo), Genesis och N64 (Nintendo 64), anpassade för Nintendo Switch. En drivrutin för Adafruit Seesaw controllers har lagts till. I xpad-drivrutinen har support för Lenovo Legion Go-kontroller lagts till.
    • I drivrutinen dts har stöd lagts till för spelanordningar som Powkiddy RK2023, Powkiddy X55 och Anbernic RG351V.
    • Stöd har lagts till för ljudsystem som anvĂ€nds i NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 och X1E80100.
    • AMD har gjort Ă€ndringar relaterade till stödet för den kommande serien av processorer baserade pĂ„ den nya mikroarkitekturen Zen 5.
    • Stöd har lagts till för ARM64 SoC: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 och Unisoc UMS9620 (Tanggula 7).
    • Stöd har lagts till för ARM-plattformar och enheter: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress baserad pĂ„ Marvell CN913x, Chromebook Lenovo, Asus och Acer baserad pĂ„ Mediatek MT8183, Toradex Verdin AM62, kort baserade pĂ„ Allwinner H616/H618.
    • Stödet för ARM11 ARMv6K SMP-processorer har upphört.

Samtidigt har den Latinamerikanska Fria programvarufonden tagit fram en version av det helt fria kĂ€rnan 6.8 — Linux-libre 6.8-gnu, rensad frĂ„n komponenter och drivrutiner som innehĂ„ller icke-fria komponenter eller koden delar dĂ€r anvĂ€ndningsomrĂ„det Ă€r begrĂ€nsat av tillverkaren. I utgĂ„van 6.8 har koden för rensning av blobar uppdaterats i olika drivrutiner och undersystem. Rensning har utförts av drivrutiner för Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY och Realtek rtw8922a. Genom borttagning frĂ„n kĂ€rnan har rensningen av drivrutiner för atmel, hermes, orinoco_usb, libertas_cs och zd1201 upphört. Rensning av blobnamn i dts-filer (devicetree) för architektur ARM och Aarch64 har genomförts. Problem med rensning av drivrutinen i915 har Ă„tgĂ€rdats.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster