De release van de Linux-kernel 5.12

Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux-kernel 5.12 gepresenteerd. Onder de meest opvallende wijzigingen vallen: ondersteuning voor gezoneerde blokapparaten in Btrfs, de mogelijkheid om gebruikersidentificatoren te mappen voor het bestandssysteem, opschoning van verouderde ARM-architecturen, de 'onafgebroken' schrijfmodus in NFS, het LOOKUP_CACHED-mechanisme voor het bepalen van bestandsroutes uit de cache, ondersteuning voor atomische instructies in BPF, het debug-systeem KFENCE voor het opsporen van geheugenfouten, de werking van de NAPI-poll-modus in een aparte kernelthread in de netwerkstack, de hypervisor ACRN, de mogelijkheid om de preempt-modus in de taakplanner on-the-fly te wijzigen en ondersteuning voor LTO-optimalisaties bij het bouwen in Clang.

In de nieuwe versie zijn 14170 (in de vorige release 15480) correcties opgenomen van 1946 (1991) ontwikkelaars, de patchgrootte is 38 MB (de wijzigingen betroffen 12102 (12090) bestanden, 538599 (868025) regels code zijn toegevoegd en 333377 (261456) regels zijn verwijderd). Ongeveer 43% van alle wijzigingen in 5.12 heeft betrekking op stuurprogramma's voor apparaten, ongeveer 17% heeft betrekking op de update van architectuurspecifieke code, 12% heeft betrekking op de netwerkstack, 5% op bestandssystemen en 4% op de interne subsystemen van de kernel.

Belangrijkste vernieuwingen:

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • De mogelijkheid om gebruikersidentificatoren te mappen voor gemonteerde bestandssystemen is geïmplementeerd (bestanden van één gebruiker op een gemonteerde schijf van een andere gebruiker kunnen nu aan een andere gebruiker in het huidige systeem worden toegewezen). Mapping wordt ondersteund voor de bestandssystemen FAT, ext4 en XFS. De voorgestelde functionaliteit maakt het delen van bestanden tussen verschillende gebruikers en op verschillende computers eenvoudiger, inclusief de mapping die zal worden toegepast in het mechanisme voor draagbare home directories van systemd-homed, waardoor gebruikers hun thuisdirectories naar externe opslagmedia kunnen verplaatsen en deze op verschillende computers kunnen gebruiken, waarvan de gebruikersidentificatoren niet overeenkomen. Een ander nuttig gebruik is het organiseren van gedeeld bestandstoegang vanaf een externe host, zonder feitelijke wijzigingen aan de bestandsbezitgegevens in het bestandssysteem aan te brengen.
    • In de kernel zijn patches LOOKUP_CACHED geaccepteerd, waarmee gebruikersruimte operaties voor padbepaling kunnen uitvoeren zonder blokkering, alleen op basis van de beschikbare gegevens in de cache. De LOOKUP_CACHED-modus wordt geactiveerd in de openat2()-aanroep door de RESOLVE_CACHED-vlag door te geven, waarbij gegevens alleen uit de cache worden geleverd, en als de padbepaling een toegang tot de opslag vereist, wordt de fout EAGAIN teruggegeven.
    • In het Btrfs-bestandssysteem is initiële ondersteuning voor gezoneerde blokapparaten toegevoegd (apparaten op harde schijven of NVMe SSD's, waarin de opslagruimte is verdeeld in zones die groepen blokken of sectoren vormen, waarbinnen alleen sequentiële gegevens worden toegevoegd, met een volledige update van de hele groep blokken). In de alleen-lezen modus is ondersteuning voor blokken met metadata en gegevens van minder dan een pagina (subpage) geïmplementeerd.
    • In het F2FS-bestandssysteem is de mogelijkheid toegevoegd om het algoritme en het niveau van compressie te kiezen. Ondersteuning voor een hoog niveau van compressie voor het LZ4-algoritme is toegevoegd. Er is een montagedoptie voor checkpoint_merge geïmplementeerd.
    • Een nieuwe ioctl-opdracht FS_IOC_READ_VERITY_METADATA is geïmplementeerd voor het lezen van metadata uit bestanden die zijn beveiligd met fs-verity.
    • In de NFS-client is een 'eager' schrijfmodus (writes=eager) geïmplementeerd, waarbij de schrijfoperaties naar de server onmiddellijk worden verzonden, zonder de pagina-cache. Deze modus vermindert het geheugengebruik, biedt onmiddellijke feedback over beschikbare ruimte in het bestandssysteem en kan in sommige gevallen leiden tot betere prestaties.
    • In CIFS (SMB) zijn nieuwe montagedopties toegevoegd: acregmax voor het beheren van de caching van bestanden en acdirmax voor het beheren van de caching van metadata van mappen.
    • In XFS is de modus voor multi-threaded quota-controle ingeschakeld, is de uitvoering van fsync versneld en is de code van growfs voorbereid voor de implementatie van de functie voor het verkleinen van de bestandssysteemgrootte.
  • Geheugen en systeemdiensten
    • Een DTMP-subsysteem (Dynamic Thermal Power Management) is toegevoegd, waarmee het energieverbruik van verschillende apparaten dynamisch kan worden geregeld op basis van gestelde algemene temperatuurbeperkingen.
    • De mogelijkheid is gerealiseerd om de kernel te bouwen met de Clang-compiler met inclusie van optimalisaties tijdens de linking fase (LTO, Link Time Optimization). LTO-optimalisaties houden rekening met de status van alle bestanden die deelnemen aan het bouwproces, terwijl traditionele optimalisatiemodi elke file afzonderlijk optimaliseren en de aanroepvoorwaarden van functies, gedefinieerd in andere bestanden, niet in overweging nemen. Bijvoorbeeld, bij LTO is inline-uitbreiding voor functies uit andere bestanden mogelijk, ongebruikte code wordt niet in het uitvoerbare bestand opgenomen, typecontroles worden uitgevoerd en er is een algemene optimalisatie op het projectniveau. De ondersteuning voor LTO is momenteel beperkt tot de architecturen x86 en ARM64.
    • Er is een mogelijkheid toegevoegd om de preemptie modus (PREEMPT) in de takenplanner te selecteren tijdens het opstarten (preempt=none/voluntary/full) of tijdens het draaien via debugfs (/debug/sched_debug), indien bij de kernelbouw de PREEMPT_DYNAMIC instelling is opgegeven. Eerder kon de preemptie modus alleen via de bouwparameters worden ingesteld. Deze wijziging maakt het mogelijk voor distributies om kernels te leveren met de ingeschakelde PREEMPT modus, die minimale vertragingen voor desktops biedt tegen de prijs van een geringe afname van de doorvoersnelheid, en indien nodig terug te vallen op de PREEMPT_VOLUNTARY (tussenliggende modus voor desktops) of PREEMPT_NONE (biedt maximale doorvoersnelheid voor). servers).
    • In het BPF-subsysteem is ondersteuning voor atomische bewerkingen BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG en BPF_CMPXCHG toegevoegd.
    • BPF-programma's hebben nu toegang tot gegevens op de stack via pointers met een variabele offset. Bijvoorbeeld, waar voorheen alleen een constante index van een element uit een array op de stack kon worden gebruikt, is het nu mogelijk om een variabele index te gebruiken. Toegang tot gegevens binnen de bestaande grenzen wordt gecontroleerd door de BPF-verifier. Deze mogelijkheid is alleen beschikbaar voor geprivilegieerde programma's vanwege zorgen over de exploitatie van kwetsbaarheden die verband houden met speculatieve uitvoering van code.
    • De mogelijkheid is toegevoegd om BPF-programma's te hechten aan 'bare' tracepoints, die niet gerelateerd zijn aan zichtbare tracing-evenementen in de gebruikersruimte (voor dergelijke tracepoints wordt geen behoud van ABI gegarandeerd).
    • Ondersteuning voor de CXL 2.0-bus (Compute Express Link) is geïmplementeerd, die wordt gebruikt voor het organiseren van hoge snelheid interactie tussen de CPU en geheugensystemen (maakt het mogelijk om externe geheugensystemen te gebruiken als onderdeel van RAM of permanente opslag, alsof deze geheugen is aangesloten via de standaard geheugencontroller in de CPU).
    • Er is een nvmem-stuurprogramma toegevoegd voor het verkrijgen van gegevens uit door de firmware gereserveerde geheugengebieden, die niet direct toegankelijk zijn voor Linux (bijvoorbeeld EEPROM-geheugen, fysiek alleen toegankelijk voor de firmware, of gegevens die alleen tijdens het opstarten beschikbaar zijn).
    • De ondersteuning voor het profileringssysteem ‘oprofile’ is verwijderd, dat niet wijdverbreid is geraakt en is vervangen door een moderner mechanisme genaamd perf.
    • In de interface voor asynchrone invoer/uitvoer io_uring is integratie met cgroup gegarandeerd, die het geheugengebruik beheert.
    • Voor de RISC-V-architectuur is ondersteuning voor NUMA-systemen gerealiseerd, evenals mechanismen voor kprobes en uprobes.
    • De mogelijkheid om de systeemaanroep kcmp() te gebruiken is toegevoegd, onafhankelijk van de functionaliteit van processtatus snapshots (checkpoint/restore).
    • De macro's EXPORT_UNUSED_SYMBOL() en EXPORT_SYMBOL_GPL_FUTURE() zijn verwijderd, die al lange tijd niet meer in de praktijk worden gebruikt.
  • Virtualisatie en beveiliging
    • Er is een KFence-mechanisme toegevoegd (Kernel Electric Fence), dat fouten bij geheugengebruik, zoals buffer overflow en toegang na vrijgave van geheugen, opvangt. In tegenstelling tot het debugmechanisme KASAN, onderscheidt het KFence-subsysteem zich door hoge snelheid en lage overhead, waardoor het mogelijk is om geheugentekorten op te sporen die zich alleen voordoen in werkelijke systemen of bij langdurig gebruik.
    • Ondersteuning voor de hypervisor ACRN is toegevoegd, die is ontwikkeld met het oog op bruikbaarheid voor real-time taken en toepasbaarheid in kritieke systemen. ACRN zorgt voor minimale overhead, garandeert lage latentie en een adequate responsiviteit bij interactie met hardware. Virtualisatie van CPU-bronnen, input/output, netwerksysteem, grafische en audio-operaties wordt ondersteund. ACRN kan worden gebruikt om meerdere geïsoleerde virtuele machines in elektronische besturingssystemen, instrumentpanelen, autoinformatiesystemen, consument IoT-apparaten en andere embedded technologie. ACRN ondersteunt twee soorten gastensystemen: de geprivilegieerde Service VM, die wordt gebruikt voor het beheer van systeemresources (CPU, geheugen, invoer/uitvoer, enz.), en de gebruikersspecifieke User VM, waarin Linux-distributies, Android en Windows kunnen draaien.
    • In het IMA-subsysteem (Integrity Measurement Architecture), dat zorgt voor het onderhoud van een hash-database voor integriteitscontrole van bestanden en daaraan gerelateerde metadata, is er nu de mogelijkheid om de integriteit van de kernel zelf te controleren, bijvoorbeeld om wijzigingen in de SELinux-regels bij te houden.
    • In de KVM-hypervisor is de mogelijkheid toegevoegd om hypercalls van Xen te onderscheppen en door te geven aan een emulator die draait in de gebruikersruimte.
    • De mogelijkheid om Linux als rootomgeving voor de Hyper-V-hypervisor te gebruiken, is toegevoegd. De rootomgeving heeft directe toegang tot de hardware en wordt gebruikt om gastensystemen te draaien (vergelijkbaar met Dom0 in Xen). Tot nu toe ondersteunde Hyper-V (Microsoft Hypervisor) Linux alleen in gastomgevingen, terwijl de hypervisor zelf werd beheerd vanuit een Windows-gebaseerde omgeving.
    • Inline-encryptie voor eMMC-kaarten is toegevoegd, waardoor de ingebouwde mechanismen voor encryptie in de opslagcontroller kunnen worden benut, wat transparante encryptie en decryptie van invoer/uitvoer mogelijk maakt.
    • De subondersteuning van ongebruikte hashes RIPE-MD 128/256/320 en Tiger 128/160/192 is uit het cryptosysteem verwijderd, evenals de stroomversleuteling Salsa20, die is vervangen door het algoritme ChaCha20. Het blake2-algoritme is geüpdatet naar de blake2s-implementatie.
  • Netwerk subsysteem
    • De mogelijkheid is toegevoegd om de NAPI-pollinghandler van netwerkinstallaties in een apart kernelthread te verplaatsen, wat kan leiden tot prestatieverbeteringen voor bepaalde belastingstypes. Voorheen vond de polling plaats in de context van softirq en werd deze niet door de taakplanner behandeld, wat het optimaliseren voor maximale prestaties bemoeilijkte. Uitvoering in een apart kernelthread stelt ons in staat om de pollinghandler vanuit de gebruikersruimte te bewaken, deze aan afzonderlijke CPU-kernen te koppelen en deze in aanmerking te nemen bij het plannen van taakwisselingen. Voor het inschakelen van de nieuwe modus is de parameter /sys/class/net//threaded in sysfs voorgesteld.
    • De integratie in de MPTCP-kern (MultiPath TCP), een uitbreiding van het TCP-protocol voor het gelijktijdig verzenden van TCP-verkeerspakketten via meerdere routes over verschillende netwerkinterfaces, verbonden met verschillende IP-adressen, is voortgezet. In deze nieuwe versie is de mogelijkheid toegevoegd om prioriteit toe te wijzen aan bepaalde stroompjes, wat bijvoorbeeld het mogelijk maakt om reserve-stromen te organiseren die alleen worden ingeschakeld bij problemen met de primaire stroom.
    • In IGMPv3 is ondersteuning voor het EHT-mechanisme (Explicit Host Tracking) toegevoegd.
    • In het netfilter-pakketfiltermechanisme is de mogelijkheid gerealiseerd om exclusieve controle over bepaalde tabellen te krijgen (bijvoorbeeld kan een achtergrondproces van de firewall bepaalde tabellen vergrendelen en andere gebruikers verhinderen om hiermee te bemoeien).
  • Apparatuur
    • Oude en onondersteunde ARM-platforms zijn schoongevraagd. De code voor de platforms efm32, picoxcell, prima2, tango, u300, zx en c6x, evenals de bijbehorende stuurprogramma's, is verwijderd.
    • In de amdgpu-stuurprogramma is de mogelijkheid tot overklokken (OverDrive) van kaarten op basis van de GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx) geïmplementeerd. Ondersteuning voor het FP16-pixelformaat voor DCE (display controller engine) van de 8e tot de 11e generatie is toegevoegd. Voor de GPU Navy Flounder (Navi 21) en de APU Van Gogh is de mogelijkheid om de GPU opnieuw in te stellen geïmplementeerd.
    • In de i915-stuurprogramma voor Intel-grafische kaarten is de parameter i915.mitigations geïmplementeerd om isolatie- en beschermingsmechanismen uit te schakelen ten gunste van prestatieverhoging. Voor chips vanaf Tiger Lake is ondersteuning voor het VRR-mechanisme (Variable Rate Refresh) ingeschakeld, dat de verversingssnelheid van de monitor dynamisch aanpast voor een soepele weergave zonder haperingen tijdens het gamen. Ondersteuning voor de Intel Clear Color-technologie is ingeschakeld voor verbeterde kleurprecisie. Ondersteuning voor DP-HDMI 2.1 is toegevoegd. De mogelijkheid om de achtergrondverlichting van eDP-panelen te beheren, is gerealiseerd. Voor GPU Gen9 met LSPCON-ondersteuning (Level Shifter and Protocol Converter) is HDR-ondersteuning ingeschakeld.
    • In de nouveau-stuurprogramma is basissteun voor de NVIDIA GPU op basis van de GA100-architectuur (Ampere) toegevoegd.
    • In de msm-stuurprogramma is ondersteuning voor de Adreno 508, 509 en 512 GPU's, gebruikt in SDM (Snapdragon) chips 630, 636 en 660, toegevoegd.
    • Ondersteuning voor de geluidskaarten Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s en Pioneer DJM-750 is toegevoegd. Ondersteuning voor het geluidsysteem van Intel Alder Lake PCH-P is geïmplementeerd. De mogelijkheid tot softwarematige simulatie van het aansluiten en loskoppelen van de audio-aansluiting voor het debuggen van gebruikersruimtebehandelaars is gerealiseerd.
    • Ondersteuning voor de Nintendo 64 gameconsoles, die van 1996 tot 2003 zijn uitgebracht, is toegevoegd (vorige pogingen om Linux voor de Nintendo 64 te porten zijn niet voltooid en hebben de status Vaporware). De motivatie voor het creëren van een nieuwe port voor een verouderd platform dat al bijna twintig jaar niet meer wordt geproduceerd, is de wens om de ontwikkeling van emulators te stimuleren en het verplaatsen van games te vergemakkelijken.
    • Een stuurprogramma voor de Sony PlayStation 5 DualSense gamecontroller is toegevoegd.
    • Ondersteuning voor ARM-platforms, apparaten en platforms is toegevoegd: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Ondersteuning voor smartphones zoals Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 is toegevoegd.
    • De bcm-vk-stuurprogramma voor Broadcom VK accelerator boards (bijvoorbeeld PCIe-boards Valkyrie en Viper) is toegevoegd. Deze kunnen worden gebruikt voor het uitvoeren van audio-, video- en afbeeldingsverwerking op een apart apparaat, evenals voor cryptografische taken.
    • Ondersteuning voor het Lenovo IdeaPad-platform met beheer van constante oplading en toetsenbordverlichting is toegevoegd. Ook is ondersteuning voor het ACPI-profiel van het ThinkPad-platform met het beheer van energiemodi gegarandeerd. Een stuurprogramma voor de HID-subsysteem van de Lenovo ThinkPad X1 Tablet Gen 2 is toegevoegd.
    • De ov5647-stuurprogramma met ondersteuning voor de cameramodule voor de Raspberry Pi is toegevoegd.
    • Ondersteuning voor de RISC-V SoC FU740 en HiFive Unleashed-boards is toegevoegd. Ook is er een nieuw stuurprogramma voor de Kendryte K210-chip toegevoegd.

Bron: opennet.ru

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