Kernelrelease Linux 6.1

Na twee maanden ontwikkeling bracht Linus Torvalds de kernel uit. Linux 6.1. Tot de meest opvallende wijzigingen behoren: ondersteuning voor het ontwikkelen van drivers en modules in de Rust-taal, modernisering van het mechanisme voor het bepalen van gebruikte geheugenpagina's, een speciale geheugenbeheerder voor BPF-programma's, het KMSAN-diagnosesysteem voor geheugenproblemen, het KCFI-beveiligingsmechanisme (Kernelk Control-Flow Integrity) en de introductie van de Maple-boomstructuur.

De nieuwe versie bevat 15115 fixes van 2139 ontwikkelaars, de patchgrootte is 51 MB, wat ongeveer twee keer kleiner is dan de grootte van de patches van kernels 2 en 6.0. De wijzigingen hadden betrekking op 5.19 bestanden, er werden 13165 regels code toegevoegd en er werden 716247 regels verwijderd. Ongeveer 304560% van alle wijzigingen die in versie 45 zijn doorgevoerd, hebben betrekking op apparaatstuurprogramma's, ongeveer 6.1% van de wijzigingen heeft betrekking op het bijwerken van code die specifiek is voor hardwarearchitecturen, 14% heeft betrekking op de netwerkstack, 14% heeft betrekking op bestandssystemen en 3% heeft betrekking op interne kernelsubsystemen.

Belangrijkste innovaties in kernel 6.1:

  • Geheugen- en systeemservices
    • Rust is toegevoegd als tweede taal voor het ontwikkelen van drivers en kernelmodules. De belangrijkste reden voor de ondersteuning van Rust is het vereenvoudigen van het schrijven van veilige, hoogwaardige apparaatdrivers door de kans op fouten bij het werken met geheugen te verkleinen. Rust-ondersteuning is standaard uitgeschakeld en is geen verplichte build-afhankelijkheid voor de kernel. De kernel gebruikt momenteel een minimale, uitgeklede versie van patches, die zijn teruggebracht van 40 naar 13 regels code en alleen het absolute minimum bieden dat nodig is voor het bouwen van een eenvoudige kernelmodule geschreven in Rust. In de toekomst zijn we van plan de bestaande functionaliteit geleidelijk uit te breiden door andere wijzigingen van de Rust-for-branch over te nemen.LinuxTegelijkertijd lopen er projecten om de voorgestelde infrastructuur te gebruiken voor de ontwikkeling van drivers in Rust voor NVMe-schijven, het 9p-netwerkprotocol en de Apple M1 GPU.
    • Voor systemen gebaseerd op de AArch64-, RISC-V- en LoongArch-architecturen met EFI is de mogelijkheid geïmplementeerd om gecomprimeerde kernelimages direct op te starten. Handlers toegevoegd voor het laden, uitvoeren en ontladen van kernelimages, rechtstreeks aangeroepen vanuit EFI zboot. Er zijn ook handlers toegevoegd voor het installeren en verwijderen van protocollen uit de EFI-protocoldatabase. Voorheen werd het uitpakken uitgevoerd door een aparte bootloader, maar nu kan dit worden gedaan door een handler in de kernel zelf: de kernelimage wordt gevormd als een EFI-toepassing.
    • Het pakket bevat een aantal patches die een model voor geheugenbeheer op meerdere niveaus implementeren, waarmee geheugenbanken met verschillende prestatiekenmerken kunnen worden gescheiden. Zo kunnen de meest gebruikte pagina's in het snelste geheugen worden opgeslagen, terwijl de zelden gebruikte pagina's in een relatief langzaam geheugen worden opgeslagen. Kernel 6.1 introduceert een mechanisme om te bepalen waar veelgebruikte pagina's zich in het langzame geheugen bevinden, zodat ze naar het snelle geheugen kunnen worden gepromoveerd. Ook implementeert het systeem het algemene concept van geheugenniveaus en hun relatieve prestaties.
    • Het MGLRU-mechanisme (Multi-Generational LRU) is opgenomen. Dit mechanisme heeft de oude LRU-implementatie (Least Latest Used) met twee wachtrijen vervangen door een structuur met meerdere fasen. Hiermee kan beter worden bepaald welke geheugenpagina's daadwerkelijk in gebruik zijn en welke naar de swappartitie kunnen worden gepusht.
    • Er is ondersteuning toegevoegd voor de door Oracle-engineers voorgestelde "maple tree"-datastructuur, die wordt gezien als een efficiëntere vervanging voor de "red-black tree"-structuur. Maple tree is een variant van de B-tree die bereikindexering ondersteunt en is ontworpen voor efficiënt cachegebruik. moderne processorsSommige geheugenbeheersystemen zijn al gemigreerd naar Maple Trees, wat een positieve invloed heeft gehad op hun prestaties. In de toekomst zouden Maple Trees mogelijk gebruikt kunnen worden voor het implementeren van bereikvergrendeling.
    • Het BPF-subsysteem heeft nu de mogelijkheid om "destructieve" BPF-programma's te maken die specifiek zijn ontworpen om een ​​abnormale beëindiging te initiëren door crash_kexec() aan te roepen. Dergelijke BPF-programma's kunnen nodig zijn om fouten op te sporen en op een bepaald moment een crashdump te maken. Om toegang te krijgen tot destructieve bewerkingen bij het laden van een BPF-programma, moet de vlag BPF_F_DESTRUCTIVE worden opgegeven, moet sysctl kernel.destructive_bpf_enabled worden ingeschakeld en moeten CAP_SYS_BOOT-rechten aanwezig zijn.
    • BPF-programma's kunnen cgroup-elementen en bronnen (bestanden, vma, processen, enz.) van een specifieke thread of taak opsommen. Er is een nieuw kaarttype geïmplementeerd voor het maken van gebruikersringbuffers.
    • Er is een speciale oproep toegevoegd voor het toewijzen van geheugen in BPF-programma's (geheugentoewijzer). Deze biedt een veiligere geheugentoewijzing in de BPF-context dan de standaard kmalloc().
    • Het eerste deel van de wijzigingen is geïntegreerd en biedt de mogelijkheid om drivers te maken voor invoerapparaten met een HID-interface (Human Interface Device), geïmplementeerd in de vorm van BPF-programma's.
    • De kernel heeft de code die het uitvoerbare bestandsformaat a.out ondersteunde volledig verwijderd. Dit formaat werd afgekeurd in versie 5.1 en uitgeschakeld voor belangrijke architecturen vanaf versie 5.18 en 5.19. LinuxEn het genereren van .out-bestanden wordt niet ondersteund door moderne tools in configuraties voor Linux Standaard. De loader voor a.out-bestanden kan volledig in de gebruikersruimte worden geïmplementeerd.
    • Voor systemen die gebaseerd zijn op de LoongArch-instructiesetarchitectuur die wordt gebruikt in de Loongson 3 5000-processors en die een nieuwe RISC ISA implementeren die vergelijkbaar is met MIPS en RISC-V, is ondersteuning voor prestatiemetinggebeurtenissen (perf-gebeurtenis), kexec, kdump en BPF JIT-compilatie geïmplementeerd.
    • De asynchrone I/O-interface io_uring introduceert een nieuwe modus, IORING_SETUP_DEFER_TASKRUN, waarmee de uitvoering van ringbuffergerelateerd werk tijdelijk kan worden uitgesteld totdat een toepassing hierom vraagt. Zo kunt u taken batchgewijs uitvoeren en latentieproblemen voorkomen die ontstaan ​​door inbeslagname door de toepassing op een ongelegen moment.
    • Processen in de gebruikersruimte krijgen de mogelijkheid om de conversie van een reeks normale geheugenpagina's naar een set transparante grote pagina's te initiëren.
    • Implementatie van het /dev/userfaultfd-apparaat toegevoegd, waarmee toegang tot de systeemoproepfunctionaliteit userfaultfd() mogelijk is met behulp van toegangsrechten voor het bestandssysteem. Met de functionaliteit userfaultfd kunt u handlers maken voor toegang tot niet-toegewezen geheugenpagina's (paginafouten) in de gebruikersruimte.
    • De versievereisten voor het hulpprogramma GNU Make zijn verhoogd. Om de kernel te bouwen, is nu minimaal versie 3.82 nodig.
  • Schijfsubsysteem, I/O en bestandssystemen
    • De prestaties van het Btrfs-bestandssysteem zijn aanzienlijk geoptimaliseerd, met onder meer een enorme verbetering in de prestaties van de FIEMAP ioctl-aanroep. Ondersteuning toegevoegd voor asynchrone gebufferde schrijfbewerkingen voor toepassingen die io_uring gebruiken. De "verzend"-bewerking ondersteunt nu bestanden die zijn beveiligd met fs-verity.
    • Het ext4-bestandssysteem is geoptimaliseerd voor prestaties met betrekking tot journaalbeheer en alleen-lezenbewerkingen.
    • Het EROFS (Enhanced Read-Only File System) is ontworpen voor gebruik op partities die toegankelijk zijn in de alleen-lezenmodus en biedt de mogelijkheid om gegevens die in verschillende bestandssystemen zijn gedupliceerd, gezamenlijk op te slaan.
    • De systeemoproep statx() kan nu informatie weergeven over de vraag of directe I/O op een bestand kan worden toegepast.
    • Het subsysteem FUSE (Filesystems in User Space) is bijgewerkt en ondersteunt nu het maken van tijdelijke bestanden met de vlag O_TMPFILE.
  • Virtualisatie en beveiliging
    • De implementatie van het CFI-beveiligingsmechanisme (Control Flow Integrity) is vervangen. Er worden controles toegevoegd vóór elke indirecte functieaanroep om bepaalde vormen van ongedefinieerd gedrag te detecteren die mogelijk kunnen leiden tot een schending van de normale uitvoeringsvolgorde (controlestroom) als gevolg van exploits die functiepointers wijzigen die in het geheugen zijn opgeslagen. De standaard CFI-implementatie van het LLVM-project is vervangen door een variant die ook gebaseerd is op het gebruik van Clang, maar die speciaal is aangepast om low-level subsystemen en besturingssysteemkernels te beschermen. In LLVM wordt de nieuwe implementatie voorgesteld in Clang 16 en ingeschakeld via de optie "-fsanitize=kcfi". Het belangrijkste verschil van de nieuwe implementatie is dat deze niet afhankelijk is van link-time-optimalisaties (LTO's) en niet resulteert in het vervangen van functiepointers door jump table-verwijzingen.
    • Voor LSM-modules (Linux De beveiligingsmodule biedt de mogelijkheid om handlers te creëren die bewerkingen onderscheppen om naamruimten te creëren.
    • Biedt hulpmiddelen voor het verifiëren van PKCS#7 digitale handtekeningen in BPF-programma's.
    • /dev/random kan nu weer in de niet-blokkerende modus (O_NONBLOCK) worden geopend. Deze functie was per ongeluk verwijderd in de 5.6-kernel.
    • Op x86-systemen is een waarschuwing toegevoegd wanneer kernelsubsystemen geheugenpagina's toewijzen die zowel uitvoering als schrijven toestaan. Er wordt overwogen om in de toekomst dergelijke geheugentoewijzing volledig uit te schakelen.
    • Er is een KMSAN-foutopsporingsmechanisme (Kernel Memory Sanitizer) toegevoegd om niet-geïnitialiseerd geheugengebruik in de kernel te detecteren, evenals niet-geïnitialiseerd geheugenlekken tussen gebruikersruimte en apparaten.
    • Er zijn verbeteringen aangebracht aan de cryptografisch beveiligde pseudorandom-getallengenerator (CRNG) die wordt gebruikt in de getrandom-aanroep. Deze wijzigingen zijn voorbereid door Jason A. Donenfeld, de auteur. VPN WireGuard en zijn bedoeld om de veiligheid van pseudo-willekeurige gehele getallenextractie te verbeteren.
  • Netwerksubsysteem
    • De TCP-stack heeft de mogelijkheid (standaard uitgeschakeld) om socket-hashtabellen afzonderlijk voor elke naamruimte te gebruiken, wat de prestaties van systemen met een groot aantal naamruimten kan verbeteren.
    • Code verwijderd ter ondersteuning van het oude DECnet-protocol. API-stubs worden achtergelaten voor gebruikersruimte, zodat applicaties kunnen worden gecompileerd die DECnet gebruiken. Deze applicaties kunnen echter geen verbinding maken met het netwerk.
    • Het netlinkprotocol is gedocumenteerd.
  • Uitrusting
    • De amdgpu-driver voegt ondersteuning toe voor DSC-passthrough (Display Stream Compression) voor verliesloze gegevenscompressie bij het uitwisselen van informatie met schermen die zeer hoge resoluties ondersteunen. Er wordt nog steeds gewerkt aan ondersteuning voor AMD RDNA3 (RX 7000) en CDNA (Instinct)-platforms. Ondersteuning toegevoegd voor DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x en GMC 11.x IP-componenten. De amdkfd-driver (voor discrete AMD GPU's zoals Polaris) implementeert ondersteuning voor GFX 11.0.3.
    • De i915 (Intel) driver biedt ondersteuning voor Meteor Lake GPU's. Voor Meteor Lake en nieuwere GPU's is ondersteuning voor de DP 2.0 (DisplayPort)-interface beschikbaar. Identificatiegegevens toegevoegd voor videokaarten op basis van de Alder Lake S-microarchitectuur.
    • Ondersteuning toegevoegd voor geluidssubsystemen geïmplementeerd in Apple Silicon-, Intel SkyLake- en Intel KabyLake-processors. De CS35L41 HDA-audiodriver biedt ondersteuning voor het overschakelen naar de slaapstand. Toegevoegde ASoC (ALSA System on Chip)-ondersteuning voor Apple Silicon, AMD Rembrant DSP's, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake en Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP's, Qualcomm SC8280XP, SM8250, SM8450 en Texas Instruments SRC4392 geïntegreerde audiochips
    • Ondersteuning toegevoegd voor LCD-panelen Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1, AUO B116XAK01.6, BOE NT116WHM-N21, INX N116BCA-EA2, INX N116BCN-EA1, Multi-Inno Technology MI0800FT-9.
    • Ondersteuning toegevoegd voor AHCI SATA-controllers die worden gebruikt in Baikal-T1 SoC.
    • Ondersteuning toegevoegd voor Bluetooth-chips MediaTek MT7921, Intel Magnetor (CNVi, Integrated Connectivity), Realtek RTL8852C, RTW8852AE en RTL8761BUV (Edimax BT-8500).
    • De ath11k-driver voor draadloze modules van Qualcomm is bijgewerkt en ondersteunt nu spectrale scanning in het 160 MHz-bereik. Daarnaast is multi-threaded NAPI geïmplementeerd en is de ondersteuning voor Qualcomm WCN6750 Wi-Fi-chips verbeterd.
    • Drivers toegevoegd voor PinePhone-toetsenbord, InterTouch-touchpads (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panels, XBOX One Elite-afstandsbedieningen, XP-PEN Deco Pro S en Intuos Pro Small (PTH-460) tablets.
    • Driver toegevoegd voor cryptografische versnellers Aspeed HACE (Hash en Crypto Engine).
    • Ondersteuning toegevoegd voor geïntegreerde Thunderbolt/USB4-controllers van Intel Meteor Lake.
    • Ondersteuning toegevoegd voor smartphones Sony Xperia 1 IV, Samsung Galaxy E5, E7 en Grand Max, Pine64 Pinephone Pro.
    • Ondersteuning toegevoegd voor ARM SoC en moederborden: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 en RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, Kontron SL/BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Bijgewerkte drivers voor SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom en NXP.

Tegelijkertijd creëerde de Latijns-Amerikaanse Stichting voor Vrije Software een versie van de volledig vrije kernel 6.1. Linux-libre 6.1-gnu, opgeschoond van firmware- en driverelementen die niet-vrije componenten of codefragmenten met een beperkte reikwijdte bevatten. Deze release bevat een opschoning van de nieuwe rtw8852b-driver en DTS-bestanden voor diverse Qualcomm- en MediaTek-SoC's met AArch64-gebaseerde processors. De code voor het opschonen van blobs is bijgewerkt voor de amdgpu-, i915-, brcmfmac-, r8188eu-, rtw8852c- en Intel ACPI-drivers en -subsystemen. De opschoning van verouderde drivers voor tm6000 tv-kaarten, cpia2 v4l, sp8870 en av7110 is aangepast.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster