Linux 5.9 kernel-release

Na twee maanden ontwikkeling, Linus Torvalds ingediend kernel-release Linux 5.9. Een van de meest opvallende veranderingen: het beperken van de import van symbolen van propriëtaire modules naar GPL-modules, het versnellen van contextwisselingsbewerkingen met behulp van de FSGSBASE-processorinstructie, ondersteuning voor kernelbeeldcompressie met behulp van Zstd, herwerken van de prioriteitstelling van threads in de kernel, ondersteuning voor de PRP (Parallel Redundancy Protocol), bandbreedtebewuste planning in de deadlineplanner, preventief inpakken van geheugenpagina's, capaciteitsvlag CAP_CHECKPOINT_RESTOR, close_range() systeemaanroep, dm-crypt prestatieverbeteringen, codeverwijdering voor 32-bit Xen PV-gasten, nieuw slab-geheugen beheermechanisme, optie “redding” in Btrfs, ondersteuning voor inline-encryptie in ext4 en F2FS.

De nieuwe versie bevat 16074 fixes van ontwikkelaars uit 2011,
patchgrootte - 62 MB (de wijzigingen hadden betrekking op 14548 bestanden, 782155 regels code zijn toegevoegd, 314792 regels zijn verwijderd). Ongeveer 45% van alle gepresenteerd in 5.9
wijzigingen hebben betrekking op apparaatstuurprogramma's; bij ongeveer 15% van de wijzigingen is dit het geval
houding ten opzichte van het updaten van code die specifiek is voor hardware-architecturen, 13%
gerelateerd aan de netwerkstack, 3% aan bestandssystemen en 3% aan intern
kernel-subsystemen.

De belangrijkste innovaties:

  • Geheugen- en systeemservices
    • Aangedraaid bescherming tegen het gebruik van GPL-lagen voor het koppelen van bedrijfseigen stuurprogramma's met kernelcomponenten die alleen worden geëxporteerd voor modules onder de GPL-licentie. De vlag TAINT_PROPRIETARY_MODULE wordt nu overgenomen in alle modules die symbolen importeren uit modules met deze vlag. Als een GPL-module symbolen uit een niet-GPL-module probeert te importeren, zal die GPL-module het label TAINT_PROPRIETARY_MODULE overnemen en geen toegang krijgen tot kernelcomponenten die alleen beschikbaar zijn voor GPL-gelicentieerde modules, zelfs als de module eerder symbolen heeft geïmporteerd uit de categorie "gplolly". De omgekeerde vergrendeling (alleen EXPORT_SYMBOL_GPL exporteren in modules die EXPORT_SYMBOL_GPL importeerden), die het werk van bedrijfseigen stuurprogramma's zou kunnen verstoren, is niet geïmplementeerd (alleen de bedrijfseigen modulevlag wordt overgenomen, maar niet de GPL-bindingen).
    • Toegevoegd kcompactd-motorondersteuning voor geheugenpagina's voorverpakken op de achtergrond om het aantal grote geheugenpagina's dat beschikbaar is voor de kernel te vergroten. Volgens voorlopige schattingen kan achtergrondverpakking, ten koste van minimale overhead, vertragingen bij het toewijzen van grote geheugenpagina's (enorme pagina's) met 70-80 keer verminderen in vergelijking met het eerder gebruikte verpakkingsmechanisme, gelanceerd wanneer de behoefte zich voordoet (on-demand ). Om de grenzen in te stellen van de externe fragmentatie die kcompactd zal bieden, is sysctl vm.compaction_proactiveness toegevoegd.
    • Toegevoegd ondersteuning voor compressie van kernelafbeeldingen met behulp van een algoritme ZStandard (zstd).
    • Ondersteuning voor processorinstructies is geïmplementeerd voor x86-systemen FSGSBASE, waarmee u de inhoud van de FS/GS-registers vanuit de gebruikersruimte kunt lezen en wijzigen. In de kernel wordt FSGSBASE gebruikt om contextwisselingsbewerkingen te versnellen door onnodige MSR-schrijfbewerkingen voor GSBASE te elimineren, en in de gebruikersruimte vermijdt het onnodige systeemaanroepen om FS/GS te wijzigen.
    • toegevoegd Met de parameter “allow_writes” kunt u wijzigingen in de MSR-registers van de processor vanuit de gebruikersruimte verbieden en de toegang tot de inhoud van deze registers beperken voor leesbewerkingen, aangezien het wijzigen van de MSR tot problemen kan leiden. Standaard is schrijven nog niet uitgeschakeld en worden wijzigingen in de MSR weergegeven in het logboek, maar in de toekomst is het de bedoeling om de standaardtoegang om te schakelen naar de modus Alleen-lezen.
    • Naar de asynchrone I/O-interface io_uring Volledige ondersteuning toegevoegd voor asynchrone, gebufferde leesbewerkingen waarvoor geen kernelthreads nodig zijn. Ondersteuning voor opnames wordt verwacht in een toekomstige release.
    • In de deadline van de I/O-planner geïmplementeerd planning op basis van capaciteit, toestaan juiste beslissingen nemen over asymmetrische systemen zoals ARM-gebaseerde systemen DynamIQ en big.LITTLE, die krachtige en minder efficiënte, energiezuinige CPU-kernen in één chip combineren. Met de nieuwe modus kunt u met name planningsmismatches voorkomen wanneer een trage CPU-kern niet over de juiste middelen beschikt om een ​​taak op tijd te voltooien.
    • Het energieverbruiksmodel in de kernel (Energy Model Framework) is nu beschrijft de niet alleen het energieverbruik van de CPU, maar ook randapparatuur.
    • De systeemaanroep close_range() is geïmplementeerd om een ​​proces in staat te stellen een hele reeks open bestandsdescriptors in één keer te sluiten.
    • Vanaf de implementatie van de tekstconsole en de fbcon-driver code verwijderd, dat de mogelijkheid biedt om tekst programmatisch terug te scrollen (CONFIG_VGACON_SOFT_SCROLLBACK) met meer dan de hoeveelheid videogeheugen in de VGA-tekstmodus.
    • Opnieuw ontworpen algoritme voor het toewijzen van prioriteiten aan threads binnen de kernel. De nieuwe optie zorgt voor een betere consistentie tussen alle kernelsubsystemen bij het toewijzen van prioriteiten aan realtime taken.
    • Systeem toegevoegd sched_uclamp_util_min_rt_default om de CPU-boost-instellingen voor realtime taken te beheren (u kunt bijvoorbeeld het gedrag van realtime taken direct wijzigen om energie te besparen na het overschakelen naar batterijvoeding of op mobiele systemen).
    • Er zijn voorbereidingen getroffen om ondersteuning voor Transparent Huge Pages-technologie in de paginacache te implementeren.
    • De fanotify-engine implementeert nieuwe vlaggen FAN_REPORT_NAME en FAN_REPORT_DIR_FID om de bovenliggende naam en unieke FID-informatie te rapporteren wanneer er creatie-, verwijderings- of verplaatsingsgebeurtenissen plaatsvinden voor directory-items en niet-directory-objecten.
    • Voor cgroepen geïmplementeerd een nieuwe slab-geheugencontroller, die opmerkelijk is voor het verplaatsen van slab-accounting van het geheugenpaginaniveau naar het kernelobjectniveau, wat het mogelijk maakt om slab-pagina's in verschillende cgroups te delen, in plaats van afzonderlijke slab-caches voor elke cgroup toe te wijzen. De voorgestelde aanpak maakt het mogelijk om de efficiëntie van het gebruik van slab te vergroten, de grootte van het geheugen dat voor slab wordt gebruikt met 30-45% te verminderen, het totale geheugenverbruik van de kernel aanzienlijk te verminderen en de geheugenfragmentatie te verminderen.
    • In het geluidssubsysteem ALSA и USB-stapel, in overeenstemming met onlangs aangenomen aanbevelingen over het gebruik van inclusieve terminologie in de Linux-kernel; politiek incorrecte termen werden opgeschoond. De code is ontdaan van de woorden "slave", "master", "blacklist" en "whitelist".
  • Virtualisatie en beveiliging
    • Bij het bouwen van de kernel met behulp van de Clang-compiler verscheen de mogelijkheid om (CONFIG_INIT_STACK_ALL_ZERO) automatische initialisatie naar nul te configureren van alle variabelen die op de stapel zijn opgeslagen (specificeer tijdens het bouwen “-ftrivial-auto-var-init=zero”).
    • In het seccomp-subsysteem, wanneer de procesbesturingsmodus in de gebruikersruimte wordt gebruikt, toegevoegd kans vervanging van bestandsdescriptors in het bewaakte proces om systeemaanroepen die leiden tot het maken van bestandsdescriptors volledig te emuleren. Er is veel vraag naar deze functionaliteit in geïsoleerde containersystemen en sandbox-implementaties voor Chrome.
    • Voor de xtensa- en csky-architecturen is ondersteuning toegevoegd voor het beperken van systeemaanroepen met behulp van het seccomp-subsysteem. Voor xtensa wordt bovendien ondersteuning voor het auditmechanisme geïmplementeerd.
    • toegevoegd nieuwe mogelijkhedenvlag CAP_CHECKPOINT_RESTORE, waarmee u toegang kunt verlenen tot mogelijkheden met betrekking tot het bevriezen en herstellen van de status van processen zonder extra rechten over te dragen.
    • GCC 11 biedt alle functies die u nodig heeft
      foutopsporingstool KCSAN (Kernel Concurrency Sanitizer), ontworpen om raceomstandigheden binnen de kernel dynamisch te detecteren. KCSAN kan nu dus worden gebruikt met kernels die in GCC zijn gebouwd.

    • Voor AMD Zen en nieuwere CPU-modellen toegevoegd ondersteuning voor P2PDMA-technologie, waarmee u DMA kunt gebruiken voor directe gegevensoverdracht tussen het geheugen van twee apparaten die op de PCI-bus zijn aangesloten.
    • Er is een modus toegevoegd aan dm-crypt waarmee u de latentie kunt verminderen door cryptografische gegevensverwerking uit te voeren zonder werkwachtrijen te gebruiken. Deze modus is ook nodig voor een correcte werking gezoneerd blokapparaten (apparaten met gebieden die opeenvolgend moeten worden geschreven, waarbij de hele groep blokken wordt bijgewerkt). Er is gewerkt aan het vergroten van de doorvoer en het verminderen van de latentie in dm-crypt.
    • Code verwijderd ter ondersteuning van 32-bit gasten die in paravirtualisatiemodus draaien met de Xen-hypervisor. Gebruikers van dergelijke systemen moeten overstappen op het gebruik van 64-bit kernels in gastomgevingen of volledige (HVM) of gecombineerde (PVH) virtualisatiemodi gebruiken in plaats van paravirtualisatie (PV) om omgevingen te draaien.
  • Schijfsubsysteem, I/O en bestandssystemen
    • Op het Btrfs-bestandssysteem geïmplementeerd een "rescue" mount-optie die de toegang tot alle andere herstelopties verenigt. Ondersteuning voor de opties "alloc_start" en "subvolrootid" is verwijderd en de optie "inode_cache" is verouderd. Er zijn prestatie-optimalisaties doorgevoerd, waardoor vooral de uitvoering van fsync()-bewerkingen merkbaar is versneld. Toegevoegd de mogelijkheid om andere soorten controlesommen dan CRC32c te gebruiken.
    • Toegevoegd de mogelijkheid om inline-encryptie (Inline Encryption) te gebruiken in ext4- en F2FS-bestandssystemen, waarvoor de “inlinecrypt” mount-optie wordt geboden. Met de inline-versleutelingsmodus kunt u de versleutelingsmechanismen gebruiken die in de schijfcontroller zijn ingebouwd en waarmee invoer/uitvoer op transparante wijze wordt gecodeerd en gedecodeerd.
    • In XFS beveiligd inode reset (flush) in een volledig asynchrone modus die geen processen blokkeert bij het uitvoeren van een geheugenopruimingsbewerking. Een al lang bestaand quotumprobleem opgelost dat ervoor zorgde dat waarschuwingen voor zachte limieten en inodelimieten onjuist werden bijgehouden. Uniforme implementatie van DAX-ondersteuning voor ext4 en xfs.
    • In Ext4 geïmplementeerd bitmaps voor bloktoewijzing vooraf laden. Gecombineerd met het beperken van het scannen van niet-geïnitialiseerde groepen, verminderde de optimalisatie de tijd die nodig was om zeer grote partities te koppelen.
    • In F2FS toegevoegd ioctl F2FS_IOC_SEC_TRIM_FILE, waarmee u de TRIM/discard-opdrachten kunt gebruiken om gespecificeerde gegevens in een bestand fysiek te resetten, bijvoorbeeld om toegangssleutels te verwijderen zonder resterende gegevens op de schijf achter te laten.
      Ook in F2FS toegevoegd nieuwe garbage collector-modus GC_URGENT_LOW, die agressiever werkt door enkele controles op inactieve toestand te elimineren voordat de garbage collector wordt gestart.

    • In bcache is de bucket_size voor uitbreidingen verhoogd van 16 naar 32 bits ter voorbereiding op het inschakelen van gezoneerde apparaatcaches.
    • De mogelijkheid om inline-encryptie te gebruiken op basis van ingebouwde hardware-encryptie van UFS-controllers is toegevoegd aan het SCSI-subsysteem (Universele Flash-opslag).
    • Er is een nieuwe kernelopdrachtregelparameter “debugfs” toegevoegd, waarmee u de beschikbaarheid van de gelijknamige pseudo-FS kunt controleren.
    • De NFSv4.2-client biedt ondersteuning voor uitgebreide bestandskenmerken (xattr).
    • In dm-stof toegevoegd interface voor het in één keer weergeven van een lijst met alle geïdentificeerde slechte blokken op de schijf (“dmsetup message dust1 0 listbadblocks”).
    • Voor md/raid5 is de parameter /sys/block/md1/md/stripe_size toegevoegd om de STRIPE-blokgrootte te configureren.
    • Voor NVMe-opslagapparaten toegevoegd ondersteuning voor schijfzone-opdrachten (ZNS, NVM Express Zoned Namespace), waarmee u opslagruimte kunt verdelen in zones die groepen blokken vormen, voor meer volledige controle over de plaatsing van gegevens op de schijf.
  • Netwerksubsysteem
    • In Netfilter toegevoegd de mogelijkheid om pakketten te weigeren in de fase vóór de routeringscontrole (de REJECT-expressie kan nu niet alleen worden gebruikt in de INPUT-, FORWARD- en OUTPUT-ketens, maar ook in de PREROUTING-fase voor icmp en tcp).
    • In nftables toegevoegd de mogelijkheid om gebeurtenissen te controleren die verband houden met configuratiewijzigingen.
    • In nftables in de netlink API toegevoegd ondersteuning voor anonieme ketens, waarvan de naam dynamisch wordt toegewezen door de kernel. Wanneer u een regel verwijdert die aan een anonieme keten is gekoppeld, wordt de keten zelf automatisch verwijderd.
    • BPF voegt ondersteuning toe voor iterators om elementen van associatieve arrays (kaarten) te doorlopen, te filteren en te wijzigen zonder gegevens naar de gebruikersruimte te kopiëren. Iterators kunnen worden gebruikt voor TCP- en UDP-sockets, waardoor BPF-programma's lijsten met open sockets kunnen doorlopen en daaruit de informatie kunnen halen die ze nodig hebben.
    • Een nieuw type BPF-programma BPF_PROG_TYPE_SK_LOOKUP toegevoegd, dat wordt gestart wanneer de kernel zoekt naar een geschikte luisteraansluiting voor een inkomende verbinding. Met behulp van een BPF-programma als dit kun je handlers maken die beslissingen nemen over aan welke socket een verbinding moet worden gekoppeld, zonder beperkt te worden door de systeemaanroep bind(). U kunt bijvoorbeeld één socket koppelen aan een reeks adressen of poorten. Daarnaast is ondersteuning voor de vlag SO_KEEPALIVE toegevoegd aan bpf_setsockopt() en is de mogelijkheid geïmplementeerd om BPF_CGROUP_INET_SOCK_RELEASE handlers te installeren, die worden aangeroepen wanneer de socket wordt vrijgegeven.
    • Protocolondersteuning geïmplementeerd PRP (Parallel Redundancy Protocol), waarmee op Ethernet gebaseerd kan worden overgeschakeld naar een back-upkanaal, transparant voor toepassingen, in het geval van uitval van netwerkcomponenten.
    • Stapel mac80211 toegevoegd ondersteuning voor viertraps WPA/WPA2-PSK-kanaalonderhandeling in toegangspuntmodus.
    • De mogelijkheid toegevoegd om de qdisc-planner (queuing discipline) te schakelen om standaard het FQ-PIE (Flow Queue PIE) netwerkwachtrijbeheeralgoritme te gebruiken, gericht op het verminderen van de negatieve impact van tussentijdse pakketbuffering op randnetwerkapparatuur (bufferbloat) in netwerken met kabelmodems.
    • Er zijn nieuwe functies toegevoegd aan MPTCP (MultiPath TCP), uitbreidingen van het TCP-protocol voor het organiseren van de werking van een TCP-verbinding met de gelijktijdige levering van pakketten langs verschillende routes via verschillende netwerkinterfaces die aan verschillende IP-adressen zijn gekoppeld. Ondersteuning toegevoegd voor syn-cookie, DATA_FIN, automatische bufferafstemming, socketdiagnostiek en REUSEADDR-, REUSEPORT- en V6ONLY-vlaggen in setsockopt.
    • Voor virtuele routeringstabellen VRF (Virtual Routing and Forwarding), waarmee de werking van verschillende routeringsdomeinen op één systeem kan worden georganiseerd, is de “strikte” modus geïmplementeerd. In deze modus kan een virtuele tafel alleen worden gekoppeld aan een routeringstabel die niet in andere virtuele tabellen wordt gebruikt.
    • Het draadloze stuurprogramma is ath11k toegevoegd ondersteuning 6GHz frequentie en spectraal scannen.
  • Uitrusting
    • Code verwijderd ter ondersteuning van de UniCore-architectuur, ontwikkeld in het Microprocessor Center van de Universiteit van Peking en opgenomen in de Linux-kernel in 2011. Deze architectuur wordt sinds 2014 niet meer onderhouden en wordt niet ondersteund in GCC.
    • Ondersteuning voor RISC-V-architectuur is geïmplementeerd kcov (debugfs-interface voor het analyseren van de dekking van de kernelcode), kmemleak (geheugenlekdetectiesysteem), stackbescherming, jumpmarks en tickless-bewerkingen (multitasking onafhankelijk van timersignalen).
    • Voor de PowerPC-architectuur is ondersteuning voor spinlock-wachtrijen geïmplementeerd, wat de prestaties in slotconflictsituaties aanzienlijk heeft verbeterd.
    • Voor ARM- en ARM64-architecturen is het processorfrequentieregelmechanisme standaard ingeschakeld schemautil (cpufreq gouverneur), dat rechtstreeks informatie uit de taakplanner gebruikt om een ​​beslissing te nemen over het wijzigen van de frequentie en onmiddellijk toegang heeft tot de cpufreq-stuurprogramma's om de frequentie snel te wijzigen, waarbij de CPU-bedrijfsparameters onmiddellijk worden aangepast aan de huidige belasting.
    • Het i915 DRM-stuurprogramma voor Intel grafische kaarten biedt ondersteuning voor chips op basis van microarchitectuur rotsmeer en initiële ondersteuning toegevoegd voor discrete kaarten Intel Xe DG1.
    • Amdgpu-stuurprogramma heeft initiële ondersteuning voor AMD GPU's toegevoegd Navi 21 (Marinebot) en Navi 22 (Sienna-cichlide). Ondersteuning toegevoegd voor UVD/VCE-videocodering en -decodering van versnellingsmotoren voor de Southern Islands GPU (Radeon HD 7000).
      Een eigenschap toegevoegd om het scherm 90, 180 of 270 graden te draaien.

      Interessant is de driver voor AMD GPU is de grootste driver in de kernel - deze heeft ongeveer 2.71 miljoen regels code, wat ongeveer 10% is van de totale kernelgrootte (27.81 miljoen regels). Tegelijkertijd worden 1.79 miljoen regels verwerkt door automatisch gegenereerde headerbestanden met gegevens voor GPU-registers, en de C-code is 366 duizend regels (ter vergelijking: het Intel i915-stuurprogramma bevat 209 duizend regels en Nouveau - 149 duizend).

    • In Nouveau-chauffeur toegevoegd ondersteuning voor frame-voor-frame integriteitscontrole met behulp van CRC (Cyclische redundantiecontroles) in NVIDIA GPU-beeldschermengines. De implementatie is gebaseerd op documentatie van NVIDIA.
    • Stuurprogramma's toegevoegd voor LCD-panelen: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 en Xingbangda XBD599.
    • Het ALSA-audiosubsysteem ondersteunt Intel stille stroom (continue voedingsmodus voor externe HDMI-apparaten om vertraging bij het starten van het afspelen te elimineren) en nieuw apparaat om de verlichting van de microfoonactiverings- en mute-knoppen te regelen, en ook ondersteuning toegevoegd voor nieuwe apparatuur, waaronder een controller Longson 7A1000.
    • Ondersteuning toegevoegd voor ARM-boards, apparaten en platforms: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (gebruikt in Sony Xperia 10, 10 Plus, XA2, XA2 Plus en XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, vijf nieuwe boards gebaseerd op 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.

Tegelijkertijd de Latin American Free Software Foundation gevormd
вариант volledig gratis kernel 5.9 - Linux-libre 5.9-gnu, ontdaan van firmware- en driverelementen die eigen componenten of codesecties bevatten, waarvan de reikwijdte beperkt is door de fabrikant. De nieuwe release schakelt het laden van blobs uit in stuurprogramma's voor WiFi rtw8821c en SoC MediaTek mt8183. Bijgewerkte code voor het opschonen van blobs in stuurprogramma's en subsystemen Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) en x86 touchscreen.

Bron: opennet.ru

Voeg een reactie