Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux-kernel 6.10 gepresenteerd. Onder de meest opvallende wijzigingen bevinden zich: de ntsync-driver met synchronisatie primitief voor Windows NT, de DRM Panic-componenten voor de implementatie van een analoog van het "blauwe scherm van de dood", de beƫindiging van de ondersteuning voor oudere Alpha CPU's, de mogelijkheid om de integriteit te verifiƫren in FUSE-gebaseerde bestandsystemen, de beperking van toegang tot ioctl via het Landlock-mechanisme, een subsystem voor het profilereren van geheugenallocatie-operaties, de systeembroep mseal(), de mogelijkheid van versleutelde gegevensoverdracht met TPM-apparaten, ondersteuning voor hoog-prioritaire werkqueues in dm-crypt, en de panthor-driver voor de tiende generatie GPU Mali.
De nieuwe versie bevat 14.564 correcties van 1.989 ontwikkelaars, de patchgrootte is 41 MB (wijzigingen betroffen 12.509 bestanden, 547.663 regele coderegel toegevoegd en 312.464 regels verwijderd). In de vorige release waren er 15.680 correcties van 2.106 ontwikkelaars, met een patchgrootte van 54 MB. Ongeveer 41% van alle wijzigingen in 6.10 zijn gerelateerd aan stuurprogramma's, ongeveer 15% van de wijzigingen betreft de update van architectuur-specifieke code, 13% is gerelateerd aan de netwerkstack, 5% aan bestandsystemen en 4% aan interne subsystems van de kernel.
Belangrijkste vernieuwingen in de kernel 6.10:
- Opslagsubsystemen, invoer/uitvoer en bestandssystemen
- Een nieuwe fcntl-operatie F_DUPFD_QUERY is toegevoegd, waarmee een proces kan bepalen dat twee verschillende bestandsdescriptoren naar hetzelfde bestand verwijzen. In tegenstelling tot soortgelijke mogelijkheden die door de systeembroep kcmp() worden geboden, onthult F_DUPFD_QUERY geen extra informatie en werkt het op systemen met uitgeschakelde kcmp().
- In het FUSE-subsystem, dat wordt gebruikt voor het implementeren van bestandsystemen in gebruikersruimte, is de mogelijkheid geĆÆmplementeerd om het fs-verity-mechanisme te gebruiken voor het controleren van de integriteit en authenticiteit van bestanden.
- In de dm-crypt-module, die wordt gebruikt voor de versleuteling van block devices, is de optie "high_priority" toegevoegd, waardoor hoog-prioritaire werkqueues kunnen worden ingeschakeld om de prestaties op hoge servers. De modus is standaard uitgeschakeld omdat dit op gewone pc's kan leiden tot hogere latenties bij taken die niet met versleuteling verband houden, zoals geluidverwerking.
- Er is een op netlink gebaseerde protocol toegevoegd voor het beheren van de NFS-server in de kernel. In de gebruikersruimte is er een hulpprogramma nfsdctl ontwikkeld op basis van dit protocol. De ondersteuning voor het mounten van NFS v2 is standaard uitgeschakeld (de mount.nfs-hulpprogramma stopte al in 2021 met ondersteuning voor NFS v2).
- In het XFS-bestandssysteem is de implementatie voortgezet voor de mogelijkheid om de fsck-hulpprogramma te gebruiken voor het controleren en corrigeren van ontdekte problemen in online-modus, zonder het afkoppelen van het bestandssysteem. ioctl XFS_IOC_EXCHANGE_RANGE is toegevoegd voor het atomisch uitwisselen van bytebereiken tussen twee bestanden.
- In Btrfs is ondersteuning gerealiseerd voor het verkleinen (shrinker) van niet-bevestigde extentkaarten, wat nuttig kan zijn voor het verminderen van geheugengebruik bij geheugentekorten in het systeem. De code voor gegevenscompressie en de functie put_file_data() zijn omgezet naar het gebruik van pagina-folios (page folios). Het mechanisme voor het vergrendelen van extents is herzien bij het uitvoeren van terugschrijfoperaties.
- In het Ext4-bestandssysteem is ondersteuning toegevoegd voor ioctl FS_IOC_GETFSSYSFSPATH om de locatie van een bepaalde aangekoppelde FS in de hiƫrarchie /sys/fs te bepalen.
- De bestandssystemen OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX en FREEVXFS zijn omgezet naar het gebruik van de nieuwe API voor het mounten van partities.
- In het EROFS-bestandssysteem (Extendable Read-Only File System), bedoeld voor gebruik op partities die alleen-lezen zijn, is ondersteuning toegevoegd voor het compressiealgoritme Zstandard.
- In Bcachefs is voorbereid op het uitvoeren van fsck zonder het afkoppelen van de partitie (online-controle). Er zijn wijzigingen en verbeteringen aangebracht om de betrouwbaarheid te verhogen. De mogelijkheid is gerealiseerd om het bestandssysteemformaat in de modus 'nochanges' bij te werken en terug te draaien, waarbij schrijven is uitgeschakeld en metadata alleen in het geheugen wordt opgeslagen.
- In het OverlayFS-bestandssysteem is ondersteuning toegevoegd voor het creƫren van tijdelijke bestanden met de optie O_TMPFILE.
- De ondersteuning voor het mechanisme voor het beperken van de doorvoer van blokapparaten 'CONFIG_BLK_DEV_THROTTLING_LOW' is beƫindigd, dat sinds 2017 status als experimenteel heeft behouden, niet op grote schaal is toegepast en het onderhoud van de blokapparaat-subsystemen bemoeilijkt.
- Geheugen en systeemdiensten
- Toegevoegd, maar uitgeschakeld bij de bouw, de ntsync-driver, die een symbolisch apparaat /dev/ntsync en een set synchronisatieprimitieven implementeert die in de kernel van Windows NT worden gebruikt. De implementatie van dergelijke primitieve op kernniveau maakt een aanzienlijke prestatieverbetering mogelijk voor Windows-games die worden uitgevoerd via Wine. De prestatieverbetering wordt bereikt door de overhead van RPC in de gebruikersruimte te elimineren. Het creƫren van een aparte driver voor de Linux-kernel wordt verklaard door de problematiek van het correct implementeren van de NT-synchronisatie-API bovenop de bestaande primitieven in de kernel.
- Een subsysteem voor het profileren van geheugentoewijzingsoperaties in de Linux-kernel is toegevoegd, waardoor geheugolekken in de kernel kunnen worden opgespoord en optimalisatie van geheugengebruik wordt vereenvoudigd. Het subsysteem heeft een lage overhead, waardoor het niet alleen in debug-builds van de kernel kan worden gebruikt, maar ook op productiesystemen.
- Een initiƫle implementatie van een noodsituatie-handler in de kernel is toegevoegd - DRM Panic, die het DRM (Direct Rendering Manager) subsysteem gebruikt om een visueel kleurrapport weer te geven in de stijl van een 'blauwe scherm van de dood'. In de volgende release is het plan om de mogelijkheid toe te voegen om een logo en QR-code op het scherm weer te geven in geval van een noodsituatie.
- De overdracht van wijzigingen uit de Rust-for-Linux-tak, met betrekking tot het gebruik van de Rust-taal als tweede taal voor de ontwikkeling van drivers en kernelmodules, is voortgezet (ondersteuning voor Rust is standaard niet ingeschakeld en leidt niet tot opname van Rust in de lijst van verplichte buildafhankelijkheden voor de kernel). De overstap naar Rust-versie 1.78 is uitgevoerd, waardoor de standaardbibliotheek alloc kan worden gebruikt in plaats van de aangepaste tak. Er zijn abstracties voor tijdsbeheer in de kernel toegevoegd (wrap rond de ktime_t-structuur). Ondersteuning voor het gebruik van kernelcomponenten in de Rust-taal op systemen met RISC-V-architectuur is toegevoegd.
- In BPF-programma's is de mogelijkheid geĆÆmplementeerd om wachtrijen (wait queue) in de kernel te gebruiken. Functies bpf_preempt_disable en bpf_preempt_enable zijn toegevoegd, waarmee niet-onderbroken secties met code kunnen worden gemaakt die door de taakplanner worden overgeslagen. BPF-programma's hebben toegang gekregen tot de cryptografische functies van de kernel (crypto). Ondersteuning voor JIT-compilatie van BPF-programma's op systemen met 32-bits processoren ARCv2 is geĆÆmplementeerd.
- Voor 32-bits ARM-systemen is ondersteuning toegevoegd voor het bouwen van de kernel met de Clang-compiler met ingeschakelde CFI (Control Flow Integrity) bescherming, die het verstoren van de normale volgorde van uitvoering (control flow) door exploitatietechnieken die geheugenschema's voor functies wijzigen, tegenhoudt.
- De mogelijkheid tot directe reflectie via mmap() van ringbuffer-tracers is toegevoegd om de inhoud naar de gebruikersruimte over te brengen zonder extra kopiƫren.
- De systeemaaanroep 'mseal' is toegevoegd, waarmee processen een blokkade kunnen instellen op het wijzigen van bepaalde delen van hun adresruimte. In de praktijk is het de bedoeling dat de nieuwe systeemaankoop in de Chrome-browser wordt gebruikt om de sandbox-isolatie te versterken.
- Voor de subarchitectuur x32, die een hybride x86_64 ABI biedt, waardoor de 32-bits geheugenadressmodellen op 64-bits systemen kunnen worden gebruikt (de processor werkt in 64-bits modus, maar gebruikt 32-bits aanwijzers en rekenoperaties), is ondersteuning voor het Shadow Stack-mechanisme toegevoegd, dat veel exploits kan blokkeren door gebruik te maken van de hardwaremogelijkheden van Intel-processoren ter bescherming tegen het overschrijven van het retouradres van een functie in het geval van een bufferoverflow op de stack.
- Op systemen met een ARM64-architectuur zijn in de systeemaankoop userfaultfd(), die de mogelijkheid biedt om handlers voor niet-toegewezen geheugenseiten (page faults) te creëren in de gebruikersruimte, mogelijkheden geïmplementeerd met betrekking tot de bescherming tegen het schrijven naar geheugengebieden en elementen van de paginatabel.
- De ondersteuning voor Alpha 21164 (EV5) en eerdere generaties, die sinds 1995 worden uitgegeven, is verwijderd. Het onderhoud van de code voor deze processoren is bemoeilijkt door het gebrek aan de mogelijkheid om toegang te krijgen tot geheugen op het niveau van afzonderlijke bytes. Alpha was de eerste architectuur waarop de Linux-kernel was gepoort, die oorspronkelijk alleen beschikbaar was voor x86-systemen.
- Virtualisatie en beveiliging
- Ondersteuning voor versleutelde gegevensuitwisseling met TPM-apparaten (Trusted Platform Module) en verificatie van transactionele integriteit is toegevoegd.
- In de LSM-module Landlock, die de interactie van een groep processen met de externe omgeving beperkt, is de mogelijkheid toegevoegd om regels toe te passen die de toegang tot ioctl()-aanroepen beperken.
- Een bij het opstarten instelbare optie init_mlocked_on_free is voorgesteld, die ervoor zorgt dat de inhoud van het geheugen, dat door mlock() is vergrendeld, wordt gewist wanneer dit geheugen wordt vrijgegeven zonder het te ontgrendelen met munlock(). Het gebruik van deze optie voorkomt dat cryptografische sleutels in het geheugen blijven hangen in geval van een onverwachte beƫindiging van de applicatie die met hen werkt.
- In de cryptosubsystemen zijn de prestaties van schijfversleuteling met het AES-XTS-algoritme versneld op x86_64-systemen met Intel- en AMD-processoren die VAES-, AVX2-, VPCLMULQDQ-, AVX10- of AVX512-uitbreidingen ondersteunen.
- De mogelijkheid om statistieken over het gebruik van de cryptosubsystemen van de kernel te verzamelen (CONFIG_CRYPTO_STATS) is verwijderd. Deze mogelijkheid werd in de praktijk niet gebruikt en leidde tot een aanzienlijke daling van de prestaties en zorgde voor een merkbare extra belasting voor de onderhouders.
- Netwerk subsysteem
- De prestaties van gegevensoverdracht in zero-copy-modus zijn aanzienlijk verhoogd met de io_uring-subsystemen. De mogelijkheid om meerdere buffers te bundelen voor gegevensverzend- en ontvangsten is toegevoegd.
- De garbage collection-code toegepast bij het verzenden van bestandsdescriptoren via Unix-sockets met SCM_RIGHTS-berichten is herschreven. Deze wijziging lost het probleem van opbouw met cirkelreferenties op.
- De mogelijkheid om filters in te stellen voor het PFCP-protocol (Packet Forwarding Control Protocol), dat wordt gebruikt in 4G- en 5G-netwerken, is toegevoegd.
- Ondersteuning voor de netwerksocket-optie SO_PEEK_OFF is toegevoegd, die, vergelijkbaar met de overeenkomstige optie voor Unix-sockets, het mogelijk maakt om de gegevensverschuiving in de wachtrij te bepalen die door de systeemaanroep recv wordt gebruikt wanneer de vlag MSG_PEEK wordt opgegeven (markeert de gegevens als ongelezen en deze zullen opnieuw worden gegeven bij de volgende aanroep van recv).
- De io_uring-submodule heeft ondersteuning toegevoegd voor de operatie IORING_CQE_F_SOCK_NONEMPTY, waarmee kan worden bepaald of een netsocket verzoeken heeft voor verbinding die wachten op verwerking.
- Een implementatie van de technologie PoE (Power over Ethernet) is voorgesteld, gebaseerd op eerder beschikbare code ter ondersteuning van PoDL (Power over Data Line) en compatibel met PoE-controllers van Microchip PD692x0 en TI TPS23881.
- Voor de protocollen TCP, DCCP en MPTC is ondersteuning toegevoegd voor het rstreason-mechanisme, waarmee de reden voor het verzenden van RST-pakketten kan worden bepaald (bijvoorbeeld NO_SOCKET).
- Apparatuur
- De panthor-driver voor de tiende generatie GPU Mali (G310, G510, G710) is in de samenstelling opgenomen, die de technologie CSF (Command Stream Frontend) toepast, waarbij bepaalde functies van de driver naar de firmware worden verplaatst om de belasting op de CPU te verminderen en een nieuw model aanbiedt voor de organisatie van werk op de GPU. Wijzigingen ter ondersteuning van de nieuwe driver zijn ook aangenomen in Mesa en opgenomen in de Gallium-driver panfrost voor GPU Mali.
- In de i915-driver zijn PCI-identificaties voor nieuwe discrete videokaarten van Intel Arc (DG2/Alchemist) toegevoegd.
- 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's Arc videokaarten en geïntegreerde graphics, is voortgezet vanaf de Tiger Lake-processors. Ondersteuning voor CPU Arrow Lake H is toegevoegd. De implementatie van ondersteuning voor Lunar Lake-processors is voortgezet. Initiële ondersteuning voor het SR-IOV-mechanisme (Single Root I/O Virtualization) is toegevoegd.
- In de AMDGPU-driver is ondersteuning voor SMU 14.0 (System Management Unit) toegevoegd. De mogelijkheid om nieuwe AMD GPU's te gebruiken op systemen met RISC-V-architectuur is toegevoegd.
- Een driver voor de versleuteling accelerator Tegra Security Engine is toegevoegd, die kan worden gebruikt voor het versnellen van AES en verschillende hashing-algoritmen.
- Ondersteuning is toegevoegd voor de beeldschermpanelen LG SW43408, Innolux G121XCE-L01 LVDS, RK3326 GameForce Chi, Crystal Clear CMT430B19N00, POWERTIP PH128800T006-ZHC01, Startek KD050HDFIA020-C020A, Pixel 3a, Khadas TS050 V2, Raydium RM69380, BOE NT116WHM-N44, CMN N116BCA-EA1 en AUO B120XAN01.0.
- Ondersteuning toegevoegd voor de audiosystemen van de Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X en ASUS Zenbook 2024 HN7306W. Ondersteuning toegevoegd voor externe geluidskaarten Vocaster One en Vocaster Two. Driver toegevoegd voor de versterkers NAU8325 van Nuvoton Technology.
- In de HID-Steam driver is ondersteuning toegevoegd voor de IMU (Inertial Measurement Unit) van de Steam Deck-gamecontroller, wat het mogelijk maakt om een aparte evdev-knoop te gebruiken voor toegang tot de gegevens van de gyroscoop en versnellingsmeter.
- Wijzigingen zijn ingeschakeld ter ondersteuning van de ARM SoC Snapdragon X Elite, met een eigen 12-core CPU Qualcomm Oryon en GPU Qualcomm Adreno. De chip is gericht op gebruik in laptops en pc's en overtreft in veel prestatietests de chips van Apple M3 en Intel Core Ultra 155H.
- Ondersteuning toegevoegd voor ARM-platformen, SoC's en apparaten: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 China, Motorola Moto G, RK3326 GameForce Chi, Anbernic RG35XX (Plus/H/2024), Airoha EN7581, Radxa ROCK 3C, ArmSom Sige7, Tanix TX1, Toradex Colibri iMX8DX, Renesas RZ/V2H, Forlinx OK3588-C, Protonic MECSBC, Emcraft Systems NavQ+, NXP S32G3, Wolfvision pf5, Amlogic A4/A5, ASUS RT-AC3200, ASUS RT-AC5300, ASrock E3C256D4I, IBM system1 BMC, Meta Harma BMC(AST2600), ASRock X570D4U BMC, Au-Zone Maivin AI Vision Starter Kit.
- Ondersteuning toegevoegd voor de Milk-V Mars borden die gebruikmaken van de Starfive JH7110 SoC gebaseerd op de RISC-V architectuur.
Tegelijkertijd heeft de Latijns-Amerikaanse Free Software Foundation een volledig vrij kernelvariant 6.10 - Linux-libre 6.10-gnu gecreëerd, vrijgemaakt van firmware- en driver-elementen die onvrije componenten of codebeperkingen bevatten van de fabrikant. In release 6.10 is de code voor het opruimen van blobs in de Intel i915, rtl8xxxu, qla2xxx en QCAI sahara drivers geüpdatet. De blobs namen zijn opgeschoond in dts-bestanden (devicetree) voor de Aarch64 architectuur. Nieuwe bestanden die zijn toegevoegd in de Adreno, Intel IPU3 en PRUEth drivers zijn van blobs ontdaan. Nieuwe drivers zoals Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID en pcm6240 zijn schoongemaakt. Opruiming van de USB-driver Prism2.5/3 USB is stopgezet, deze is uit de kernel verwijderd.
Bron: opennet.ru
