Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds releasen av Linux-kÀrnan 6.11. Bland de mest anmÀrkningsvÀrda förÀndringarna finns: stöd för atomÀra skrivoperationer pÄ blocknivÄ, stöd för bind()- och listen()-operationer i io_uring, en ny mekanism för lÄsning av programhanterare för avbrott, möjligheten att skriva till speglade exekverbara filer i minnet, stöd för att skriva blockenhetsdrivrutiner i Rust, samt optimering av anropet till getrandom(), och en ny implementation av AES-GCM.
I den nya versionen har 15130 buggfixar accepterats frÄn 2078 utvecklare, patchens storlek Àr 85 MB (förÀndringarna berörde 13282 filer, 985857 rader kod tillagda och 268915 rader borttagna). I den föregÄende utgÄvan fanns det 14564 buggfixar frÄn 1989 utvecklare, patchens storlek var 41 MB (mindre Àn hÀlften jÀmfört med patchen för kÀrnan 6.11). Cirka 46% av de förÀndringar som presenterades i 6.11 rör drivrutiner för enheter, ungefÀr 17% av förÀndringarna kopplar till uppdatering av kod specifik för hÄrdvaruarkitekturer, 10% Àr relaterade till nÀtverksstacken, 5% till filsystem och 3% till interna kÀrnsystem.
Huvudnyheterna i kÀrnan 6.11:
- Disksubsystem, in- och utmatning och filsystem
- Stöd för atomÀra skrivoperationer pÄ blocknivÄ har implementerats, dÀr hela den angivna uppsÀttningen block antingen skrivs till lagringsenheten eller ingen av blocken skrivs, vilket skyddar mot situationer dÀr endast en del av blocken skrivs efter en hÄrdvarufel och den andra delen innehÄller gammal information. För att aktivera den atomÀra skrivmoden har flaggan RWF_ATOMIC lagts till systemanropet pwritev(). Information om stöd för atomÀr skrivning (atomic_write_unit_min, atomic_write_unit_max och atomic_write_segments_max) kopplad till specifika filer kan erhÄllas via funktionen statx().
- Stöd för skrivning till exekverbara filer kopplade till aktiva processer har tillhandahÄllits. Tidigare, precis som i andra Unix-liknande system, gav kÀrnan ett felmeddelande vid försök att skriva till en exekverbar fil för en pÄgÄende process. Denna begrÀnsning har tagits bort eftersom den saknade praktisk betydelse.
- Möjligheten att utveckla drivrutiner för blockenheter i Rust har implementerats. Som exempel har en drivrutin för rnull lagts till i kÀrnan, vilket Àr en motsvarighet till drivrutinen null_blk, skriven i Rust.
- I filsystemet Btrfs har monteringsalternativet «rescue=» fÄtt stÞtte for de nye modusene «ignoremetacsums» og «ignoresuperflags», som kan brukes til Ä utfÞre enkelte sjekker i brukerrommet nÄr filsystemet gjenopprettes etter et krasj. Implementasjonen av operasjonen for dynamisk tilbaketrekking av blokkgrupper er redesignert for Ä unngÄ situasjonen med utilstrekkelig ledig plass under forhold med ufullstendig fylling av filsystemet.
- I filsystemet ntfs3 er stÞtte for attributter «compressed» og «immutable», som definerer komprimerte og uforanderlige filer, blitt implementert.
- I FS F2FS og Ext4 er behandlingen av filnavn uten hensyn til tegnsensitivitet (casefold) forenklet ved Ă„ lagre navn som qstr-strenger uten unĂždvendige registerkonverteringer.
- I FS Ext4 er implementeringen av funksjonen jbd2_transaction_committed optimalisert for Ä forbedre ytelsen pÄ veldig raske lagringsenheter (testene viser en Þkning i antall behandlede operasjoner per sekund pÄ opptil 20%).
- I systemanropet statx() er det nÄ tillatt Ä sende en NULL-peker i stedet for en tom streng med filstien dersom flagget AT_EMPTY_PATH er satt.
- I systemanropet open_by_handle_at() er kravene til tilgangsrettigheter for filen lettet, i tilfeller hvor det ikke finnes CAP_DAC_READ_SEARCH-rettigheter for Ă„ sĂžke i det opprinnelige navnerommet. Tidligere gjorde kravene til CAP_DAC_READ_SEARCH-rettigheter for det opprinnelige navnerommet det umulig Ă„ bruke systemanropet open_by_handle_at() i containere.
- Mulighetene til systemanropene listmount() og statmount() er utvidet. I listmount() er det lagt til et flagg LISTMOUNT_REVERSE for Ä vise innholdet i tabellen med monteringspunkter i motsatt rekkefÞlge (de nyeste postene Þverst). I statmount() er det implementert utdata av alternativene som ble angitt ved montering av filsystemet. I begge systemanropene er det tillatt Ä arbeide uten tilgang til det opprinnelige navnerommet (nÄr det kun er tilgang til et lokalt eller eksternt navnerom).
- I FS Bcachefs er det implementert stĂžtte for automatisk transparent gjenoppretting av problematiske data ved bruk av feilgjenopprettingskoder â hvis det oppstĂ„r en inndataproblem ved lesing eller hvis det konstateres en uoverensstemmelse i sjekksummen, blir den problematiske datablokken automatisk overskrevet nĂ„r det er redundans for Ă„ gjenopprette den.
- Minne och systemtjÀnster
- Patcher har införts som implementerar en ny mekanism för att blockera programhandlarens avbrottshanterare (BH, bottom-half), vilket sĂ€kerstĂ€ller blockering av anvĂ€nda datastrukturer utan att orsaka blockering av parallell exekvering av orelaterad kod. Ăndringen har Ă€ven minskat fördröjningar för kĂ€rnor som arbetar i realtid, samtidigt som den har förbĂ€ttrat prestandan för vanliga kĂ€rnor (till exempel observeras en prestandaförbĂ€ttring pĂ„ 14,5 % för vissa typer av belastning i det nĂ€tverksbaserade systemet).
- Understödet för bind() och listen()-funktioner har lagts till i io_uring-understödda asynkrona in- och utmatningsoperationer, vilket anvÀnds för att skapa mottagande anslutningar för nÀtverksocketar.
- Ett nytt set av ioctl-operationer har lagts till för den pseudo-FS NSFS (NameSpace FS) som anvÀnds för att arbeta med namnrymder. De nya ioctl:erna möjliggör konvertering av process- och trÄdgruppsidentiteter mellan olika processnamnsrymder (PID namespace). Liknande ioctl:er som lÄter identifiera filbeskrivare för processer i separata namnrymder baserat pÄ pidfd-identiteter har ocksÄ lagts till i pseudo-FS pidfd.
- För BPF-program har stöd för en ny iterator lagts till för att arbeta med bitmasker, som kan anvÀndas för att iterera över enskilda bitar i minnesomrÄden, som cpumask. En mekanism har lagts till för att skicka meddelanden till processer i anvÀndarrum om avkoppling (detach/unregister) av objektet struct_ops. Utbudet av typer som kan anvÀndas i arrayer har utvidgats (till exempel kan arrayer deklareras med element av typerna kptr, bpf_rb_root och bpf_list_head). En mer pÄlitlig mekanism för Split BTF (BPF Type Format), anvÀnds för typkontroll i BPF pseudokod, har föreslagits.
- Ett subsystem har lagts till som möjliggör att strömförsörjning pÄ enheter organiseras i en viss ordning, för fall dÀr en enhet mÄste aktiveras tidigare Àn en annan (till exempel vid aktivering av trÄdlösa chips pÄ Qualcomm-plattformar).
- Modulen "Sloppy logic analyzer" har lagts till, vilket möjliggör skapande av enkla logikanalysatorer för signaler som anvÀnder GPIO och som körs pÄ en separat CPU-kÀrna.
- Stöd för runtime-konstanter har lagts till, som kan anvÀndas istÀllet för variabler som initialiseras en gÄng. Till exempel kan runtime-konstanter anvÀndas istÀllet för variabler som lagrar pekare och storlek för dentry-cache. Dessa variabler stÀlls in under inlÀsningen och Àndras aldrig efter det. Idén Àr att direkt infoga vÀrdena frÄn sÄdana variabler i instruktionerna i koden, vilket eliminerar overhead kopplat till pekarmanipulationer.
- Arbetet med att överföra förÀndringar frÄn Rust-for-Linux-grenen har fortsatt, relaterat till anvÀndning av Rust som andrasprÄk för utveckling av drivrutiner och kÀrnmoduler (Rust-stöd Àr inte aktiverat som standard och leder inte till att Rust ingÄr bland de obligatoriska byggberoendena för kÀrnan). Stöd för Rust 1.80 har lagts till (Rust 1.78 fortsÀtter att stödjas som minimi-version). Förutom de tidigare nÀmnda verktygen för utveckling av blockenhetsdrivrutiner har nya abstraktioner lagts till för att ladda fastprogram, fÄ Ätkomst till anvÀndarutrymmet (uaccess) och arbeta med strukturen 'page'.
- Ett nytt systemanrop uretprobe() har implementerats för x86-64-system, vilket optimerar arbetet med mekanismen för uretprobe-spÄrning som möjliggör spÄrning av vÀrden som returneras av funktioner i anvÀndarutrymmet.
- Nya kÀrnkommandoradsparametrar har lagts till: 'reserve_mem' för att reservera ett namngivet minnesomrÄde under inlÀsning och 'ramoops.mem_name' för anvÀndning i pstore-minnesomrÄdet skapat genom reserve_mem.
- I minneskontrollern baserad pÄ cgroup har parametern 'swappiness' lagts till i filen memory.reclaim, genom vilken instÀllningar för minnesutdrivning definieras, vilket gör det möjligt att Àndra balansen mellan utdrivning av anonyma minnessidor till vÀxlingsutrymmet och frigöring av minnessidor som anvÀnds för filcache.
- Ett ioctl-grÀnssnitt PROCMAP_QUERY har lagts till för att effektivare söka efter virtuella minnesomrÄden (Virtual Memory Area) i /proc/PID/maps.
- En flagga MAP_DROPPABLE har lagts till i systemanropet mmap() för att begÀra minne som aldrig kommer att skrivas till vÀxlingsutrymmet, men som kan tas bort vid minnesbrist.
- Stöd för varmkoppling (att vÀxla mellan online/offline-lÀgen) av fysiska och virtuella CPU:er har implementerats för ARM64-arkitekturen pÄ system med ACPI.
- För RISC-V-arkitekturen har stöd för hot-plugging av minne sÀkerstÀllts och stöd för GCC-plugin STACKLEAK har lagts till (detta initierar alla variabler som lagras pÄ stacken för att förhindra informationslÀckage frÄn kÀrnan genom icke-initierade variabler som kan innehÄlla rester frÄn tidigare sparade data pÄ stacken).
- Metoden för falsk minnesmappning EFI har tagits bort vid start. Denna metod anvÀndes inte praktiskt och hindrade utvecklingen inom omrÄdet för konfidentiell körning. virtuella maskiner.
- Stödet för PowerPC 40x-plattformen har upphört.
- Kravet pĂ„ versionen av GNU Make har ökat â för att bygga kĂ€rnan behövs Ă„tminstone en version av GNU Make som publicerades 2013.
- Virtualisering och sÀkerhet
- Patchar har integrerats som avsevÀrt (upp till 15 gÄnger) snabbar upp genereringen av slumpmÀssiga tal via systemanropet getrandom(). Optimeringen baseras pÄ anvÀndningen av vDSO (virtual dynamic shared object) som gör det möjligt att flytta systemanropshanteraren frÄn kÀrnan till anvÀndarutrymmet och undvika kontextbyten. Implementeringen av systemanropet laddas in i anvÀndarens adressutrymme direkt av kÀrnan.
- För x86-64-system har en ny implementering av AES-GCM-krypteringsalgoritmen inkluderats, som stödjer anvÀndning av vektorinstruktioner VAES, VPCLMULQDQ och AVX512/AVX10 för att pÄskynda berÀkningar. I genomförda tester har prestandaförbÀttringen efter övergÄngen till den nya implementeringen nÄtt upp till 156%. Assemblertillverkningen av AES-GCM Àr helt omarbetad med hÀnsyn till korrekthet, prestanda, storlek och omfattande dokumentation av koden.
- Möjligheten att köra kÀrnan som ett gÀstsystem i virtualiserade miljöer som anvÀnder AMD SEV-SNP (Secure Nested Paging) processorer har genomförts, vilket syftar till att sÀkerstÀlla sÀker drift med inbÀddade minnessidor. För ytterligare isolering av Ätkomst till resurser frÄn virtuella maskiner kan SVSM-modulen (Linux Secure VM Service Module) anvÀndas. KVM Inledande stöd har lagts till för att starta gÀstsystem skyddade genom AMD SEV-SNP.
- En separat bucket slab allocator har lagts till, vilket aktiveras via parametern CONFIG_SLAB_BUCKETS och skyddar mot attacker med hjÀlp av tekniken "heap spraying".
- I hypervisorn KVM har en ioctl-anrop lagts till för förhandsallokering av minne till gÀstsystemet innan det faktiska startar.
- NĂ€tverkssystemet
- En sysctl-parameter net.tcp_rto_min_us har lagts till, vilket gör det möjligt att stÀlla in den minimi timeout för retransmission (retransmission timeout) för TCP-sockets.
- I verktyget ethtool har möjligheten för finjustering av konfigurationen av avbrottshanterare för nÀtverksgrÀnssnitt som anvÀnder Net DIM-grÀnssnittet lagts till.
- Utrustning
- I AMDGPU-drivrutinen har den initiala stödet för GPU AMD RDNA4 ("GFX12") inkluderats. Stöd har lagts till för teknologier som DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 och MMHUB 4.1.
- Arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU som bygger pÄ Intel Xe-arkitekturen, anvÀnd i Intel Arc-grafikkort och integrerad grafik frÄn Tiger Lake-processorer, har fortsatt. Stödet för GPUer baserade pÄ mikroarkitekturerna Battlemage, Arrow Lake och Lunar Lake har förbÀttrats.
- I DRM-subsystemet (Direct Rendering Manager) har hanteraren för EDID (Extended Display Identification Data) som visas av monitorn skrivits om.
- I i915-drivrutinen har stödet för GPU Battlemage Xe2 lagts till och Content Match Refresh Rate-lÀget har aktiverats som standard.
- I drm-drivrutinen msm (Qualcomm Adreno GPU) har stödet för plattformen SM7150 och GPU X185 och a505 lagts till.
- Stöd har lagts till för skÀrmpanelerna Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070WL4, Lincoln Technologies LCD197, Ortustech COM35H3P70ULC, AUO G104STN01, K&d kd101ne3-40ti.
- I ljudsubsystemet har stödet för chip och kodare frÄn Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 och Texas Instruments PCM5242 lagts till.
- Den sista omgÄngen förÀndringar som möjliggör stöd för ARM SoC Snapdragon X Elite, som anvÀnder en egen 12-kÀrnig Qualcomm Oryon CPU och Qualcomm Adreno GPU, har genomförts. Chipsetten Àr riktad mot anvÀndning i bÀrbara datorer och PC-datorer, och övertrÀffar mÄnga av testerna i prestanda jÀmfört med Apple M3 och Intel Core Ultra 155H-chips. De tillÀgg som gjorts i kÀrnan 6.11 rör stödet för GPU Adreno X1-85 och energihantering. Stöd för bÀrbara datorer ASUS Vivobook S15 och Lenovo Yoga Slim7x har meddelats för enheter baserade pÄ SoC Snapdragon X Elite.
Samtidigt har den latinamerikanska Stiftelsen för fri programvara skapat en helt fri version av kĂ€rnan 6.11 â Linux-libre 6.10-gnu, rensad frĂ„n firmware- och drivrutinskomponenter som innehĂ„ller icke-fria delar eller kodavsnitt vars anvĂ€ndningsomrĂ„de Ă€r begrĂ€nsat av tillverkaren. I version 6.11 har koden för att rensa blobbar i drivrutiner som mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth och tas2781 uppdaterats. Ny rensning av drivrutinerna amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 och pcie-rcar-gen4 har genomförts. Namnen pĂ„ blobbar i dts-filer (devicetree) för arkitekturen Aarch64 har rensats. En version av primitiva för laddning av firmware som inte visar varningar och förfrĂ„gningar (nowait-nowarn) har lagts till. Kod för att identifiera primitiva för laddning av firmware i Rust-kod har lagts till.
KĂ€lla: opennet.ru
