Release van de Linux-kernel 5.19

Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux-kernel 5.19 gepresenteerd. Onder de meest opvallende veranderingen bevinden zich: ondersteuning voor de processorarchitectuur LoongArch, integratie van de 'BIG TCP'-patches, een 'on-demand'-modus in fscache, verwijdering van de code voor ondersteuning van het a.out-formaat, de mogelijkheid om ZSTD te gebruiken voor het comprimeren van firmware, een interface voor het beheer van geheugenverdringing uit de gebruikersruimte, verbeterde betrouwbaarheid en prestaties van de pseudo-random number generator, en ondersteuning voor Intel IFS (In-Field Scan) extensies, AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions), en ARM SME (Scalable Matrix Extension).

In de aankondiging meldde Linus dat de volgende kernelrelease waarschijnlijk versie 6.0 zal krijgen, omdat er in de 5.x-tak voldoende releases zijn verzameld om het eerste cijfer van het versienummer te wijzigen. Deze wijziging in de nummering gebeurt om esthetische redenen en is een formele stap die ongemak wegneemt door een groot aantal releases in de serie.

Linus vermeldde ook dat hij voor de release een Apple-laptop op basis van de ARM64-architectuur (Apple Silicon) gebruikte met een Linux-omgeving gebaseerd op de Asahi Linux-distributie. Dit is niet zijn primaire werkstation, maar hij gebruikte dit platform om de geschiktheid voor het werken aan de kernel te testen en er zeker van te zijn dat hij kernelreleases onderweg kan maken met een lichte laptop. Vele jaren geleden had Linus al ervaring met Apple-hardware voor ontwikkeling - ooit gebruikte hij een computer met een ppc970 CPU en een Macbook Air.

In de nieuwe versie zijn 16.401 correcties opgenomen van 2.190 ontwikkelaars (in de vorige release waren er 16.206 correcties van 2.127 ontwikkelaars), de patchgrootte bedraagt 90 MB (de wijzigingen betroffen 13.847 bestanden, er zijn 1.149.456 regels code toegevoegd en 349.177 regels verwijderd). Ongeveer 39% van alle wijzigingen in 5.19 zijn gerelateerd aan apparaatdrivers, zo'n 21% van de wijzigingen betreft updates van hardware-specifieke code, 11% is gerelateerd aan de netwerstack, 4% aan bestandssystemen, en 3% aan interne subsystemen van de kernel.

De belangrijkste vernieuwingen in kernel 5.19:

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • Het EROFS-bestandssysteem (Enhanced Read-Only File System) is ontworpen voor gebruik op partities die alleen-lezen toegankelijk zijn en is overgeschakeld naar het fscache-subsysteem, dat gegevenscachediensten biedt. Deze wijziging heeft de prestaties van systemen waarin een groot aantal containers op basis van EROFS worden gestart, aanzienlijk verbeterd.
    • De fscache-subsystem heeft een on-demand leesmodus toegevoegd, die wordt gebruikt voor het optimaliseren van EROFS. Deze nieuwe modus maakt het mogelijk om lees-cache van bestandssystemen te organiseren die op het lokale systeem zijn. In tegenstelling tot de oorspronkelijk beschikbare modus, die gericht was op caching in het lokale bestandssysteem van gegevens die via netwerksystemen worden overgedragen, delegeert de on-demand modus de functies voor het ophalen van gegevens en het schrijven naar de cache aan een aparte achtergrondtaak die in de gebruikersruimte draait.
    • XFS biedt de mogelijkheid om miljarden uitgebreide attributen in een i-node op te slaan. Het maximale aantal extents voor één bestand is verhoogd van 4 miljard naar 247. Er is een modus geïmplementeerd voor atomair bijwerken van meerdere uitgebreide bestandseigenschappen.
    • In het Btrfs-bestandssysteem is de werking met vergrendelingen geoptimaliseerd, wat heeft geleid tot een prestatieverbetering van ongeveer 7% bij directe schrijfbewerkingen in nowait-modus. De prestaties van operaties in NOCOW-modus (zonder copy-on-write) zijn met ongeveer 3% verbeterd. De belasting van de pagina-cache tijdens de uitvoering van het 'send'-commando is verminderd. De minimale grootte van subpagina's is verlaagd van 64K naar 4K (subpagina's kleiner dan de kernpagina kunnen nu worden gebruikt). Er is overgestapt van het gebruik van een radix-boom naar het XArrays-algoritme.
    • In de NFS-server is een modus toegevoegd voor het verlengen van de status van de vergrendeling die door de client is ingesteld, die niet meer reageert op verzoeken. Deze nieuwe modus maakt het mogelijk om de schoonmaaktijd van de vergrendeling tot 24 uur uit te stellen, als een andere client geen concurrerende vergrendeling aanvraagt. In de standaardmodus wordt de vergrendeling na 90 seconden verwijderd nadat de client niet meer reageert.
    • In het fanotify FS-evensysteem is de FAN_MARK_EVICTABLE-vlag geïmplementeerd, waarmee je de verankering van doel-i-nodes in de cache kunt uitschakelen, bijvoorbeeld om subtrees te negeren zonder hun delen in de cache te verankeren.
    • In de FAT32-bestuurder is ondersteuning toegevoegd voor het verkrijgen van informatie over de aanmaaktijd van een bestand via de systeemaanroep statx, met een efficiëntere en functionelere variant van stat(), die uitgebreide informatie over het bestand retourneert.
    • Er zijn aanzienlijke optimalisaties aangebracht in de exFAT-driver, gerelateerd aan gelijktijdige opschoning van een groep sectoren in de actieve 'dirsync'-modus, in plaats van sequentiële opschoning per sector. Door het aantal blokverzoeken te verminderen, is de prestaties van het aanmaken van een groot aantal mappen op de SD-kaart met meer dan 73-85% toegenomen, afhankelijk van de clusteromvang.
    • De eerste correctie-update van de ntfs3-driver is opgenomen in de kernel. Sinds de opname van ntfs3 in kernel 5.15 in oktober vorig jaar is de driver niet bijgewerkt en was er geen contact met de ontwikkelaars, maar nu hebben de ontwikkelaars de publicatie van wijzigingen hervat. In de voorgestelde patches zijn fouten verholpen die leidden tot geheugenlekken en crashes, zijn er problemen met het uitvoeren van xfstests opgelost, is ongebruikte code opgeruimd en zijn typfouten gecorrigeerd.
    • Voor OverlayFS is de mogelijkheid geïmplementeerd om gebruikersidentificatoren van gemounte bestandssystemen in kaart te brengen, die worden gebruikt om bestanden van een bepaalde gebruiker op een gemounte externe schijf af te stemmen op een andere gebruiker in het huidige systeem.
  • Geheugen en systeemdiensten
    • De initiële ondersteuning voor de LoongArch-instructiesetarchitectuur is toegevoegd, toegepast in Loongson 3 5000-processoren en die een nieuwe RISC ISA implementeert, vergelijkbaar met MIPS en RISC-V. De LoongArch-architectuur is beschikbaar in drie varianten: een beperkte 32-bits (LA32R), gewone 32-bits (LA32S) en 64-bits (LA64).
    • De code ter ondersteuning van het a.out uitvoerbaar bestandformaat is verwijderd, wat als verouderd is beschouwd sinds versie 5.1. Het a.out-formaat wordt al lang niet meer gebruikt op systemen met Linux, en het genereren van a.out-bestanden wordt niet langer ondersteund door moderne tools in de standaard Linux-configuraties. De lader voor a.out-bestanden kan volledig in de gebruikersruimte worden geïmplementeerd.
    • De ondersteuning voor op x86-architectuur specifieke opstartopties is gestopt: nosep, nosmap, nosmep, noexec en noclflush.
    • De ondersteuning voor de verouderde CPU-architectuur h8300 (Renesas H8/300), die al lang niet meer wordt onderhouden, is stopgezet.
    • De mogelijkheden met betrekking tot het reageren op gedetecteerde split locks zijn uitgebreid. Deze ontstaan bij toegang tot niet-uitgelijnde gegevens in het geheugen, omdat bij het uitvoeren van een atomische instructie de gegevens twee CPU-cachelijnen kruisen. Dergelijke locks leiden tot aanzienlijke prestatiesverlies. Waar voorheen de kernel standaard een waarschuwing gaf met informatie over het proces dat de lock veroorzaakte, zal nu het probleemproces bovendien worden vertraagd om de prestaties van de rest van het systeem te behouden.
    • Ondersteuning voor de door Intel geïmplementeerde IFS (In-Field Scan) mechanisme is toegevoegd, waarmee laag-niveau diagnostische tests van de CPU kunnen worden uitgevoerd die problemen kunnen opsporen die niet worden vastgesteld door standaardmiddelen op basis van foutcorrectiecodes (ECC) of pariteitsbits. De uitgevoerde tests worden gepresenteerd in de vorm van opstartbare firmware, vergelijkbaar met microcode-updates. De testresultaten zijn beschikbaar via sysfs.
    • Er is de mogelijkheid toegevoegd om het bootconfig-bestand in de kernel in te bedden, waarmee naast commandoregelopties de parameters van de kernel kunnen worden gedefinieerd via een configuratiebestand. Embedden gebeurt met behulp van de bouwoptie ‘CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"’. Eerder werd bootconfig gedefinieerd door het aan de initrd-image te koppelen. Inbedding in de kernel maakt gebruik van bootconfig mogelijk in configuraties zonder initrd.
    • De mogelijkheid om firmware te laden die is gecomprimeerd met de Zstandard-algoritme is geïmplementeerd. In sysfs is een set van controlebestanden toegevoegd via /sys/class/firmware/*, waarmee de firmware-lading vanuit de gebruikersruimte kan worden geïnitieerd.
    • In de interface voor asynchrone invoer/uitvoer io_uring is een nieuwe vlag IORING_RECVSEND_POLL_FIRST voorgesteld. Wanneer deze wordt ingesteld, wordt de netwerkoperatie eerst behandeld met polling, wat middelen kan besparen in situaties waarin het acceptabel is om de operatie met enige vertraging te verwerken. In io_uring is ook ondersteuning voor de systeemoproep socket() toegevoegd, nieuwe vlaggen voorgesteld voor het vereenvoudigen van het beheer van bestandsdescriptoren, een ‘multi-shot’ modus toegevoegd voor het gelijktijdig accepteren van meerdere verbindingen in de accept()-oproep, en operaties voor het rechtstreeks doorgeven van NVMe-commando's aan het apparaat zijn toegevoegd.
    • Voor de Xtensa-architectuur is ondersteuning toegevoegd voor het foutopsporingshulpmiddel KCSAN (Kernel Concurrency Sanitizer), dat is ontworpen voor het dynamisch opsporen van racecondities binnen de kernel. Ook is ondersteuning voor de slaapmodus en coprocessors toegevoegd.
    • Voor de m68k-architectuur (Motorola 68000) is het volgende geïmplementeerd virtuele machine (platformsimulator), gebaseerd op de Android Goldfish-emulator.
    • Voor de AArch64-architectuur is ondersteuning toegevoegd voor Armv9-A SME (Scalable Matrix Extension) uit te breiden.
    • In de eBPF-subsysteem is het toegestaan om getypeerde pointers op te slaan in mapstructuren, en is ook ondersteuning toegevoegd voor dynamische pointers.
    • Er is een nieuwe voorspellende mechanism voor geheugenuitdrijving voorgesteld, die beheer vanuit de gebruikersruimte ondersteunt via het bestand memory.reclaim. Het schrijven van een getal naar het opgegeven bestand zal proberen om het overeenkomstige aantal bytes uit de set die met de cgroup is verbonden, uit te drijven.
    • De nauwkeurigheid van het geheugenverbruik is verhoogd bij het comprimeren van gegevens in de swapruimte met behulp van het zswap-mechanisme.
    • Voor de RISC-V-architectuur is ondersteuning toegevoegd voor het uitvoeren van 32-bit uitvoerbare bestanden op 64-bit systemen, is een modus toegevoegd voor het binden van beperkingsattributen aan geheugenpagina's (bijvoorbeeld om caching te verbieden) en is de functie kexec_file_load() geïmplementeerd.
    • De ondersteuning voor 32-bit systemen Armv4T en Armv5 is aangepast voor gebruik in universele multicore kernelbouwsels, geschikt voor verschillende ARM-systemen.
  • Virtualisatie en beveiliging
    • In het EFI-subsysteem is de mogelijkheid geïmplementeerd voor vertrouwelijke overdracht van geheime informatie aan gastsystemen zonder deze aan het hostsysteem prijs te geven. Gegevens worden verstrekt via de map security/coco in securityfs.
    • In de Lockdown-beschermmodus, die de toegang van de root-gebruiker tot de kernel beperkt en manieren om UEFI Secure Boot te omzeilen blokkeert, is een kwetsbaarheid verholpen die het mogelijk maakte om de beveiliging te omzeilen via manipulatie met de kernel-debugger.
    • Er zijn patches opgenomen die gericht zijn op het verbeteren van de betrouwbaarheid en prestaties van de generator voor pseudowillekeurige getallen.
    • Bij het bouwen met Clang 15 is ondersteuning toegevoegd voor het randomiseren van kernelstructuren.
    • In het Landlock-mechanisme, dat het interactie van een procesgroep met de externe omgeving beperkt, is ondersteuning gegeven voor regels die de uitvoering van bestandshernoemingsoperaties controleren.
    • Het IMA-systeem (Integrity Measurement Architecture), ontworpen voor het controleren van de integriteit van de besturingssysteemcomponenten via digitale handtekeningen en hashes, is overgeschakeld op het gebruik van de fs-verity-module voor bestandverificatie.
    • De logica voor acties bij het uitschakelen van niet-privileged toegang tot het eBPF-systeem is gewijzigd — eerder werden alle opdrachten die verband hielden met de systeemaanroep bpf() uitgeschakeld, maar vanaf versie 5.19 blijft toegang tot opdrachten die geen objecten creëren mogelijk. Onder deze omstandigheden is een privileged proces vereist voor het laden van een BPF-programma, maar daarna kunnen niet-privileged processen met dit programma interageren.
    • Ondersteuning voor de AMD SEV-SNP (Secure Nested Paging)-uitbreiding is toegevoegd, wat veilige werking met geneste paginatabellen in het geheugen waarborgt en bescherming biedt tegen de 'undeSErVed'- en 'SEVerity'-aanvallen op AMD EPYC-processors, die de AMD SEV (Secure Encrypted Virtualization)-bescherming omzeilen.
    • Ondersteuning voor het Intel TDX (Trusted Domain Extensions)-mechanisme is toegevoegd, waarmee pogingen tot ongeautoriseerde toegang tot versleuteld geheugen kunnen worden geblokkeerd. virtuele machines.
    • In de virtio-blk-driver, die wordt gebruikt voor de emulatie van blokapparaten, is ondersteuning voor invoer/uitvoer met behulp van polling toegevoegd, wat in de uitgevoerde tests leidde tot een vermindering van de vertraging met ongeveer 10%.
  • Netwerk subsysteem
    • Een reeks BIG TCP-patches is opgenomen, waarmee de maximale grootte van TCP-pakketten wordt vergroot tot 4 GB om de prestaties van high-speed interne datacenter-netwerken te optimaliseren. Deze vergroting van de pakketgrootte bij een 16-bits veldgrootte in de header wordt bereikt door de implementatie van 'jumbo'-pakketten, waarvan de grootte in de IP-header op 0 wordt ingesteld, terwijl de werkelijke grootte in een apart 32-bits veld in een bijgevoegde header wordt doorgegeven. Bij prestatietests leidde het instellen van de pakketgrootte op 185 KB tot een toename van de doorvoersnelheid met 50% en een aanzienlijke verlaging van de datavertraging.
    • De integratie van middelen voor het volgen van de oorzaken van pakketafwijzing (reden codes) in de netwerkgelaagdheid is voortgezet. De reden code wordt tijdens het vrijgeven van geheugen dat aan het pakket is gekoppeld, verzonden en maakt het mogelijk om situaties te registreren zoals het afwijzen van een pakket vanwege fouten in de velden van de header, spoofingdetectie door de rp_filter, een onjuiste checksum, geheugen tekort, activering van IPSec XFRM-regels, een ongeldig TCP-volgnummer, enzovoorts.
    • Er is ondersteuning toegevoegd voor het terugvallen van MPTCP-verbindingen (MultiPath TCP) naar het gebruik van gewone TCP in situaties waarin bepaalde MPTCP-mogelijkheden niet kunnen worden gebruikt. MPTCP is een uitbreiding van het TCP-protocol waarmee een TCP-verbinding kan worden gerealiseerd die pakketten gelijktijdig via meerdere routes over verschillende netwerkinterfaces verzendt, die aan verschillende IP-adressen zijn gebonden. Er is een API toegevoegd voor het beheren van MPTCP-stromen vanuit de gebruikersruimte.
  • Apparatuur
    • Meer dan 420.000 regels code zijn toegevoegd, gerelateerd aan de amdgpu-driver, waarvan ongeveer 400.000 regels bestaan uit automatisch gegenereerde headerbestanden met gegevens voor de ASIC-registers in de driver voor AMD GPU’s, en nog eens 22.500 regels bieden de eerste implementatie van ondersteuning voor AMD SoC21. De totale omvang van de driver voor AMD GPU’s is meer dan 4 miljoen regels code overschreden. Naast SoC21 omvat de AMD-driver ondersteuning voor SMU 13.x (System Management Unit), is de ondersteuning voor USB-C en GPUVM bijgewerkt, en is de voorbereidingen getroffen voor ondersteuning van de volgende generaties RDNA3 (RX 7000) en CDNA (AMD Instinct) platformen.
    • De i915-driver (Intel) heeft uitgebreide mogelijkheden op het gebied van energiebeheer. Er zijn identificators toegevoegd voor de Intel GPU DG2 (Arc Alchemist), gebruikt in laptops, er is initiële ondersteuning voor het Intel Raptor Lake-P (RPL-P) platform verzekerd, informatie over grafische kaarten Arctic Sound-M is toegevoegd, er is een ABI voor rekenengines geïmplementeerd, voor de DG2-kaarten is ondersteuning voor het Tile4-formaat toegevoegd, en voor systemen op basis van de Haswell-microarchitectuur is ondersteuning voor DisplayPort HDR gerealiseerd.
    • In de Nouveau-driver is overgestapt op het gebruik van de drm_gem_plane_helper_prepare_fb-handler; voor sommige structuren en variabelen is statische geheugenallocatie toegepast. Wat betreft het gebruik van de door NVIDIA gepubliceerde open-source kernmodules, is het huidige werk gericht op het identificeren en verhelpen van fouten. In de toekomst is het de bedoeling om de gepubliceerde firmware te gebruiken om de prestaties van de driver te verbeteren.
    • Er is een driver toegevoegd voor de NVMe-controller die wordt gebruikt in Apple-computers op basis van de M1-chip.

Tegelijkertijd heeft de Latijns-Amerikaanse Stichting voor Vrije Software een volledig vrije versie van de kernel 5.19 - Linux-libre 5.19-gnu - gevormd, vrijgemaakt van firmware- en driver-elementen die onvrije componenten of code bevatten waarvan het gebruik beperkt is door de fabrikant. In deze nieuwe uitgave zijn de drivers voor pureLiFi X/XL/XC en TI AMx3 Wkup-M3 IPC opgeschoond. De code voor het opschonen van blobs in de drivers en subsystemen van Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu drivers is bijgewerkt. De verwerking van devicetree-bestanden voor Qualcomm AArch64 is geïmplementeerd. Ondersteuning voor een nieuw benoemingsschema voor Sound Open Firmware is toegevoegd. Het opschonen van de ATM Ambassador-driver, die uit de kernel is verwijderd, is stopgezet. Het beheer van blobs-opschoning in HDCP en Mellanox Core is verplaatst naar afzonderlijke kconfig-tags.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster