Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds release av Linux-kÀrnan 5.11. Bland de mest anmÀrkningsvÀrda förÀndringarna finns: stöd för Intel SGX-enklaver, en ny mekanism för avlyssning av systemanrop, en virtuell auxiliary-buss, förbud mot att kompilera moduler utan MODULE_LICENSE(), ett snabbt filterlÀge för systemanrop i seccomp, avslutandet av stödet för ia64-arkitekturen, överflyttning av WiMAX-teknologin till "staging"-grenen, samt möjligheten att inkapsla SCTP i UDP.
I den nya versionen har 15480 korrigeringar godkÀnts av 1991 utvecklare, patchstorleken Àr 72 MB (Àndringarna omfattade 12090 filer, 868025 kodrader lades till och 261456 kodrader togs bort). Cirkap 46 % av alla förÀndringar i 5.11 relaterar till enhetsdrivrutiner, ungefÀr 16 % av förÀndringarna gÀller uppdatering av kod specifik för hÄrdvaruarkitekturer, 13 % Àr relaterat till nÀtverksstacken, 3 % till filsystem och 4 % till interna subsystem i kÀrnan.
Huvudsakliga nyheter:
- Disksubsystem, in- och utmatning och filsystem
- I Btrfs har flera monteringsalternativ lagts till för anvÀndning vid datarÀddning frÄn skadad FS: "rescue=ignorebadroots" för montering trots skador pÄ vissa rottrÀd (extent, uuid, data reloc, device, csum, free space), "rescue=ignoredatacsums" för att inaktivera kontrollsummekontroll för data och "rescue=all" för att samtidigt aktivera lÀgena 'ignorebadroots', 'ignoredatacsums' och 'nologreplay'. Stödet för monteringsalternativet "inode_cache" har upphört, vilket tidigare varit avskrivet. Kodförberedelse för att implementera stöd för block med metadata och data, som Àr mindre Àn en sida (PAGE_SIZE), samt stöd för zonad allokering har genomförts. Obufferade (Direct IO) förfrÄgningar har överförts till iomap-infrastrukturen. Prestandan hos flera operationer har optimerats, och i vissa fall kan hastigheten öka med tiotals procent.
- I XFS har en flagga "needsrepair" implementerats, som signalerar behovet av ÄterstÀllning. NÀr denna flagga sÀtts kan FS inte monteras förrÀn flaggan har ÄterstÀllts av verktyget xfs_repair.
- I Ext4 har endast bugfixar och optimeringar föreslagits, samt en stÀdning av koden har genomförts.
- à terexport av filsystem som Àr monterade över NFS har godkÀnts (dvs. en partition monterad via NFS kan nu exporteras via NFS och anvÀndas som mellanlagring).
- I systemanropet close_range() har en ny option CLOSE_RANGE_CLOEXEC lagts till, som möjliggör stÀngning av fildescriptorer i close-on-exec-lÀge.
- Den nya filsystemet F2FS har fÄtt nya ioctl()-anrop som gör det möjligt för anvÀndarutrymmet att hantera vilka filer som sparas i komprimerad form. En monteringsoption "compress_mode=" har lagts till för att vÀlja var komprimeringshanteraren ska placeras, antingen i kÀrnan eller i anvÀndarutrymmet.
- Det har blivit möjligt för icke-privilegierade processer att montera Overlayfs genom att anvÀnda ett separat anvÀndar-ID-omrÄde (user namespace). En fullstÀndig kodgranskning har genomförts för att kontrollera att sÀkerhetsmodellen följs. I Overlayfs har det ocksÄ lagts till stöd för att köras med kopior av filsystembilder genom en valfri avstÀngning av UUID-kontroll.
- Filsystemet Ceph har fÄtt stöd för protokollet msgr2.1, som tillÄter anvÀndning av AES-GCM-algoritmen för överföring av data i krypterad form.
- I dm-multipath-modulen har stöd för IO-affinitet lagts till vid val av vÀgar för in- och utdataförfrÄgningar.
- Minne och systemtjÀnster
- En ny mekanism för att fÄnga systemanrop baserad pÄ prctl() har lagts till, vilket möjliggör generering av undantag frÄn anvÀndarutrymmet vid anrop av specifika systemanrop samt emulering av deras utförande. Den hÀr funktionen Àr efterfrÄgad i Wine och Proton för emulering av Windows-systemanrop, vilket krÀvs för att sÀkerstÀlla kompatibilitet med spel och program som direkt gör systemanrop som kringgÄr Windows API (till exempel för att skydda mot otillÄten anvÀndning).
- I systemanropet userfaultfd(), som Àr avsett för att hantera sidfel (access till icke allokerade minnessidor) i anvÀndarutrymmet, har möjlighet lagts till att stÀnga av undantagsbehandling som uppstÄr pÄ kÀrnnivÄ för att komplicera utnyttjandet av vissa sÄrbarheter.
- I BPF-subsystemet har stöd för uppgiftslokal lagring (task-local storage) lagts till, vilket ger koppling av data till en specifik BPF-behandlare.
- FullstĂ€ndigt omarbetad minnesanvĂ€ndningsrapportering för program med BPF â en cgroup-kontroller föreslĂ„s för att hantera minnesanvĂ€ndningen i BPF-objekt istĂ€llet för memlock rlimit.
- I BTF (BPF Type Format) mekanismen, som tillhandahÄller information för typkontroller i BPF-pseudokod, har stöd för kÀrnmoduler implementerats.
- I grÀnssnittet för asynkron I/O io_uring har stöd för systemanropen shutdown(), renameat2() och unlinkat() lagts till. Vid anrop av io_uring_enter() har möjlighet att ange en timeout lagts till (för att kontrollera stöd för argumentet som anger timeout kan flaggan IORING_FEAT_EXT_ARG anvÀndas).
- Arkitekturen ia64, som anvÀnds i Intel Itanium-processorer, har flyttats till kategorin övergivna ('orphaned'), vilket innebÀr att testningen har upphört. Hewlett Packard Enterprise har slutat ta emot bestÀllningar pÄ ny Itanium-hÄrdvara, och Intel gjorde det redan förra Äret.
- Stödet för system baserade pÄ MicroBlaze-arkitekturen utan minneshanteringsenhet (MMU) har upphört. SÄdana system förekommer sÀllan idag.
- För MIPS-arkitekturen har stöd för tÀckningstestning (coverage testing) lagts till med hjÀlp av verktyget gcov.
- Stöd för den virtuella bussen auxiliary har lagts till för interaktion med multifunktionella enheter som kombinerar funktionalitet som krÀver olika drivrutiner (till exempel nÀtverkskort med stöd för Ethernet och RDMA). Bussen kan anvÀndas för att tilldela primÀr och sekundÀr drivrutin för enheten, nÀr det Àr problematiskt att anvÀnda MFD (Multi-Function Devices) subsystemet.
- För RISC-V-arkitekturen har stöd för CMA (Contiguous Memory Allocator) lagts till, vilket Àr optimerat för att allokera stora sammanhÀngande minnesomrÄden med hjÀlp av teknik för sidflyttningar. För RISC-V har ocksÄ metoder för att begrÀnsa Ätkomst till /dev/mem och redovisning av tid för avbrottshantering implementerats.
- För 32-bitars ARM-system har stöd för felsökningsverktyget KASan (Kernel address sanitizer) lagts till, vilket möjliggör identifiering av minnesfel. För 64-bitars ARM har implementeringen av KASan flyttats till att anvÀnda MTE-taggar (MemTag).
- Ett systemanrop epoll_pwait2() har lagts till, vilket möjliggör anvÀndning av timeouter med nanosekundsnoggrannhet (epoll_wait-anropet hanterar millisekunder).
- I byggsystemet visas nu ett felmeddelande vid försök att bygga inladdade kÀrnmoduler dÀr licensen inte har definierats med makrot MODULE_LICENSE(). Fel under bygget kommer ocksÄ att orsakas av anvÀndning av makrot EXPORT_SYMBOL() för statiska funktioner.
- Stöd har lagts till för att mappa GEM-objekt frÄn minne som anvÀnds för in- och utdata, vilket har ökat hastigheten pÄ framebufferhantering pÄ vissa arkitekturer.
- Stödet för Qt4 har upphört i Kconfig (stöd för Qt5, GTK och Ncurses kvarstÄr).
- Virtualisering och sÀkerhet
- Stöd för snabbresponslÀge har lagts till i systemanropet seccomp(), vilket möjliggör mycket snabb bestÀmning av om ett visst systemanrop Àr tillÄtet eller förbjudet baserat pÄ en kopplad behörighetstabell (constant-action bitmap) som inte krÀver körning av BPF-hanterare.
- KÀrnkomponenter har integrerats för att skapa och hantera enklaver baserade pÄ Intel SGX-teknologin (Software Guard eXtensions), vilket gör det möjligt för applikationer att köra kod i isolerade, krypterade minnesomrÄden, medan Ätkomsten för övriga system Àr begrÀnsad.
- Inom ramen för initiativet att begrÀnsa anvÀndarutrymmets Ätkomst till MSR-register (model-specific register) har skrivning till registret MSR_IA32_ENERGY_PERF_BIAS förbjöd, vilket möjliggör Àndring av processorernas energieffektivitet ("normal", "prestanda", "energibesparing").
- Möjligheten att inaktivera migration av högprioriterade uppgifter mellan CPU:er har flyttats frÄn kernel-rt-grenen för realtidsystem.
- För ARM64-system har möjligheten tillÀmpats för att anvÀnda MTE-taggar (MemTag, Memory Tagging Extension) för minnesadresser av signalhanterare. AnvÀndning av MTE aktiveras genom att ange alternativet SA_EXPOSE_TAGBITS i sigaction() och tillÄter att kontrollera korrekt anvÀndning av pekare för att blockera exploatering av sÄrbarheter orsakade av Ätkomst till redan frigivna minnesblock, buffertöverflöden, Ätkomster innan initialisering och anvÀndning utanför den aktuella kontexten.
- Parametern "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING" har lagts till, vilket tillÄter dm-verity-subsystemet att verifiera hash-signaturer av certifikat som placeras i det sekundÀra nyckel-lageret (keyring). I praktiken gör instÀllningen det möjligt att verifiera inte bara certifikat inbyggda i kÀrnan utan ocksÄ certifikat som laddas under drift, vilket ger möjlighet att uppdatera certifikat utan att uppdatera hela kÀrnan.
- I User-mode Linux har stöd för suspend-to-idle-lÀget, vilket gör det möjligt att frysa miljön och anvÀnda signalen SIGUSR1 för att ÄtergÄ frÄn vilolÀge.
- I mekanismen virtio-mem, som möjliggör hot-pluggning och hot-unplugging av minne till virtuella maskiner, har stöd för Big Block Mode (BBM) lagts till, vilket ger möjlighet att överföra eller ta bort minne i block som överstiger kÀrnans blockstorlek, nÄgot som Àr nödvÀndigt för att optimera VFIO i QEMU.
- I kÀrnnivÄimplementeringen av TLS har stöd för CHACHA20-POLY1305-krypteringen lagts till.
- NĂ€tverkssystemet
- För 802.1Q (VLAN) har ett mekanism för Connectivity Fault Management (CFM) realiserats, vilket möjliggör identifiering, verifiering och isolering av fel i nÀtverk med virtuella bryggor. Till exempel kan CFM anvÀndas för att lokalisera problem i nÀtverk som omfattar flera oberoende organisationer, vars anstÀllda endast har Ätkomst till sin egen utrustning.
- Stöd för inkapsling av SCTP-paket i UDP-paket (RFC 6951) har lagts till, vilket gör det möjligt att anvÀnda SCTP i nÀtverk med gamla adresstranslatorer som inte direkt stöder SCTP, samt att implementera SCTP pÄ system som inte ger direkt Ätkomst till IP-nivÄn.
- Implementeringen av WiMAX-teknologin har flyttats till staging och planeras för framtida borttagning om det inte visar sig finnas anvÀndare som behöver WiMAX. WiMAX anvÀnds inte lÀngre i offentliga nÀtverk och i kÀrnan Àr den enda drivrutinen för WiMAX den förÄldrade Intel 2400m-drivrutinen. Stödet för WiMAX i nÀtverkskonfiguratorn NetworkManager avbröts 2015. För nÀrvarande har WiMax nÀstan helt ersatts av teknologier som LTE, HSPA+ och Wi-Fi 802.11n.
- Arbete har utförts för att optimera prestandan av hanteringen av inkommande TCP-trafik i zerocopy-lÀget, det vill sÀga utan extra kopiering till nya buffrar. För medelstor trafik som strÀcker sig över tiotals eller flera hundra kilobyte data Àr anvÀndningen av zerocopy istÀllet för recvmsg() markant mer effektivt. Till exempel har de genomförda Àndringarna ökat effektiviteten i hanteringen av RPC-stiltrafik med meddelanden pÄ 32 kB med zerocopy med 60-70 %.
- Nya ioctl()-anrop har lagts till för att skapa nÀtverksbryggor som tÀcker flera PPP-kanaler. Den föreslagna funktionen gör att ramar kan flyttas frÄn en kanal till en annan, till exempel frÄn PPPoE till en PPPoL2TP-session.
- Integrationen med MPTCP (MultiPath TCP) har fortsatt, en utvidgning av TCP-protokollet för att organisera TCP-anslutningen med leverans av paket samtidigt via flera vÀgar genom olika nÀtverksgrÀnssnitt som Àr kopplade till olika IP-adresser. I den nya utgÄvan har stöd för ADD_ADDR-alternativet implementerats för att annonsera tillgÀngliga IP-adresser som kan anslutas vid tillÀgg av nya strömmar till en befintlig MPTCP-anslutning.
- Möjligheten att konfigurera ÄtgÀrder vid övertrÀdelse av budgeten för anslutningspolling (busy-polling) har lagts till. Det tidigare tillgÀngliga lÀget SO_BUSY_POLL innebar övergÄng till softirq nÀr budgeten var slut. För applikationer som behöver fortsÀtta anvÀnda polling föreslÄs ett nytt alternativ SO_PREFER_BUSY_POLL.
- I IPv6 har stöd för SRv6-lÀgena End.DT4 och End.DT6 implementerats, som anvÀnds för att skapa fleranvÀndar-IP-Ätkomst pÄ IPv4 L3 VPN och VRF-enheter (Virtual Routing and Forwarding).
- I Netfilter har implementeringen av uttryck för set-enheter enhetliggjorts, vilket möjliggör att ange flera uttryck för varje element i set-listor.
- I det trÄdlösa 802.11-stacket har API:er för att konfigurera SAR-effektbegrÀnsningar, samt parametrarna AE PWE och HE MCS lagts till. I Intel iwlwifi-drivrutinen har stöd för 6GHz-bandet (Ultra High Band) lagts till. I Qualcomm Ath11k-drivrutinen har stöd för snabbt initialt lÀnkupprÀttande (FILS, Fast Initial Link Setup, standardiserat som IEEE 802.11ai) lagts till, vilket eliminerar fördröjningar vid roaming vid migration frÄn en Ätkomstpunkt till en annan.
- Utrustning
- I amdgpu-drivrutinen har stöd för AMD APU "Green Sardine" (Ryzen 5000) och GPU "Dimgrey Cavefish" (Navi 2) implementerats, liksom grundlÀggande stöd för AMD Van Gogh APU med Zen 2-kÀrna och RDNA 2 GPU (Navi 2). Stöd för nya identifierare för APU Renoir (baserat pÄ CPU Zen 2 och GPU Vega) har lagts till.
- I drivrutinen i915 för Intel-grafikkort har stöd för teknologin IS (Integer scaling) implementerats med en filterlösning för att öka skalan med beaktande av nÀrliggande pixlar (Nearest-neighbor-interpolering) för att bestÀmma fÀrgen pÄ saknade pixlar. Stödet för de diskreta Intel DG1-korten har utökats. Stödet för teknologin "Big Joiner" har implementerats, som har funnits sedan Ice Lake / Gen11-kretsarna och möjliggör anvÀndning av en transkoder för att bearbeta tvÄ strömmar, exempelvis för utmatning till en 8K-skÀrm via en DisplayPort. En asynkron vÀxlingslÀge mellan tvÄ buffertar i videominne (async flip) har lagts till.
- I drivrutinen nouveau har grundlÀggande stöd för NVIDIA GPU:er baserade pÄ mikroarkitekturen "Ampere" (GA100, GeForce RTX 30xx) lagts till, som för nÀrvarande Àr begrÀnsat till funktioner för att hantera videolÀgen.
- Stöd för protokollet 3WIRE, som anvÀnds i LCD-paneler, har lagts till. Stöd har lagts till för paneler novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 och ABT Y030XX067A 3.0. SÀrskilt kan nÀmnas stödet för panelerna till smartphones OnePlus 6 och 6T, vilket möjliggjorde laddning av enheter med ett oförÀndrat kÀrna.
- Stöd för den första diskreta USB4-hostkontrollern Intel Maple Ridge har lagts till.
- Stöd för ljudcodecs Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI och XCVR, Realtek RT715 och Qualcomm SM8250 har lagts till.
- Stöd har lagts till för ARM-plattformar, enheter och plattformar: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, Mikrotik baserade pÄ Marvell Prestera 98DX3236, servrar med Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol Helios64, Engicam PX30.Core.
- Inbyggt stöd för spelkonsolen Ouya baserad pÄ NVIDIA Tegra 3.
Samtidigt har den Latinamerikanska stiftelsen för fri programvara skapat en helt fri variant av kĂ€rna 5.11 â Linux-libre 5.11-gnu, som Ă€r rensad frĂ„n element i firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I den nya utgĂ„van har drivrutiner för qat_4xxx (crypto), lt9611uxcm (dsi/hdmi-brygga), ccs/smia++ (sensor), ath11k_pci, nxp ljudöverföring och mhi pci-kontroller rensats. Koden för att rensa bort blobbar i drivrutinerna och subsystemen amdgpu, btqca, btrtl, btusb, i915 csr har uppdaterats. Nya blobbar i m3 rproc, idt82p33 ptp-klocka och qualcomm arm64 har stĂ€ngts av.
KĂ€lla: opennet.ru
