Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds versionen av kÀrnan Linux 6.10. Bland de mest framtrÀdande förÀndringarna finns: ntsync-drivrutinen med Windows NT-synkroniseringsprimitiv, DRM Panic-komponenter för att implementera en analog till "blue screen of death", avstÀngning av stöd för Àldre Alpha-CPU:er, möjlighet till integritetsverifiering i FUSE-baserade filsystem, begrÀnsad Ätkomst till ioctl via Landlock-mekanismen, en subsystem för profilering av minnesallokeringsoperationer, systemanropet mseal(), möjlighet till krypterad datakommunikation med TPM-enheter, stöd för högprioriterade arbetsköer i dm-crypt, samt panthor-drivrutinen för den tionde generationens GPU Mali.
I den nya versionen ingÄr 14564 korrigeringar frÄn 1989 utvecklare, patchens storlek Àr 41 MB (Àndringarna berör 12509 filer, 547663 kodrader har lagts till, 312464 kodrader har tagits bort). I den föregÄende versionen fanns det 15680 korrigeringar frÄn 2106 utvecklare, patchens storlek var 54 MB. Cirka 41% av alla förÀndringar i 6.10 Àr relaterade till drivrutiner, ungefÀr 15% av förÀndringarna rör uppdatering av kod specifik för hÄrdvaruarkitekturer, 13% Àr relaterade till nÀtverksstacken, 5% till filsystem och 4% till interna subsystem i kÀrnan.
Huvudnyheterna i kÀrnan 6.10:
- Disksubsystem, in- och utmatning och filsystem
- En ny fcntl-operation F_DUPFD_QUERY har lagts till, som gör det möjligt för en process att avgöra att tvÄ olika filbeskrivare refererar till samma fil. Till skillnad frÄn liknande möjligheter som erbjuds av systemanropet kcmp(), avslöjar F_DUPFD_QUERY ingen extra information och fungerar pÄ system med kcmp inaktiverat.
- I FUSE-subsystemet, som anvÀnds för att implementera filsysten i anvÀndarutrymmet, har möjlighet att anvÀnda mekanismen fs-verity för att kontrollera integritet och Àkthet av filer implementerats.
- I dm-crypt-modulen, som anvÀnds för att kryptera blockenheter, har en "high_priority"-alternativ lagts till, vilket gör det möjligt att anvÀnda högprioriterade arbetsköer för att öka prestandan pÄ kraftfulla enheter. servrar. Som standard Àr lÀget avstÀngt, dÄ det kan leda till ökad latens pÄ vanliga datorer vid utförande av icke-krypteringsrelaterade arbetsuppgifter, sÄsom ljudbearbetning.
- En nÀtverksprotokoll baserat pÄ netlink har lagts till för att hantera NFS-servern i kÀrnan. I anvÀndarutrymmet har ett verktyg som heter nfsdctl förberetts baserat pÄ detta protokoll. Stödet för att montera NFS v2 Àr inaktiverat som standard (i verktyget mount.nfs avbröts stödet för NFS v2 redan 2021).
- Arbetet med att implementera möjligheten att anvÀnda verktyget fsck för att kontrollera och ÄtgÀrda identifierade problem i filsystemet XFS har fortsatt, utan avmontering av filsystemet. ioctl XFS_IOC_EXCHANGE_RANGE för utbyte av byteomrÄden mellan tvÄ filer i atomÀrt lÀge har lagts till.
- I Btrfs har stöd för avskurna (shrinker) oavslutade kartor av extents implementerats, vilket kan vara anvÀndbart för att minska minnesanvÀndningen i lÄga minnesförhÄllanden. Koden för datakomprimering och funktionen put_file_data() har omvandlats för att anvÀnda sidfollor (page folios). Mekanismen för lÄsning av extents vid utförande av Äterinspelning har omarbetats.
- I filsystemet Ext4 har stöd för ioctl FS_IOC_GETFSSYSFSPATH lagts till för att bestÀmma platsen för det angivna monterade filsystemet i hierarkin /sys/fs.
- Filsystemen OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX och FREEVXFS har omvandlats för att anvÀnda det nya API:et för montering av partitioner.
- I filsystemet EROFS (Extendable Read-Only File System), avsett för anvÀndning pÄ partitioner som Àr tillgÀngliga i skrivskyddat lÀge, har stöd för Zstandard-komprimeringsalgoritmen lagts till.
- I Bcachefs har förberedelser gjorts för att genomföra fsck utan att avmontera partitionen (online-kontroll). FörÀndringar och korrigeringar har lagts till för att öka driftsÀkerheten. Möjlighet till uppgradering och ÄterstÀllning av FS-formatet har implementerats i "nochanges"-lÀge, vilket inaktiverar skrivning och lagrar metadata endast i minnet.
- I filsystemet OverlayFS har stöd för skapande av temporÀra filer med hjÀlp av alternativet O_TMPFILE lagts till.
- Stödet för mekanismen för att begrÀnsa bandbredden för blockenheter "CONFIG_BLK_DEV_THROTTLING_LOW" har upphört, vilken sedan 2017 har haft status som experimentell, inte fÄtt genomslag i praktiken och försvÄrar underhÄllet av subsystemet för blockenheter.
- Minne och systemtjÀnster
- Tillagd, men inaktiverad vid kompilering, Àr drivrutinen ntsync, som implementerar den symboliska enheten /dev/ntsync och en uppsÀttning primitiva funktioner för synkronisering som anvÀnds i Windows NT-kÀrnan. Genom att implementera sÄdana primitiva funktioner pÄ kÀrnnivÄ kan prestandan för Windows-spel som körs med Wine avsevÀrt öka. PrestandaförbÀttringar uppnÄs genom att eliminera overheaden som Àr förknippad med anvÀndning av RPC i anvÀndarutrymmet. Skapandet av en separat drivrutin för Linux-kÀrnan förklaras av svÄrigheterna att korrekt implementera NT:s synkroniserings-API pÄ befintliga primitiva funktioner i kÀrnan.
- En underordnad modul för profilerings av minnesallokeringar har tillagts i Linux-kÀrnan, vilket gör det möjligt att upptÀcka minneslÀckor i kÀrnan och förenklar genomförandet av minnesoptimeringar. Modulen har lÄg overhead, vilket gör att den kan anvÀndas inte bara i debug-kÀrnkompileringar utan ocksÄ pÄ produktionssystem.
- En preliminĂ€r implementation av en nödhantare i kĂ€rnan har lagts till â DRM Panic, som anvĂ€nder DRM (Direct Rendering Manager) subsystemet för att visa en tydlig fĂ€rgrapport i stil med "blue screen of death". I nĂ€sta version planeras möjligheten att visa en logotyp och QR-kod pĂ„ skĂ€rmen vid en nödsituation.
- Ăverföringen av förĂ€ndringar frĂ„n Rust-for-Linux-grenen som rör anvĂ€ndning av Rust som andrasprĂ„k för utvecklingen av drivrutiner och kĂ€rnmoduler fortsĂ€tter (stöd för Rust Ă€r inte aktiverat som standard och medför inte att Rust ingĂ„r som ett obligatoriskt byggberoende för kĂ€rnan). ĂvergĂ„ngen till Rust-version 1.78 har genomförts, vilket möjliggjort anvĂ€ndning av standardbiblioteket alloc istĂ€llet för en egen gren. Abstraktioner för arbete med tid i kĂ€rnan har lagts till (en omslag runt strukturen ktime_t). Stöd för anvĂ€ndning av kĂ€rnkomponenter pĂ„ Rust i system med RISC-V-arkitektur har lagts till.
- I BPF-program har möjligheten att anvÀnda vÀntköer (wait queue) i kÀrnan implementerats. Funktionerna bpf_preempt_disable och bpf_preempt_enable har lagts till för att skapa sektioner med kod som inte kan avbrytas av schemalÀggaren. BPF-program har nu tillgÄng till kÀrnans kryptografiska funktioner (crypto). Stöd för JIT-kompilering av BPF-program pÄ system med 32-bitar processorer ARCv2 har implementerats.
- För 32-bitar ARM-system har stöd för kÀrnbygge med Clang-compiler med aktiverat CFI-lÀge (Control Flow Integrity) implementerats. Detta blockerar avvikelser frÄn normal körordning (control flow) pÄ grund av exploateringar som Àndrar minneslagrade funktionspekare.
- Möjligheten till direkt avbildning via mmap() av ringbuffertar för spÄrning och överföring av deras innehÄll till anvÀndarutrymmet utan ytterligare kopiering har lagts till.
- Ett systemanrop "mseal" har lagts till, vilket gör det möjligt för processer att sÀtta en lÄsning pÄ att Àndra vissa delar av sitt adressutrymme. I praktiken planeras det nya systemanropet att anvÀndas i webblÀsaren Chrome för att förstÀrka sandbox-isoleringen.
- För subarkitekturen x32, som tillhandahÄller en hybrid x86_64 ABI, vilket möjliggör anvÀndning av 32-bitar adressmodell pÄ 64-bitar system (processorn arbetar i 64-bitar lÀge, men anvÀnder 32-bitar pekare och aritmetiska operationer), har stöd för mekanismen Shadow Stack lagts till, vilket blockerar mÄnga exploateringar genom att anvÀnda Intel-processors hÄrdvarufunktioner för att skydda mot överskrivning av returadress frÄn funktioner vid buffertöverskridning i stacken.
- PÄ ARM64-arkitektur system har möjligheter relaterade till skrivskyddavdelningar och element i sidtabeller implementerats i systemanropet userfaultfd(), som möjliggör skapandet av hanterare för sidfel (page faults) i anvÀndarutrymmet.
- Koden för att stödja Alpha 21164 (EV5) och tidigare serier av processorer, som slÀpptes 1995, har tagits bort. UnderhÄllet av koden för dessa processorer var komplicerat pÄ grund av avsaknaden av byte-nivÄ minnesÄtkomst. Alpha var den första arkitekturen dÀr Linux-kÀrnan portades, som ursprungligen endast var tillgÀnglig för x86-system.
- Virtualisering och sÀkerhet
- Stödet för krypterad dataöverföring med TPM-enheter (Trusted Platform Module) och verifiering av transaktionernas integritet har lagts till.
- I LSM-modulen Landlock, som begrÀnsar interaktionen mellan en grupp processer och den externa miljön, har möjligheten att tillÀmpa regler för begrÀnsad Ätkomst till ioctl()-anrop lagts till.
- En ny option init_mlocked_on_free som erbjuds vid uppstart, sÀkerstÀller att innehÄllet i minnet, som skyddas frÄn att skrivas till swap-minnet med hjÀlp av mlock(), nollstÀlls om detta minne frigörs utan att lÄsas upp med munlock(). AnvÀndning av denna option utesluter att kryptografiska nycklar finns kvar i minnet vid en krasch av applikationen som arbetar med dem.
- I krypto-undersystemet har utförandet av disk-krypteringsoperationer med hjÀlp av AES-XTS-algoritmen snabba upp pÄ x86_64-system med Intel- och AMD-processorer som stöder VAES, AVX2, VPCLMULQDQ, AVX10 eller AVX512.
- Möjligheten att samla statistik om anvÀndning av kÀrnans kryptosystem (CONFIG_CRYPTO_STATS) har tagits bort. Denna funktion anvÀndes praktiskt taget inte och orsakade betydande prestandaförluster samt skapade en merkostnad för underhÄllarna.
- NĂ€tverkssystemet
- Prestandan för dataöverföringsoperationer i zero-copy-lÀge har avsevÀrt förbÀttrats genom anvÀndning av io_uring-subsystemet. Möjligheten att sammanfoga ("bundle") flera buffertar för dataöverförings- och mottagningsoperationer har lagts till.
- Koden för skrĂ€puppsamling, som anvĂ€nds vid överföring av filhandtag via Unix-socketar med SCM_RIGHTS-meddelanden, har skrivits om. Ăndringen löser problemet med cykliska referensrĂ€knare.
- Möjligheten att installera filter för PFCP-protokollet (Packet Forwarding Control Protocol), som anvÀnds i 4G- och 5G-nÀtverk, har lagts till.
- Stöd för socket-alternativet SO_PEEK_OFF har lagts till, vilket, pÄ samma sÀtt som det liknande alternativet för Unix-sockets, gör det möjligt att bestÀmma förskjutningen av data i kön som anvÀnds av systemanropet recv nÀr flaggan MSG_PEEK anges (markerar data som olÀsta och de kommer att ges igen vid nÀsta anrop av recv).
- Stöd för operationen IORING_CQE_F_SOCK_NONEMPTY har lagts till i io_uring-systemet, vilket gör det möjligt att bestÀmma om en nÀtverksocket har anslutningsförfrÄgningar som vÀntar pÄ behandling.
- En implementation av PoE (Power over Ethernet) -teknologin har föreslagits, baserat pÄ tidigare tillgÀnglig kod för stöd av PoDL (Power over Data Line) och kompatibel med PoE-kontroller Microchip PD692x0 och TI TPS23881.
- För protokollen TCP, DCCP och MPTC har stödet för mekanismen rstreason lagts till, vilket gör det möjligt att bestÀmma orsaken till att RST-paket skickas (till exempel NO_SOCKET).
- Utrustning
- Drivern panthor för den tionde generationens GPU Mali (G310, G510, G710) har inkluderats, dĂ€r teknologin CSF (Command Stream Frontend) anvĂ€nds, vilket flyttar vissa funktioner frĂ„n drivrutinen till firmware för att minska belastningen pĂ„ CPU:n och erbjuder en ny modell för organisering av arbetsuppgifter pĂ„ GPU:n. Ăndringar för stöd av den nya drivrutinen har ocksĂ„ antagits i Mesa och inkluderats i Gallium-drivrutinen panfrost för GPU Mali.
- PCI-id för nya diskreta grafikkort frÄn Intel Arc (DG2/Alchemist) har lagts till i drivrutinen i915.
- Arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU:er baserade pÄ Intel Xe-arkitekturen, som anvÀnds i Intel Arc-grafikkort och integrerad grafik, har fortsatt, med stöd för CPU Arrow Lake H tillagt. Arbetet med att implementera stöd för Lunar Lake-processorer har fortsatt. GrundlÀggande stöd för mekanismen SR-IOV (Single Root I/O Virtualization) har lagts till.
- Stöd för SMU 14.0 (System Management Unit) har lagts till i AMDGPU-drivrutinen. Möjligheten att anvÀnda nya AMD GPU:er pÄ system med RISC-V-arkitektur har lagts till.
- En drivrutin för Tegra Security Engine, som kan anvÀndas för att pÄskynda AES och olika hash-algoritmer, har lagts till.
- Stöd för skÀrmpanelerna LG SW43408, Innolux G121XCE-L01 LVDS, RK3326 GameForce Chi, Crystal Clear CMT430B19N00, POWERTIP PH128800T006-ZHC01, Startek KD050HDFIA020-C020A, Pixel 3a, Khadas TS050 V2, Raydium RM69380, BOE NT116WHM-N44, CMN N116BCA-EA1 och AUO B120XAN01.0 har lagts till.
- Stöd för ljudsystemet i bÀrbara datorer Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X och ASUS Zenbook 2024 HN7306 har lagts till. Stöd för externa ljudkort Vocaster One och Vocaster Two har lagts till. En drivrutin för förstÀrkare NAU8325 frÄn Nuvoton Technology har lagts till.
- I HID-Steam-drivrutinen har stöd för IMU (Inertial Measurement Unit) för spelkontrollen Steam Deck lagts till, vilket möjliggör anvÀndning av en separat evdev-enhet för Ätkomst till gyro- och accelerometerdata.
- Ăndringar för att stödja ARM SoC Snapdragon X Elite, som anvĂ€nder en egen 12-kĂ€rnig CPU Qualcomm Oryon och GPU Qualcomm Adreno, har aktiverats. Chipsatsen Ă€r riktad mot anvĂ€ndning i bĂ€rbara datorer och PC, och presterar bĂ€ttre Ă€n Apple M3 och Intel Core Ultra 155H i mĂ„nga prestandatester.
- Stöd för ARM-plattor, SoC och enheter har lagts till: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 Kina, Motorola Moto G, RK3326 GameForce Chi, Anbernic RG35XX (Plus/H/2024), Airoha EN7581, Radxa ROCK 3C, ArmSom Sige7, Tanix TX1, Toradex Colibri iMX8DX, Renesas RZ/V2H, Forlinx OK3588-C, Protonic MECSBC, Emcraft Systems NavQ+, NXP S32G3, Wolfvision pf5, Amlogic A4/A5, ASUS RT-AC3200, ASUS RT-AC5300, ASrock E3C256D4I, IBM system1 BMC, Meta Harma BMC(AST2600), ASRock X570D4U BMC, Au-Zone Maivin AI Vision Starter Kit.
- Stöd för Milk-V Mars-kort som anvÀnder SoC Starfive JH7110 baserat pÄ RISC-V-arkitekturen har lagts till.
Samtidigt har den latinamerikanska Stiftelsen för fri programvara skapat en version av den helt fria kĂ€rnan 6.10 â Linux-libre 6.10-gnu, som har rensats frĂ„n element av firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndningsomrĂ„de Ă€r begrĂ€nsat av tillverkaren. I version 6.10 har rensningskoden för blobbar i Intel i915-, rtl8xxxu-, qla2xxx- och QCAI sahara-drivrutinerna uppdaterats. Namnen pĂ„ blobbar i dts-filer (devicetree) för arkitekturen Aarch64 har rensats. Nya filer som lagts till i Adreno-, Intel IPU3- och PRUEth-drivrutinerna har rensats frĂ„n blobbar. Rensning av de nya drivrutinerna Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID och pcm6240 har genomförts. Rensningen av USB-drivrutinen Prism2.5/3 USB har avslutats, vilket har tagits bort frĂ„n kĂ€rnan.
KĂ€lla: opennet.ru
