Release of Linux kernel 7.1

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux-kernel 7.1. Onder de meest opvallende veranderingen: de nieuwe ntfsplus-driver, de eerste fase van de beëindiging van de ondersteuning voor CPU i486, verwijdering van oude Ethernet-adapters, verwijdering van ISDN- en AX.25-protocollen, standaard inschakeling van het Intel FRED-mechanisme, ondersteuning voor BPF-handlers in io_uring, optimalisatie van het swap-subsysteem, ondersteuning voor subplanners in sched_ext, zero-copy I/O modus in de ublk-driver, ioctl-operatie "shutdown" in Btrfs, dynamische schakelbaarheid van prestatieniveaus in de amd-pstate-driver, ondersteuning voor xattr voor Unix-sockets.

In de nieuwe versie zijn 17275 correcties opgenomen van 2589 ontwikkelaars,
de patchgrootte is 57 MB (de wijzigingen hebben 13528 bestanden geraakt, 751785 regels code toegevoegd, 405916 regels verwijderd). In de vorige uitgave waren er 15624 correcties van 2477 ontwikkelaars, de patchgrootte was 56 MB. Ongeveer 41% van alle veranderingen in 7.1 heeft betrekking op stuurprogramma's voor apparaten, ongeveer 12% van de veranderingen betreft code-updates die specifiek zijn voor hardware-architecturen, 14% is gerelateerd aan de netstack, 5% aan bestandssystemen en 3% aan interne subsystemen van de kernel.

Belangrijkste innovaties in de kernel 7.1 (1, 2, 3):

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • In de samenstelling is een nieuwe implementatie van het NTFS-bestandssysteem opgenomen — ntfsplus, gebaseerd op de code van de klassieke ntfs-driver die uit de kernel is verwijderd. De oude driver is opnieuw ontworpen, uitgebreid met de mogelijkheid om gegevens te schrijven en aangepast voor het ondersteunen van moderne mogelijkheden, zoals het gebruik van geheugenpagina's (folios) in plaats van de buffer_head-structuur. In de nieuwe driver is uitgestelde blokkentoewijzing geïmplementeerd, wat heeft geleid tot hoge prestaties bij schrijfoperaties en minder fragmentatie. Voor gebufferde schrijf-/leesbewerkingen, directe invoer/uitlevering, extent-mapping en paginaware schrijf-/leesbewerkingen wordt de iomap-bibliotheek gebruikt. In iozone-tests bleek de ntfsplus-driver 3-5% sneller te zijn dan ntfs3 bij schrijven in een enkele thread en 35-110% sneller bij gebruik van 4 threads. De leesprestaties van ntfsplus en ntfs3 liggen ongeveer op hetzelfde niveau. De ntfs3-driver blijft in de kernel opgenomen en is voorzien van correcties en enkele kleine verbeteringen.
    • Ondersteuning voor het genereren en verifiëren van integriteitscontrolegegevens T10 op besturingssysteemniveau is toegevoegd, in plaats van op blokapparaatniveau, wat een verhoging van de leesprestaties mogelijk maakt.
    • De ublk block device driver, die specifieke logica naar de gebruikersruimte verplaatst, ondersteunt nu invoer/uitvoer via gedeeld geheugen zonder gegevenskopie tussen buffers (zero-copy modus).
    • Voor zelfversleutelde blokapparaten SED-OPAL zijn ioctl's toegevoegd voor het beheren van de Single User-modus en is de STACK_RESET-opdracht geïmplementeerd.
    • In Btrfs is ondersteuning voor de ioctl-operatie "shutdown" officieel verklaard, waarmee het besturingssysteem in een staat kan worden gebracht waarin geprobeerd wordt lopende operaties af te ronden, terwijl alle nieuwe operaties worden geblokkeerd.
    • In exfat is de mogelijkheid toegevoegd om lege gebieden te reserveren via de aanroep fallocate().
    • In het CIFS-bestandssysteem is ondersteuning toegevoegd voor het maken van tijdelijke bestanden met de vlag O_TMPFILE.
    • De fsmount()-systeemaanroep heeft de optie FSMOUNT_NAMESPACE toegevoegd, die een nieuwe naamruimte voor volgpunten voor de te monteren bestandssystemen creëert. De systeemaanroepen clone3() en unshare() hebben vlaggen toegevoegd voor het teruggeven van de nieuwe naamruimte voor volgpunten, die alleen een gemonteerd leeg FS-stub op basis van nullfs bevat, met de fs-dax driver die een FS-interface naar DAX (Direct Access) apparaten biedt.
    • De NFS-server heeft bescherming tegen aanvallen door het raden van bestandsdescriptors toegevoegd, geïmplementeerd via de ondertekening van descriptors met een cryptografische handtekening. Deze bescherming wordt ingeschakeld via de montageschakelaar sign_fh.
    • Er is een symbolische driver fs-dax toegevoegd die een interface biedt voor interactie met DAX (Direct Access) apparaten die werken zonder paginacache. Deze interface is noodzakelijk voor integratie in de famfs-kernel, die in het werkgeheugen is geplaatst.
    • In het Ceph-bestandssysteem is het verzamelen van metrics voor invoer/uitvoer in relatie tot deelgebieden geïmplementeerd.
  • Geheugen en systeemdiensten
    • De eerste reeks wijzigingen is goedgekeurd om de ondersteuning voor i486-processoren te beëindigen. Opties voor het bouwen van de kernel met ondersteuning voor de 486DX-, 486SX- en AMD ELAN-processoren (CONFIG_M486, CONFIG_M486SX en CONFIG_MELAN) zijn uit Kconfig verwijderd, en de compilatieopties voor i486-systemen (-march=i486) zijn uit Makefile geschrapt. De code voor de feitelijke ondersteuning van i486-processoren blijft in de kernel, maar de bouw voor dergelijke systemen vereist nu patches voor de bouwbestanden. De redenen voor het verwijderen van de ondersteuning voor i486-processoren zijn het verlangen om de kernel te ontdoen van complexe code die enkele hardwareoperaties emuleert, zoals CX8 (vergelijk en verwissel 8 bytes) en TSC (CPU-cyclusteller, gebruikt in de taakplanner).
    • In de amd-pstate-driver, die wordt gebruikt voor het beheren van energieverbruik op systemen met AMD-processoren, is dynamische wijziging van prestaties en gedrag van energiebeheer geïmplementeerd, afhankelijk van het werken op netstroom of op batterij. Bij aansluiting op netstroom wordt nu de modus 'performance' geactiveerd, terwijl bij gebruik van de batterij 'balance_performance' actief is.
    • Standaard is het Intel FRED-mechanisme (Flexible Return and Event Delivery) ingeschakeld, waarmee de efficiëntie en betrouwbaarheid van de informatieoverdracht van low-level gebeurtenissen wordt verhoogd. Prestatieverbetering en vertragingen worden gerealiseerd door gebeurtenissen terug te sturen met behulp van de instructie IRET in plaats van gebeurtenissen via de IDT (Interrupt Descriptor Table) te verzenden. Betrouwbaarheid wordt verhoogd door afzonderlijke verwerking van de gebeurtenisontvangst in de kernel- en gebruikerscontext, bescherming tegen geneste NMI-uitvoeringen en het opslaan van alle CPU-registers die met de uitzondering verband houden in een uitgebreid stackframe.
    • De perf-subsysteem heeft ondersteuning toegevoegd voor geheugenperformance monitoring units (PMU) die worden gebruikt in SoC NVIDIA Tegra410.
    • De uitvoering van futex-operaties op ARM-systemen is versneld door gebruik te maken van Arm 9.6 LSUI-instructies, waarmee de kernel toegang kan krijgen tot het geheugen van de gebruikersruimte zonder de PAN (Privileged Access Never)-beschermingsmodus vooraf uit te schakelen.
    • Op systemen met ARM-processoren is de ondersteuning voor de MPAM-architectuur (Memory System Resource Partitioning and Monitoring) verbeterd en is de mogelijkheid toegevoegd om deze in de gebruikersruimte te gebruiken voor resourcebeheer via het resctrl-mechanisme. MPAM zorgt voor het markeren van elke geheugenaanroep met een sectie-identificator (PARTID, Partition ID) en een monitoringsgroepidentificator (PMG, Monitoring Group ID). In relatie tot PARTID kan het gebruik van middelen, zoals geheugendoorvoer of cachegrootte, worden beperkt om te voorkomen dat een bepaalde groep taken alle middelen in beslag neemt. In de context van monitoring kan de combinatie van PMG en PARTID worden gebruikt voor het volgen van het geheugenverbruik bij bepaalde soorten belasting.
    • De mogelijkheid om de real-time modus (PREEMPT_RT) te gebruiken op 32-bits ARM-processoren is toegevoegd. Voorheen was de ondersteuning voor PREEMPT_RT beschikbaar voor de architecturen x86 en x86-64, ARM64, RISC-V en LoongArch.
    • Nieuwe vlaggen zijn toegevoegd aan de systeemaanroep clone3(): CLONE_NNP — verbod op het verkrijgen van nieuwe privileges in het gemaakte proces; CLONE_AUTOREAP — automatische beëindiging van het proces in plaats van het omzetten naar een zombieproces totdat de functie wait() door het ouderproces wordt uitgevoerd;
      CLONE_PIDFD_AUTOKILL — beëindiging van het kindproces in het geval het daaraan gekoppelde pidfd-descriptor wordt gesloten (bijvoorbeeld bij beëindiging van het ouderproces).
    • Voor elk kernelmodule is in de map /sys/module een bestand import_ns toegevoegd, dat een lijst bevat van geïmporteerde symbol namespace.
    • In het io_uring-systeem voor asynchrone invoer/uitvoer is ondersteuning toegevoegd voor het gebruik van de BPF-subsystemen voor het maken van handlers. Bijvoorbeeld, de hoofd-dispatchlus kan worden vervangen door een BPF-programma.
    • In de BPF-subsystemen is de analyse van het gebruik van de stack verbeterd, wat de verificatie van veel BPF-programma's aanzienlijk heeft versneld.
    • Om de prestaties te optimaliseren, is de hrtimer (high resolution timer) subsystem herschreven. De taakplanner kan nu timers met hoge resolutie gebruiken zonder prestatieverlies in plaats van minder nauwkeurige timers.
    • De overdracht van wijzigingen uit de Rust-for-Linux tak met betrekking tot het gebruik van de Rust-taal als tweede taal voor het ontwikkelen van stuurprogramma's en kernelmodules is voortgezet (ondersteuning voor Rust is standaard niet ingeschakeld en leidt niet tot het opnemen van Rust in de verplichte bouwafhankelijkheden van de kernel). Tot versie 1.85 (meegeleverd in Debian 13) zijn de vereisten voor de Rust-versie die nodig is voor het bouwen van kernelcomponenten verhoogd. Een experimentele Kconfig-optie CONFIG_RUST_INLINE_HELPERS is toegevoegd voor het integreren van C-hulpprogramma's in Rust-code tijdens compilatie (de optimalisatie heeft de prestaties van de null block driver met 2% verbeterd). De macro 'const_assert!' is toegevoegd. De mogelijkheden van de modules 'sizes', 'clk', 'ptr', 'sync', 'error' zijn uitgebreid.
    • In de SCHED_EXT-mechanisme, dat het mogelijk maakt om BPF te gebruiken voor het creëren van CPU-schedulers, is de initiële mogelijkheid toegevoegd om geneste schedulers (sub-schedulers) te creëren, waarmee voor elke cgroup een eigen taakplanner kan worden ingezet.
    • De optimalisatie van het swap-subsysteem is voortgezet. De oude swap_map-structuur is verwijderd en vervangen door het 'Swap Table'-mechanisme. Deze wijziging heeft de prestaties verbeterd en het geheugenverbruik in het swap-subsysteem verminderd.
    • In het DAMON (Data Access MONitor) subsysteem, dat het mogelijk maakt om de toegang van een proces tot gegevens in het RAM bij te houden (bijvoorbeeld, je kunt zien welke geheugengebieden door het proces zijn aangesproken en welke gebieden niet zijn aangesproken), is ondersteuning voor verschillende algoritmen voor automatische tuning van quotas toegevoegd.
    • In het traceer-subsystem is het concept van externe ringbuffers geïmplementeerd, waarmee traceergegevens kunnen worden verkregen uit virtuele machines. Deze mogelijkheid is ingezet in hypervisors KVM en nVHE voor het verzenden van traceergegevens van het gastensysteem naar de hostzijde.
    • In het RV (Runtime Verification) subsysteem, bedoeld voor het controleren van de correctheid van de werking van zeer betrouwbare systemen, zijn monitorcomponenten 'stall' toegevoegd om taken te volgen die tijdelijk zijn gepauzeerd of geblokkeerd, en 'deadline' voor het analyseren van het gedrag van de taakplanner.
  • Virtualisatie en beveiliging
    • Standaard is de vlag PROC_MEM_FORCE_PTRACE ingesteld, die het mogelijk maakt om de geheugentoegang van een proces te omzeilen via het bestand /proc/PID/mem, alleen voor processen die de systeemaanroep ptrace() gebruiken voor debugging.
    • Een nieuwe set hooks voor LSM-modules (Linux Security Module) is toegevoegd, waardoor het gemakkelijker wordt om beleidsregels voor op stapel gebaseerde bestandssystemen, zoals overlayfs, te implementeren. In LSM is ook een hook toegevoegd voor het beheer van toegang tot Unix-sockets, die wordt gebruikt in de LSM-module Landlock om toegangspolicies voor Unix-sockets toe te wijzen.
    • De ingebouwde cryptobibliotheek lib/crypto, die eenvoudigere en snellere functies biedt dan in de traditionele crypto API, heeft ondersteuning gekregen voor de algoritmen AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH en SM3. Documentatie voor lib/crypto is toegevoegd.
    • De pKVM-modus (Protected KVM) is geïmplementeerd voor strikte isolatie van anonieme geheugen met behulp van virtualisatie-extensies voor de AArch64-architectuur. In deze modus worden geheugenspagina's van de gast uitgesloten van de virtuele adreslijst van het hostsysteem.
    • De hypervisor KVM heeft ondersteuning gekregen voor de vijfde versie van de virtuele interruptcontroller ARM (VGICv5 - ARM Virtual Generic Interrupt Controller v5).
  • Netwerk subsysteem
    • Voor unix-sockets die worden aangemaakt door de functie socket(), is ondersteuning geïmplementeerd voor uitgebreide bestandsattributen (xattr) "user.*". Toepassingen omvatten het toekennen van labels via uitgebreide attributen aan Unix-sockets die worden gebruikt voor IPC Varlink, met als doel deze te onderscheiden voor inspectie en debugging van IPC-werking met behulp van BPF-programma's. In systemd-journald worden uitgebreide attributen bedoeld voor het bepalen van het logformaat in de context van de socket /dev/log.
    • De ondersteuning voor het UDP-Lite-protocol (RFC 3828) is verwijderd, dat de aflevering van pakketten met een onjuiste checksum toestond met de verwachting dat bijvoorbeeld gedeeltelijk beschadigde audio- en videogegevens op codec-niveau kunnen worden hersteld. Het protocol is verwijderd omdat niemand het gebruikt.
    • De mogelijkheid om de IPv6-stack als een kernelmodule te bouwen, die in de praktijk niet werd gebruikt (IPv6 wordt ofwel in de kernel ingebouwd of helemaal uitgeschakeld), is verwijderd, maar bemoeilijkte het onderhoud omdat bij de bouw van IPv6 als kernelmodule (CONFIG_IPV6=m), veel subsystems onnodige handlers moesten toevoegen voor het geval de IPv6-module werd ontladen.
  • Apparatuur
    • In de AMDGPU-driver is een nieuwe display-engine (DC) opgenomen voor AMD APU-serie HD 7000 (Sea Islands, GCN 1.1).
    • In de Nouveau-driver is een initiële ondersteuning toegevoegd voor de NVIDIA GA100 GPU op basis van de Ampere-microarchitectuur.
    • Het werk aan 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, is voortgezet, te beginnen met de Tiger Lake-processors. Ondersteuning voor de grafische subsysteem van de Intel Nova Lake-P-processors is toegevoegd. Reinigbare bufferobjecten (Purgeable Buffer Objects) zijn geïmplementeerd.
    • De integratie van de Nova drivercomponenten voor NVIDIA GPU's, uitgerust met GSP-firmware die wordt gebruikt sinds de NVIDIA GeForce RTX 2000-serie op basis van de Turing-microarchitectuur, is voortgezet. De driver is geschreven in Rust. Initiële ondersteuning voor GPU's op basis van de Turing-microarchitectuur is toegevoegd.
    • Er is een DRM-driver corebootdrm toegevoegd voor grafische output via de framebuffer van CoreBoot-firmware.
    • Ondersteuning voor ASoC geluiden van AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP en WM8962 is toegevoegd. De ondersteuning voor USB-geluidsapparaten is verbeterd: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow,
      PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
    • Er is een yogafan-driver toegevoegd voor het volgen van de ventilatorsnelheid op Lenovo Yoga, Legion en IdeaPad laptops.
    • Ondersteuning voor ARM-platfoform, SoC en apparaten is toegevoegd: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 en ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
    • Ondersteuning voor de AHCI SATA en PCIe controllers die in de SoC Baikal-T1 worden gebruikt, evenals timers, geheugen, physmap, bus, hwmon, dwc en bt1-rom drivers is verwijderd. Als reden voor de verwijdering wordt het gebrek aan ondersteuning en de onvoltooide integratie van de componenten van het Baikal-platform genoemd, waarvan de productie in de RF in november 2025 is stopgezet.
    • 12 drivers voor Ethernet-apparaten met ISA- en PCMCIA-interfaces die vóór 2002 zijn uitgebracht, zijn verwijderd omdat er geen gebruikers waren die deze in werkende systemen toepasten. Ook is de kernel uitgesloten van
      de ISDN-subsysteem, implementaties van de AX.25-, CAIF- en Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol) protocollen, drivers yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Radio), inport en logibm (busmouse). De reden voor de verwijdering was het gebrek aan actieve ondersteuners tegen de achtergrond van het toenemende aantal fouten die met behulp van syzbot en AI-tools zijn ontdekt, die niemand zich bezighoudt om op te lossen, en alle lasten voor het oplossen van ernstige problemen rusten op de schouders van de ondersteuners van de belangrijkste netwerksubsystemen van de kernel. In totaal zijn er meer dan 140.000 regels code verwijderd.

Bron: opennet.ru

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