Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds slÀppet av kÀrnan Linux 5.12. Bland de mest anmÀrkningsvÀrda förÀndringarna finns: stöd för zonerade blockenheter i Btrfs, möjlighet att mappa anvÀndaridentifierare för filsystem, rensning av förÄldrade ARM-arkitekturer, lÀge för "otÄlig" skrivning i NFS, mekanism LOOKUP_CACHED för att bestÀmma filvÀgar frÄn cache, stöd för atomiska instruktioner i BPF, felsystemet KFENCE för att upptÀcka fel vid minneshantering, ett lÀge för NAPI-polling i nÀtverksstacken som körs i en separat kÀrntrÄd, hypervisorn ACRN, möjlighet att Àndra preempt-modellen i schemalÀggaren i realtid och stöd för LTO-optimeringar vid byggnation i Clang.
I den nya versionen har 14170 (i föregÄende version 15480) korrigeringar införts av 1946 (1991) utvecklare, patchstorleken Àr 38 MB (förÀndringar har pÄverkat 12102 (12090) filer, 538599 (868025) kodrader har lagts till, 333377 (261456) kodrader har tagits bort). UngefÀr 43 % av alla förÀndringar i 5.12 Àr relaterade till enhetsdrivrutiner, cirka 17 % av förÀndringarna rör uppdatering av arkitektspecifik kod, 12 % Àr relaterade till nÀtverksstacken, 5 % till filsystem och 4 % till interna delsystem i kÀrnan.
Huvudsakliga nyheter:
- Disksubsystem, in- och utmatning och filsystem
- Möjligheten att mappa anvÀndaridentifierare för monterade filsystem har implementerats (filer frÄn en anvÀndare pÄ en monterad annan partition kan kopplas till en annan anvÀndare i det aktuella systemet). Mappning stöds för filsystem FAT, ext4 och XFS. Den föreslagna funktionen möjliggör enklare fildelning mellan olika anvÀndare och datorer, inklusive mappning som kommer att tillÀmpas i mekanismen för flyttbara hemkataloger systemd-homed, vilket gör det möjligt för anvÀndare att flytta sina hemkataloger till externa lagringsenheter och anvÀnda dem pÄ olika datorer dÀr anvÀndaridentifierarna inte matchar. En annan anvÀndbar tillÀmpning Àr att organisera delning av filer frÄn en extern vÀrd, utan att faktiskt Àndra Àgarinformation i filsystemet.
- I kÀrnan har patchar för LOOKUP_CACHED införts, vilket möjliggör att utföra filvÀgsbestÀmning frÄn anvÀndarutrymmet utan blockering, endast baserat pÄ data som finns i cacheminnet. Modus LOOKUP_CACHED aktiveras i anropet openat2() genom att skicka flaggan RESOLVE_CACHED, vid vilken tidpunkt data endast ges frÄn cacheminnet, och om vÀgsbestÀmningen krÀver Ätkomst till lagringen returneras felet EAGAIN.
- I filsystemet Btrfs har grundlÀggande stöd för zonerade blockenheter lagts till (enheter pÄ magnetiska hÄrddiskar eller NVMe SSD, dÀr lagringsutrymmet Àr uppdelat i zoner som bestÄr av grupper av block eller sektorer, dÀr data endast fÄr lÀggas till sekventiellt med en uppdatering av hela blockgruppen). I skrivskyddat lÀge stöds block med metadata och data som Àr mindre Àn en sida (subpage).
- I filsystemet F2FS har möjligheten att vÀlja algoritm och komprimeringsnivÄ införts. Stöd för hög nivÄ av komprimering för LZ4-algoritmen har lagts till. En monteringsoption för checkpoint_merge har implementerats.
- En ny ioctl-kommand FS_IOC_READ_VERITY_METADATA har implementerats för att lÀsa metadata frÄn filer skyddade med fs-verity.
- I NFS-klienten har ett lÀge med "ivrig" skrivning (writes=eager) implementerats, dÀr skrivoperationer omedelbart skickas till servern, vilket omgÄr sidcacheminnet. Detta lÀge minskar minnesanvÀndningen, ger omedelbar information om den lediga platsens status i filsystemet och kan i vissa situationer öka prestandan.
- I CIFS (SMB) har nya monteringsalternativ lagts till: acregmax för att hantera cacheminnet för filer och acdirmax för att hantera cacheminnet för metadata för kataloger.
- I XFS har lÀget för flertrÄdad kontroll av kvoter aktiverats, fsync-exekveringen har pÄskyndats och kod för growfs har förberetts för att införa funktionen för att minska storleken pÄ filsystemet.
- Minne och systemtjÀnster
- En DTMP (Dynamic Thermal Power Management) delsystem har lagts till, vilket möjliggör dynamisk reglering av energiförbrukningen för olika enheter baserat pÄ angivna gemensamma temperaturbegrÀnsningar.
- Möjligheten att kompilera kÀrnan med Clang-kompilatorn har implementerats med inkludering av optimeringar under lÀnkning (LTO, Link Time Optimization). LTO-optimeringar tar hÀnsyn till tillstÄndet hos alla filer som deltar i byggprocessen, medan traditionella optimeringslÀgen optimerar varje fil enskilt och inte beaktar anrop av funktioner som definieras i andra filer. Till exempel, vid LTO Àr det möjligt att göra inline-utveckling för funktioner frÄn andra filer, och oanvÀnd kod inkluderas inte i det körbara programmet, typkontroll utförs och en övergripande optimering pÄ projektets nivÄ möjliggörs. Stödet för LTO Àr för nÀrvarande begrÀnsat till arkitekturerna x86 och ARM64.
- Möjligheten att vĂ€lja preemptionslĂ€gen (PREEMPT) i schemalĂ€ggaren har tillhandahĂ„llits under startfasen (preempt=none/voluntary/full) eller under drift via debugfs (/debug/sched_debug), om PREEMPT_DYNAMIC-instĂ€llningen anges vid kompilering av kĂ€rnan. Tidigare kunde preemption-lĂ€get endast anges pĂ„ byggparameter-nivĂ„. Ăndringen gör att distributioner kan leverera kĂ€rnor med aktiverat PREEMPT-lĂ€ge, vilket ger minimala fördröjningar för skrivbordsmiljöer till priset av en obetydlig minskning av genomströmningen, och vid behov Ă„tergĂ„ till lĂ€gena PREEMPT_VOLUNTARY (intermediĂ€rt lĂ€ge för skrivbord) eller PREEMPT_NONE (ger maximal genomströmning för servrar).
- Systemet BPF har fÄtt stöd för atomÀra operationer BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG och BPF_CMPXCHG.
- BPF-program har fÄtt möjlighet att fÄ Ätkomst till data i stacken med hjÀlp av pekare med varierande förskjutning. Till exempel, om Ätkomst till en array i stacken tidigare endast kunde göras med ett konstant index för elementet, kan nu ett förÀndrat index anvÀndas. Kontrollen av Ätkomsten inom befintliga grÀnser genomförs av BPF-verifieraren. Denna möjlighet Àr endast tillgÀnglig för privilegerade program pÄ grund av oro kring exploatering av sÄrbarheter relaterade till spekulativ kodexekvering.
- Möjligheten att koppla BPF-program till "bare" spÄrpunkter, som inte Àr kopplade till synliga anvÀndarhÀndelser för spÄrning, har lagts till (det finns ingen garanti för ABI-bevarande för sÄdana spÄrpunkter).
- Stöd för CXL 2.0-bussen (Compute Express Link) har implementerats, vilket anvÀnds för att organisera högförsiktig interaktion mellan CPU och minnesenheter (möjliggör anvÀndningen av externa minnesenheter som en del av RAM eller permanent minne, som om detta minne var anslutet via den inbyggda minneskontrollern i CPU).
- En nvmem-drivrutin har lagts till för att hÀmta data frÄn minnesomrÄden som Àr reserverade av firmware och som Àr direkt otillgÀngliga för Linux (till exempel EEPROM-minne, som endast Àr fysiskt Ätkomligt av firmware, eller data som endast Àr tillgÀngliga under den tidiga laddningen).
- Stödet för profileringssystemet 'oprofile' har tagits bort, vilket inte fick tillrÀcklig spridning och har ersatts av den mer moderna mekanismen perf.
- I grÀnssnittet för asynkron in-/utmatning io_uring har integration med cgroup, som kontrollerar anvÀndningen av minne, sÀkerstÀllts.
- Stöd för NUMA-system och mekanismer som kprobes och uprobes har implementerats för RISC-V-arkitekturen.
- Möjligheten att anvÀnda systemanropet kcmp() oberoende av funktionaliteten hos processens tillstÄndssnapshots (checkpoint/restore) har lagts till.
- Makron EXPORT_UNUSED_SYMBOL() och EXPORT_SYMBOL_GPL_FUTURE() har tagits bort, vilka inte har anvÀnts i praktiken pÄ mÄnga Är.
- Virtualisering och sÀkerhet
- En skyddsmekanism KFence (Kernel Electric Fence) har lagts till, som fÄngar fel vid arbete med minne, sÄsom bufferöverflöd och Ätkomst efter att minnet har frigjorts. Till skillnad frÄn den debug-mekanismen KASAN, kÀnnetecknas KFence-subsystemet av hög hastighet och lÄga overheadkostnader, vilket möjliggör fÄngande av minneshanteringsfel som endast uppstÄr i arbetsmiljöer eller vid lÄngvarig drift.
- Stöd för hypervisorn ACRN har lagts till, skriven med fokus pĂ„ beredskap för att utföra realtidsuppgifter och lĂ€mplighet för anvĂ€ndning i kritiska system. ACRN sĂ€kerstĂ€ller minimala overheadkostnader, garanterar lĂ„g fördröjning (low latency) och adekvat responsivitet vid interaktion med hĂ„rdvara. Virtualisering av resurser för CPU, in-/utmatning, nĂ€tverksunderbyggnad, grafik och ljudoperationer stöds. ACRN kan anvĂ€ndas för att köra flera isolerade... virtuella maskiner i elektroniska styrenheter, instrumentpaneler, fordonskommunikationssystem, konsumenters IoT-enheter och annan inbyggd teknik. ACRN stöder tvĂ„ typer av gĂ€stsystem â privilegierade Service VM som anvĂ€nds för att hantera systemresurser (CPU, minne, in-/utmatning etc.), och anvĂ€ndarbaserade User VM dĂ€r Linux-distributioner, Android och Windows kan köras.
- I IMA (Integrity Measurement Architecture) subsystemet, som sÀkerstÀller upprÀtthÄllandet av en hash-databas för att kontrollera integriteten av filer och relaterad metadata, har det tillkommit en möjlighet att kontrollera integriteten av sjÀlva kÀrndata, exempelvis för att spÄra förÀndringar i SELinux-regler.
- Hypervisor KVM har fÄtt möjlighet att fÄnga hyperanrop frÄn Xen och vidarebefordra dem till en emulator som körs i anvÀndarrummet.
- Det har lagts till stöd för att anvÀnda Linux som root-miljö för hypervisorn Hyper-V. Root-miljön har direkt Ätkomst till hÄrdvaran och anvÀnds för att köra gÀstsystem (motsvarar Dom0 i Xen). Tidigare har Hyper-V (Microsoft Hypervisor) endast stött Linux i gÀstmiljöer, men sjÀlva hypervisorn styrdes frÄn en Windows-baserad miljö.
- Inline-kryptering har lagts till för eMMC-kort, vilket möjliggör anvÀndning av inbyggda krypteringsmekanismer i lagringskontrollern som genomför transparent kryptering och dekryptering av in-/utmatning.
- Understödet för de oanvÀnda RIPE-MD 128/256/320 och Tiger 128/160/192 hash-algoritmerna har tagits bort frÄn kryptosubsystemet, liksom strömmande krypteringsalgoritmen Salsa20, vilken har ersatts av algoritmen ChaCha20. Algoritmen blake2 har uppdaterats till blake2s-implementationen.
- NĂ€tverkssystemet
- Möjligheten att flytta NAPI polling-handlern för nÀtverksenheter till en separat kÀrntrÄd har lagts till, vilket möjliggör bÀttre prestanda för vissa typer av belastningar. Tidigare utfördes polling i kontexten av softirq och omfattades inte av schemalÀggaren, vilket gjorde det svÄrt att genomföra finjusteringar för att uppnÄ maximal prestanda. Genom att köra i en separat kÀrntrÄd kan man övervaka polling-handlaren frÄn anvÀndarrummet, koppla den till separata CPU-kÀrnor och beakta den i schemalÀggningen av uppgiftsswitchar. För att aktivera det nya lÀget har parametern \/sys\/class\/net\/\/threaded föreslagits i sysfs.
- Integration in the MPTCP (MultiPath TCP) core has been continued, which is an extension of the TCP protocol for the operation of TCP connections with the delivery of packets simultaneously over multiple routes through different network interfaces linked to different IP addresses. The new release includes the ability to attach priority to specific flows, enabling, for instance, the activation of backup flows that engage only when there are issues with the primary flow.
- Support for the EHT (Explicit Host Tracking) mechanism has been added in IGMPv3.
- In the netfilter packet filtering mechanism, ownership capabilities for specific tables have been implemented to achieve exclusive control (for example, a background firewall process can secure certain tables, preventing anyone else from interfering with them).
- Utrustning
- A cleanup of deprecated and unsupported ARM platforms has been carried out. Code for platforms efm32, picoxcell, prima2, tango, u300, zx, and c6x, as well as their associated drivers, has been removed.
- In the amdgpu driver, overclocking (OverDrive) capability for GPUs based on the Sienna Cichlid (Navi 22, Radeon RX 6xxx) has been implemented. Support for the FP16 pixel format for DCE (display controller engine) from the 8th to the 11th generation has been added. A reset option for the GPU has been implemented for the Navy Flounder (Navi 21) and APU Van Gogh.
- In the i915 driver for Intel graphics cards, the i915.mitigations parameter has been implemented to disable isolation and protection mechanisms in favor of performance enhancement. Support for the VRR (Variable Rate Refresh) mechanism has been enabled for chips starting from Tiger Lake, adapting the monitor refresh rate for smoothness and eliminating stuttering during gaming. Intel Clear Color technology has been integrated to enhance color accuracy. Support for DP-HDMI 2.1 has been included. Control over the backlighting of eDP panels has been realized. For Gen9 GPUs supporting LSPCON (Level Shifter and Protocol Converter), HDR support has been enabled.
- Initial support for NVIDIA GPUs based on the GA100 (Ampere) architecture has been added in the nouveau driver.
- Support for GPUs Adreno 508, 509, and 512, used in SDM (Snapdragon) 630, 636, and 660 chips, has been added in the msm driver.
- Support for the Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s, and Pioneer DJM-750 sound cards has been added. Support for the audio subsystem Intel Alder Lake PCH-P has been introduced. Software simulation of audio jack connection and disconnection for debugging user space handlers has been implemented.
- Stöd för spelkonsolerna Nintendo 64, som tillverkades mellan 1996 och 2003, har lagts till (tidigare försök att portera Linux till Nintendo 64 har inte genomförts framgÄngsrikt och har haft statusen Vaporware). Motivet bakom skapandet av en ny port för en förÄldrad plattform som inte har tillverkats pÄ nÀstan tjugo Är Àr att stimulera utvecklingen av emulatorer och förenkla portningen av spel.
- En drivrutin för spelkontrollen Sony PlayStation 5 DualSense har lagts till.
- Stöd för ARM-plattformar, enheter och plattformar har lagts till: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
- Stöd för smartphones som Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 har lagts till.
- Drivrutinen bcm-vk har lagts till för acceleratorplattor frÄn Broadcom VK (t.ex. PCIe-plattor som Valkyrie och Viper), vilket kan anvÀndas för att avlasta ljud-, video- och bildbehandling samt kryptografiska operationer till en separat enhet.
- Stöd för Lenovo IdeaPad-plattformen med möjlighet att styra konstant laddning och bakgrundsbelysning av tangentbordet har lagts till. ACPI-profilen för ThinkPad-plattformen har ocksÄ stöd för energiförvaltningslÀgen. En drivrutin för HID-systemet Lenovo ThinkPad X1 Tablet Gen 2 har lagts till.
- Drivrutinen ov5647 har lagts till med stöd för en kameramodul för Raspberry Pi.
- Stöd för RISC-V SoC FU740 och HiFive Unleashed-plattor har lagts till. En ny drivrutin för chipet Kendryte K210 har ocksÄ lagts till.
KĂ€lla: opennet.ru
