Release van de Linux-kernel 6.11

Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux-kernel 6.11 gepresenteerd. Enkele van de meest opvallende wijzigingen zijn: ondersteuning voor atomische schrijfoperaties op blokniveau, ondersteuning voor de bind() en listen() functies in io_uring, een nieuw mechanisme voor het vergrendelen van software-interrupt-handlers, de mogelijkheid om naar in het geheugen gespiegeld uitgevoerde bestanden te schrijven, ondersteuning voor het schrijven van stuurprogramma's voor blokapparaten in Rust, en optimalisatie van de getrandom() aanroep.

In de nieuwe versie zijn 15130 correcties door 2078 ontwikkelaars opgenomen, met een patchgrootte van 85 MB (de wijzigingen betreffen 13282 bestanden, 985857 regels code zijn toegevoegd en 268915 regels zijn verwijderd). In de vorige release waren er 14564 correcties van 1989 ontwikkelaars, met een patchgrootte van 41 MB (tweemaal kleiner dan de patch voor kernel 6.11). Ongeveer 46% van alle wijzigingen in 6.11 heeft betrekking op stuurprogramma's voor apparaten, ongeveer 17% van de wijzigingen heeft betrekking op de update van architectuurspecifieke code, 10% heeft te maken met de netwerkstack, 5% met besturingssystemen en 3% met interne subsystemen van de kernel.

Belangrijkste innovaties in kernel 6.11:

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • Ondersteuning voor atomische schrijfoperaties op blokniveau is geïmplementeerd, waarbij ofwel de volledige opgegeven set blokken naar de opslag wordt geschreven, of geen van de blokken, wat beschermt tegen situaties waarin na een hardwarefout slechts een deel van de blokken wordt geschreven, terwijl in een ander deel oude informatie blijft. Om de atomische schrijfmethode in de systeemoproep pwritev() in te schakelen, is de vlag RWF_ATOMIC toegevoegd. Informatie over de ondersteuning voor atomisch schrijven (atomic_write_unit_min, atomic_write_unit_max en atomic_write_segments_max) met betrekking tot individuele bestanden kan worden verkregen met de functie statx().
    • Ondersteuning is geboden voor schrijven naar uitvoerbare bestanden die zijn gekoppeld aan actieve processen. Vroeger gaf de kernel, net als in andere Unix-achtige systemen, een foutmelding wanneer geprobeerd werd te schrijven naar een uitvoerbaar bestand van een gestart proces. Deze beperking is opgeheven omdat deze in de praktijk niet zinvol is.
    • De mogelijkheid is geïmplementeerd om stuurprogramma's voor blokapparaten in Rust te ontwikkelen. Als voorbeeld is de rnull-stuurprogramma aan de kernel toegevoegd, dat een equivalent is van de null_blk-stuurprogramma, geschreven in Rust.
    • In het Btrfs-bestandssysteem is ondersteuning voor de nieuwe modi "ignoremetacsums" en "ignoresuperflags" geïmplementeerd in de mountoptie "rescue=", die kan worden gebruikt om bepaalde controles naar de gebruikersruimte te verplaatsen bij het herstellen van het bestandssysteem na een storing. De implementatie van de dynamische terugbrengoperatie van blokgroepen is herschreven om de situatie van tekort aan vrije ruimte bij een gedeeltelijk gevuld bestandssysteem te voorkomen.
    • In het ntfs3-bestandssysteem is ondersteuning voor de attributen "compressed" en "immutable" geïmplementeerd, welke respectievelijk gecomprimeerde en onveranderlijke bestanden definiëren.
    • In de F2FS- en Ext4-bestandssystemen is de behandeling van bestandsnamen zonder rekening te houden met hoofdletters (casefold) vereenvoudigd door namen op te slaan in de vorm van qstr-strings zonder overbodige hoofdletterconversies.
    • In het Ext4-bestandssysteem is de implementatie van de functie jbd2_transaction_committed geoptimaliseerd om de prestaties op zeer snelle opslagmedia te verbeteren (tests hebben een toename van het aantal verwerkte bewerkingen per seconde tot 20% laten zien).
    • In de systeembel naar statx() is het toegestaan om een NULL-pointer door te geven in plaats van een lege string met een bestands pad, als de vlag AT_EMPTY_PATH is ingesteld.
    • In de systeembel naar open_by_handle_at() zijn de toegangscontroles versoepeld in het geval dat de bevoegdheden CAP_DAC_READ_SEARCH ontbreken om te zoeken in de initiële naamruimte. Eerder stond de vereiste aanwezigheid van de bevoegdheden CAP_DAC_READ_SEARCH in de initiële naamruimte het gebruik van de systeembel open_by_handle_at() in containers niet toe.
    • De mogelijkheden van de systeembel naar listmount() en statmount() zijn uitgebreid. In listmount() is de vlag LISTMOUNT_REVERSE toegevoegd om de inhoud van de mount-puntentabel in omgekeerde volgorde weer te geven (meest recente vermeldingen bovenaan). In statmount() is de uitvoer van de opties die zijn ingesteld bij het monteren van het bestandssysteem geïmplementeerd. In beide systeembellen is het mogelijk om te werken zonder toegang tot de initiële naamruimte (wanneer er alleen toegang is tot de lokale of externe naamruimte).
    • In het Bcachefs-bestandssysteem is ondersteuning voor automatische transparante herstel van problematische gegevens geïmplementeerd met behulp van foutherstelcodes — als er een invoer-/uitvoerfout optreedt of er een afwijking in de controlesom is vastgesteld, wordt het problematische gegevensblok automatisch opnieuw geschreven als er redundantie beschikbaar is voor herstel.
  • Geheugen en systeemdiensten
    • In de patch zijn nieuwe mechanismen voor het blokkeren van software-onderbrekingsverwerkers (BH, bottom-half) geïmplementeerd, die de gegevensstructuren die worden gebruikt blokkeren, maar geen blokkering van parallelle uitvoering van niet-gerelateerde code veroorzaken. Het wordt opgemerkt dat deze wijziging niet alleen de latentie voor kernels die in realtime-modus werken heeft verlaagd, maar ook de prestaties van reguliere kernels heeft verhoogd (bijvoorbeeld voor bepaalde soorten belasting is een prestatieverhoging van 14,5% voor het netwerksubsyteem waargenomen).
    • In het async I/O-subsysteem io_uring is ondersteuning toegevoegd voor operaties voor de implementatie van de functies bind() en listen(), die worden gebruikt voor het creëren van netwerksockets die verbindingen aannemen.
    • Een set ioctl-operaties is toegevoegd voor het pseudo-bestandssysteem NSFS (NameSpace FS), dat wordt gebruikt voor het werken met namespaces. De nieuwe ioctl's maken het mogelijk om proces- en threadgroepidentificaties tussen verschillende PID-namespace-identificaties te converteren. Vergelijkbare ioctl's, die op basis van pidfd-identificatoren bestandshandvaten van processen in afzonderlijke namespaces kunnen identificeren, zijn ook toegevoegd aan het pseudo-bestandssysteem pidfd.
    • Voor BPF-programma's is ondersteuning toegevoegd voor een nieuwe iterator voor het werken met bitmaskers, die kan worden gebruikt om bijvoorbeeld individuele bits in geheugengebieden, zoals cpumask, door te lopen. Daarnaast is er een mechanisme toegevoegd om processen in de gebruikersruimte op de hoogte te stellen van het ontkoppelen (detach/unregister) van het object struct_ops. Het aantal types dat kan worden gebruikt in arrays is uitgebreid (bijvoorbeeld arrays met elementen van de types kptr, bpf_rb_root en bpf_list_head kunnen nu worden gedefinieerd). Er is een betrouwbaarder mechanisme voor Split BTF (BPF Type Format) voorgesteld, dat wordt gebruikt voor typecontrole in BPF-pseudocode.
    • Een subsysteem is toegevoegd dat het mogelijk maakt om de stroomvoorziening naar apparaten in een bepaalde volgorde te organiseren, in gevallen waarin één apparaat eerder moet worden geactiveerd dan een ander (bijvoorbeeld bij de activatie van draadloze chips op Qualcomm-platforms).
    • Er is een module 'Sloppy logic analyser' toegevoegd, waarmee eenvoudige logische signaalanalysatoren kunnen worden gemaakt die GPIO gebruiken en draaien op een aparte CPU-kern.
    • Ondersteuning voor runtime-constanten is toegevoegd, die kunnen worden gebruikt in plaats van één keer geïnitialiseerde variabelen. Bijvoorbeeld, runtime-constanten kunnen worden gebruikt in plaats van variabelen die een pointer en grootte voor de dentry-cache opslaan. Deze variabelen worden bij het opstarten ingesteld en vervolgens nooit meer gewijzigd. Het idee is om de waarden van dergelijke variabelen direct in de instructies in de code in te voegen, waardoor de overhead van pointermanipulaties wordt geëlimineerd.
    • De wijzigingen uit de Rust-for-Linux-tak worden verder overgezet, in verband met het gebruik van de programmeertaal Rust als tweede taal voor de ontwikkeling van stuurprogramma's en kernelmodules (ondersteuning voor Rust is standaard niet ingeschakeld en leidt er niet toe dat Rust een verplichte build-afhankelijkheid van de kernel wordt). Ondersteuning voor Rust 1.80 is toegevoegd (de minimale versie blijft Rust 1.78). Naast de eerder genoemde hulpmiddelen voor het ontwikkelen van stuurprogramma's voor blokapparaten zijn in de nieuwe versie abstracties toegevoegd voor het laden van firmware, toegang tot gebruikersruimte (uaccess) en het werken met de 'page'-structuur.
    • Voor x86-64-systemen is een nieuwe systeemaanroep uretprobe() geïmplementeerd, die het functioneren van het uretprobe-tracemechanisme optimaliseert, waarmee waarden die door functies in gebruikersruimte-applicaties worden teruggegeven, kunnen worden gevolgd.
    • Nieuwe kernelopdrachtparameters zijn toegevoegd: 'reserve_mem' voor het reserveren van een gedefinieerd geheugenbereik tijdens het opstarten en 'ramoops.mem_name' voor gebruik in een pstore-geheugengebied dat is gemaakt via reserve_mem.
    • In de cgroup-geheugencontroller is de parameter 'swappiness' toegevoegd aan het bestand memory.reclaim, dat de instellingen voor geheugenuitwijking definieert, waardoor het evenwicht tussen het uitwisselen van anonieme geheugenpagina's naar de swap en het vrijgeven van geheugenpagina's die zijn gebruikt voor het bestandscache kunnen worden aangepast.
    • Een ioctl-interface PROCMAP_QUERY is toegevoegd voor een efficiëntere zoektocht naar virtuele geheugengebieden (Virtual Memory Area) in /proc/PID/maps.
    • Aan de systeemaanroep mmap() is de vlag MAP_DROPPABLE toegevoegd om geheugen aan te vragen dat niet naar de swap zal worden weggeschreven, maar in geval van geheugenstekort kan worden verwijderd.
    • Voor de ARM64-architectuur is ondersteuning voor hot plugging (overschakeling naar online/offline-modus) van fysieke en virtuele CPU's op systemen met ACPI geïmplementeerd.
    • Voor de RISC-V-architectuur is ondersteuning voor hot-pluggen van geheugen toegevoegd en is ondersteuning voor de GCC-plugin STACKLEAK toegevoegd (dit initialiseert alle in de stack opgeslagen variabelen 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).
    • Het mechanisme voor de schijnbare EFI-geheugenmapping (fake EFI memory map) is verwijderd tijdens het opstartproces. Dit mechanisme werd niet praktisch gebruikt en hinderde ontwikkelingen op het gebied van vertrouwelijk uitvoeren. virtuele machines.
    • De ondersteuning voor het PowerPC 40x-platform is stopgezet.
    • De eisen voor de versie van GNU Make zijn verhoogd - voor het bouwen van de kernel is minimaal de release van GNU Make nodig, gepubliceerd in 2013.
  • Virtualisatie en beveiliging
    • Patches zijn geïntegreerd die de snelheid van het verkrijgen van willekeurige getallen via de systeemaanroep getrandom() aanzienlijk (tot 15 keer) versnellen. De optimalisatie is gebaseerd op het gebruik van het vDSO (virtual dynamic shared object)-mechanisme, dat de mogelijkheid biedt om de systeemaanroep-handler van de kernel naar de gebruikersruimte te verplaatsen en contextwisselingen te vermijden. De implementatie van de systeemaanroep wordt rechtstreeks door de kernel in de adresruimte van het proces geladen.
    • Voor x86-64-systemen is een nieuwe implementatie van het AES-GCM-encryptie-algoritme ingeschakeld, die het gebruik van vectorinstructies VAES, VPCLMULQDQ en AVX512/AVX10 voor versnelde berekeningen ondersteunt. In uitgevoerde tests is de prestatiewinst na de overstap naar de nieuwe implementatie tot 156% bereikt. De assembly-implementatie van AES-GCM is volledig herschreven met inachtneming van correctheid, prestaties, grootte en nauwkeurige documentatie van de code.
    • De mogelijkheid is geïmplementeerd om de kernel als gast-systeem te draaien in gevirtualiseerde omgevingen die gebruik maken van de AMD SEV-SNP (Secure Nested Paging) processoruitbreiding, bedoeld om veilige werking met geneste paginatabellen te waarborgen. Voor aanvullende isolatie van de toegang tot bronnen vanuit virtuele machines kan de SVSM-module (Linux Secure VM Service Module) worden gebruikt. In de hypervisor KVM is basissteun voor het starten van gast-systemen, beveiligd met AMD SEV-SNP, toegevoegd.
    • Een aparte slab-allocator voor buckets is toegevoegd, ingeschakeld via de parameter CONFIG_SLAB_BUCKETS, en biedt bescherming tegen aanvallen met behulp van de techniek 'heap spraying'.
    • In de KVM-hypervisor is een ioctl-aanroep toegevoegd voor proactieve toewijzing van geheugen aan het gastensysteem voordat het daadwerkelijk wordt opgestart.
  • Netwerk subsysteem
    • Een sysctl-parameter net.tcp_rto_min_us is toegevoegd, waarmee de minimale retransmission timeout voor TCP-sockets kan worden ingesteld.
    • De ethtool-hulpprogramma heeft de mogelijkheid gekregen om de configuratie van interruptafhandelaars voor netwerkinterfaces die het Net DIM-interface gebruiken, nauwkeurig in te stellen.
  • Apparatuur
    • In de AMDGPU-driver is de initiële ondersteuning voor de AMD RDNA4 GPU ('GFX12') ingeschakeld. Ondersteuning voor DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 en MMHUB 4.1 is toegevoegd.
    • Het werk aan de drm-driver (Direct Rendering Manager) voor de Intel Xe-architectuur is voortgezet, die wordt gebruikt in Intel Arc-grafische kaarten en geïntegreerde grafiek, te beginnen met Tiger Lake-processors. De ondersteuning voor grafische processors op basis van de micro-architecturen Battlemage, Arrow Lake en Lunar Lake is verbeterd.
    • In de DRM-subsystem (Direct Rendering Manager) is de handler voor de door de monitor geëxtraheerde EDID-parameters (Extended Display Identification Data) herschreven.
    • In de i915-driver is ondersteuning voor de Battlemage Xe2 GPU toegevoegd en is de CMRR-modus (Content Match Refresh Rate) standaard ingeschakeld.
    • In de DRM-driver msm (Qualcomm Adreno GPU) is ondersteuning voor het SM7150-platform en GPU X185 en a505 toegevoegd.
    • Ondersteuning voor de schermpanelen Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070WL4, Lincoln Technologies LCD197, Ortustech COM35H3P70ULC, AUO G104STN01, en K&d kd101ne3-40ti is toegevoegd.
    • In de audiocomponent is ondersteuning toegevoegd voor de chips en codecs Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 en Texas Instruments PCM5242.
    • De laatste wijzigingsronde die ondersteuning biedt voor de ARM SoC Snapdragon X Elite, die een eigen 12-core Qualcomm Oryon CPU en Qualcomm Adreno GPU gebruikt, is doorgevoerd. Deze chip is gericht op gebruik in laptops en pc's en presteert op veel gebieden beter dan de Apple M3 en Intel Core Ultra 155H chips. De wijzigingen in kernel 6.11 zijn gerelateerd aan de ondersteuning van de Adreno X1-85 GPU en energiemanagement. Onder de apparaten die gebruik maken van de SoC Snapdragon X Elite zijn de laptops ASUS Vivobook S15 en Lenovo Yoga Slim7x vermeld.

Tegelijkertijd heeft de Latijns-Amerikaanse Vrije Software Stichting een volledig vrij kernel 6.11 - Linux-libre 6.10-gnu ontwikkeld, vrijgemaakt van firmware-elementen en stuurprogramma's die niet-vrije componenten of codefragmenten bevatten waarvan de toepassing beperkt is door de fabrikant. In de release 6.11 is de schoonmaakcode voor blobs in de stuurprogramma's mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth en tas2781 bijgewerkt. Er is een schoonmaak uitgevoerd van nieuwe stuurprogramma's amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 en pcie-rcar-gen4. Er is een schoonmaak uitgevoerd van blobnamen in dts-bestanden (device tree) voor de architectuur Aarch64. Er is een versie van primitieve functies toegevoegd voor het laden van firmware zonder waarschuwingen en verzoeken (nowait-nowarn). Er is code toegevoegd voor het identificeren van primitieve functies voor firmware-lading in Rust-code.

Bron: opennet.ru

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