Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds kÀrnlansering . Bland de mest anmÀrkningsvÀrda Àndringarna finns: begrÀnsning av import av symboler frÄn proprietÀra moduler till GPL-moduler, snabbare kontextvÀxling med hjÀlp av CPU-instruktionen FSGSBASE, stöd för komprimering av kÀrnbilder med Zstd, omarbetning av prioriteringsscheman för trÄdar i kÀrnan, stöd för PRP (Parallel Redundancy Protocol), kapacitetsbaserad schemalÀggning i deadline-schemalÀggaren, förhandskomprimering av minnessidor, capability-flaggan CAP_CHECKPOINT_RESTOR, systemanropet close_range(), prestandaförbÀttringar för dm-crypt, borttagning av kod för 32-bitars gÀstsystem i Xen PV, en ny slab-minneshanteringsmekanism, alternativet 'rescue' i Btrfs och stöd för inline-kryptering i ext4 och F2FS.
I den nya versionen har 16074 korrigeringar frÄn 2011 utvecklare accepterats,
patchens storlek Àr 62 MB (Àndringarna berör 14548 filer, 782155 rader kod har lagts till, 314792 rader har tagits bort). Cirka 45% av allt som presenterades i 5.9
Àndringar Àr relaterade till enhetsdrivrutiner, cirka 15% av Àndringarna har
att göra med uppdatering av arkitekturanpassad kod, 13%
Àr relaterade till nÀtverksstacken, 3% till filsystem och 3% till interna
kÀrnunderavdelningar.
:
- Minne och systemtjÀnster
- skydd mot anvÀndning av GPL-lager för att binda proprietÀra drivrutiner till kÀrnkomponenter som endast exporteras för moduler under GPL-licensen. Flaggan TAINT_PROPRIETARY_MODULE Àr nuftverkat i alla moduler som importerar symboler frÄn moduler med denna flagga. Om en GPL-modul försöker importera symboler frÄn en icke-GPL-modul kommer denna GPL-modul att Àrva etiketten TAINT_PROPRIETARY_MODULE och kommer inte att kunna komma Ät kÀrnkomponenter som endast Àr tillgÀngliga för moduler under GPL-licensen, Àven om modulen tidigare har importerat symboler frÄn kategorin 'gplonly'. Den bakÄtriktade blockeringen (export endast EXPORT_SYMBOL_GPL i moduler som importerat EXPORT_SYMBOL_GPL), vilket kunde störa proprietÀra drivrutiner, har inte implementerats (endast den proprietÀra modulens flagg Àrvs, men inte GPL-bindningen).
- stöd för mekanismen kcompactd för i bakgrunden, som möjliggör en ökning av antalet stora minnessidor som Àr tillgÀngliga för kÀrnan. En preliminÀr uppskattning visar att bakgrundspaketering med minimal overhead kan minska latensen vid tilldelning av stora minnessidor (huge-page) med 70-80 gÄnger jÀmfört med den tidigare anvÀnda paketeringsmekanismen som aktiverades efter behov (on-demand). För att sÀtta grÀnser för den externa fragmenteringen som kommer att sÀkerstÀllas av kcompactd har sysctl vm.compaction_proactiveness lagts till.
- stöd för komprimering av kÀrnavbilder med hjÀlp av algoritmen (zstd).
- Stöd för processorinstruktionen , som gör det möjligt att lÀsa och Àndra innehÄllet i registren FS/GS frÄn anvÀndarutrymmet. I kÀrnan anvÀnds FSGSBASE för att pÄskynda kontextbyten genom att utesluta onödiga MSR-skrivningar för GSBASE, och i anvÀndarutrymmet gör det möjligt att undvika onödiga systemanrop för att Àndra FS/GS.
- parametern "allow_writes", som tillÄter att Àndringar av MSR-register i processorn förbjuds frÄn anvÀndarutrymmet och begrÀnsar Ätkomsten till innehÄllet i dessa register till lÀsoperationer, eftersom Àndringar av MSR kan leda till problem. Som standard Àr skrivning fortfarande tillÄten, och Àndringar av MSR Äterspeglas i loggen, men i framtiden planeras det att byta till standardÄtkomst i skrivskyddat lÀge.
- I grÀnssnittet för asynkron in-/utmatning fullstÀndigt stöd för asynkrona operationer för buffrad lÀsning har lagts till, vilket inte krÀver att kÀrntrÄdar aktiveras. Stöd för skrivning förvÀntas i nÀsta version.
- I deadline I/O-schemalÀggaren schemalÀggning med hÀnsyn till bandbredden, att fatta korrekta beslut pÄ asymmetriska system, sÄsom ARM-baserade system och big.LITTLE, som kombinerar kraftfulla och mindre prestandakraftiga energieffektiva CPU-kÀrnor pÄ en och samma chip. Specifikt gör det nya lÀget det möjligt att undvika osynkroniseringar i schemalÀggningen nÀr en lÄngsam CPU-kÀrna inte har tillrÀckliga resurser för att slutföra en uppgift inom deadline.
- Energimodellen i kÀrnan (Energy Model) omfattar nu inte bara CPU:ns energibeteende utan ocksÄ periferienheter.
- Systemanropet close_range() har implementerats, vilket tillÄter en process att stÀnga hela intervallet av öppna filbeskrivare pÄ en gÄng.
- FrÄn implementeringen av textkonsolen och drivrutinen fbcon , vilket möjliggör programmatisk rullning av text bakÄt (CONFIG_VGACON_SOFT_SCROLLBACK) mer Àn mÀngden videominne i VGA-textlÀge.
- algoritmen för prioritering av trÄdar inom kÀrnan. Den nya versionen sÀkerstÀller en bÀttre konsistens i alla subsystem i kÀrnan nÀr det kommer till prioritering av realtidsuppgifter.
- Sysctl har lagts till för att hantera parametrarna för tvingning av CPU-frekvensen för realtidsuppgifter (till exempel kan beteendet vid utförande av realtidsuppgifter Àndras pÄ plats för att spara energi efter att man har vÀxlat till batteriförsörjning eller pÄ mobila system).
- Förberedelser har gjorts för att implementera stödet för teknologin Transparent Huge Pages i sidcache.
- I fanotify-mekanismen har nya flaggor FAN_REPORT_NAME och FAN_REPORT_DIR_FID införts för att överföra information om det överordnade namnet och det unika FID-ID:t vid skapande-, borttagnings- eller flyttningshÀndelser av katalogelement och objekt som inte Àr relaterade till kataloger.
- För cgroups har en ny slab-minnescontroller introducerats, som kÀnnetecknas av att slab-registrering flyttats frÄn sidnivÄ till kÀrnobjektsnivÄ, vilket möjliggör delning av slab-sidor mellan olika cgroup istÀllet för att tilldela separata slab-cache för varje cgroup. Den föreslagna metoden ökar effektiviteten i anvÀndningen av slab, minskar storleken pÄ det reserverade slab-minnet med 30-45%, minskar den totala minnesanvÀndningen av kÀrnan och minskar fragmenteringen av minnet.
- I ljudsystemet och , i enlighet med rekommendationerna för anvÀndning av inkluderande terminologi i Linux-kÀrnan, har olÀmpliga termer rensats bort. Koden har rensats frÄn anvÀndningen av orden 'slave', 'master', 'blacklist' och 'whitelist'.
- Virtualisering och sÀkerhet
- NÀr kÀrnan byggs med kompilatorn Clang möjligheten att konfigurera (CONFIG_INIT_STACK_ALL_ZERO) automatisk initiering till noll av alla variabler som lagras pÄ stacken (vid byggnad anges '-ftrivial-auto-var-init=zero').
- I seccomp-systemet, nÀr processtyrningslÀget anvÀnds i anvÀndarrummet, ersÀttning i den övervakade processen för filbeskrivare för fullstÀndig emulering av systemanrop som leder till skapande av filbeskrivare. Funktionaliteten Àr efterfrÄgad i isolerade containrar och implementation av sandbox för Chrome.
- För arkitekturerna xtensa och csky har stöd för begrÀnsning av systemanrop lagts till med hjÀlp av seccomp-undersystemet. För xtensa har dessutom stöd för revisionsmekanismen implementerats.
- ny capability-flagga CAP_CHECKPOINT_RESTORE som gör det möjligt att ge Ätkomst till funktioner relaterade till frysa och ÄterstÀlla processers tillstÄnd utan att överföra ytterligare privilegier.
- I GCC 11 har alla funktioner som behövs för
debuggingverktyget KCSAN (Kernel Concurrency Sanitizer) implementerats, avsett för dynamisk upptÀckte av racevillkor inuti kÀrnan. DÀrmed kan KCSAN nu anvÀndas med kÀrnor byggda i GCC. - För AMD Zen och nyare CPU:er stöd för P2PDMA-teknologi, vilket möjliggör anvÀndning av DMA för direkt dataöverföring mellan minnet av tvÄ enheter som Àr kopplade till PCI-bussen.
- I dm-crypt har ett lÀge lagts till för att minska latens genom att utföra kryptografisk bearbetning av data utan att anvÀnda arbet queues. Detta lÀge Àr ocksÄ nödvÀndigt för korrekt funktion med blockenheter (enheter med omrÄden som mÄste skrivas sekventiellt med komplett uppdatering av hela gruppen av block). Arbetet har utförts för att öka kapaciteten och minska latensen i dm-crypt.
- Koden för att stödja 32-bitars gÀstsystem som arbetar i para-virtualiseringslÀge under Xen hypervisor har tagits bort. AnvÀndare av sÄdana system uppmanas att övergÄ till att anvÀnda 64-bitars kÀrnor i gÀstmiljöer eller att anvÀnda full (HVM) eller kombinerad (PVH) virtualisering istÀllet för para-virtualisering (PV).
- Disksubsystem, in- och utmatning och filsystem
- I filsystemet Btrfs monteringsalternativet "rescue", som enhetliggör Ätkomsten till alla andra alternativ för ÄterstÀllning. Stödet för alternativen "alloc_start" och "subvolrootid" har tagits bort, medan alternativet "inode_cache" har avbrutits. Prestanda har optimerats, vilket mÀrkbart har ökat hastigheten pÄ fsync()-operationer. möjlighet att anvÀnda alternativa typer av kontrollsummor, andra Àn CRC32c.
- möjlighet att anvÀnda inline-kryptering (Inline Encryption) i filsystemen ext4 och F2FS, dÀr en monteringsoption "inlinecrypt" Àr tillgÀnglig för att aktivera detta. Inline-krypteringslÀget gör det möjligt att anvÀnda de krypteringsmekanismer som Àr inbyggda i lagringskontrollern, vilket möjliggör transparent kryptering och dekryptering av in-/utdata.
- I XFS inodÄterstÀllning (flush) i helt asynkront lÀge, som inte blockerar processer under minnesrensningsoperationen. Ett lÄngvarigt problem med kvoter har lösts, vilket tidigare hade orsakat felaktig spÄrning av varningar för överskridande av mjuka grÀnser och inodbegrÀnsningar. Stödet för DAX har enhetsanpassats för bÄde ext4 och xfs.
- I Ext4 förhandsladning av bitkartan för blockdistribution. I kombination med begrÀnsningen av genomsökning av oinitialiserade grupper, har optimeringen minskat monteringtiden för mycket stora partitioner.
- I F2FS ioctl F2FS_IOC_SEC_TRIM_FILE, som möjliggör anvÀndning av TRIM/discard-kommandon för fysisk nollstÀllning av angivna data i filen, exempelvis för att ta bort Ätkomstnycklar utan att lÀmna kvar restdata pÄ lagringsenheten.
I F2FS finns ocksÄ ett nytt skrÀpuppsamlinglÀge GC_URGENT_LOW, som arbetar mer aggressivt genom att exkludera vissa kontroller av inaktivitet (idle) innan skrÀpuppsamlaren startar. - I bcache har storleken pÄ bucket_size för extens blivit ökad frÄn 16 till 32 bitar som en del av förberedelserna för att möjliggöra anvÀndning för cache av zonerade enheter.
- Till SCSI-subsystemet har möjligheten att anvÀnda inline-kryptering baserad pÄ inbyggda hÄrdvarukrypteringsfunktioner som tillhandahÄlls av UFS-kontrollerna lagts till ().
- En ny kÀrnkommandoradparameter "debugfs" har lagts till, vilket gör det möjligt att hantera tillgÀngligheten av den med namn lika pseudofilsystemet.
- I NFSv4.2-klienten har stöd för utökade filattribut (xattr) sÀkerstÀllts.
- I dm-dust grÀnssnittet för att lista alla identifierade dÄliga block pÄ disken ("dmsetup message dust1 0 listbadblocks").
- För md/raid5 har parametern /sys/block/md1/md/stripe_size lagts till för att justera storleken pÄ STRIPE-blocket.
- För NVMe-lagringsenheter stöd för kommandon för zonering av lagringsenheter (ZNS, NVM Express Zoned Namespace), vilket möjliggör uppdelning av lagringsutrymmet i zoner som bestÄr av blockgrupper för mer fullstÀndig hantering av datalagring.
- NĂ€tverkssystemet
- I Netfilter möjlighet att avvisa paket vid steget innan routingkontroll (uttrycket REJECT kan nu anvÀndas inte bara i INPUT, FORWARD och OUTPUT kedjor utan Àven vid PREROUTING-steget för icmp och tcp).
- I nftables möjlighet att granska hÀndelser relaterade till förÀndringar i konfigurationen.
- I nftables i netlink-API stöd för anonyma kedjor vars namn tilldelas dynamiskt av kÀrnan. NÀr en regel kopplad till en anonym kedja raderas, raderas Àven kedjan automatiskt.
- I BPF har stöd för iteratorer lagts till för att traversera, filtrera och Àndra element i associativa arrayer (map) utan att kopiera data till anvÀndarutrymmet. Iteratorer kan anvÀndas för TCP- och UDP-sockets, vilket gör att BPF-program kan iterera över öppna sockets och extrahera nödvÀndig information.
- En ny typ av BPF-program BPF_PROG_TYPE_SK_LOOKUP har lagts till, som körs nÀr kÀrnan söker efter en lÀmplig lyssnande socket för en inkommande anslutning. Med hjÀlp av sÄdana BPF-program kan man skapa hanterare som fattar beslut om vilken socket som ska associeras med anslutningen, utan att begrÀnsas av systemanropet bind(). Till exempel kan man organisera bindning av en socket till ett intervall av adresser eller portar. Dessutom har stöd för flaggan SO_KEEPALIVE lagts till i bpf_setsockopt() och möjligheten att stÀlla in hanterare BPF_CGROUP_INET_SOCK_RELEASE, som anropas nÀr en socket frigörs.
- Stöd för protokollet (Parallel Redundancy Protocol), som möjliggör transparent vÀxling till en reservkanal i hÀndelse av fel pÄ nÄgot nÀtverkskomponent baserat pÄ Ethernet.
- I mac80211-stacken stöd för fyra-stegs kanalförhandling WPA/WPA2-PSK i accesspunktslÀge.
- Möjlighet att vÀxla qdisc-schemalÀggaren (queuing discipline) till att som standard anvÀnda FQ-PIE-algoritmen för nÀtverkskötning, som syftar till att minska den negativa pÄverkan av temporÀr buffrande av paket pÄ grÀnsenhet (bufferbloat) i nÀtverk med kabelmodem.
- Nya funktioner har lagts till i MPTCP (MultiPath TCP), en utvidgning av TCP-protokollet för att organisera TCP-anslutningar med paketleverans över flera vÀgar genom olika nÀtverksgrÀnssnitt kopplade till olika IP-adresser. Stöd har lagts till för syn-cookie, DATA_FIN, automatisk justering av buffertar, diagnostik av sockets och anvÀndning av flaggorna REUSEADDR, REUSEPORT och V6ONLY i setsockopt.
- För virtuella routingtabeller VRF (Virtual Routing and Forwarding), som möjliggör drift av flera routingdomÀner pÄ ett system, har lÀget "strict" implementerats. I detta lÀge kan den virtuella tabellen endast kopplas till routingtabellen, som inte anvÀnds i andra virtuella tabeller.
- I den trÄdlösa drivrutinen ath11k stöd för 6GHz frekvens och .
- Utrustning
- Koden för att stödja UniCore-arkitekturen, utvecklad vid mikroprocessorcentret vid Pekinguniversitetet och inkluderad i Linux-kÀrnan 2011, har tagits bort. Denna arkitektur har varit osupporterad sedan 2014 och har inget stöd i GCC.
- Stöd för RISC-V-arkitekturen har implementerats för (debugfs-grÀnssnitt för att analysera kÀrnkodtÀckning), kmemleak (system för att upptÀcka minneslÀckor), stackskydd, hoppmarkeringar och tickless-operationer (signaloberoende timer-multitasking).
- För PowerPC-arkitekturen har stöd för köer för spinlock implementerats, vilket har ökat prestandan avsevÀrt i situationer med lÄs-konflikter.
- För ARM- och ARM64-arkitekturer har mekanismen för processtaktreglering (cpufreq governor) aktiverats som standard, som anvÀnder information frÄn schemalÀggaren direkt för att besluta om förÀndringar i frekvensen och kan omedelbart kontakta cpufreq-drivrutiner för att snabbt förÀndra frekvensen, vilket justerar CPU:ns arbetsparametrar till den nuvarande belastningen.
- I DRM-drivrutinen i915 för Intel-grafikkort har stöd för chips baserade pÄ mikroarkitekturen och initialt stöd för diskreta kort .
- I drivrutinen amdgpu har initialt stöd lagts till för AMD GPU (Navy Flounder) och (Sienna Cichlid). Stöd har lagts till för kodnings- och avkodningsaccelerationsmotorer UVD/VCE för GPU Southern Islands (Radeon HD 7000).
Ett egenskap för att rotera visningen med 90, 180 eller 270 grader har lagts till.Intressant nog, drivrutinen för AMD GPU den största drivrutinen i kĂ€rnan â den innehĂ„ller cirka 2,71 miljoner kodrader, vilket Ă€r ungefĂ€r 10% av den totala storleken pĂ„ kĂ€rnan (27,81 miljoner rader). Av dessa utgör 1,79 miljoner rader automatiskt genererade headerfiler med data för GPU-register, och C-koden bestĂ„r av 366 tusen rader (för jĂ€mförelse ingĂ„r Intel i915-drivrutinen 209 tusen rader, medan Nouveau innehĂ„ller 149 tusen).
- I Nouveau-drivrutinen stöd för ram-för-ram-integritetskontroll genom (Cyclic Redundancy Checks) i GPU NVIDIA:s displaymotorer. Implementeringen baseras pÄ dokumentationen som tillhandahÄlls av NVIDIA.
- Drivrutiner för LCD-paneler har lagts till: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 och Xingbangda XBD599.
- I ljudsystemet ALSA har stöd för för att hantera belysningen pÄ mikrofonens aktiveringsknappar och ljudavstÀngningen. för att styra belysningen av mikrofonens aktiveringsknappar och ljudavstÀngningsknappen lagts till, och Àven stöd för ny hÄrdvara har lagts till, inklusive kontrollern .
- Stöd för ARM-plattor, enheter och plattformar har lagts till: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (som anvÀnds i Sony Xperia 10, 10 Plus, XA2, XA2 Plus och XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, fem nya kort baserade pÄ NXP i.MX6, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H.
Samtidigt har den Latinamerikanska stiftelsen för fri programvara
en variant â , rengjord frĂ„n firmware- och drivrutinskomponenter som innehĂ„ller icke-fri programvara eller koddela vars anvĂ€ndningsomrĂ„de Ă€r begrĂ€nsat av tillverkaren. I den nya versionen har laddning av blobbar i drivrutinerna för WiFi rtw8821c och SoC MediaTek mt8183 stĂ€ngts av. Koden för rengöring av blobbar i drivrutiner och subsystem Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) och x86 touchscreen har uppdaterats.
KĂ€lla: opennet.ru
