Release van Linux-kernel 6.17

Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux-kernel 6.17 gepresenteerd. Onder de meest opvallende veranderingen bevinden zich: prestatieverbeteringen voor Btrfs, systeemaanroepen file_getattr() en file_setattr(), uniformiteit tussen uniprocessor- en multiprocessorconfiguraties in de taakplanner, de DAMON_STAT-module met statistieken over geheugentoegang, ondersteuning voor Live-patches op ARM64-systemen, verzending van core-dumps via socket AF_UNIX, beperking van SCHED_EXT via cgroup, vereenvoudigde configuratie van bescherming tegen kwetsbaarheden in CPU's, compilatie in Clang met initialisatie van variabelen op de stack, bescherming tegen vervalsing van /proc, uitbreiding van de RV-subsystem (Runtime Verification), beperking van sockets AF_UNIX via AppArmor, en het TCP DualPI2 overschrijvingscontrole-algoritme.

De nieuwe versie bevat 14.334 correcties van 2.118 ontwikkelaars, de patchgrootte is 46 MB (de wijzigingen betroffen 12.841 bestanden, met 646.654 toegevoegde code regels en 398.782 verwijderde regels). In de vorige release waren er 15.924 correcties van 2.145 ontwikkelaars, met een patchgrootte van 50 MB. Ongeveer 43% van alle in 6.17 voorgestelde wijzigingen heeft betrekking op stuurprogramma's voor apparaten, ongeveer 12% van de wijzigingen zijn gerelateerd aan de update van architectuurspecifieke code, 14% heeft betrekking op de netstack, 4% op bestandssystemen en 3% op interne subsystemen van de kernel.

De belangrijkste vernieuwingen in kernel 6.17 (1, 2, 3):

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • In Btrfs is experimentele ondersteuning voor grote geheugenpagina's (large folios) toegevoegd, waardoor overhead kan worden verminderd en de prestaties van een aantal bewerkingen kunnen worden verhoogd. Caching van verzoeken naar bitmap-kaarten voor vrijgevertelling is geïmplementeerd, waardoor de prestatie bij het aanmaken van lege bestanden met 20% is toegenomen. De werking van voorspellend lezen is verbeterd in systemen die datacompressie toepassen. Sleutels zijn dichter op elkaar geplaatst in de XArray-structuur, wat de compactheid van de opslag van gebiedenbomen heeft verbeterd en het aantal eindpunten met 50-70% heeft verminderd. Er zijn extra instellingen voor het gebruik van compressie in gedetfragmenteerde gebieden verstrekt.
    • In het ext4-bestandssysteem is ondersteuning voor buffered input/output met de vlag RWF_DONTCACHE toegevoegd, waarbij gegevens onmiddellijk uit de pagina-cache worden verwijderd na het voltooien van de bewerking.
    • In het EROFS-bestandssysteem is ondersteuning voor het comprimeren van metadata geïmplementeerd.
    • De NFS-server kan nu schrijfoperaties delegeren aan clients die bestanden in alleen-lezen modus openen.
    • In de systeemaanroep fallocate() is de vlag FALLOC_FL_WRITE_ZEROES toegevoegd, waarmee een opgegeven bereik in een bestand met nullen kan worden gevuld, gebruikmakend van de WRITE_ZERO-opdracht die door sommige SSD's wordt ondersteund en die nullering kan uitvoeren zonder invoer-/uitvoerbewerkingen. Deze optie is momenteel alleen beschikbaar in het ext4-bestandssysteem.
    • De systeemaanroepen file_getattr() en file_setattr() zijn toegevoegd om de inode-attributen van een bepaald bestand te manipuleren.
    • De driver "pktcdvd" voor het werken met optische media in batchmodus is verwijderd, die in 2016 als verouderd was gemarkeerd.
    • Het Bcachefs-bestandssysteem in de Linux-kernel is overgeschakeld naar de externe ondersteuningmodus, wat betekent dat wijzigingen voor Bcachefs niet meer worden aangenomen in de hoofdkernel, terwijl dit bestandssysteem in de codebase van de kernel wordt gehouden. De ontwikkeling van Bcachefs zal buiten de codebase van de kernel plaatsvinden totdat Kent Overstreet in feite kan aantonen dat het mogelijk is om correct samen te werken met andere kernelontwikkelaars en in staat is om zich aan de gevestigde ontwikkelingsregels te houden.
  • Geheugen en systeemdiensten
    • De ondersteuning voor single-processorconfiguraties is uit de taakplanner verwijderd. Op systemen met één processor moeten nu kernen worden gebruikt die zijn samengesteld voor multiprocessorsystemen (SMP). De code voor single- en multiprocessorsystemen is unificatie en ontdaan van onnodige bindingen aan de kernparameter CONFIG_SMP.
    • De DAMON_STAT (Data Access Monitoring Results Stat) kernelmodule is toegevoegd, waarmee toegang tot het geheugen kan worden gevolgd met behulp van de DAMON (Data Access MONitor) subsystem. De module biedt statistieken over inactiviteit (memory_idle_ms_percentiles) en geschatte geheugendoorvoersnelheid (estimated_memory_bandwidth).
    • Op systemen met de ARM64-architectuur is ondersteuning voor Live-patches geïmplementeerd, waardoor het mogelijk is om correcties in de Linux-kernel toe te passen zonder een herstart of stop van het systeem.
    • De minimalistische C-bibliotheek nolibc, geleverd met de broncode van de Linux-kernel en die een wrapper biedt bovenop de basale systeemaanroepen, ondersteunt nu de Architecturen SuperH, x32, MIPS n32 en MIPS n34.
    • De mogelijkheid om inhoud van core-dumps via de AF_UNIX-socket te verzenden, is uitgebreid, waardoor veiligere core-dumpverwerkers in de gebruikersruimte kunnen worden gecreëerd, die niet afhankelijk zijn van door de kernel aangeroepen privilegederde processen. In de nieuwe versie is een protocol toegevoegd voor creatie. servers, die in staat zijn om de verwerking van core-dumps op taakniveau te beheren. Voor bepaalde processen kunnen core-dumps bijvoorbeeld genegeerd worden, terwijl ze voor andere via een socket worden verzonden. Een prototype server voor het beheren van core-dumps is afzonderlijk voorbereid.
    • De optie 'crashkernel=size,cma' is toegevoegd aan de kernel command line voor het reserveren van geheugen via CMA (Contiguous Memory Allocator) voor het opslaan van de kernel crash-dump.
    • De mogelijkheden van het pidfd-mechanisme zijn uitgebreid, waardoor identificators die aan specifieke processen zijn gekoppeld en in tegenstelling tot pid niet opnieuw toegewezen worden, gebruikt kunnen worden. Er is de mogelijkheid toegevoegd om uitgebreide attributen vanuit de gebruikersruimte aan pidfd te koppelen. Het openen van bestandsdescriptoren voor pidfd via de functie open_by_handle_at() is toegestaan zonder koppeling aan het bestandssysteem. Informatie die door de kernel samen met pidfd is aangemaakt, is nu aan het proces gekoppeld, en niet aan pidfd, en wordt tussen heropening van hetzelfde proces bewaard.
    • Een functie bpf_cgroup_read_xattr() is toegevoegd aan het BPF-systeem om uitgebreide bestandsattributen te lezen. Er is de mogelijkheid geboden om typische stringbewerkingen zoals bpf_strcmp, bpf_strnchr, bpf_strchrnul, bpf_strlen en bpf_strspn in te zetten binnen BPF-programma's in alleen-lezen modus. Standaard streams stdout en stderr kunnen nu worden gebruikt voor interactie met componenten in de gebruikersruimte. Voor systemen op basis van de LoongArch-architectuur heeft BPF de mogelijkheid tot dynamische code-modificatie geïmplementeerd, het 'BPF trampoline'-mechanisme (verlaagt overhead bij het doorgeven van oproepen tussen de kernel en BPF-programma's) en het uitvoeren van programma's die struct_ops gebruiken om kernelfunctiehandelaars via BPF te creëren.
    • In het tijdregistratiesysteem is ondersteuning voor auxiliaire klokken (auxiliary) geïmplementeerd, die niet zijn gekoppeld aan de reguliere systeemklokken en volgens hun eigen ritme werken (voorheen werkten alle klokken met hetzelfde ritme en verschilden ze alleen in verschuiving).
    • Initiële ondersteuning voor Proxy Execution is toegevoegd om problemen met prioriteitsomkering te verzachten. Proxy-executie stelt een taak die wacht op het vrijgeven van een lock in staat om zijn uitvoeringscontext over te dragen aan de taak die de lock vasthoudt, om het vrijgeven van die lock te versnellen.
    • De voortgang van veranderingen uit de Rust-for-Linux tak met betrekking tot het gebruik van de Rust-taal als tweede taal voor de ontwikkeling van stuurprogramma's en kernelmodules is voortgezet (ondersteuning voor Rust is standaard niet geactiveerd en leidt niet tot het opnemen van Rust in de verplichte bouwafhankelijkheden van de kernel). Er zijn abstracties toegevoegd voor het beheer van spannings- en stroomregelaars, firmware-eigenschappen, invoer-/uitvoerbronnen en geheugen voor invoer-/uitvoer. De macro 'warn_on!()' is geïmplementeerd. Er is een UserPtr-type toegevoegd voor pointers in de gebruikersruimte. De functionaliteit van de modules workqueue, uaccess, dma, time en list is uitgebreid. Er is een 'bits' module toegevoegd met de functies 'bit' en 'genmask'.
    • De code voor het berekenen van CRC-controlewaarden is herzien en er zijn nieuwe aanroepen toegevoegd voor het genereren van SHA-1 en SHA-2 hashes. Architectuur-specifieke optimalisaties zijn toegevoegd. De prestaties van de functie crc32c() zijn verbeterd op nieuwe x86_64 CPU's die de VPCLMULQDQ (Vector Carry-Less Multiplication of Quadwords) extensie ondersteunen.
    • Voor S390-systemen is ondersteuning voor uitwisseling naar de swap-partitie en migratie van grote geheugensegmenten (transparent huge page) gerealiseerd.
    • Er is een optie toegevoegd voor het instellen van de agressiviteit van paginavrijgave (proactive-reclaim) bij een tekort, gekoppeld aan specifieke NUMA-knooppunten, waardoor het mogelijk is om NUMA-knooppunten aan te wijzen waarvoor een meer actieve geheugenontlasting zal worden toegepast. Bijvoorbeeld, 'echo "512M swappiness=10" > /sys/devices/system/node/node1/reclaim'.
    • In het SCHED_EXT-mechanisme, dat BPF mogelijk maakt voor het creëren van CPU-schedulers, is een mogelijkheid toegevoegd voor bandbreedtebeheer via cgroup. Zo kan de cpu.max parameter worden gebruikt om de CPU-belasting te beperken.
    • De automatische montage van het virtuele bestandssysteem tracefs in de map /sys/kernel/debug/tracing is als verouderd verklaard; in plaats daarvan moet /sys/kernel/tracing worden gebruikt.
  • Virtualisatie en beveiliging
    • Er is een optie toegevoegd om in te schakelen bescherming tegen kwetsbaarheden in de CPU door het kiezen van te blokkeren aanvalsvectoren. In plaats van het specificeren van concrete kwetsbaarheden in de instellingen. De blokkeringsmethoden worden gekozen op basis van het type isolatieschending: tussen gebruiker en kernel (user-kernel), tussen gebruikers (user-user), tussen het gastenbesturingssysteem en de hostomgeving (guest-host), tussen verschillende gastenbesturingssystemen (guest-guest) en tussen verschillende threads (cross-thread). De voorgestelde aanpak stelt in staat om alleen de bescherming te activeren tegen die klassen kwetsbaarheden die de gebruiker daadwerkelijk zorgen baren. Eigenaren van cloudomgevingen kunnen de modi guest-host en guest-guest inschakelen, waarna de beschermingsmethoden tegen kwetsbaarheden zoals BHI, GD, L1TF, MDS, MMIO, Retbleed, RFDS, Spectre_v2, SRBDS, SRSO en TAA worden geactiveerd.
    • Ondersteuning voor het bouwen met de Clang-compiler is toegevoegd met inschakeling van de modus voor het volgen van de stackdiepte, waarin alle in de stack opgeslagen variabelen worden geïnitialiseerd. De initialisatie wordt uitgevoerd om te voorkomen dat informatie uit de kernel lekt via niet-geïnitialiseerde variabelen die restanten van eerder opgeslagen gegevens in de stack kunnen bevatten. Eerder werd een vergelijkbare mogelijkheid ondersteund bij het gebruik van de GCC-plug-in STACKLEAK.
    • Er is bescherming toegevoegd tegen vervangingen van de bestandsystemen door aanvallers via het montagesysteem in 'bind'-modus. Het inode-nummer van de root van /proc is nu vast (PROCFS_ROOT_INO) en kan worden gecontroleerd door een proces in de gebruikersruimte.
    • In het RV (Runtime Verification) subsysteem, bedoeld voor het controleren van de correctheid van hoogbetrouwbare systemen, is een component voor monitoring rtapp (Real-time application monitor) toegevoegd voor het volgen van typische problemen in applicaties die in real-time modus draaien, evenals de componenten rp, sssw en opid voor de test van de taakplanner. De mogelijkheid is geïmplementeerd om monitorcomponenten te maken die lineaire temporele logica gebruiken voor gedragsmodellering in plaats van een deterministische automaat. De verificatie gebeurt tijdens de uitvoering door handlers aan tracepunten te koppelen die de feitelijke uitvoering vergelijken met een vooraf gedefinieerd referentiemodel dat het verwachte gedrag van het systeem bepaalt.
    • In het AppArmor-systeem is ondersteuning toegevoegd voor toegangbeheer tot AF_UNIX-sockets.
    • In de KVM-hypervisor op ARM-systemen is ondersteuning geïmplementeerd voor de GICv5-interruptcontroller.
    • Een nieuwe instelling CONFIG_KVM_IOAPIC is toegevoegd, waarmee de ondersteuning voor APIC-, PIC- en PIT-emulatie in KVM kan worden uitgeschakeld.
    • Een beveiliging tegen de kwetsbaarheid VMSCAPE is toegevoegd.
    • De ioctl-opdracht FS_IOC_GETLBMD_CAP is toegevoegd om vanuit de gebruikersruimte informatie over de integriteitsbescherming van bestanden te verkrijgen.
    • De interface /sys/fs/selinux/user is als verouderd verklaard; bij toegang tot deze interface wordt nu een vertraging van vijf seconden toegevoegd en een waarschuwing in het log vastgelegd.
  • Netwerk subsysteem
    • Ondersteuning voor configureerbare strategieën voor het beoordelen van het stroombudget (totale beschikbare energie) is toegevoegd aan de implementatie van de technologie PSE (Power Sourcing Equipment), die wordt gebruikt voor het leveren van voeding via Ethernet aan apparaten zoals IP-camera's en draadloze toegangspunten. Dergelijke strategieën maken het mogelijk om te bepalen welke poorten als eerste moeten worden uitgeschakeld om overbelasting te voorkomen.
    • Ondersteuning voor het routeren van pakketten naar externe knooppunten via tussenliggende knooppunten (gateway-routing) is toegevoegd aan de implementatie van het MCTP-protocol (Management Component Transport Protocol). Bijvoorbeeld, de onderstaande regels maken het mogelijk om pakketten naar het knooppunt met identificatie 10 (Endpoint ID 10) via het apparaat mctpi2c0 te sturen, met behulp van het adres 0x1d, dat direct aan het knooppunt met identificatie 9 is gekoppeld. mctp route add 9 via mctpi2c0 mctp neigh add 9 dev mctpi2c0 lladdr 0x1d mctp route add 10 gw 9
    • Voor UNIX-sockets (AF_UNIX) is de optie SO_INC geïmplementeerd, en voor het VSOCK-adresfamilie de optie SIOCINQ. De geïmplementeerde opties zijn vergelijkbaar met de TCP_INQ-optie voor TCP en maken via een controlebericht informatie toegankelijk over het aantal bytes dat beschikbaar is voor lezen in de socket.
    • Voor TCP is strikte naleving van de aangegeven ontvangstvenstergrootte ingeschakeld, wat de grootte van de gegevens bepaalt die mogen worden verzonden tot de ontvangst van een ACK-bevestiging van de andere zijde. Voorheen bleef de kernel gegevens verwerken die boven de aangegeven ontvangstvenstergrootte uitkwamen, maar dit zal nu niet meer gebeuren.
    • In MPTCP (Multipath TCP) is de mogelijkheid toegevoegd om de TCP_MAXSEG-socketoptie te gebruiken om de maximale grootte van verzonden segmenten te beperken. MPTCP is een uitbreiding van het TCP-protocol voor het gelijktijdig leveren van pakketten via meerdere routes via verschillende netwerkinterfaces, gekoppeld aan verschillende IP-adressen.
    • Ondersteuning toegevoegd voor het TCP overload control algoritme DualPI2 (RFC 9332), dat schaalbare verkeerscontrollers mogelijk maakt voor verkeer met hoge kwaliteitsvereisten (zoals TCP-Prague en DCTCP), zonder dat de prestaties van klassiek verkeer, waarvoor zulke verkeerscontrollers zoals Reno en Cubic worden gebruikt, verminderd worden.
    • Sysctl 'force_forwarding' toegevoegd, waarmee verkeer kan worden doorgestuurd op geselecteerde netwerkinterfaces met IPv6.
    • Ondersteuning voor het SACK (Selective Acknowledgment) pakketverliesdetectie-algoritme, beschreven in RFC 6675, is verwijderd. Dit algoritme werd in 2018 als verouderd beschouwd. Voor TCP-pakketverliesdetectie wordt het RACK-TLP-algoritme aanbevolen.
  • Apparatuur
    • De ontwikkeling van de drm-driver (Direct Rendering Manager) Xe voor GPU's op basis van de Intel Xe-architectuur, die wordt gebruikt in Intel Arc-grafische kaarten en geïntegreerde graphics vanaf Tiger Lake-processors, is voortgezet. De nieuwe versie heeft standaard ondersteuning voor chips op basis van de Panther Lake-microarchitectuur en voegt ondersteuning toe voor de WildCat Lake-microarchitectuur.
    • In de AMDGPU-driver voor GPU GFX9.x is ondersteuning geïmplementeerd voor het Cleaner Shader mechanisme, dat het geheugen van de GPU opruimt voordat het opnieuw wordt gebruikt om gegevenslekkage van eerdere processen te voorkomen. Verbeterde ondersteuning voor de slaapstand. Mogelijkheid tot slaapstand in omgevingen met AMD SR-IOV toegevoegd. Verbeterd beheer van de achtergrondverlichting.
    • In de i915-driver is ondersteuning toegevoegd voor het drm_panic mechanisme, dat in geval van storingen een soort 'blauwe scherm van de dood' weergeeft. Ondersteuning toegevoegd voor de displaycontroller die wordt gebruikt in chips van de Wildcat Lake-serie.
    • De integratie van de Nova-drivercomponenten voor NVIDIA GPU's, uitgerust met GSP-firmware, die worden gebruikt vanaf de NVIDIA GeForce RTX 2000-serie op basis van de Turing-microarchitectuur, is voortgezet. De driver is geschreven in Rust. De nieuwe versie heeft een abstractielaag voor het werken met DMA, een VBIOS-parser, configuratiecode voor de framebuffer en ondersteuning voor snellere opstart in de Falcon-modus toegevoegd.
    • In de adreno-driver is ondersteuning toegevoegd voor de Qualcomm Adreno GPU's x1-45 en x1-85.
    • In de msm-driver is ondersteuning toegevoegd voor de Adreno SM8750 GPU en geheugenmapping (VM_BIND).
    • In de panfrost-driver is ondersteuning toegevoegd voor de Mali GPU's, die worden gebruikt in de Mediatek mt8370 SoC.
    • De Lima-driver is toegevoegd met ondersteuning voor GPU's die worden toegepast in SoC Rockchip RK3528.
    • De mtd-driver (Memory Technology Devices) is toegevoegd voor toegang tot NVM-geheugen dat is ingebouwd in Intel GPU.
    • Ondersteuning toegevoegd voor ASoC-geluidsystemen IMX WM8524, AMD ACP7.2, SoundWire ACP 7.1, Fairphone 4 & 5, Qualcomm QCS8275, Framework Laptop 13 (AMD Ryzen AI 300), CS35L41 HDA (gebruikt in ASUS-laptops), Richtek RTQ9124, TI TAS5753, HP EliteBook x360 830 G6, EliteBook 830 G6, LG 16Z90R-A, HP 15-fc000. De code van HD-audio is herorganiseerd.
    • Ondersteuning toegevoegd voor ARM-platforms, SoC en apparaten: NVIDIA Tegra264, Marvell PXA1908 (de eerste 64-bits chip van Marvell voor smartphones), CIX P1, Axiado AX3000, Sophgo SG2000 (combineert ARM- en RISC-V-kernen), Mediatek mt6572, exynos2200 (gebruikt in Samsung Galaxy S22), Renesas R-Car V4M-7, TI am62d2 en Sophgo sg2042, laptops op basis van Mediatek mt8186 en Qualcomm Snapdragon X1, smartphones en tablets op basis van SoC mt6572, tegra30 en msm8976.

Tegelijkertijd heeft de Latijns-Amerikaanse Free Software Foundation een volledig vrij kernelalternatief 6.17 — Linux-libre 6.17-gnu geformuleerd, vrijgemaakt van firmware- en driver-elementen die niet-vrije componenten of codefragmenten bevatten, waarvan het toepassingsgebied door de fabrikant is beperkt. In release 6.17 is de code voor het opschonen van blobs in de drivers amdgpu, prueth, iwlwifi, btusb, pci mhi host, adreno a6xx, nova-core en Intel AVS bijgewerkt. Namen van blobs in dts-bestanden (devicetree) voor ARM-chips en Intel IPU7 zijn schoongemaakt. Het laden van blobs in nieuwe pci hda-drivers is geneutraliseerd. De opschoning van blobs in de QLogic infiniband-driver, die uit de kernel is verwijderd, is stopgezet.

Bron: opennet.ru

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