Linux-kärnan version 5.9

Efter två månaders utveckling, Linus Torvalds lämnats kärnrelease Linux 5.9. Bland de mest anmärkningsvärda förändringarna: begränsning av importen av symboler från proprietära moduler till GPL-moduler, snabbare kontextväxlingsoperationer med FSGSBASE-processorinstruktionen, stöd för kärnbildskomprimering med Zstd, omarbetning av prioriteringen av trådar i kärnan, stöd för PRP:n (Parallell Redundancy Protocol) , bandbreddsmedveten schemaläggning i deadline-schemaläggaren, förebyggande packning av minnessidor, capability-flagga CAP_CHECKPOINT_RESTOR, close_range() systemanrop, dm-crypt prestandaförbättringar, kodborttagning för 32-bitars Xen PV-gäster, nytt skivminne hanteringsmekanism, alternativ "räddning" i Btrfs, stöd för inline-kryptering i ext4 och F2FS.

Den nya versionen innehåller 16074 korrigeringar från 2011 utvecklare,
patchstorlek - 62 MB (ändringar påverkade 14548 filer, 782155 rader kod lades till, 314792 rader raderades). Cirka 45 % av alla presenterade i 5.9
ändringar är relaterade till drivrutiner, ungefär 15 % av ändringarna är det
attityd till att uppdatera kod som är specifik för hårdvaruarkitekturer, 13 %
relaterat till nätverksstacken, 3 % till filsystem och 3 % till interna
kärnsubsystem.

Den huvudsakliga innovationer:

  • Minnes- och systemtjänster
    • Åtdragna skydd mot användning av GPL-lager för att länka proprietära drivrutiner med kärnkomponenter som endast exporteras för moduler under GPL-licensen. Flaggan TAINT_PROPRIETARY_MODULE ärvs nu 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 den GPL-modulen att ärva etiketten TAINT_PROPRIETARY_MODULE och kommer inte att kunna komma åt kärnkomponenter som endast är tillgängliga för GPL-licensierade moduler, även om modulen tidigare har importerat symboler från kategorin "gplonly". Det omvända låset (exporterar endast EXPORT_SYMBOL_GPL i moduler som importerade EXPORT_SYMBOL_GPL), vilket kan bryta arbetet med proprietära drivrutiner, implementeras inte (endast den proprietära modulflaggan ärvs, men inte GPL-bindningarna).
    • Lagt till kcompactd motorstöd för förpackning av minnessidor i bakgrunden för att öka antalet stora minnessidor som är tillgängliga för kärnan. Enligt preliminära uppskattningar kan bakgrundspaketering, till priset av minimala omkostnader, minska förseningar vid allokering av stora minnessidor (stor sida) med 70-80 gånger jämfört med den tidigare använda förpackningsmekanismen, som lanseras när behovet uppstår (on-demand) ). För att sätta gränserna för den externa fragmenteringen som kcompactd kommer att tillhandahålla har sysctl vm.compaction_proactiveness lagts till.
    • Lagt till stöd för kärnbildskomprimering med hjälp av algoritm ZStandard (zstd).
    • Stöd för processorinstruktioner har implementerats för x86-system FSGSBASE, som låter dig läsa och ändra innehållet i FS/GS-registren från användarutrymmet. I kärnan används FSGSBASE för att påskynda kontextväxlingsoperationer genom att eliminera onödiga MSR-skrivoperationer för GSBASE, och i användarutrymme undviker den onödiga systemanrop för att ändra FS/GS.
    • tillsatt parametern "allow_writes" låter dig förbjuda ändringar av processorns MSR-register från användarutrymmet och begränsa åtkomsten till innehållet i dessa register för att läsa operationer, eftersom ändring av MSR kan leda till problem. Som standard är skrivning ännu inte inaktiverad, och ändringar i MSR återspeglas i loggen, men i framtiden är det planerat att byta standardåtkomst till skrivskyddat läge.
    • Till det asynkrona I/O-gränssnittet io_uring Lade till fullt stöd för asynkrona buffrade läsoperationer som inte kräver kärntrådar. Inspelningsstöd förväntas i en framtida release.
    • I I/O-schemaläggarens deadline genomförs planering utifrån kapacitet, tillåter fatta korrekta beslut om asymmetriska system som ARM-baserade system DynamIQ och big.LITTLE, som kombinerar kraftfulla och mindre effektiva energieffektiva CPU-kärnor i ett chip. I synnerhet låter det nya läget dig undvika schemaläggningsfel när en långsam CPU-kärna inte har de rätta resurserna för att slutföra en uppgift i tid.
    • Energiförbrukningsmodellen i kärnan (Energy Model framework) är nu beskriver inte bara CPU-strömförbrukningsbeteende, utan täcker även kringutrustning.
    • Systemanropet close_range() har implementerats för att tillåta en process att stänga en hel rad öppna filbeskrivningar på en gång.
    • Från implementeringen av textkonsolen och fbcon-drivrutinen kod borttagen, som ger möjligheten att programmatiskt rulla tillbaka text (CONFIG_VGACON_SOFT_SCROLLBACK) med mer än mängden VGA-textläges videominne.
    • Omarbetad algoritm för att tilldela prioriteter till trådar i kärnan. Det nya alternativet ger bättre konsistens över alla kärndelsystem när man tilldelar prioriteringar till realtidsuppgifter.
    • Lade till sysctl sched_uclamp_util_min_rt_default för att styra CPU-förstärkningsinställningar för realtidsuppgifter (till exempel kan du ändra beteendet för realtidsuppgifter i farten för att spara ström efter byte till batteridrift eller på mobila system).
    • Förberedelser har gjorts för att implementera stöd för Transparent Huge Pages-teknik i sidcachen.
    • Fanotify-motorn implementerar nya flaggor FAN_REPORT_NAME och FAN_REPORT_DIR_FID för att rapportera föräldranamn och unik FID-information när skapande, radering eller rörelsehändelser inträffar för katalogobjekt och icke-katalogobjekt.
    • För cgroups genomförs en ny skivminneskontroller, som är anmärkningsvärd för att flytta skivredovisning från minnessidanivå till kärnobjektnivå, vilket gör det möjligt att dela skivsidor i olika cgroups, istället för att tilldela separata skivcacher för varje cgroup. Det föreslagna tillvägagångssättet gör det möjligt att öka effektiviteten av att använda skiva, minska storleken på minnet som används för skiva med 30-45%, avsevärt minska kärnans totala minnesförbrukning och minska minnesfragmenteringen.
    • I ljudsubsystemet SOM EN и USB-stack, i enlighet med nyligen antagen rekommendationer om användning av inkluderande terminologi i Linux-kärnan, politiskt inkorrekta termer rensades upp. Koden har rensats från orden "slav", "mästare", "svartlista" och "vitlista".
  • Virtualisering och säkerhet
    • När du bygger kärnan med Clang-kompilatorn dök möjligheten att konfigurera (CONFIG_INIT_STACK_ALL_ZERO) automatisk initiering till noll av alla variabler lagrade i stacken (när du bygger, ange "-ftrivial-auto-var-init=noll").
    • I seccomp-delsystemet, när du använder processkontrollläge i användarutrymmet, Lagt till möjlighet ersättning av filbeskrivningar i den övervakade processen för att helt emulera systemanrop som leder till skapandet av filbeskrivningar. Funktionaliteten är efterfrågad i isolerade containersystem och sandlådeimplementationer för Chrome.
    • För xtensa- och csky-arkitekturerna har stöd lagts till för att begränsa systemanrop med hjälp av undersystemet seccomp. För xtensa implementeras dessutom stöd för revisionsmekanismen.
    • tillsatt ny kapacitetsflagga CAP_CHECKPOINT_RESTORE, som låter dig ge tillgång till funktioner relaterade till att frysa och återställa tillståndet för processer utan att överföra ytterligare privilegier.
    • GCC 11 tillhandahåller alla funktioner du behöver
      felsökningsverktyget KCSAN (Kernel Concurrency Sanitizer), designat för att dynamiskt upptäcka rasförhållanden inom kärnan. Således kan KCSAN nu användas med kärnor inbyggda i GCC.

    • För AMD Zen och nyare CPU-modeller Lagt till stöd för P2PDMA-teknik, vilket gör att du kan använda DMA för direkt dataöverföring mellan minnet på två enheter anslutna till PCI-bussen.
    • Ett läge har lagts till i dm-crypt som låter dig minska latensen genom att utföra kryptografisk databehandling utan att använda arbetsköer. Detta läge är också nödvändigt för korrekt drift med zonindelad block enheter (enheter med områden som måste skrivas sekventiellt, uppdatering av hela gruppen av block). Arbete har gjorts för att öka genomströmningen och minska latensen i dm-crypt.
    • Borttagen kod för att stödja 32-bitars gäster som körs i paravirtualiseringsläge som kör Xen-hypervisorn. Användare av sådana system bör byta till att använda 64-bitars kärnor i gästmiljöer eller använda fullständiga (HVM) eller kombinerade (PVH) virtualiseringslägen istället för paravirtualisering (PV) för att köra miljöer.
  • Diskundersystem, I/O och filsystem
    • På filsystemet Btrfs genomförs ett "räddnings"-monteringsalternativ som förenar åtkomst till alla andra återställningsalternativ. Stödet för alternativen "alloc_start" och "subvolrootid" har tagits bort, och alternativet "inode_cache" har fasats ut. Prestandaoptimering har utförts, vilket särskilt påtagligt snabbar upp exekveringen av fsync()-operationer. Lagt till möjligheten att använda andra typer av kontrollsummor än CRC32c.
    • Lagt till möjligheten att använda inline-kryptering (Inline Encryption) i ext4- och F2FS-filsystem, för att aktivera vilken "inlinecrypt"-monteringsalternativet tillhandahålls. Inline-krypteringsläget låter dig använda de krypteringsmekanismer som är inbyggda i enhetskontrollern, som transparent krypterar och dekrypterar in-/utdata.
    • I XFS säkrad inodåterställning (spolning) i ett helt asynkront läge som inte blockerar processer när en minnesrensning utförs. Löste ett långvarigt kvotproblem som gjorde att varningar för mjuka gränser och inodgränser spårades felaktigt. Enhetlig implementering av DAX-stöd för ext4 och xfs.
    • I Ext4 genomförs förladda bitmappar för blocktilldelning. Kombinerat med begränsning av skanning av oinitierade grupper, minskade optimeringen tiden som behövs för att montera mycket stora partitioner.
    • I F2FS Lagt till ioctl F2FS_IOC_SEC_TRIM_FILE, som låter dig använda TRIM/discard-kommandona för att fysiskt återställa specificerad data i en fil, till exempel för att radera åtkomstnycklar utan att lämna kvarstående data på enheten.
      Även i F2FS Lagt till nytt sophämtningsläge GC_URGENT_LOW, som fungerar mer aggressivt genom att eliminera vissa kontroller för att vara i viloläge innan sopsamlaren startas.

    • I bcache har bucket_size för omfattningar ökats från 16 till 32 bitar som förberedelse för att aktivera zonerade enhetscacher.
    • Möjligheten att använda inline-kryptering baserad på inbyggd hårdvarukryptering som tillhandahålls av UFS-kontrollanter har lagts till i SCSI-undersystemet (Universal Flash-lagring).
    • En ny kärnkommandoradsparameter "debugfs" har lagts till, som låter dig kontrollera tillgängligheten för pseudo-FS med samma namn.
    • NFSv4.2-klienten ger stöd för utökade filattribut (xattr).
    • I dm-damm Lagt till gränssnitt för att på en gång visa en lista över 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 konfigurera STRIPE-blockstorleken.
    • För NVMe-lagringsenheter Lagt till stöd för enhetszoneringskommandon (ZNS, NVM Express Zoned Namespace), som låter dig dela upp lagringsutrymme i zoner som utgör grupper av block för mer fullständig kontroll över placeringen av data på enheten.
  • Nätverksdelsystem
    • I Netfilter Lagt till förmågan att avvisa paket i steget före routingkontroll (REJECT-uttrycket kan nu användas inte bara i INPUT-, FORWARD- och OUTPUT-kedjorna, utan även i PREROUTING-steget för icmp och tcp).
    • I nftables Lagt till möjligheten att granska händelser relaterade till konfigurationsändringar.
    • I nftables i netlink API Lagt till stöd för anonyma kedjor, vars namn tilldelas dynamiskt av kärnan. När du tar bort en regel kopplad till en anonym kedja raderas själva kedjan automatiskt.
    • BPF lägger till stöd för iteratorer för att gå igenom, filtrera och modifiera element i associativa arrayer (kartor) 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 listor med öppna sockets och extrahera den information de behöver från dem.
    • Lade till en ny typ av BPF-program BPF_PROG_TYPE_SK_LOOKUP, som startas när kärnan söker efter en lämplig lyssningssocket för en inkommande anslutning. Genom att använda ett BPF-program som detta kan du skapa hanterare som fattar beslut om vilken socket en anslutning ska associeras med, utan att vara begränsad av bind()-systemanropet. Till exempel kan du associera ett enda uttag med ett antal adresser eller portar. Dessutom har stöd för SO_KEEPALIVE-flaggan lagts till i bpf_setsockopt() och möjligheten att installera BPF_CGROUP_INET_SOCK_RELEASE-hanterare, anropade när sockeln släpps, har implementerats.
    • Protokollstöd implementerat PRP (Parallel Redundancy Protocol), som tillåter Ethernet-baserad växling till en backupkanal, transparent för applikationer, i händelse av fel på någon nätverkskomponent.
    • Stack mac80211 Lagt till stöd för fyrastegs WPA/WPA2-PSK-kanalförhandling i åtkomstpunktläge.
    • Lade till möjligheten att byta qdisc (ködisciplin) schemaläggare för att använda FQ-PIE (Flow Queue PIE) nätverksköhanteringsalgoritm som standard, som syftar till att minska den negativa effekten av mellanliggande paketbuffring på kantnätverksutrustning (bufferbloat) i nätverk med kabelmodem.
    • Nya funktioner har lagts till MPTCP (MultiPath TCP), utökningar av TCP-protokollet för att organisera driften av en TCP-förbindelse med leverans av paket samtidigt längs flera rutter genom olika nätverksgränssnitt associerade med olika IP-adresser. Lade till stöd för syn-cookie, DATA_FIN, buffertautomatisk justering, socketdiagnostik och REUSEADDR-, REUSEPORT- och V6ONLY-flaggor i setsockopt.
    • För virtuella routingtabeller VRF (Virtual Routing and Forwarding), som gör det möjligt att organisera driften av flera routingdomäner på ett system, har det "strikta" läget implementerats. I det här läget kan en virtuell tabell endast associeras med en routingtabell som inte används i andra virtuella tabeller.
    • Den trådlösa drivrutinen är ath11k Lagt till stöder 6GHz frekvens och spektral scanning.
  • Оборудование
    • Borttagen kod för att stödja UniCore-arkitekturen, utvecklad vid Microprocessor Center vid Peking University och inkluderad i Linux-kärnan 2011. Den här arkitekturen har inte underhållits sedan 2014 och har inget stöd i GCC.
    • Stöd för RISC-V-arkitektur har implementerats kcov (debugfs-gränssnitt för att analysera kärnkodstäckning), kmemleak (system för upptäckt av minnesläckor), stackskydd, hoppmärken och tickless operationer (multitasking oberoende av timersignaler).
    • För PowerPC-arkitekturen har stöd för spinlock-köer implementerats, vilket avsevärt har förbättrat prestandan i låskonfliktsituationer.
    • För ARM- och ARM64-arkitekturer är processorfrekvensregleringsmekanismen aktiverad som standard schemalägga (cpufreq-guvernör), som direkt använder information från uppgiftsschemaläggaren för att fatta ett beslut om att ändra frekvensen och omedelbart kan komma åt cpufreq-drivrutinerna för att snabbt ändra frekvensen, och omedelbart justera CPU-driftparametrarna till den aktuella belastningen.
    • i915 DRM-drivrutinen för Intel-grafikkort inkluderar stöd för chips baserade på mikroarkitektur raket sjö och lagt till initialt stöd för diskreta kort Intel Xe DG1.
    • Amdgpu-drivrutinen lade till initialt stöd för AMD GPU:er Navi 21 (Marinflondra) och Navi 22 (Sienna Cichlid). Tillagt stöd för UVD/VCE-videokodning och avkodningsaccelerationsmotorer för Southern Islands GPU (Radeon HD 7000).
      Lade till en egenskap för att rotera skärmen 90, 180 eller 270 grader.

      Intressant, drivrutinen för AMD GPU är den största drivrutinen i kärnan - den har cirka 2.71 miljoner rader kod, vilket är cirka 10 % av den totala kärnans storlek (27.81 miljoner rader). Samtidigt redovisas 1.79 miljoner rader av automatiskt genererade rubrikfiler med data för GPU-register, och C-koden är 366 tusen rader (som jämförelse inkluderar Intel i915-drivrutinen 209 tusen rader och Nouveau - 149 tusen).

    • I Nouveau förare Lagt till stöd för bild-för-bildruta integritetskontroll med hjälp av CRC (cykliska redundanskontroller) i NVIDIA GPU-skärmmotorer. Implementeringen är baserad på dokumentation från NVIDIA.
    • Tillagda drivrutiner för LCD-paneler: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 och Xingbangda XBD599.
    • ALSA audio subsystem stöder Intel Silent Stream (kontinuerligt strömläge för externa HDMI-enheter för att eliminera fördröjning vid start av uppspelning) och ny enhet för att styra belysningen av mikrofonaktiverings- och mute-knapparna, och även lagt till stöd för ny utrustning, inklusive en kontroller Longson 7A1000.
    • Tillagt stöd för ARM-kort, enheter och plattformar: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (används i Sony Xperia 10, 10 Plus, XA2 och X2A2, XA 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 latinamerikanska Free Software Foundation bildas
вариант helt gratis kärna 5.9 - Linux-fri 5.9-gnu, rensad från firmware och drivrutinselement som innehåller icke-fria komponenter eller kodsektioner, vars omfattning är begränsad av tillverkaren. Den nya versionen inaktiverar blob-laddning i drivrutiner för WiFi rtw8821c och SoC MediaTek mt8183. Uppdaterad blob-rengöringskod i Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) och x86 pekskärmsdrivrutiner och undersystem.

Källa: opennet.ru

Lägg en kommentar