Release van de Linux-kern 6.6

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van kernel Linux 6.6. Onder de meest opvallende wijzigingen bevinden zich: de nieuwe taakplanner EEVDF; een schaduwstack-mechanisme ter bescherming tegen exploits; ondersteuning voor fs-verity in OverlayFS; implementatie van quotas en xattr in tmpfs; voorbereiding van online fsck in XFS; verbeterde sporen van ‘GPL-only’ symbolenexports; ondersteuning voor netwerksockets in io_uring; randomisatie van geheugen in kmalloc(); ReiserFS is als verouderd verklaard; in Nouveau zijn primitives toegevoegd voor de Vulkan-driver NVK.

In de nieuwe versie zijn 15.291 correcties aangebracht door 2.058 ontwikkelaars, de patchgrootte bedraagt 39 MB (de wijzigingen hebben betrekking op 14.844 bestanden, 553.359 regels code zijn toegevoegd en 284.012 regels verwijderd). In de vorige release waren er 14.674 correcties van 2.016 ontwikkelaars, de patchgrootte was 78 MB. Ongeveer 44% van alle wijzigingen in 6.6 heeft betrekking op apparaatdrivers, ongeveer 17% van de wijzigingen zijn gerelateerd aan updates van hardware-specifieke code, 11% heeft betrekking op de netwerkstack, 4% op bestandssystemen en 3% op interne subsystemen van de kernel.

Belangrijkste vernieuwingen in kernel 6.6:

  • Geheugen en systeemdiensten
    • Een nieuwe taakplanner EEVDF (Earliest Eligible Virtual Deadline First) is geïmplementeerd, die de CFS (Completely Fair Scheduler) vervangt, die werd gebruikt sinds kernel 2.6.23. Bij het kiezen van het volgende proces voor uitvoering houdt de nieuwe planner rekening met processen die onvoldoende CPU-resources hebben ontvangen of onterecht veel CPU-tijd hebben gekregen. In het eerste geval wordt de controle geforceerd overgedragen aan het proces, en in het tweede geval wordt deze uitgesteld. De oude planner CFS gebruikte heuristieken en fijne afstellingen om processen te identificeren die extra aandacht vereisten, terwijl de nieuwe planner deze explicieter volgt en geen fijne instellingen vereist. EEVDF zou de vertragingen bij het uitvoeren van taken moeten verminderen, waar CFS problemen had met de planning.
    • Wijzigingen zijn doorgevoerd in de verwerking van interne symbolen in de categorie "GPL-only", gericht op het bemoeilijken van het gebruik door eigendommodules van GPL-overlays om beperkingen op de toegang tot subsysteemkernmodules die alleen code onder de GPL-licentie toestaan, te omzeilen. In de functie symbol_get() is het voor eigendommodules verboden om symbolen te zoeken die als GPL-only zijn gemarkeerd, en omgekeerd kunnen GPL-modules geen symbolen vinden die door eigendommodules worden geëxporteerd.
    • Er zijn extra instellingen toegevoegd voor werkqueues (unbound workqueue) om de efficiëntie van het hergebruik van de CPU-cache op grote systemen met meerdere derde-niveau caches (L3) te verhogen. De kernel bevat nu ook de utility tools/workqueue/wq_dump.py om de huidige configuratie van werkqueues te controleren.
    • In de io_uring-subsyteem is initiële ondersteuning toegevoegd voor netwerk socket-specifieke operaties en commando's. Een sysctl io_uring_disabled is toegevoegd om io_uring op systeemniveau uit te schakelen. Ook is de directe invoer/uitvoer (Direct I/O) in de asynchrone modus in io_uring aanzienlijk versneld. De toename in doorvoersnelheid en de verlaging van de latentie bij het uitvoeren van invoer-/uitvoeroperaties na deze wijzigingen bedraagt 37%.
    • Voor de PA-RISC-architectuur is een JIT-compiler voor BPF geïmplementeerd.
    • Ondersteuning voor numerieke parameters die het aantal threads definiëren dat beschikbaar is voor elke CPU-core is toegevoegd aan de configuratie /sys/devices/system/cpu/smt/control (voorheen ondersteunden alleen de waarden "on" en "off" ondersteuning voor symmetrische multithreading). Deze nieuwe mogelijkheid kan worden toegepast op sommige PowerPC-processoren die de hot-plug modus voor symmetrische multithreading ondersteunen, voor het selectief inschakelen van SMT op specifieke cores tijdens het draaien.
    • De overgang van wijzigingen uit de Rust-for-Linux-tak is voortgezet, met betrekking tot het gebruik van Rust als tweede taal voor het ontwikkelen van stuurprogramma's en kernelmodules (ondersteuning voor Rust is standaard niet ingeschakeld en leidt niet tot toevoeging van Rust aan de verplichte build-afhankelijkheden voor de kernel). De overstap naar de releases van Rust 1.71.1 en bindgen 0.65.1 is gerealiseerd. Het type ‘Zeroable’ is geïmplementeerd. Procedurele macro's ‘paste!’ en ‘#[derive(Zeroable)]’ zijn toegevoegd. Compatibiliteit met ‘#[pin_data]’ is gewaarborgd. Initialisatiefuncties ‘{,pin_}init_array_from_fn()’ en de methode ‘{,pin_}chain’ zijn toegevoegd. De mogelijkheden van de module ‘types’ zijn uitgebreid. In het unit-testframework kunit is de mogelijkheid toegevoegd om tests uit de documentatie van Rust uit te voeren.
    • Er is een subsysteem ‘eventfs’ toegevoegd, dat het geheugengebruik in het traceersysteem aanzienlijk vermindert, door de noodzaak te elimineren om overbodige structuren op te slaan die worden gebruikt voor het voorstellen van traceerpunten in het bestandssysteem. Eerder werden dergelijke structuren voor alle traceerpunten aangemaakt, ongeacht het gebruik van tracering. Met behulp van eventfs kunnen dergelijke structuren dynamisch worden aangemaakt, alleen wanneer ze nodig zijn.
    • De mogelijkheden van de utility perf zijn uitgebreid.
    • In het bestand /proc/pid/smaps is informatie toegevoegd voor de diagnose van de efficiëntie van het mechanisme voor het samenvoegen van identieke geheugenspagina's (KSM, Kernel Samepage Merging).
    • De Frontswap API is verwijderd, die het mogelijk maakte om een swap-partitie in geheugengebieden te plaatsen die niet direct kunnen worden aangesproken en die geen operationele informatie biedt over de beschikbaarheid van ruimte. Deze API werd alleen in zswap gebruikt, daarom is besloten deze functionaliteit rechtstreeks in zswap te gebruiken, om onnodige tussenlagen te vermijden.
    • Voor de RISC-V-architectuur is ondersteuning toegevoegd voor toegang tot prestatiecounters vanuit de gebruikersruimte en de mogelijkheid om een kernel-dump na een crash in een gebied buiten 4GB te plaatsen.
    • Initiële ondersteuning voor ARM SME-instructies (Scalable Matrix Extension) is toegevoegd.
    • De mogelijkheid om de KDB, KGDB, kcov, KFENCE en KASAN debugtools te gebruiken op systemen met de LoongArch-architectuur is geïmplementeerd.
    • Ondersteuning voor testbestanden voor de kernel is toegevoegd in het GitLab-continuïteitsintegratiesysteem, dat wordt gebruikt bij de ontwikkeling van grafische stuurprogramma's.
  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • Het OverlayFS-bestandssysteem heeft ondersteuning gekregen voor het opslaan van fs-verity-hashes in de uitgebreide eigenschap (xattr) overlay.verity, wat gebruikt kan worden voor het controleren van de integriteit en echtheid van bestanden in de onderliggende lagen van OverlayFS met behulp van cryptografische hashes en sleutels. Hierdoor zijn nu alle wijzigingen die nodig zijn voor het Composefs-project inbegrepen om te functioneren als een laag bovenop het OverlayFS- en EROFS-bestandssysteem.
    • In het XFS-bestandssysteem is voorbereiding getroffen voor de implementatie van de mogelijkheid om de fsck-tool te gebruiken om problemen in online-modus te controleren en te repareren, zonder het bestandssysteem te ontkoppelen. Daarnaast is in XFS de mogelijkheid geïmplementeerd om grote folio's in de pagina-cache te gebruiken, en zijn er enkele gerelateerde optimalisaties aangebracht, wat de prestaties voor bepaalde soorten belasting aanzienlijk heeft verbeterd.
    • Het tmpfs-bestandssysteem heeft ondersteuning gekregen voor gebruikersspecifieke uitgebreide eigenschappen (user xattrs), directe invoer/uitvoer en quota die aan de gebruiker en groep zijn gekoppeld. De offsets voor de mappen zijn gestabiliseerd, wat problemen met de export van tmpfs via NFS heeft opgelost.
    • In de API voor mount-beheer is een vlag FSCONFIG_CMD_CREATE_EXCL toegevoegd om de veiligheid te verbeteren, die het delen van een superblock op meerdere mount-punten verbiedt (verbiedt het koppelen van een partition aan meerdere mount-punten). In de mount-tool is een optie "—exclusive" toegevoegd om deze vlag in te schakelen.
    • In de VFS-subsystem is ondersteuning toegevoegd voor het dynamisch wijzigen van de parameters voor toegangstijd en wijzigingstijd (atime, mtime). Eerder werden de tijdgegevens met enige vertraging weergegeven, wat het volgen van de actualiteit van gegevens in de cache in systemen zoals NFS belemmerde (door de vertraging in het detecteren van wijzigingen in een bestand, kon het systeem ten onrechte aannemen dat de gegevens in de cache actueel waren). Deze nieuwe mogelijkheid is beschikbaar voor Btrfs, Ext4, tmpfs en XFS.
    • In Btrfs is het ingebouwde integriteitscontrolesysteem, dat tijdens de bouw kon worden ingeschakeld via de parameter BTRFS_FS_CHECK_INTEGRITY, verouderd verklaard. Dit systeem werd niet langer onderhouden, wordt niet meer getest en creëert een extra belasting voor de CPU en het geheugen. Bovendien is de prestatie van de nieuwe FS-controlesystemen (scrub) in Btrfs geoptimaliseerd.
    • In het Ext4-bestandssysteem zijn er periodieke controles toegevoegd voor het bijwerken van de superblock en zijn de geheugenallocatie-operaties versneld tijdens het bijschrijven aan het einde van een bestand.
    • In de FUSE-subsystemen is ondersteuning toegevoegd voor het attribuut btime ('geboorte tijd'), dat het tijdstip van aanmaak van de inode bepaalt.
    • Het is verboden om de toegangsrechten voor symbolische links te wijzigen.
    • Er is een systeem-aanroep fchmodat2() toegevoegd, die verschilt van de systeem-aanroep fchmodat() doordat deze een extra argument heeft voor het opgeven van vlaggen. Voor nu worden alleen de vlaggen AT_SYMLINK_NOFOLLOW en AT_EMPTY_PATH ondersteund, die het mogelijk maken om zonder omwegen het niet volgen van symbolische links te realiseren in de libc-functie fchmodat() en het gebruik van een bestandsdescriptor bij een lege padopgave.
    • In het EROFS (Extendable Read-Only File System), bedoeld voor gebruik op delen die alleen-lezen zijn, is ondersteuning toegevoegd voor het compressie-algoritme Deflate. Voor het versnellen van de zoektocht naar uitgebreide attributen is een probabilistische structuur, een bloom filter, ingezet.
    • Er is een configuratie CONFIG_BUFFER_HEAD toegevoegd, die het mogelijk maakt om de kernel zonder de buffer_head-structuur te compileren. Bij compilatie zonder buffer_head kunnen block devices en sommige FS, zoals xfs, btrfs, cramfs, erofs en squashfs, worden gebruikt.
    • In de block device-driver ublk, die specifieke logica naar de gebruikersruimte brengt, is ondersteuning toegevoegd voor gezoneerde opslagapparaten (verdeling in zones van blokgroepen of sectoren waarvoor alleen sequentiële gegevens toevoeging is toegestaan met een complete update van de gehele blokgroep).
    • De implementatie van het ReiserFS-bestandssysteem is van de categorie ondersteund naar verouderd (Obsolete) overgezet. De beëindiging van de ondersteuning voor ReiserFS is gepland voor 2025. Als reden voor de overgang van ReiserFS naar verouderd wordt de stagnatie in de ondersteuning van dit FS genoemd, het onopgeloste probleem van 2038, het gebrek aan mogelijkheden voor het waarborgen van failover en de wens om de kosten voor het onderhouden van gezamenlijke wijzigingen voor bestandssystemen, gerelateerd aan de ondersteuning van een nieuwe API voor montage, iomap en folio's, te verlagen.
    • In de NFS-server is een mechanisme voor het delegeren van schrijfoperaties voor NFSv4 geïmplementeerd, wat de efficiëntie van het cachen van schrijfbestanden verhoogt om het verkeer te verminderen. Ondersteuning voor de operatie READ_PLUS, gedefinieerd in NFS 4.2, is ingeschakeld.
    • Ondersteuning voor fscrypt is toegevoegd aan het bestandssysteem Ceph.
  • Virtualisatie en beveiliging
    • Een implementatie van de Shadow Stack-mechanisme is toegevoegd, waarmee de werking van veel exploits wordt geblokkeerd door gebruik te maken van de hardware-mogelijkheden van Intel-processors ter bescherming tegen het overschrijven van het retouradres uit een functie in het geval van een buffer overflow op de stack. De essentie van de bescherming is dat na het overdragen van de controle aan de functie, het retouradres door de processor niet alleen in de normale stack wordt opgeslagen, maar ook in een aparte 'schaduw' stack, die niet rechtstreeks kan worden gewijzigd. Voordat de functie wordt verlaten, wordt het retouradres uit de schaduwstack gehaald en vergeleken met het retouradres uit de hoofstack. Een mismatch in adressen leidt tot de generatie van een uitzondering, waardoor situaties worden geblokkeerd waarin een exploit erin is geslaagd het adres in de hoofstack te overschrijven. De hardware-schaduwstack wordt alleen ondersteund in 64-bits builds, terwijl in 32-bits builds een software-emulatie wordt gebruikt.
    • Ondersteuning voor het bouwen van de compiler Clang met ingeschakelde CFI (Control Flow Integrity)-bescherming is toegevoegd, waardoor ongeoorloofde schendingen van de normale uitvoeringsvolgorde (control flow) door exploits, die de in het geheugen opgeslagen functiepointes wijzigen, worden geblokkeerd.
    • Voor de RISC-V-architectuur is randomisatie van de kernelplaatsing in het geheugen tijdens opstart toegevoegd.
    • De systeemboekroep seccomp() heeft de vlag SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP ontvangen, die het mogelijk maakt om evenementen van de gecontroleerde processen synchrone modus te verwerken voor een efficiënter werk van de taakplanner.
    • In de functie kmalloc() is randomisatie van de slab-caches geïmplementeerd, wat het uitbuiten van kwetsbaarheden in de kernel moeilijker maakt.
    • Opmerkingen met betrekking tot het inschakelen van het SELinux-vereiste toegangscontrolesysteem zijn verwijderd, inclusief de verwijzing naar de Amerikaanse National Security Agency. Aangezien het project al 20 jaar onder de vleugels van de gemeenschap staat en wordt onderhouden door onafhankelijke onderhouders, is besloten om de naam 'SELinux' te gebruiken in plaats van 'NSA SELinux' in opmerkingen en documentatie in Kconfig (bijvoorbeeld de uitleg bij de bouwparameter SECURITY_SELINUX is gewijzigd van 'NSA SELinux Support' naar 'SELinux Support').
    • De systeemboekroep userfaultfd() heeft de operatie UFFDIO_POISON erbij gekregen, waarmee geheugenpagina's als 'vervuild' (poisoned) kunnen worden gemarkeerd, wat kan worden gebruikt voor het verplaatsen van beschadigde geheugenpagina's tijdens migratie virtuele machines van het ene systeem naar het andere.
    • In het VFIO-systeem is een nieuwe symbolische interface (/dev/vfio/devices/vfioX) toegevoegd voor het beheer van VFIO-apparaten, waardoor de gebruiker rechtstreeks een bestand met het apparaat kan openen zonder gebruik te maken van de verouderde groepsinterface /dev/vfio/$groupID.
    • In de server NFS heeft de ondersteuning voor verouderde Kerberos-versleuteltypen die gebruik maken van DES- en 3DES-algoritmes stopgezet.
    • Bij het starten in een Hyper-V hypervisoromgeving is ondersteuning toegevoegd voor gasten die beveiligd zijn met behulp van AMD SEV-SNP (Secure Nested Paging) en Intel TDX (Trusted Domain Extensions).
    • Bij het compileren van de kernel met de modus 'W=1' zijn standaard waarschuwingen '–Wformat-overflow', '–Wformat-truncation', '–Wstringop-overflow' en '–Wrestrict' ingeschakeld. Voor alle builds is de waarschuwing '–Wenum-conversion' ingeschakeld.
  • Netwerk subsysteem
    • De implementatie van het adresfamilie AF_XDP (eXpress Data Path) is uitgebreid met de mogelijkheid om pakketten op te slaan in meerdere buffers (bijvoorbeeld, in één buffer kan de kop van het pakket zitten, terwijl in een andere de gegevens staan, of een keten van meerdere buffers kan grote jumbo-frames van Ethernet bevatten). Programma's die AF_XDP-sockets gebruiken, kunnen nu pakketten ontvangen en verzenden vanuit meerdere buffers.
    • In het BPF-systeem is ondersteuning toegevoegd voor het defragmenteren van IPv4- en IPv6-pakketten, evenals de mogelijkheid om gefragmenteerde pakketten te filteren.
    • In BPF is een nieuwe handler 'update_socket_protocol' toegevoegd, die BPF-programma's in staat stelt om het gevraagde protocol voor nieuwe sockets te wijzigen. Bijvoorbeeld, een BPF-programma kan het TCP-protocol transparant vervangen door MPTCP (multipath TCP) om het verkeer van de applicatie te optimaliseren. In BPF is ook ondersteuning toegevoegd voor het beheren van de routering van pakketten via verschillende streams in MPTCP.
    • De experimentele status van de module ksmbd is opgeheven, wat een werkende kernelimplementatie van een SMB3-bestandserver biedt. Ondersteuning voor het samenvoegen van leesoperaties (lees 'compound'-verzoeken) is toegevoegd.
  • Apparatuur
    • In het DRM-systeem (Direct Rendering Manager) zijn wijzigingen aangebracht die nodig zijn voor de effectieve werking van de open NVK-driver met de implementatie van de grafische API Vulkan voor NVIDIA-grafische kaarten. Aanvankelijk was de DRM-driver Nouveau gericht op de implementatie van OpenGL, waardoor het ontbreekt aan primitieve ondersteuningen die nodig zijn voor een effectieve werking van Vulkan-drivers, zoals de ondersteuning van gesynchroniseerde objecten en het beheer van virtuele adresruimten.
    • In de AMDGPU-stuurprogramma is ondersteuning voor SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 en GFX 9.4.3 geïmplementeerd. De code voor het laden van PSP-firmware (Platform Security Processor) is herzien. De ondersteuning voor de technologie voor adaptieve synchronisatie FreeSync is uitgebreid (ondersteuning voor Freesync Panel Replay V2 is toegevoegd).
    • In de i915-stuurprogramma is de implementatie van ondersteuning voor Intel Meteor Lake-chips voortgezet. De ondersteuning voor de technologie voor kopieerbescherming HDCP (High-bandwidth Digital Content Protection) is verbeterd. De code voor interactie met het display is herzien.
    • Opties voor het uitschakelen van het laden van microcodes tijdens de bouw zijn uit Kconfig verwijderd — MICROCODE_INTEL en MICROCODE_AMD. De kernel wordt nu altijd gebouwd met de microcode-laadcode voor x86-systemen, maar het daadwerkelijke laden van microcode kan worden uitgeschakeld door de kernelparameter 'dis_ucode_ldr' op te geven.
    • De geluids subsystem heeft de mogelijkheid toegevoegd om geluidsapparaten die via de IIO (Industrial I/O) subsystem zijn aangesloten, te beheren.
    • Ondersteuning is toegevoegd voor de geluidsinterfaces Intel LunarLake, Intel ArrowLake en AMD ACP5x, codecs Cirrus Logic CS42L43, Realtek RT1017 en TI TAS2781, evenals versterkers Cirrus Logic CS35L56 en winic aw88261. Ondersteuning voor ASoC AMD Van Gogh is toegevoegd.
    • Er is een USB MIDI 2.0 Gadget-stuurprogramma toegevoegd, dat interface USB MIDI 2.0 emuleert, gebonden aan het ALSA UMP rawmidi-apparaat.
    • Ondersteuning is toegevoegd voor Ethernet-controllers van Broadcom ASP 2.0 en Marvell 88Q2XXX.
    • Ondersteuning is toegevoegd voor de Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 en EDT ET028013DMA-panelen, displaycontrollers van Loongson en aanraakschermcontrollers van Azoteq IQS7222D/IQS7210A/7211A.
    • Ondersteuning is toegevoegd voor de ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018, AN400 (Amlogic T7).
    • Ondersteuning is toegevoegd voor ARM-platforms Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3, Radxa ROCK 4SE.

Tegelijkertijd heeft de Latijns-Amerikaanse Stichting voor Vrije Software een volledig vrije kernel 6.6 ontwikkeld — Linux-libre 6.6-gnu, vrijgemaakt van firmware- en stuurprogramma-elementen die onvrije componenten of codefragmenten bevatten waarvan het toepassingsgebied door de fabrikant is beperkt. In versie 6.6 is de code voor het schoonmaken van blobs in verschillende stuurprogramma's en subsystems, zoals TI gigabit RU ethernet, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-audio en aw88261 SoC, bijgewerkt. Namen van blobs in dts-bestanden voor de architectuur Aarch64 zijn schoongemaakt. Blobs in nieuwe ivpu-stuurprogramma's, bluetooth-stuurprogramma's, het aanraakschermstuurprogramma en de Qualcomm Venus V4L2-encoder/decoder zijn 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