Uppdatering av Linux-kÀrna 5.9

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds Är kÀrnlansering Linux 5.9. 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.

Huvud nyheter:

  • Minne och systemtjĂ€nster
    • SkĂ€rpt 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).
    • Tillagd stöd för mekanismen kcompactd för förhandskomprimering av minnessidor 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.
    • Tillagd stöd för komprimering av kĂ€rnavbilder med hjĂ€lp av algoritmen Zstandard (zstd).
    • Stöd för processorinstruktionen FSGSBASE, 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.
    • Tillagd 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 io_uring 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 har genomförts schemalĂ€ggning med hĂ€nsyn till bandbredden, implementerats, vilket möjliggör att fatta korrekta beslut pĂ„ asymmetriska system, sĂ„som ARM-baserade system DynamIQ 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 beskriver 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 har koden tagits bort, vilket möjliggör programmatisk rullning av text bakĂ„t (CONFIG_VGACON_SOFT_SCROLLBACK) mer Ă€n mĂ€ngden videominne i VGA-textlĂ€ge.
    • Omarbetad 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 sched_uclamp_util_min_rt_default 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 genomförd 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 ALSA och USB-stacken, i enlighet med nyligen antagna 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 har det tillkommit 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, har lagts till att 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.
    • Tillagd 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 har lagts till 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 zonerade 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 har möjligheten 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. Tillagd möjlighet att anvĂ€nda alternativa typer av kontrollsummor, andra Ă€n CRC32c.
    • Tillagd 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 garanteras 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 har möjligheten 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 tillagd 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Ä tillagd 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 (Universal Flash Storage).
    • 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 tillagd 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 har lagts till 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 har lagts till 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 har lagts till möjlighet att granska hĂ€ndelser relaterade till förĂ€ndringar i konfigurationen.
    • I nftables i netlink-API har lagts till 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 PRP (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 har lagts till 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 har lagts till stöd för 6GHz frekvens och spektral avkĂ€nning.
  • 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 kcov (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 schedutil (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 Rocket Lake och initialt stöd för diskreta kort Intel Xe DG1.
    • I drivrutinen amdgpu har initialt stöd lagts till för AMD GPU Navi 21 (Navy Flounder) och Navi 22 (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 denna funktion ett omslag runt modulen Crypt::UnixCrypt och utgör ingen fara, men i det levererade arkivet pĂ„ Sourceforge anropas kod som direkt refererar till \/etc\/shadow, men gör det genom en shell-konstruktion. För att genomföra attacken rĂ€cker det med att ange tecknet "|" i fĂ€ltet för det gamla lösenordet och koden efter detta kommer att köras med root-behörighet pĂ„ servern. 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 har lagts till stöd för ram-för-ram-integritetskontroll genom CRC (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 en ny enhet för att hantera belysningen pĂ„ mikrofonens aktiveringsknappar och ljudavstĂ€ngningen. en ny enhet 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 Loongson 7A1000.
    • 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 skapat
en variant ett helt fritt kĂ€rna 5.9 — Linux-libre 5.9-gnu, 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

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