Linux-kärnan version 5.11

Efter två månaders utveckling presenterade Linus Torvalds releasen av Linux-kärnan 5.11. Bland de mest anmärkningsvärda förändringarna: stöd för Intel SGX-enklaver, en ny mekanism för att avlyssna systemanrop, en virtuell hjälpbuss, ett förbud mot att montera moduler utan MODULE_LICENSE(), ett snabbt filtreringsläge för systemanrop i seccomp, uppsägning av stöd för ia64-arkitektur, överföring av WiMAX-teknik till "staging"-grenen, möjligheten att kapsla in SCTP i UDP.

Den nya versionen innehåller 15480 1991 korrigeringar från 72 12090 utvecklare, patchstorleken är 868025 MB (ändringarna påverkade 261456 46 filer, 5.11 16 rader kod lades till, 13 3 rader raderades). Cirka 4 % av alla ändringar som introduceras i XNUMX är relaterade till drivrutiner, cirka XNUMX % av ändringarna är relaterade till uppdatering av kod som är specifik för hårdvaruarkitekturer, XNUMX % är relaterade till nätverksstacken, XNUMX % är relaterade till filsystem och XNUMX % är relaterade till interna kärndelsystem.

Huvudsakliga innovationer:

  • Diskundersystem, I/O och filsystem
    • Flera monteringsalternativ har lagts till i Btrfs för användning vid återställning av data från ett skadat filsystem: "rescue=ignorebadroots" för montering, trots skador på vissa rotträd (omfattning, uuid, data omlokalisering, enhet, csum, ledigt utrymme), " rescue=ignoredatacsums" för att inaktivera kontrollsummasökning efter data och "rescue=all" för att samtidigt aktivera lägena 'ignorebadroots', 'ignoredatacsums' och 'nologreplay'. Monteringsalternativet "inode_cache", som tidigare var utfasat, har avbrutits. Koden har förberetts för att implementera stöd för block med metadata och data som är mindre än en sidstorlek (PAGE_SIZE), samt stöd för zonerad utrymmesallokeringsläge. Obuffrade (Direct IO) förfrågningar har flyttats till iomap-infrastrukturen. Prestandan för ett antal operationer har optimerats, i vissa fall kan accelerationen uppgå till tiotals procent.
    • XFS implementerar "needsrepair"-flaggan, som signalerar behovet av reparation. När denna flagga är inställd kan filsystemet inte monteras förrän flaggan återställs av verktyget xfs_repair.
    • Ext4 erbjuder endast buggfixar och optimeringar, samt kodrensning.
    • Återexport av filsystem monterade över NFS är tillåten (dvs en partition monterad via NFS kan nu exporteras via NFS och användas som en mellanliggande cache).
    • Close_range()-systemanropet, som tillåter en process att stänga en hel rad öppna filbeskrivningar på en gång, har lagt till ett CLOSE_RANGE_CLOEXEC-alternativ för att stänga deskriptorer i nära-på-exec-läge.
    • F2FS-filsystemet lägger till nya ioctl()-anrop för att tillåta användarutrymmeskontroll över vilka filer som lagras i komprimerad form. Lade till "compress_mode=" monteringsalternativ för att välja om komprimeringshanteraren ska placeras på kärnan eller i användarutrymmet.
    • Ger möjligheten att montera Overlayfs genom oprivilegierade processer med hjälp av ett separat användarnamnområde. För att verifiera överensstämmelse med implementeringen av säkerhetsmodellen genomfördes en fullständig kodrevision. Overlayfs lägger också till möjligheten att köra med kopior av filsystemsbilder genom att valfritt inaktivera UUID-kontroll.
    • Ceph-filsystemet har lagt till stöd för protokollet msgr2.1, som tillåter användning av AES-GCM-algoritmen vid överföring av data i krypterad form.
    • dm-multipath-modulen implementerar möjligheten att ta hänsyn till CPU-affinitet (“IO-affinitet”) när man väljer rutt för I/O-förfrågningar.
  • Minnes- och systemtjänster
    • En ny mekanism för avlyssning av systemsamtal har lagts till, baserad på prctl(), som låter dig generera undantag från användarutrymmet när du kommer åt ett specifikt systemanrop och emulera dess exekvering. Denna funktionalitet krävs i Wine och Proton för att emulera Windows-systemanrop, vilket är nödvändigt för att säkerställa kompatibilitet med spel och program som direkt utför systemanrop som kringgår Windows API (till exempel för att skydda mot obehörig användning).
    • Systemanropet userfaultfd(), designat för att hantera sidfel (åtkomst till icke-allokerade minnessidor) i användarutrymmet, har nu möjligheten att inaktivera undantagshantering som sker på kärnnivån för att göra det svårare att utnyttja vissa sårbarheter.
    • BPF-undersystemet har lagt till stöd för uppgiftslokal lagring, vilket ger databindning till en specifik BPF-hanterare.
    • Redovisningen av minnesförbrukning av BPF-program har gjorts om helt - en cgroup-kontroller har föreslagits istället för memlock rlimit för att hantera minnesanvändning i BPF-objekt.
    • BTF-mekanismen (BPF Type Format), som tillhandahåller typkontrollinformation i BPF-pseudokod, ger stöd för kärnmoduler.
    • Lade till stöd för shutdown(), renameat2() och unlinkat() systemanrop till det asynkrona I/O-gränssnittet io_uring. När du anropar io_uring_enter() har möjligheten att ange en timeout lagts till (du kan kontrollera stöd för argumentet för att ange en timeout med flaggan IORING_FEAT_EXT_ARG).
    • Ia64-arkitekturen som används i Intel Itanium-processorer har flyttats till kategorin föräldralösa, vilket innebär att testningen har upphört. Hewlett Packard Enterprise slutade ta emot beställningar på ny Itanium-utrustning, och Intel gjorde det förra året.
    • Stöd för system baserade på MicroBlaze-arkitekturen som inte inkluderar en minneshanteringsenhet (MMU) har upphört. Sådana system har inte setts i vardagen på länge.
    • För MIPS-arkitekturen har stöd för kodtäckningstestning lagts till med hjälp av gcov-verktyget.
    • Tillagt stöd för den virtuella hjälpbussen för gränssnitt med multifunktionsenheter som kombinerar funktionalitet som kräver olika drivrutiner (till exempel nätverkskort med Ethernet- och RDMA-stöd). Bussen kan användas för att tilldela en primär och sekundär drivrutin till en enhet, i situationer där användningen av MFD-delsystemet (Multi-Function Devices) är problematisk.
    • För RISC-V-arkitekturen har stöd lagts till för minnesallokeringssystemet CMA (Contiguous Memory Allocator), som är optimerat för att allokera stora sammanhängande minnesområden med hjälp av tekniker för förflyttning av minnessidor. För RISC-V implementeras även verktyg för att begränsa åtkomsten till /dev/mem och ta hänsyn till avbrottsbehandlingstid.
    • För 32-bitars ARM-system har stöd lagts till för felsökningsverktyget KASan (Kernel address Sanizer), som hjälper till att identifiera fel när man arbetar med minne. För 64-bitars ARM har KASan-implementeringen konverterats till att använda MTE-taggar (MemTag).
    • Lade till epoll_pwait2() systemanrop för att tillåta timeouts med nanosekunders precision (epoll_wait anrop manipulerar millisekunder).
    • Byggsystemet visar nu ett fel när man försöker bygga laddningsbara kärnmoduler där kodlicensen inte är definierad med makrot MODULE_LICENSE(). Från och med nu kommer användning av makrot EXPORT_SYMBOL() för statiska funktioner också att orsaka ett byggfel.
    • Lade till stöd för kartläggning av GEM-objekt från minne som används för I/O, vilket gjorde det möjligt att påskynda arbetet med framebuffern på vissa arkitekturer.
    • Kconfig har tagit bort stödet för Qt4 (samtidigt som stödet för Qt5, GTK och Ncurses).
  • Virtualisering och säkerhet
    • Stöd för ett snabbsvarsläge har lagts till seccomp()-systemanropet, vilket gör att du mycket snabbt kan avgöra om ett visst systemanrop är tillåtet eller förbjudet baserat på den konstantverkande bitmappen som är kopplad till processen, som inte kräver körning en BPF-hanterare.
    • Integrerade kärnkomponenter för att skapa och hantera enklaver baserade på Intel SGX (Software Guard eXtensions) teknologi, som gör att applikationer kan exekvera kod i isolerade krypterade minnesområden, som resten av systemet har begränsad tillgång till.
    • Som en del av ett initiativ för att begränsa åtkomsten från användarutrymmet till MSR (modellspecifikt register), skriva till MSR_IA32_ENERGY_PERF_BIAS-registret, vilket låter dig ändra processorns energieffektivitetsläge ("normal", "prestanda", "energibesparing"). , Det är förbjudet att.
    • Möjligheten att inaktivera migreringen av högprioriterade uppgifter mellan processorer har flyttats från kernel-rt-grenen för realtidssystem.
    • För ARM64-system har möjligheten att använda MTE-taggar (MemTag, Memory Tagging Extension) för signalhanterares minnesadresser lagts till. Användningen av MTE aktiveras genom att ange alternativet SA_EXPOSE_TAGBITS i sigaction() och låter dig kontrollera korrekt användning av pekare för att blockera exploatering av sårbarheter orsakade av åtkomst till redan frigjorda minnesblock, buffertspill, åtkomster före initiering och användning utanför nuvarande sammanhang.
    • Lade till parametern "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", som tillåter dm-verity-undersystemet att kontrollera hash-signaturer för certifikat placerade i den sekundära nyckelringen. I praktiken låter installationen dig verifiera inte bara certifikat inbyggda i kärnan, utan även certifikat som laddas under drift, vilket gör det möjligt att uppdatera certifikat utan att uppdatera hela kärnan.
    • Användarläge Linux har lagt till stöd för suspend-to-idle-läge, vilket gör att du kan frysa miljön och använda SIGUSR1-signalen för att vakna från viloläge.
    • Virtio-mem-mekanismen, som låter dig hot-plugga och koppla från minne till virtuella maskiner, har lagt till stöd för Big Block Mode (BBM), vilket gör det möjligt att överföra eller ta minne i block som är större än storleken på kärnminnet block, vilket är nödvändigt för att optimera VFIO i QEMU.
    • Stöd för CHACHA20-POLY1305-chifferet har lagts till i kärnimplementeringen av TLS.
  • Nätverksdelsystem
    • För 802.1Q (VLAN) har en anslutningsfelhanteringsmekanism (CFM, Connectivity Fault Management) implementerats, som låter dig identifiera, verifiera och isolera fel i nätverk med virtuella bryggor (Virtual Bridged Networks). Till exempel kan CFM användas för att isolera problem i nätverk som spänner över flera oberoende organisationer vars anställda bara har tillgång till sin egen utrustning.
    • Tillagt stöd för inkapsling av SCTP-protokollpaket i UDP-paket (RFC 6951), vilket gör att du kan använda SCTP på nätverk med äldre adressöversättare som inte direkt stöder SCTP, samt implementera SCTP på system som inte ger direkt åtkomst till IP:n lager.
    • Implementeringen av WiMAX-tekniken har flyttats till staging och är planerad att tas bort i framtiden om det inte finns några användare som behöver WiMAX. WiMAX används inte längre i offentliga nätverk, och i kärnan är den enda drivrutinen som WiMAX kan användas med den föråldrade Intel 2400m-drivrutinen. WiMAX-stödet avbröts i nätverkskonfiguratorn NetworkManager 2015. För närvarande är WiMax nästan helt ersatt av teknologier som LTE, HSPA+ och Wi-Fi 802.11n.
    • Arbete har gjorts för att optimera prestandan för bearbetning av inkommande TCP-trafik i nollkopieringsläge, d.v.s. utan ytterligare kopiering till nya buffertar. För medelstor trafik, som täcker tiotals eller flera hundra kilobyte data, är det märkbart mer effektivt att använda zerocopy istället för recvmsg(). Till exempel gjorde de implementerade ändringarna det möjligt att öka effektiviteten för bearbetning av RPC-liknande trafik med 32 KB-meddelanden vid användning av zerocopy med 60-70%.
    • Lade till nya ioctl()-anrop för att skapa nätverksbryggor som spänner över flera PPP-länkar. Den föreslagna möjligheten tillåter ramar att flytta från en kanal till en annan, till exempel från en PPPoE till en PPPoL2TP-session.
    • Integrering i kärnan av MPTCP (MultiPath TCP), en förlängning av TCP-protokollet för att organisera driften av en TCP-anslutning med leverans av paket samtidigt längs flera rutter genom olika nätverksgränssnitt associerade med olika IP-adresser. Den nya versionen introducerar stöd för alternativet ADD_ADDR för att annonsera tillgängliga IP-adresser som kan kopplas till när nya flöden läggs till i en befintlig MPTCP-anslutning.
    • Lagt till möjligheten att konfigurera åtgärder när anslutningens pollingbudget överskrids (upptagen polling). Det tidigare tillgängliga SO_BUSY_POLL-läget innebar att man bytte 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.
    • IPv6 implementerar stöd för SRv6 End.DT4 och End.DT6 lägen, som används för att skapa fleranvändare IPv4 L3 VPN och VRF (Virtual routing and forwarding) enheter.
    • Netfilter förenade implementeringen av set-uttryck, vilket gjorde det möjligt att specificera flera uttryck för varje element i setlistor.
    • API:er har lagts till den trådlösa 802.11-stacken för att konfigurera SAR-effektgränser, såväl som AE PWE- och HE MCS-parametrar. Stöd för 6GHz-området (Ultra High Band) har lagts till i Intel iwlwifi-drivrutinen. Qualcomm Ath11k-drivrutinen har lagt till stöd för FILS (Fast Initial Link Setup, standardiserad som IEEE 802.11ai), vilket gör att du kan bli av med roamingförseningar under migrering från en åtkomstpunkt till en annan.
  • Оборудование
    • Amdgpu-drivrutinen ger stöd för AMD "Green Sardine" APU (Ryzen 5000) och "Dimgrey Cavefish" GPU (Navi 2), samt initialt stöd för AMD Van Gogh APU med Zen 2-kärna och RDNA 2 GPU (Navi 2). Lade till stöd för nya Renoir APU-identifierare (baserad på Zen 2 CPU och Vega GPU).
    • i915-drivrutinen för Intel-grafikkort stöder IS (Integer scaling)-teknik med implementering av ett filter för att öka skalan med hänsyn till tillståndet för angränsande pixlar (Nearest-neighbor-interpolation) för att bestämma färgen på saknade pixlar. Stödet för diskreta Intel DG1-kort har utökats. Stöd för "Big Joiner"-teknologi har implementerats, som har funnits sedan Ice Lake / Gen11-chips och tillåter användning av en transcoder för att bearbeta två strömmar, till exempel för utmatning till en 8K-skärm via en DisplayPort. Lade till ett läge för asynkron växling mellan två buffertar i videominnet (async flip).
    • Nouveau-drivrutinen har lagt till initialt stöd för NVIDIA GPU:er baserade på Ampere-mikroarkitekturen (GA100, GeForce RTX 30xx), hittills begränsat till verktyg för att styra videolägen.
    • Tillagt stöd för 3WIRE-protokollet som används i LCD-paneler. Lagt till stöd för novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 och ABT Y030XX067A 3.0 paneler. Separat kan vi notera stödet för panelen på OnePlus 6 och 6T smartphones, vilket gjorde det möjligt att organisera laddningen av en omodifierad kärna på enheter.
    • Tillagt stöd för Intels första diskreta USB4-värdkontroller, Maple Ridge.
    • Lade till stöd för Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI och XCVR, Realtek RT715 och Qualcomm SM8250 audio codecs.
    • Tillagt stöd för ARM-kort, 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 Invotonada 2​NPM, 730​​NPNM, 382​​98NPM, 3236 ​Mikrotik baserat på Marvell Prestera 750DX8, servrar med Nuvoton NPCM64 BMC, Kontron i.MX30M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol HeliosXNUMX, Engicam PXXNUMX.Core.
    • Inbyggt stöd för Ouya-spelkonsolen baserad på NVIDIA Tegra 3.

Samtidigt bildade Latin American Free Software Foundation en version av den helt fria 5.11-kärnan - Linux-libre 5.11-gnu, rensat från element av firmware och drivrutiner som innehåller icke-fria komponenter eller kodsektioner, vars omfattning är begränsad av tillverkaren. Den nya utgåvan rengör drivrutiner för qat_4xxx (krypto), lt9611uxcm (dsi/hdmi-brygga), ccs/smia++ (sensor), ath11k_pci, nxp-ljudsändtagare och mhi pci-kontroller. Uppdaterad blob-rensningskod i drivrutiner och delsystem amdgpu, btqca, btrtl, btusb, i915 csr. Inaktiverade nya blobbar i m3 rproc, idt82p33 ptp klocka och qualcomm arm64.

Källa: opennet.ru

Lägg en kommentar