Linux 5.19 kernel-release

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux-kernel 5.19. Een van de meest opvallende veranderingen: ondersteuning voor de LoongArch-processorarchitectuur, integratie van "BIG TCP"-patches, on-demand-modus in fscache, codeverwijdering ter ondersteuning van het a.out-formaat, de mogelijkheid om ZSTD te gebruiken voor firmwarecompressie, een interface voor beheer van geheugenverwijdering uit gebruikersruimte, verhoging van de betrouwbaarheid en prestaties van de pseudo-willekeurige nummergenerator, ondersteuning voor Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) en ARM MKB-extensies (Scalable Matrix Extension).

In de aankondiging zei Linus dat de volgende kerneluitgave hoogstwaarschijnlijk nummer 6.0 zal hebben, aangezien de 5.x-tak voldoende releases heeft verzameld om het eerste nummer in het versienummer te wijzigen. De nummeringswijziging wordt om esthetische redenen uitgevoerd en is een formele stap die het ongemak verlicht als gevolg van de opeenstapeling van een groot aantal nummers in de serie.

Linus vermeldde ook dat hij een Apple-laptop gebruikte gebaseerd op ARM64-architectuur (Apple Silicon) met een Linux-omgeving gebaseerd op de Asahi Linux-distributie om de release te maken. Het is niet het primaire werkstation van Linus, maar hij gebruikte het platform om de geschiktheid ervan voor kernelwerk te testen en om ervoor te zorgen dat hij kernelreleases kon produceren terwijl hij op reis was met een lichtgewicht laptop bij de hand. Voorheen, vele jaren geleden, had Linus ervaring met het gebruik van Apple-apparatuur voor ontwikkeling - hij gebruikte ooit een pc gebaseerd op de ppc970 CPU en een Macbook Air-laptop.

De nieuwe versie bevat 16401 fixes van 2190 ontwikkelaars (in de laatste release waren er 16206 fixes van 2127 ontwikkelaars), de patchgrootte is 90 MB (de wijzigingen hadden betrekking op 13847 bestanden, 1149456 regels code werden toegevoegd en 349177 regels verwijderd). Ongeveer 39% van alle wijzigingen die in 5.19 zijn geïntroduceerd, hebben betrekking op apparaatstuurprogramma's, ongeveer 21% van de wijzigingen heeft betrekking op het updaten van code die specifiek is voor hardware-architecturen, 11% heeft betrekking op de netwerkstack, 4% heeft betrekking op bestandssystemen en 3% zijn gerelateerd aan interne kernelsubsystemen.

Belangrijkste innovaties in kernel 5.19:

  • Schijfsubsysteem, I/O en bestandssystemen
    • Het EROFS-bestandssysteem (Enhanced Read-Only File System), bedoeld voor gebruik op alleen-lezen partities, is geconverteerd om het fscache-subsysteem te gebruiken, dat gegevenscaching biedt. De verandering verbeterde de prestaties aanzienlijk van systemen waarin een groot aantal containers wordt gelanceerd vanaf een op EROFS gebaseerde afbeelding.
    • Er is een on-demand leesmodus toegevoegd aan het fscache-subsysteem, dat wordt gebruikt om EROFS te optimaliseren. Met de nieuwe modus kunt u leescaching organiseren van FS-images die zich op het lokale systeem bevinden. In tegenstelling tot de aanvankelijk beschikbare werkingsmodus, die gericht is op het cachen in het lokale bestandssysteem van gegevens die via netwerkbestandssystemen worden overgedragen, delegeert de “on-demand”-modus de functies van het ophalen van gegevens en het schrijven ervan naar de cache naar een afzonderlijke achtergrondproces dat in de gebruikersruimte wordt uitgevoerd.
    • XFS biedt de mogelijkheid om miljarden uitgebreide attributen op te slaan in een i-node. Het maximale aantal uitbreidingen voor één bestand is verhoogd van 4 miljard naar 247. Er is een modus geïmplementeerd voor het atomisch bijwerken van verschillende uitgebreide bestandskenmerken tegelijk.
    • Het Btrfs-bestandssysteem heeft het werken met vergrendelingen geoptimaliseerd, wat een prestatieverbetering van ongeveer 7% mogelijk maakte bij rechtstreeks schrijven in de nowait-modus. De prestaties van bewerkingen in de NOCOW-modus (zonder copy-on-write) worden met ongeveer 3% verhoogd. De belasting van de paginacache bij het uitvoeren van de opdracht “send” is verminderd. De minimale grootte van subpagina's is teruggebracht van 64K naar 4K (subpagina's die kleiner zijn dan kernelpagina's kunnen worden gebruikt). Er is een overgang gemaakt van het gebruik van een radixboom naar het XArrays-algoritme.
    • Er is een modus toegevoegd aan de NFS-server om het behoud van de vergrendelingsstatus uit te breiden die is ingesteld door een client die niet meer reageert op verzoeken. Met de nieuwe modus kunt u het wissen van sloten maximaal een dag uitstellen, tenzij een andere klant om een ​​concurrerend slot vraagt. In de normale modus wordt de blokkering 90 seconden nadat de client niet meer reageert opgeheven.
    • Het subsysteem voor het volgen van gebeurtenissen in de fanotify FS implementeert de vlag FAN_MARK_EVICTABLE, waarmee u het vastzetten van doel-i-nodes in de cache kunt uitschakelen, bijvoorbeeld om subtakken te negeren zonder hun onderdelen in de cache vast te zetten.
    • De driver voor het FAT32-bestandssysteem heeft ondersteuning toegevoegd voor het verkrijgen van informatie over het tijdstip waarop bestanden zijn gemaakt via de statx-systeemaanroep met de implementatie van een efficiëntere en functionelere versie van stat(), die uitgebreide informatie over het bestand retourneert.
    • Er zijn aanzienlijke optimalisaties aangebracht aan de exFAT-driver om gelijktijdige clearing van een groep sectoren mogelijk te maken wanneer de 'dirsync'-modus actief is, in plaats van sequentiële sector-voor-sector clearing. Door het aantal blokverzoeken na optimalisatie te verminderen, zijn de prestaties bij het maken van een groot aantal mappen op de SD-kaart met meer dan 73-85% toegenomen, afhankelijk van de clustergrootte.
    • De kernel bevat de eerste corrigerende update van het ntfs3-stuurprogramma. Sinds ntfs3 afgelopen oktober in de 5.15-kernel werd opgenomen, is de driver niet bijgewerkt en is de communicatie met de ontwikkelaars verloren gegaan, maar de ontwikkelaars zijn nu hervat met het publiceren van wijzigingen. De voorgestelde patches elimineerden fouten die tot geheugenlekken en crashes leidden, losten problemen met de uitvoering van xfstests op, ruimden ongebruikte code op en repareerden typefouten.
    • Voor OverlayFS is de mogelijkheid geïmplementeerd om gebruikers-ID's van aangekoppelde bestandssystemen in kaart te brengen, wat wordt gebruikt om de bestanden van een specifieke gebruiker op een aangekoppelde buitenlandse partitie te matchen met een andere gebruiker op het huidige systeem.
  • Geheugen- en systeemservices
    • Initiële ondersteuning toegevoegd voor de LoongArch-instructiesetarchitectuur die wordt gebruikt in de Loongson 3 5000-processors, die de nieuwe RISC ISA implementeert, vergelijkbaar met MIPS en RISC-V. De LoongArch-architectuur is beschikbaar in drie smaken: uitgeklede 32-bit (LA32R), gewone 32-bit (LA32S) en 64-bit (LA64).
    • Code verwijderd ter ondersteuning van het uitvoerbare bestandsformaat a.out, dat in release 5.1 is verouderd. Het a.out-formaat is al lang verouderd op Linux-systemen, en het genereren van a.out-bestanden wordt niet ondersteund door moderne tools in standaard Linux-configuraties. De lader voor a.out-bestanden kan volledig in de gebruikersruimte worden geïmplementeerd.
    • Ondersteuning voor x86-specifieke opstartopties is stopgezet: nosp, nosmap, nosmep, noexec en noclflush).
    • Ondersteuning voor de verouderde CPU h8300-architectuur (Renesas H8/300), die lange tijd zonder ondersteuning is gelaten, is stopgezet.
    • Uitgebreide mogelijkheden met betrekking tot het reageren op de detectie van gesplitste vergrendelingen ("split locks") die optreden bij toegang tot niet-uitgelijnde gegevens in het geheugen vanwege het feit dat bij het uitvoeren van een atomaire instructie de gegevens twee CPU-cachelijnen overschrijden. Dergelijke blokkades leiden tot een aanzienlijke prestatievermindering. Als voorheen de kernel standaard een waarschuwing zou geven met informatie over het proces dat de blokkering veroorzaakte, zal het problematische proces nu verder worden vertraagd om de prestaties van de rest van het systeem te behouden.
    • Ondersteuning toegevoegd voor het IFS-mechanisme (In-Field Scan), geïmplementeerd in Intel-processors, waarmee u diagnostische CPU-tests op laag niveau kunt uitvoeren die problemen kunnen identificeren die niet worden gedetecteerd door standaardtools op basis van foutcorrectiecodes (ECC) of pariteitsbits . De uitgevoerde tests hebben de vorm van downloadbare firmware, die op dezelfde manier is ontworpen als microcode-updates. Testresultaten zijn beschikbaar via sysfs.
    • De mogelijkheid toegevoegd om een ​​bootconfig-bestand in de kernel in te sluiten, waardoor, naast opdrachtregelopties, de parameters van de kernel kunnen worden bepaald via een instellingenbestand. Het inbedden wordt uitgevoerd met behulp van de assembly-optie 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Voorheen werd bootconfig bepaald door het aan de initrd-image te koppelen. Door integratie in de kernel kan bootconfig worden gebruikt in configuraties zonder initrd.
    • De mogelijkheid om firmware te downloaden die is gecomprimeerd met behulp van het Zstandard-algoritme is geïmplementeerd. Er is een set controlebestanden /sys/class/firmware/* toegevoegd aan sysfs, waardoor u het laden van firmware vanuit de gebruikersruimte kunt starten.
    • De io_uring asynchrone I/O-interface biedt een nieuwe vlag, IORING_RECVSEND_POLL_FIRST, die, wanneer ingesteld, eerst een netwerkbewerking zal verzenden om te worden verwerkt met behulp van polling, wat bronnen kan besparen in situaties waarin het verwerken van de bewerking met enige vertraging acceptabel is. io_uring heeft ook ondersteuning toegevoegd voor de socket()-systeemaanroep, nieuwe vlaggen voorgesteld om het beheer van bestandsdescriptors te vereenvoudigen, een “multi-shot”-modus toegevoegd voor het accepteren van meerdere verbindingen tegelijk in de accept()-aanroep, en bewerkingen toegevoegd voor het doorsturen van NVMe opdrachten rechtstreeks naar het apparaat.
    • De Xtensa-architectuur biedt ondersteuning voor de KCSAN-foutopsporingstool (Kernel Concurrency Sanitizer), ontworpen om race-omstandigheden binnen de kernel dynamisch te detecteren. Ook ondersteuning toegevoegd voor de slaapmodus en coprocessors.
    • Voor de m68k-architectuur (Motorola 68000) is een virtuele machine (platformsimulator) gebaseerd op de Android Goldfish-emulator geïmplementeerd.
    • Voor de AArch64-architectuur is ondersteuning voor Armv9-A SME-extensies (Scalable Matrix Extension) geïmplementeerd.
    • Het eBPF-subsysteem maakt het opslaan van getypte pointers in kaartstructuren mogelijk, en voegt ook ondersteuning toe voor dynamische pointers.
    • Er wordt een nieuw proactief mechanisme voor het terugwinnen van geheugen voorgesteld dat controle over de gebruikersruimte ondersteunt met behulp van het bestand memory.reclaim. Door een nummer naar het opgegeven bestand te schrijven, wordt geprobeerd het overeenkomstige aantal bytes uit de set te verwijderen die aan de cgroup is gekoppeld.
    • Verbeterde nauwkeurigheid van het geheugengebruik bij het comprimeren van gegevens in de swappartitie met behulp van het zswap-mechanisme.
    • Voor de RISC-V-architectuur is ondersteuning geboden voor het uitvoeren van 32-bits uitvoerbare bestanden op 64-bits systemen, is er een modus toegevoegd om beperkende attributen aan geheugenpagina's te binden (bijvoorbeeld om caching uit te schakelen) en is de functie kexec_file_load() geïmplementeerd .
    • De implementatie van ondersteuning voor 32-bit Armv4T- en Armv5-systemen is aangepast voor gebruik in universele multi-platform kernelbuilds die geschikt zijn voor verschillende ARM-systemen.
  • Virtualisatie en beveiliging
    • Het EFI-subsysteem implementeert de mogelijkheid om geheime informatie vertrouwelijk over te dragen naar gastsystemen zonder deze openbaar te maken aan het hostsysteem. De gegevens worden verstrekt via de directory security/coco in securityfs.
    • De Lockdown-beschermingsmodus, die de toegang van rootgebruikers tot de kernel beperkt en UEFI Secure Boot-bypasspaden blokkeert, heeft een maas in de wet geëlimineerd waardoor de bescherming kon worden omzeild door de kernel-debugger te manipuleren.
    • Inbegrepen zijn patches die gericht zijn op het verbeteren van de betrouwbaarheid en prestaties van de pseudo-willekeurige nummergenerator.
    • Bij het bouwen met Clang 15 wordt ondersteuning voor het mechanisme voor het willekeurig maken van kernelstructuren geïmplementeerd.
    • Het Landlock-mechanisme, waarmee u de interactie van een groep processen met de externe omgeving kunt beperken, biedt ondersteuning voor regels waarmee u de uitvoering van bewerkingen voor het hernoemen van bestanden kunt controleren.
    • Het IMA-subsysteem (Integrity Measurement Architecture), ontworpen om de integriteit van componenten van het besturingssysteem te verifiëren met behulp van digitale handtekeningen en hashes, is overgeschakeld op het gebruik van de fs-verity-module voor bestandsverificatie.
    • De logica van acties bij het uitschakelen van onbevoegde toegang tot het eBPF-subsysteem is gewijzigd - voorheen waren alle opdrachten die verband hielden met de bpf()-systeemaanroep uitgeschakeld, en vanaf versie 5.19 blijft de toegang tot opdrachten die niet leiden tot het maken van objecten over . Voor dit gedrag is een bevoorrecht proces vereist om een ​​BPF-programma te laden, maar vervolgens kunnen niet-bevoorrechte processen met het programma communiceren.
    • Ondersteuning toegevoegd voor de AMD SEV-SNP-extensie (Secure Nested Paging), die veilig werken mogelijk maakt met geneste geheugenpaginatabellen en bescherming biedt tegen ‘undeSErVed’- en ‘SEVerity’-aanvallen op AMD EPYC-processors, waardoor de AMD SEV (Secure Encrypted Virtualization) kan worden omzeild ) beschermingsmechanisme.
    • Ondersteuning toegevoegd voor het Intel TDX-mechanisme (Trusted Domain Extensions), waarmee u pogingen van derden om toegang te krijgen tot het gecodeerde geheugen van virtuele machines kunt blokkeren.
    • De virtio-blk-driver, die wordt gebruikt om blokapparaten te emuleren, heeft ondersteuning voor I/O toegevoegd met behulp van polling, wat volgens tests de latentie met ongeveer 10% heeft verminderd.
  • Netwerksubsysteem
    • Het pakket bevat een reeks BIG TCP-patches waarmee u de maximale pakketgrootte van een TCP-pakket kunt vergroten tot 4 GB om de werking van snelle interne datacenternetwerken te optimaliseren. Een vergelijkbare toename in pakketgrootte met een headerveldgrootte van 16 bits wordt bereikt door de implementatie van “jumbo”-pakketten, waarvan de grootte in de IP-header is ingesteld op 0, en de werkelijke grootte wordt verzonden in een afzonderlijke 32-bits veld in een aparte bijgevoegde kop. Bij prestatietests verhoogde het instellen van de pakketgrootte op 185 KB de doorvoer met 50% en verminderde de latentie van de gegevensoverdracht aanzienlijk.
    • Er werd verder gewerkt aan het integreren van tools in de netwerkstack om de redenen voor het laten vallen van pakketten (oorzaakcodes) op te sporen. De redencode wordt verzonden wanneer het aan het pakket gekoppelde geheugen wordt vrijgegeven en maakt situaties mogelijk zoals het weggooien van pakketten vanwege headerfouten, detectie van rp_filter spoofing, ongeldige checksum, onvoldoende geheugen, geactiveerde IPSec XFRM-regels, ongeldig volgnummer TCP, enz.
    • Ondersteuning toegevoegd voor het terugvallen van MPTCP-verbindingen (MultiPath TCP) om normaal TCP te gebruiken, in situaties waarin bepaalde MPTCP-functies niet kunnen worden gebruikt. MPTCP is een uitbreiding 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. API toegevoegd om MPTCP-streams vanuit gebruikersruimte te beheren.
  • Uitrusting
    • Meer dan 420 regels code toegevoegd met betrekking tot het amdgpu-stuurprogramma, waarvan ongeveer 400 regels automatisch gegenereerde headerbestanden zijn voor ASIC-registergegevens in het AMD GPU-stuurprogramma, en nog eens 22.5 regels bieden de initiële implementatie van ondersteuning voor de AMD SoC21. De totale drivergrootte voor AMD GPU's bedroeg meer dan 4 miljoen regels code. Naast SoC21 biedt de AMD-driver ondersteuning voor SMU 13.x (System Management Unit), bijgewerkte ondersteuning voor USB-C en GPUVM, en voorbereidingen voor de ondersteuning van de volgende generaties RDNA3 (RX 7000) en CDNA (AMD Instinct) platforms .
    • De i915-driver (Intel) heeft uitgebreide mogelijkheden met betrekking tot energiebeheer. ID's toegevoegd voor Intel DG2 (Arc Alchemist) GPU's gebruikt op laptops, initiële ondersteuning geboden voor het Intel Raptor Lake-P (RPL-P) platform, informatie toegevoegd over grafische kaarten van Arctic Sound-M), ABI geïmplementeerd voor compute-engines, toegevoegd voor DG2-kaarten ondersteunen het Tile4-formaat; voor systemen gebaseerd op de Haswell-microarchitectuur is DisplayPort HDR-ondersteuning geïmplementeerd.
    • Het Nouveau-stuurprogramma is overgestapt op het gebruik van de handler drm_gem_plane_helper_prepare_fb; op sommige structuren en variabelen is statische geheugentoewijzing toegepast. Wat het gebruik van open source kernelmodules door NVIDIA in Nouveau betreft, komt het werk tot nu toe neer op het identificeren en elimineren van fouten. Het is de bedoeling dat de gepubliceerde firmware in de toekomst wordt gebruikt om de prestaties van het stuurprogramma te verbeteren.
    • Een stuurprogramma toegevoegd voor de NVMe-controller die wordt gebruikt in Apple-computers op basis van de M1-chip.

Tegelijkertijd vormde de Latin American Free Software Foundation een versie van de volledig vrije kernel 5.19 - Linux-libre 5.19-gnu, ontdaan van elementen van de firmware en stuurprogramma's die niet-vrije componenten of delen van code bevatten, waarvan de reikwijdte beperkt door de fabrikant. De nieuwe release ruimt de stuurprogramma's op voor pureLiFi X/XL/XC en TI AMx3 Wkup-M3 IPC. Bijgewerkte blob-opschoningscode in Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu stuurprogramma's en subsystemen. Verwerking van Qualcomm AArch64 devicetree-bestanden is geïmplementeerd. Ondersteuning toegevoegd voor het nieuwe naamgevingsschema voor Sound Open Firmware-componenten. Gestopt met het opschonen van het ATM Ambassador-stuurprogramma, dat uit de kernel is verwijderd. Het beheer van het opschonen van blobs in HDCP en Mellanox Core is verplaatst naar afzonderlijke kconfig-tags.

Bron: opennet.ru

Voeg een reactie