Linux 5.12 kernel-release

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux-kernel 5.12. Een van de meest opvallende veranderingen: ondersteuning voor gezoneerde blokapparaten in Btrfs, de mogelijkheid om gebruikers-ID's voor het bestandssysteem in kaart te brengen, het opschonen van oudere ARM-architecturen, een 'gretige' schrijfmodus in NFS, het LOOKUP_CACHED-mechanisme voor het bepalen van bestandspaden vanuit de cache , ondersteuning voor atomaire instructies in BPF, een debugging-systeem KFENCE voor het identificeren van fouten bij het werken met geheugen, NAPI-polling-modus die draait in een aparte kernelthread in de netwerkstack, ACRN-hypervisor, de mogelijkheid om het preempt-model tijdens de taak te wijzigen planner en ondersteuning voor LTO-optimalisaties bij het inbouwen in Clang.

De nieuwe versie bevat 14170 (in de vorige release 15480) fixes van 1946 (1991) ontwikkelaars, de patchgrootte is 38 MB (de wijzigingen hadden betrekking op 12102 (12090) bestanden, 538599 (868025) coderegels zijn toegevoegd, 333377 (261456) regels zijn verwijderd). Ongeveer 43% van alle wijzigingen die in 5.12 zijn geïntroduceerd, hebben betrekking op apparaatstuurprogramma's, ongeveer 17% van de wijzigingen heeft betrekking op het updaten van code die specifiek is voor hardware-architecturen, 12% heeft betrekking op de netwerkstack, 5% heeft betrekking op bestandssystemen en 4% zijn gerelateerd aan interne kernelsubsystemen.

Belangrijkste innovaties:

  • Schijfsubsysteem, I/O en bestandssystemen
    • De mogelijkheid om gebruikers-ID's voor aangekoppelde bestandssystemen toe te wijzen is geïmplementeerd (u kunt bestanden van de ene gebruiker op een aangekoppelde buitenlandse partitie toewijzen aan een andere gebruiker op het huidige systeem). Toewijzing wordt ondersteund voor FAT-, ext4- en XFS-bestandssystemen. De voorgestelde functionaliteit maakt het gemakkelijker om bestanden te delen tussen verschillende gebruikers en op verschillende computers. Er zal onder meer gebruik worden gemaakt van mapping in het systemd-homed draagbare homedirectorymechanisme, waardoor gebruikers hun homedirectory's naar externe media kunnen verplaatsen en deze op verschillende computers kunnen gebruiken, gebruikers-ID's waarmee niet overeenkomt. Een andere nuttige toepassing is het organiseren van gedeelde toegang tot bestanden vanaf een externe host, zonder daadwerkelijk de gegevens over de eigenaren van de bestanden in het bestandssysteem te wijzigen.
    • De LOOKUP_CACHED-patches zijn in de kernel opgenomen, waardoor bewerkingen een bestandspad vanuit de gebruikersruimte kunnen bepalen zonder te blokkeren, alleen op basis van de gegevens die beschikbaar zijn in de cache. De LOOKUP_CACHED-modus wordt geactiveerd in de openat2()-aanroep door het doorgeven van de RESOLVE_CACHED-vlag, waarin gegevens alleen vanuit de cache worden geserveerd, en als de padbepaling toegang tot de schijf vereist, wordt de EAGAIN-fout geretourneerd.
    • Het Btrfs-bestandssysteem heeft initiële ondersteuning toegevoegd voor gezoneerde blokapparaten (apparaten op harde magnetische schijven of NVMe SSD's, waarbij de opslagruimte is verdeeld in zones die groepen blokken of sectoren vormen, waaraan alleen opeenvolgende toevoeging van gegevens is toegestaan, het bijwerken van de hele groep blokken). In de alleen-lezen-modus is ondersteuning geïmplementeerd voor blokken met metadata en gegevens die kleiner zijn dan een pagina (subpagina).
    • In het F2FS-bestandssysteem is de mogelijkheid toegevoegd om het algoritme en het compressieniveau te selecteren. Ondersteuning toegevoegd voor compressie op hoog niveau voor het LZ4-algoritme. Implementeerde de checkpoint_merge montageoptie.
    • Er is een nieuw ioctl-commando FS_IOC_READ_VERITY_METADATA geïmplementeerd om metagegevens te lezen van bestanden die zijn beveiligd met fs-verity.
    • De NFS-client implementeert een “gretige” schrijfmodus (writes=eager). Indien ingeschakeld, worden schrijfbewerkingen naar een bestand onmiddellijk naar de server overgebracht, waarbij de paginacache wordt omzeild. Met deze modus kunt u het geheugengebruik verminderen, ontvangt u onmiddellijk informatie over het einde van de vrije ruimte in het bestandssysteem en kunt u in sommige situaties betere prestaties bereiken.
    • Er zijn nieuwe mount-opties toegevoegd aan CIFS (SMB): acregmax om de caching van bestanden te beheren en acdirmax om de caching van directory-metagegevens te controleren.
    • In XFS is de multi-threaded quota-controlemodus ingeschakeld, is de uitvoering van fsync versneld en is er Growfs-code voorbereid om de functie van het verkleinen van het bestandssysteem te implementeren.
  • Geheugen- en systeemservices
    • Het DTMP-subsysteem (Dynamic Thermal Power Management) is toegevoegd, waardoor u het stroomverbruik van verschillende apparaten dynamisch kunt regelen op basis van de ingestelde algemene temperatuurlimieten.
    • De mogelijkheid om de kernel te bouwen met behulp van de Clang-compiler met de toevoeging van optimalisaties in de koppelingsfase (LTO, Link Time Optimization) is geïmplementeerd. LTO-optimalisaties verschillen doordat ze rekening houden met de status van alle bestanden die bij het bouwproces betrokken zijn, terwijl traditionele optimalisatiemodi elk bestand afzonderlijk optimaliseren en geen rekening houden met de voorwaarden voor het aanroepen van functies die in andere bestanden zijn gedefinieerd. Met LTO is bijvoorbeeld inline-implementatie mogelijk voor functies uit andere bestanden, wordt ongebruikte code niet opgenomen in het uitvoerbare bestand, worden typecontrole en algemene optimalisatie op projectniveau als geheel uitgevoerd. LTO-ondersteuning is momenteel beperkt tot x86- en ARM64-architecturen.
    • Het is mogelijk om voorrangsmodi (PREEMPT) te selecteren in de taakplanner tijdens de opstartfase (preempt=none/voluntary/full) of tijdens het werken met debugfs (/debug/sched_debug), als de PREEMPT_DYNAMIC instelling werd opgegeven bij het bouwen van de kernel. Voorheen kon de extrusiemodus alleen op het niveau van de assemblageparameters worden ingesteld. Door de wijziging kunnen distributies kernels verzenden met de PREEMPT-modus ingeschakeld, wat minimale latentie voor desktops biedt ten koste van een kleine doorvoersnelheid, en indien nodig terugvallen op PREEMPT_VOLUNTARY (een tussenliggende modus voor desktops) of PREEMPT_NONE (biedt maximale doorvoer voor servers) .
    • Ondersteuning voor atomaire operaties BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG en BPF_CMPXCHG is toegevoegd aan het BPF-subsysteem.
    • BPF-programma's krijgen de mogelijkheid om toegang te krijgen tot gegevens op de stapel met behulp van pointers met variabele offsets. Als u voorheen bijvoorbeeld alleen een constante elementindex kon gebruiken om toegang te krijgen tot een array op de stapel, kunt u nu een veranderende index gebruiken. Toegangscontrole wordt uitsluitend binnen de bestaande grenzen uitgevoerd door de BPF-verificateur. Deze functie is alleen beschikbaar voor bevoorrechte programma's vanwege zorgen over misbruik van kwetsbaarheden bij het uitvoeren van speculatieve code.
    • De mogelijkheid toegevoegd om BPF-programma's te koppelen aan kale traceerpunten die niet zijn gekoppeld aan traceergebeurtenissen die zichtbaar zijn in de gebruikersruimte (ABI-behoud is niet gegarandeerd voor dergelijke traceerpunten).
    • Er is ondersteuning voor de CXL 2.0-bus (Compute Express Link) geïmplementeerd, die wordt gebruikt om snelle interactie tussen de CPU en geheugenapparaten te organiseren (hiermee kunt u externe geheugenapparaten gebruiken als onderdeel van RAM of permanent geheugen, alsof dit geheugen waren verbonden via een standaard geheugencontroller in de CPU).
    • Nvmem-stuurprogramma toegevoegd om gegevens op te halen uit door de firmware gereserveerde geheugengebieden die niet direct toegankelijk zijn voor Linux (bijvoorbeeld EEPROM-geheugen dat fysiek alleen toegankelijk is voor de firmware, of gegevens die alleen toegankelijk zijn tijdens de vroege opstartfase).
    • Ondersteuning voor het ‘oprofile’-profileringssysteem, dat niet op grote schaal werd gebruikt, is vervangen door het modernere perf-mechanisme.
    • De io_uring asynchrone I/O-interface biedt integratie met cgroups die het geheugengebruik regelen.
    • De RISC-V-architectuur ondersteunt NUMA-systemen, evenals kprobes- en uprobes-mechanismen.
    • De mogelijkheid toegevoegd om de systeemaanroep kcmp() te gebruiken, ongeacht de functionaliteit van momentopnamen van de processtatus (controlepunt/herstel).
    • De macro's EXPORT_UNUSED_SYMBOL() en EXPORT_SYMBOL_GPL_FUTURE(), die al jaren niet meer in de praktijk worden gebruikt, zijn verwijderd.
  • Virtualisatie en beveiliging
    • KFence-beveiligingsmechanisme (Kernel Electric Fence) toegevoegd, dat fouten opspoort bij het werken met geheugen, zoals bufferoverschrijdingen en toegang na het vrijmaken van geheugen. In tegenstelling tot het KASAN-foutopsporingsmechanisme wordt het KFence-subsysteem gekenmerkt door een hoge werksnelheid en lage overhead, waardoor u geheugenfouten kunt opsporen die alleen voorkomen op werkende systemen of tijdens langdurig gebruik.
    • Ondersteuning toegevoegd voor de ACRN-hypervisor, geschreven met het oog op gereedheid voor realtime taken en geschiktheid voor gebruik in bedrijfskritische systemen. ACRN biedt minimale overhead, garandeert een lage latentie en voldoende reactievermogen bij interactie met apparatuur. Ondersteunt virtualisatie van CPU-bronnen, I/O, netwerksubsysteem, grafische weergave en geluidsbewerkingen. ACRN kan worden gebruikt om meerdere geïsoleerde virtuele machines te laten draaien in elektronische besturingseenheden, instrumentenpanelen, auto-informatiesystemen, IoT-apparaten voor consumenten en andere ingebedde technologie. ACRN ondersteunt twee soorten gastsystemen: bevoorrechte service-VM's, die worden gebruikt om systeembronnen (CPU, geheugen, I/O, enz.) te beheren, en aangepaste gebruikers-VM's, die Linux-, Android- en Windows-distributies kunnen uitvoeren.
    • In het IMA-subsysteem (Integrity Measurement Architecture), dat een hash-database bijhoudt voor het controleren van de integriteit van bestanden en bijbehorende metadata, wordt het nu mogelijk om de integriteit van de gegevens van de kernel zelf te controleren, bijvoorbeeld om veranderingen in SELinux-regels bij te houden .
    • De mogelijkheid om Xen-hypercalls te onderscheppen en door te sturen naar de emulator die in de gebruikersruimte draait, is toegevoegd aan de KVM-hypervisor.
    • De mogelijkheid toegevoegd om Linux te gebruiken als de rootomgeving voor de Hyper-V-hypervisor. De rootomgeving heeft directe toegang tot de hardware en wordt gebruikt om gastsystemen te draaien (analoog aan Dom0 in Xen). Tot nu toe ondersteunde Hyper-V (Microsoft Hypervisor) Linux alleen in gastomgevingen, maar de hypervisor zelf werd bestuurd vanuit een Windows-gebaseerde omgeving.
    • Ondersteuning toegevoegd voor inline-codering voor eMMC-kaarten, waardoor u in de schijfcontroller ingebouwde encryptiemechanismen kunt gebruiken die I/O op transparante wijze coderen en decoderen.
    • De ondersteuning voor de RIPE-MD 128/256/320- en Tiger 128/160/192-hashes, die niet in de kern worden gebruikt, evenals de Salsa20-stroomcodering, die werd vervangen door het ChaCha20-algoritme, is verwijderd uit de crypto-subsysteem. Het blake2-algoritme is bijgewerkt om blake2s te implementeren.
  • Netwerksubsysteem
    • De mogelijkheid toegevoegd om de NAPI-pollinghandler voor netwerkapparaten naar een afzonderlijke kernelthread te verplaatsen, wat verbeterde prestaties voor sommige soorten werkbelasting mogelijk maakt. Voorheen werd polling uitgevoerd in de context van softirq en viel dit niet onder de taakplanner, waardoor het moeilijk werd om fijnmazige optimalisaties uit te voeren om maximale prestaties te bereiken. Door uitvoering in een afzonderlijke kernelthread kan de polling-handler vanuit de gebruikersruimte worden geobserveerd, aan individuele CPU-kernen worden gekoppeld en kan er rekening mee worden gehouden bij het plannen van taakwisselingen. Om de nieuwe modus in sysfs in te schakelen, wordt de parameter /sys/class/net/ voorgesteld / schroefdraad.
    • Integratie in de kern van MPTCP (MultiPath TCP), een uitbreiding van het TCP-protocol voor het organiseren van de werking van een TCP-verbinding met de gelijktijdige levering van pakketten langs verschillende routes via verschillende netwerkinterfaces die zijn gekoppeld aan verschillende IP-adressen. De nieuwe release voegt de mogelijkheid toe om prioriteit toe te kennen aan bepaalde threads, waardoor je bijvoorbeeld het werk van back-upthreads kunt organiseren die alleen worden ingeschakeld als er problemen zijn met de primaire thread.
    • IGMPv3 voegt ondersteuning toe voor het EHT-mechanisme (Explicit Host Tracking).
    • De pakketfiltering-engine van Netfilter biedt de mogelijkheid om bepaalde tabellen te bezitten om exclusieve controle te krijgen (een firewallproces op de achtergrond kan bijvoorbeeld eigenaar worden van bepaalde tabellen, waardoor wordt voorkomen dat iemand anders zich ermee bemoeit).
  • Uitrusting
    • We hebben verouderde en niet-onderhouden ARM-platforms schoongemaakt. De code voor de platforms efm32, picoxcell, prima2, tango, u300, zx en c6x, evenals de bijbehorende stuurprogramma's, is verwijderd.
    • Het amdgpu-stuurprogramma biedt de mogelijkheid om kaarten te overklokken (OverDrive) op basis van de Sienna Cichlid GPU (Navi 22, Radeon RX 6xxx). Ondersteuning toegevoegd voor het FP16-pixelformaat voor DCE (display controller engine) van de 8e tot de 11e generatie. Voor GPU Navy Flounder (Navi 21) en APU Van Gogh is de mogelijkheid om de GPU te resetten geïmplementeerd.
    • Het i915-stuurprogramma voor grafische kaarten van Intel implementeert de parameter i915.mitigations om isolatie- en beveiligingsmechanismen uit te schakelen ten gunste van verbeterde prestaties. Voor chips vanaf Tiger Lake is ondersteuning voor het VRR-mechanisme (Variable Rate Refresh) inbegrepen, waarmee u de vernieuwingsfrequentie van de monitor adaptief kunt wijzigen om vloeiendheid en geen onderbrekingen tijdens games te garanderen. Ondersteuning voor Intel Clear Color-technologie is inbegrepen voor verbeterde kleurnauwkeurigheid. Ondersteuning toegevoegd voor DP-HDMI 2.1. De mogelijkheid om de achtergrondverlichting van eDP-panelen te regelen is geïmplementeerd. Voor Gen9 GPU's met LSPCON-ondersteuning (Level Shifter and Protocol Converter) is HDR-ondersteuning ingeschakeld.
    • De nieuwe driver voegt initiële ondersteuning toe voor NVIDIA GPU's op basis van de GA100 (Ampere) architectuur.
    • Het msm-stuurprogramma voegt ondersteuning toe voor Adreno 508, 509 en 512 GPU's die worden gebruikt in SDM (Snapdragon) 630, 636 en 660-chips.
    • Ondersteuning toegevoegd voor Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s en Pioneer DJM-750 geluidskaarten. Ondersteuning toegevoegd voor Intel Alder Lake PCH-P audiosubsysteem. Ondersteuning voor softwaresimulatie van het aansluiten en loskoppelen van een audioconnector is geïmplementeerd voor het debuggen van handlers in de gebruikersruimte.
    • Ondersteuning toegevoegd voor Nintendo 64-spelconsoles vervaardigd tussen 1996 en 2003 (eerdere pogingen om Linux over te zetten naar de Nintendo 64 waren niet voltooid en werden geclassificeerd als Vaporware). De motivatie voor het creëren van een nieuwe port voor een verouderd platform, dat al bijna twintig jaar niet meer is uitgebracht, is de wens om de ontwikkeling van emulators te stimuleren en het porten van games te vereenvoudigen.
    • Stuurprogramma toegevoegd voor Sony PlayStation 5 DualSense-gamecontroller.
    • Ondersteuning toegevoegd voor ARM-boards, apparaten en platforms: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Ondersteuning toegevoegd voor Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 smartphones.
    • Bcm-vk-driver toegevoegd voor Broadcom VK-acceleratorkaarten (bijvoorbeeld Valkyrie- en Viper PCIe-kaarten), die kunnen worden gebruikt om audio-, video- en beeldverwerkingsbewerkingen, evenals encryptiegerelateerde bewerkingen, over te dragen naar een afzonderlijk apparaat.
    • Ondersteuning toegevoegd voor het Lenovo IdeaPad-platform met de mogelijkheid om constant opladen en toetsenbordverlichting te regelen. Er wordt ook ondersteuning geboden voor het ACPI-profiel van het ThinkPad-platform, met de mogelijkheid om de stroomverbruikmodi te regelen. Stuurprogramma toegevoegd voor Lenovo ThinkPad X1 Tablet Gen 2 HID-subsysteem.
    • OV5647-stuurprogramma toegevoegd met ondersteuning voor cameramodule voor Raspberry Pi.
    • Ondersteuning toegevoegd voor RISC-V SoC FU740 en HiFive Unleashed-kaarten. Er is ook een nieuwe driver voor de Kendryte K210-chip toegevoegd.

Bron: opennet.ru

Voeg een reactie