Released kernel Linux 6.8

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux-kernel 6.8. Enkele van de meest opvallende wijzigingen zijn: de Xe-driver voor Intel GPU's, een beschermingsmodus voor block devices met gemounte bestandssystemen, de Deadline-server takenplanner, automatische optimalisatie van identieke geheugenpagina's, de eerste driver geschreven in Rust, de systeemeisen listmount en statmount, verwijdering van bpfilter en SLAB, de guest_memfd-mechanisme in KVM, en profilering van data-access.

In de nieuwe versie zijn 15641 correcties aangebracht door 2018 ontwikkelaars, de patchgrootte is 44 MB (de wijzigingen betroffen 12212 bestanden, er zijn 663864 regels code toegevoegd en 339094 regels verwijderd). In de vorige release waren er 18405 correcties van 2066 ontwikkelaars, met een patchgrootte van 72 MB. Ongeveer 42% van alle wijzigingen in 6.8 heeft betrekking op apparaatsdrivers, ongeveer 15% heeft betrekking op de updating van hardware-architectuur-specifieke code, 14% is gerelateerd aan de netwerkstack, 6% aan bestandssystemen en 3% aan interne subsystemen van de kernel.

In de Git-repository met kernel 6.8 zijn er 9.996 miljoen objecten, wat erop wijst dat de volgende kernel 6.9 de mijlpaal van 10 miljoen git-objecten zal overschrijden. Eerder corrigeerde de wijziging van de branches 3.x en 4.x goed met het aantal git-objecten in de repository - kernel 3.0 werd vrijgegeven toen er ongeveer 2 miljoen objecten in de repository waren, en kernel 4.0 bij 4 miljoen objecten. Echter, in 2019 doorbrak de release van 5.0 deze logische keten, omdat de repository bij de creatie ongeveer 6.5 miljoen git-objecten bevatte.

Belangrijkste vernieuwingen in kernel 6.8:

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • Een modus voor het blokkeren van directe schrijfrechten op block devices waarvan de bestandssystemen zijn gemount, is toegevoegd (na inschakeling van deze modus kan de rootgebruiker geen wijzigingen aanbrengen in de FS via manipulaties op het niveau van block devices). Standaard is deze modus uitgeschakeld en vereist de parameter BLK_DEV_WRITE_MOUNTED bij het bouwen. Voor partities met Btrfs werkt de blokkering momenteel niet, omdat de benodigde wijzigingen in de Btrfs-code nog niet zijn aangenomen.
    • De systeemeisen listmount() en statmount() zijn toegevoegd, waarmee gedetailleerde informatie over gemounte bestandssystemen vanuit de gebruikersruimte kan worden verkregen.
    • In het XFS-bestandssysteem is de ontwikkeling van de mogelijkheid om de fsck-tool te gebruiken voor de controle en correctie van ontdekte problemen in online modus, zonder het bestandssysteem te demonteren, voortgezet.
    • In Ext4 is de aanroep dioread_nolock gebruikt voor blokken die kleiner zijn dan een geheugense pagina, wat de prestaties verbetert door overbodige vergrendelingen te vermijden. Sommige functies zijn omgezet naar het gebruik van geheugenpagina's (page folios).
    • In Btrfs is ondersteuning toegevoegd voor de mount-vlag 'nospace_cache' om de cache voor vrije blokken uit te schakelen. Sommige functies zijn omgezet naar het gebruik van geheugenpagina's (page folios).
    • In het bestandssysteem EROFS (Extendable Read-Only File System), bedoeld voor gebruik op partities die alleen-lezen zijn, is ondersteuning voor subpagina-compressie toegevoegd en is de werking verbeterd in situaties met een tekort aan geheugen.
    • In het bestandssysteem F2FS is de ondersteuning voor gezoneerde opslagapparaten verbeterd (deling in zones van blokgroepen of sectoren, waar alleen sequentiĆ«le toevoeging van gegevens is toegestaan, met een volledige update van de hele blokgroep).
    • Voor het SMB bestandssysteem is de mogelijkheid geĆÆmplementeerd om blok- en symbolische apparaatsbestanden te maken.
    • In Bcachefs is gedeeltelijke ondersteuning voor verificatie en herstel van de integriteit van aangekoppelde bestandssystemen toegevoegd.
    • In de device-mapper subsysteem is de ondersteuning voor de MD_LINEAR, MD_MULTIPATH en MD_FAULTY handlers stopgezet, die in 2021 als verouderd zijn verklaard.
  • Geheugen en systeemdiensten
    • In het Zswap subsysteem is een geactiveerde functie toegevoegd die bij een tekort aan RAM geforceerd pagina's die lange tijd niet zijn aangesproken, naar de echte swapruimte verplaatst. Zswap cachedert pagina's die naar de swap worden verplaatst en houdt ze in RAM in gecomprimeerde vorm zo veel mogelijk zonder ze naar de echte ongecomprimeerde swapruimte op de schijf te schrijven. De aangebrachte wijzigingen bij geheugen tekort stellen in staat om de grootte van de in het RAM opgeslagen Zswap-pool te verminderen en geheugen vrij te maken voor het systeem.
    • In Zswap is er een nieuwe modus voorgesteld die de uitgestelde schrijfoperatie (writeback) naar de echte swapruimte volledig uitschakelt wanneer een schrijfoperatie niet succesvol was, en die al bestaande pagina's in de Zswap-pool niet naar de swapruimte wegschrijft.
    • In de taakscheduler is het SCHED_DEADLINE-servermechanisme toegevoegd, dat het probleem oplost van CPU-hulpmiddelen die niet voldoende worden ontvangen door reguliere taken in situaties waarin CPU wordt gemonopoliseerd door hooggeprioriteerde (realtime) taken. Om CPU-monopolisering in de kernel te voorkomen, werd eerder het Realtime throttling-mechanisme gebruikt, dat probeerde 5% te reserveren voor laaggeprioriteerde taken, terwijl 95% van de tijd aan realtime-taken werd besteed. Dit mechanisme liet te wensen over, aangezien reguliere taken in veel situaties niet genoeg CPU-tijd ontvingen. De SCHED_DEADLINE-server implementeert een efficiĆ«nter mechanisme voor het reserveren van hulpbronnen.
    • In het DAMON (Data Access MONitor)-subsysteem, dat het mogelijk maakt om de toegang van een proces tot gegevens in het RAM-geheugen te volgen (bijvoorbeeld, je kunt zien welke geheugengebieden het proces benaderde en welke gebieden ongebruikt bleven), is een mechanisme voor automatische aanpassing van de agressiviteit van geheugengebruik op basis van ingestelde quota toegevoegd.
    • Ondersteuning voor multi-size grote gehepages (mTHP - multi-size Transparent Huge Pages) is toegevoegd, waardoor geheugen in blokken kan worden toegewezen die groter zijn dan de basispagina, maar kleiner dan de traditionele THP-pagina.
    • Ondersteuning voor grote folio's (page folios, samengevoegde gehepages) voor anoniem geheugen (niet gekoppeld aan het bestandssysteem, bijvoorbeeld toegewezen via malloc) is toegevoegd. Deze wijziging is gericht op het verbeteren van de prestaties door grotere stukken geheugen toe te wijzen tijdens toegang tot niet-toegewezen gehepages (page faults). Bijvoorbeeld, het gebruik van grote folio's heeft geleid tot een reductie van 5% in de tijd die nodig is voor het opnieuw opbouwen van de kernel (met 40% minder tijd in de kernel).
    • De kernelconfiguratie heeft de parameter TRANSPARENT_HUGEPAGE_NEVER toegevoegd, die de mogelijkheid biedt om het gebruik van grote gehepages (Transparent Huge Pages) uit te schakelen.
    • In de systeemaanroep userfaultfd(), die het mogelijk maakt om handlers voor niet-toegewezen gehepages (page faults) in de gebruikersruimte te creĆ«ren, is de bewerking UFFDIO_MOVE toegevoegd, waardoor pagina's in het virtuele adresruimte kunnen worden verplaatst tijdens heap-compactie zonder de pagina-aankoopoperatie uit te voeren. In uitgevoerde tests heeft het gebruik van UFFDIO_MOVE de tijd voor compacteren met 40% verminderd in vergelijking met het gebruik van de UFFDIO_COPY-operatie.
    • Een mechanisme genaamd 'KSM advisor' is toegevoegd, dat automatisch de parameters van de subsysteem voor het samenvoegen van identieke geheugenspagina's (KSM - Kernel Samepage Merging) optimaliseert.
    • De overdracht van wijzigingen uit de Rust-for-Linux tak is voortgezet, die verband houden met het gebruik van de programmeertaal Rust als tweede taal voor de ontwikkeling van stuurprogramma's en modules van de kernel (ondersteuning voor Rust is standaard niet ingeschakeld en leidt er niet toe dat Rust een verplichte bouwafhankelijkheid voor de kernel wordt). In de nieuwe versie zijn wijzigingen opgenomen die een Rust-wrapper bovenop het abstractieniveau van phylib toevoegen en deze wrapper gebruiken voor de ax88796b_rust driver, die ondersteuning biedt voor de PHY-interface van de Ethernet-controller Asix AX88772A (100MBit). Functioneel is de Rust-driver volledig equivalent aan de oude driver ax88796b, geschreven in C, en kan deze worden gebruikt met netwerkkaarten X-Surf 100, uitgerust met de chip AX88796B. Voor de LoongArch-architectuur is de mogelijkheid toegevoegd om modules in Rust te schrijven. De overgang naar het gebruik van Rust-versie 1.74.1 is voltooid.
    • Een BPF-tokenmechanisme is toegevoegd, dat het mogelijk maakt om selectief de verwerking van specifieke BPF-mogelijkheden, zoals het laden van een BPF-programma of het maken van een BPF-map, te delegeren aan niet-privilegeerde processen in de gebruikersruimte, waarvan de betrouwbaarheid is bevestigd met een speciaal token.
    • De functionaliteit van de BPF-programmaverificator is uitgebreid.
    • In de perf-tool is ondersteuning voor dataprofilering toegevoegd, waardoor het mogelijk is om lezen en schrijven naar datastructuren bij te houden, bijvoorbeeld om de meest actief gewijzigde velden in structuren te identificeren. Op systemen met processors die het verzamelen van informatie over geheugenoperaties ondersteunen (Intel, AMD, ARM), moet de 'perf mem record' opdracht worden gebruikt voor het verzamelen van statistieken, terwijl voor het genereren van een rapport over toegang tot datastructuren de 'perf annotate --data-type' opdracht moet worden gebruikt.
    • De prestaties van de verwerking van systeemaanroepen op de s390-architectuur (IBM Z) zijn geoptimaliseerd, wat in tests leidde tot een versnelling van de toegang tot systeemaanroepen met ongeveer 11%.
    • De mogelijkheid is geboden om de grootte van traceerbuffers aan te passen, die worden gebruikt voor het bufferen van informatie over traceerevenementen die naar de gebruikersruimte worden verzonden.
    • Het eerder aangekondigde verouderde SLAB-geheugenverdeelmechanisme is verwijderd en in de kernel wordt nu uitsluitend SLUB gebruikt. Als reden worden problemen met onderhoud, bestaande problemen in de code en duplicatie van functionaliteit met de meer geavanceerde SLUB-allocator genoemd.
    • Bij de kernelconstructie is de vlag '-Wmissing-prototypes' ingeschakeld, die waarschuwingen genereert voor aanroepen van globale functies die geen prototype-definitie hebben.
    • Voor de RISC-V-architectuur op systemen die de SUSP-uitbreiding ondersteunen, is ondersteuning voor de slaapmodus met behoud van status in RAM geĆÆmplementeerd. Er is een systeemaanroep riscv_hwprobe() beschikbaar gesteld om informatie te verkrijgen over de ondersteunde architectuuruitbreidingen van de RISC-V-instructieset.
  • Virtualisatie en beveiliging
    • Nieuwe systeemaanroepen lsm_list_modules(), lsm_get_self_attr() en lsm_set_self_attr() zijn toegevoegd voor het weergeven van de lijst met geladen LSM-modules (Linux Security Modules) en het verkrijgen/instellen van de attributen van de LSM-module. Een nieuwe structuur lsm_ctx is toegevoegd voor communicatie in de LSM-context tussen de gebruikersruimte en de kernel.
    • Het AppArmor-subsysteem is overgeschakeld op het gebruik van de SHA-256-algoritme voor verificatie van regels, in plaats van SHA-1-hashes.
    • De implementatie van de functie strlcpy() is uit de kernel verwijderd, die deze zomer in de Glibc 3.38 C-bibliotheek is opgenomen. Strlcpy is een alternatief voor de functie strncpy(), die buffer overflow-beveiliging biedt en altijd een afsluitende null byte toevoegt.
    • In de hypervisor KVM Ondersteuning voor het guest_memfd-subsysteem (guest-first memory) is toegevoegd, waarmee geheugengebeheerfuncties worden geboden die mogelijkheden en optimalisaties mogelijk maken die niet bereikbaar zijn met het gedeelde geheugengeheersubsysteem. Bijvoorbeeld, guest_memfd maakt het mogelijk om een geheugenbereik toe te wijzen en deze naar het gastensysteem te reflecteren, dat niet toegankelijk is voor de hostomgeving, wat kan worden gebruikt voor vertrouwelijke berekeningen.
    • Voor gastensystemen die draaien onder de KVM-hypervisor, is ondersteuning ingeschakeld voor de door Intel in processors aangeboden LAM-modus (Linear Address Masking), waarmee een deel van de bits van 64-bits pointers (de bits 57 tot 62) kan worden gebruikt om niet-adresserende metadata op te slaan.
    • De KVM-hypervisor voor systemen gebaseerd op de ARM64-architectuur heeft ondersteuning gekregen voor 52-bits (LPA2) fysieke adressen. Voor systemen met de x86-architectuur is de mogelijkheid toegevoegd om te compileren zonder emulatie van Hyper-V-hypercalls, wat de grootte van de kernel vermindert.
    • Er is een iaa-driver (IAA Compression Accelerator) toegevoegd om de compressie- en decompressieprestaties van gegevens met de DEFLATE-methode te versnellen, gebruikmakend van de mogelijkheden van cryptografische versnellers van Intel Analytics Accelerator (IAA).
    • Aan de host-omgeving is ondersteuning voor het Intel TDX (Trusted Domain Extensions)-mechanisme toegevoegd. Dit stelt gebruikers van de KVM-hypervisor in staat om beveiligde gastomgevingen te creĆ«ren waarin geheugenversleuteling wordt toegepast. virtuele machines.
    • In SELinux is de SID-identificator 'init' toegevoegd, waarmee processen die in de vroege opstartfase worden uitgevoerd, voordat SELinux-beleidsregels van toepassing zijn, kunnen worden onderscheiden. De interface /sys/fs/selinux voor het beheer van SELinux is verbeterd.
  • Netwerk subsysteem
    • Er is een low-level reorganisatie van de basis netwerk datastructuren uitgevoerd ter verbetering van de cache-efficiĆ«ntie. Eerder lagen de velden in de netwerstackstructuren socks, netdev, netns en mibs in de volgorde waarin ze werden toegevoegd, wat het gebruik van de processor cache beperkte. De herziening van de plaatsing van variabelen in deze structuren leidde tot een merkbare versnelling van de TCP-werking, door het minimaliseren van de cachelijnen tijdens de gegevensoverdracht en het optimaliseren van de toegang tot variabelen. In gevallen van verwerking van meerdere parallelle TCP-verbindingen kan de versnelling oplopen tot 40%.
    • Het bpfilter-subsysteem, dat BPF gebruikte voor pakketfiltering, is verwijderd. Bpfilter werd geleverd sinds release 4.18, maar werd nooit op een niveau gebracht dat geschikt was voor breed gebruik. In de afgelopen jaren is de bpfilter-code in de kernel niet verder ontwikkeld, terwijl de ontwikkeling is voortgezet door Facebook in een aparte repository.
  • Apparatuur
    • De nieuwe drm-driver (Direct Rendering Manager) Xe is toegevoegd voor GPU's op basis van de Intel Xe-architectuur, die wordt gebruikt in Intel Arc videokaarten en geĆÆntegreerde graphics, beginnend met de Tiger Lake-processors. De Xe-driver wordt gepositioneerd als de basis voor de werking van nieuwe chips, niet afhankelijk van de code ter ondersteuning van oudere platforms. De driver is opgebouwd met een nieuwe architectuur, waarbij bestaande componenten van het DRM-sub systeem actiever worden gebruikt, evenals standaardcomponenten van de i915-driver, niet gebonden aan specifieke GPU's, zoals de code voor de interactie met schermen, geheugmodel en implementatie van execbuf. In Mesa is de werking van OpenGL en Vulkan boven de Xe-driver geĆÆmplementeerd op basis van de wijzigingen die zijn aangebracht in de bestaande Mesa-drivers Iris en ANV.
    • In de i915-driver is de ondersteuning voor Intel LunarLake-chips (Xe 2) verder ontwikkeld. De ondersteuning voor Intel Meteor Lake-chips is verbeterd.
    • In de Nouveau-driver is een instelling geĆÆmplementeerd voor het standaard gebruik van de firmwarefuncties GSP voor de werking met NVIDIA GPU's op basis van de microarchitecturen Turing en Ampere, waarbij de initialisatie- en beheeroperaties van de GPU worden uitgevoerd door een aparte microcontroller GSP (GPU System Processor). Wanneer deze instelling is ingeschakeld, werkt de driver via de firmware-aanroep in plaats van directe programmering van hardware-interactie-operaties.
    • In de AMDGPU-driver is ondersteuning voor ACPI WBRF en VPE DPM toegevoegd, de verwerking van de PCIe-kanaalsnelheid is gewijzigd, in de gebruikt synchronisatiequeues zijn 64-bits volgordennummers betrokken, ondersteuning voor AMD-specifieke kleurbeheersmechanismen is toegevoegd, en een probleem met de slaapstand is opgelost.
    • Een initiĆ«le implementatie van de driver voor de GPU Broadcom VideoCore 7.1 is toegevoegd, die wordt gebruikt in Raspberry Pi 5-borden.
    • Een driver voor de PowerVR 6 GPU-serie op basis van de Rogue-microarchitectuur van Imagination Technologies is toegevoegd.
    • Ondersteuning voor Thunderbolt/USB4-controllers, geĆÆntegreerd in chips op basis van de Intel Lunar Lake-microarchitectuur, is toegevoegd.
    • Drivers voor camera's die worden gebruikt in SoC Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave en THine THP7312 zijn toegevoegd.
    • Ondersteuning voor gamingcontrollers NSO (Nintendo Switch Online) is toegevoegd — varianten van oude controllers van SNES (Super Nintendo), Genesis en N64 (Nintendo 64), aangepast voor Nintendo Switch. Een driver voor de Adafruit Seesaw gamepads is toegevoegd. De xpad-driver heeft ondersteuning voor Lenovo Legion Go-controllers toegevoegd.
    • In de dts-driver is ondersteuning toegevoegd voor de gameapparaten Powkiddy RK2023, Powkiddy X55 en Anbernic RG351V.
    • Ondersteuning voor geluidsystemen die worden gebruikt in NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 en X1E80100-chips is toegevoegd.
    • AMD heeft wijzigingen aangebracht met betrekking tot de ondersteuning van de toekomstige serie processors op basis van de nieuwe microarchitectuur Zen 5.
    • Ondersteuning voor ARM64 SoC: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 en Unisoc UMS9620 (Tanggula 7) is toegevoegd.
    • Ondersteuning voor ARM-borden en apparaten is toegevoegd: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress op basis van Marvell CN913x, Chromebook van Lenovo, Asus en Acer op basis van Mediatek MT8183, Toradex Verdin AM62, borden op basis van Allwinner H616/H618.
    • De ondersteuning voor ARM11 ARMv6K SMP-processors is beĆ«indigd.

Tegelijkertijd heeft de Latijns-Amerikaanse Free Software Foundation een versie van de volledig vrije kernel 6.8 — Linux-libre 6.8-gnu gepresenteerd, gereinigd van firmware- en drivercomponenten met niet-vrije onderdelen of codefragmenten, waarvan het gebruik door de fabrikant is beperkt. In versie 6.8 is de code voor het reinigen van blobs in verschillende drivers en subsysteem bijgewerkt. De drivers Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY en Realtek rtw8922a zijn gereinigd. Vanwege de verwijdering uit de kernel is de reiniging van de drivers atmel, hermes, orinoco_usb, libertas_cs en zd1201 stopgezet. De namen van blobs in dts-bestanden (devicetree) voor de ARM- en Aarch64-architecturen zijn ook gereinigd. Problemen met de reiniging van de i915-driver zijn verholpen.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster