Release av Linux-kÀrnan 6.11

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

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