Udgivelsen af Linux-kernen 6.19. Den næste kerne vil få nummer 7.0

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 6.19. Blandt de mest bemærkelsesværdige ændringer er: Live Update Orchestrator subsystemet, støtte til PCIe Link Encryption, systemopkaldet listns, Zero-Copy Receive tilstanden i io_uring, støtte til ARM-udvidelsen MPAM, klp-build til generation af live-patches, støtte til LoongArch32 arkitektur, QoS til s2idle, optimering af auditsystemet, Intel LASS til beskyttelse mod Spectre, støtte til SHA-3 og BLAKE2b hashes, Confidential VMBus mekanisme, TX-optimeringer i netværkssubsystemet, CAN XL protokollen, API til hardwareacceleration af HDR-udgang.

I annonceringen af den nye version meddelte Linus, at den næste udgivelse af kernen vil få nummer 7.0, da der i 6.x grenen er blevet samlet nok udgivelser til at ændre det første tal i versionsnummeret (tidligere blev version 6.0 dannet efter 5.19). Ændringen af nummereringen sker af æstetiske grunde og er et formelt skridt, der fjerner ubehaget ved det store antal udgivelser i rækken. Linus spøgte med, at han bliver forvirret af de store tal, for hvilke der ikke er nok fingre på hænder og fødder. Derudover er der formelt grund til at ændre versionsnummeret betydeligt, da det er besluttet at flytte understøttelsen af Rust fra eksperimentelle til hovedfunktioner i kernen i den næste udgivelse.

I den nye version er der inkluderet 15.657 rettelser fra 2.237 udviklere, patchstørrelsen er 52 MB (ændringerne berører 13.682 filer, 794.649 linjer kode er tilføjet, 335.498 linjer er slettet). I den foregående udgivelse var der 15.035 rettelser fra 2.217 udviklere, og patchstørrelsen var 45 MB. Cirka 40% af alle ændringerne i 6.19 er relateret til enhedsdrivere, omkring 13% vedrører opdatering af hardware-specifik kode, 12% er relateret til netværksstakken, 5% til filsystemer, og 3% til interne kerneundersystemer.

De vigtigste nyheder i kernen 6.19 (1, 2, 3):

  • DiskSubsystem, input/output og filsystemer
    • I Btrfs blokerer ikke længere filsystemkontrolprocesser (scrub) og udskiftning af enheder overgangen til hviletilstand (før hviletilstand gemmes tilstanden af scrub-kontrollen; efter at systemet vågner op, fortsætter scrub-kontrollen, og enhedsudskiftningsoperationen startes forfra). RAID56-implementeringen har fået tilføjet støtte til blokke, der overstiger størrelsen på hukommelsessider. Der er forberedt støtte til fscrypt. Ydelsen ved håndtering af låsninger ved udførelse af operationer relateret til pladsreservation er forbedret. Støtten til ioctl-operationen "shutdown" er tilføjet, hvilket giver mulighed for at bringe filsystemet i en tilstand, hvor der forsøges at afslutte allerede kørende operationer, men alle nye operationer blokeres.
    • I filsystemet Ext4 er der implementeret støtte til blokke, der overstiger størrelsen på hukommelsessider (>4KB på x86-systemer). Brug af store blokke kan forbedre ydelsen af buffermæssige skriveoperationer med omtrent 50%, men reducerer ydelsen ved direkte input/output på grund af den øgede tid til at beregne kontrolsummer. Den nye version indeholder også optimeringer, der har øget båndbredden ved udførelse af online-defragmentering.
    • I FUSE-underSubsystemet er understøttelsen af buffermæssig læsning ved brug af store hukommelsessider (large folios) blevet forbedret. Gennem iomap er det muligt at spore delvist aktuelle folios for kun at indlæse data, der ikke findes i bufferen.
    • I VFS er der tilføjet støtte til tilbagekaldeligt delegation af kontrol over mapper (recallable directory delegation), hvilket giver mulighed for at implementere mappens kontroloverdragelse fra server klienten til NFS, så NFS-klienten selv kan holde styr på tilstanden af mappen på baggrund af den lokale cache uden at kontakte NFS-serveren. Hvis en anden NFS-klient foretager ændringer relateret til denne mappe, vil kontroldelegationen blive tilbagekaldt fra den første klient.
    • NFS har fået støtte til at læse i direkte input/output-tilstand (direct I/O). Indstillingerne /sys/kernel/debug/nfsd/io_cache_read og /sys/kernel/debug/nfsd/io_cache_write er implementeret for at styre aktiveringen af caching og direkte input/output-operationer. Manipulation med disse indstillinger gør det muligt at reducere overhead på NFS-klientsiden ved udførelse af store input/output-operationer.
    • I NTFS er der implementeret support til ioctl-operationen shutdown, og mulighederne for montering "acl" og "prealloc" er som standard aktiveret. Der er tilføjet support for tid før 1. januar 1970.
    • For blok-enheder og filsystemer er der som standard aktiveret separat caching af objekter "bio" (Block I/O) for hver CPU, som definerer aktive input/output-operationer.
  • Hukommelse og systemtjenester
    • Kernen har fået subsystemet Live Update Orchestrator (LUO), der muliggør fuld genstart og opdatering af kernen uden at stoppe arbejdet og uden at miste systemets tillstand, enheder og processer. LUO subsystemet er baseret på den tidligere tilføjede mekanisme KHO (Kexec HandOver) og muligheden for at starte en ny kerne fra den gamle uden at miste systemets tilstand, løser også opgaver som bevarelse af enhedernes og RAM-status samt sikring af kontinuitet i operationer relateret til DMA og afbrydelseshåndtering. Tilstanden bevares indtil omstillingen til den nye kerne og genoprettes efter aktiveringen af den nye kerne uden at forstyrre kontinuerlige operationer med enheder, udført af systemet og applikationer i brugerrummet.
    • Der er tilføjet systemopkaldet listns() til at vise listen over eksisterende navnerum i systemet uden at skulle gennemgå /proc//ns/ for alle processer.
    • Der er tilføjet support til at placere elementer af forskellig størrelse i sendekøen (SQE, Submission Queue Entry) i io_uring-systemet for asynkron input/output, ligesom det i den tidligere version blev tilladt at blande størrelsen af indholdet i resultatkøen (CQE, Completion Queue Event). Indtil nu skulle alle elementer i køen have samme størrelse, hvilket førte til unødigt højt mindreforbrug på grund af nødvendigheden af at bruge den maksimale størrelse for alle elementer i køen.

      I io_uring har også fået støtte til zcrx (Zero-Copy Receive) mekanismen, der muliggør datamodtagelse uden kopiering mellem kernen og brugerområdet. Støtte til hukommelseslayoutanmodninger for SQ (Submission Queue) og CQ (Completion Queue) er blevet tilføjet, hvilket giver mulighed for at få information om størrelsen på ringbufferen, der er nødvendig ved brugerdefineret hukommelsesallokering ved hjælp af flagene IORING_SETUP_NO_MMAP og IORING_MEM_REGION_TYPE_USER.

    • For hurtig staktracing ved hjælp af værktøjer som perf, er der tilføjet støtte til SFrame-formatet med information om afvikling af stakopkald (unwind). SFrame understøttes allerede i GCC og binutils, det påvirker ikke ydeevnen, og i modsætning til DWARF-formatet indeholder det kun et minimalt sæt oplysninger, der er nødvendige for staktracing.
    • Der er tilføjet støtte til enhedlig beskrivelse af metrikker og begivenheder i JSON-format til perf-værktøjet, samt udsat afvikling (deferred unwinding) af stakopkald i brugerområdet.
    • For AMD-processorer er der implementeret en datakashtilstandsmekanisme, der tillader input/output-enheder at indsætte data direkte i CPU'ens L3-cache uden først at placere dem i RAM.
    • Støtte til MPAM (Memory System Resource Partitioning and Monitoring), en udvidelse af ARMv8-A instruction set-arkitekturen til at markere hver hukommelsesadgang med en sektion ID (PARTID, Partition ID) og en overvågningsgruppe ID (PMG, Monitoring Group ID), er blevet tilføjet. I relation til PARTID kan ressourceforbruget, såsom hukommelsesbåndbredde eller cache-størrelse, begrænses, så en gruppe opgaver ikke optager alle ressourcer. I overvågningskonteksten kan kombinationen af PMG og PARTID bruges til at spore forbruget af hukommelsesressourcer under bestemte belastningstyper.
    • I tilfælde af, at en proces afsluttes uventet efter at have modtaget et signal, kan en anden proces med pidfd for den afsluttede proces nu bestemme signalnummeret, der førte til procesafslutningen.
    • Implementeringen af genstartelige sekvenser (restartable sequences) er blevet redesignet, hvilket gør det muligt for applikationer at organisere pseudo-atomisk, uafbrudt udførelse af en gruppe instruktioner (hvis de bliver afbrudt af en anden tråd, forsøg på at udføre sekvensen igen). Den nye implementering adskiller sig med en højere ydelse.
    • For BPF programs, the BPF_JMP, BPF_X, and BPF_JA instructions have been implemented for indirect jumps to a specific position in the transition table. The concept of dynamic pointers (dynptr) has been added, allowing data to be read from structured files. The ability to attach multiple bytes of metadata to network packets has been added.
    • Modules written in Python, used for processing the core documentation, have been moved to a separate directory tools/lib/python.
    • The function mempool_alloc_bulk() has been added for safely allocating elements from the memory pool for multiple objects at once.
    • The transfer of changes from the Rust-for-Linux branch related to the use of Rust as a secondary language for developing drivers and core modules continues (Rust support is not enabled by default and does not make Rust a mandatory build dependency for the kernel). The new version includes the ‘syn’ library with a Rust code parser, simplifying the writing of complex macros. The capabilities of the kernel, pin-init, and rbtree libraries have been expanded. The ‘num’ library with the Integer trait for manipulating integers has been added. Support for integer parameters has been added to the ‘module!’ macro. The ability to specify parameters when loading kernel modules written in Rust has been implemented. Abstractions for the I2C and PWM (Pulse Width Modulation) subsystems have been implemented.
    • The ‘at_least’ macro has been added (e.g., ‘param[at_least 7]’), indicating the minimum acceptable size of the array passed to the function. If an array with fewer elements is passed to the function, the compiler will issue a warning.
    • The klp-build script has been included for generating kernel modules that make changes to a running kernel (livepatch) based on a patch file. Changes necessary for creating live patches have been made to the objtool utility.
    • In User-mode Linux (running the kernel as a user process), limited support for multiprocessing has been added, but threads within a single process cannot execute simultaneously yet. The porting of User-mode Linux to the nolibc library has begun.
    • Support for the LoongArch32 architecture (LA32R, LA32S) has been added in addition to LoongArch64.
    • Muligheden for at fastsætte QoS-grænser for CPU-vækningens intensitet i s2idle (Suspend-To-Idle) strømbesparelsesmodus er blevet tilføjet, hvilket fryser udførelsen af processer i brugerrum, men holder nogle drivere i kernen aktive.
    • Understøttelse af styring af hukommelsesside-tabeller for IOMMU (Input-Output Memory Management Unit) controllere, der udfører oversættelse af virtuelle adresser, som hardwareenheden ser, til fysiske adresser, er blevet tilføjet, med mulighed for at filtrere DMA-operationer efter virtuelle adresser samt begrænse og isolere I/O-operationer.
    • I systemopkalds-tracing-events er muligheden for at læse buffere fra brugerrum og inkludere deres indhold (for eksempel filnavne) i tracing-resultatet blevet implementeret.
    • Guard pages, adgang til hvilke forårsager undtagelse og nedbrud af processen (SIGSEGV), bliver nu markeret med en særlig mærkning i filen /proc/PID/smaps.
    • Muligheden for at styre store hukommelsessider (transparent huge page) i den private hukommelse af zonede enheder er blevet tilføjet.
    • I zram-enheden, som anvendes til komprimeret opbevaring af swap-sektionen i hukommelsen, er understøttelse af udkast af flere 'bio' (Block I/O) strukturer i batch-tilstand (writeback batching) implementeret.
    • Schriftarten 'Terminus 10×18' er inkluderet, hvilket forbedrer læsbarheden af information fra konsollen på laptops med mellemopløsning (1440×900).
    • Audit-subsystemet er blevet væsentligt optimeret - der ses en halvering af omkostningerne.
  • Virtualisering og sikkerhed
    • Understøttelse af den funktion, som Intel-processorerne tilbyder for at adskille det lineære adressrum (LASS, linear address-space separation), er blevet tilføjet. Dette muliggør hardwareadskillelse af adresseområderne for brugerrum og kerne for at forbedre sikkerheden. Adressrummet opdeles efter det højeste bit i adressen - den øverste halvdel af adressrummet med det højeste bit sat bruges til kernen, mens den lavere er til brugerrummet. I de tidlige faser af instruering (før spekulativ udførelse) kontrolleres det, om der er tilladelse til at få adgang fra brugerrummet til adresser med det højeste bit sat og omvendt. Denne adskillelse gør det muligt at blokere for hukommelseslækager fra kernen til brugerrummet via siden kanaler, selv under spekulativ udførelse af instruktioner, hvilket gør det muligt at anvende LASS til beskyttelse mod angreb af typen Meltdown og Spectre uden betydelige omkostninger.
    • Muligheden for at aktivere sikkerhedsextensioner til PCI Express-bussen - PCIe Link Encryption og PCIe Device Authentication - er blevet tilføjet. Disse ekstensioner gør det muligt at bekræfte autenticitet og kryptere kommunikationskanalen mellem PCIe-enheden og den virtuelle maskine, beskyttet med Intel TDX (Trusted Domain Extensions) og AMD SEV-SNP (Secure Nested Paging). De implementerede teknologier forhindrer, at data i DMA-trafikken kan opfanges, analyseres og ændres, hvis der er adgang til værtsystemet eller andre enheder.
    • Understøttelse af algoritmerne SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), SHAKE128, SHAKE256 og BLAKE2b er blevet tilføjet til den indbyggede kryptografibibliotek.
    • For LSM-modulerne (Linux Security Modules) og især for SELinux er der implementeret mulighed for at spore oprettelsen af memfd-deskriptorer for at anvende sikkerhedspolitikker på de relaterede objekter.
    • I LSM-modulet IPE (Integrity Policy Enforcement), som definerer den samlede politik for at sikre integriteten i hele systemet, er der tilføjet støtte til AT_EXECVE_CHECK-flaget i execveat()-funktionen, der inkluderer en kontrol af integriteten af scriptet før det udføres af fortolkerens.
    • Primitive funktioner som scoped_user_read_access(), scoped_user_write_access og scoped_user_rw_access() er blevet tilføjet for begrænset adgang til data i brugerrummet med beskyttelse mod spekulative angreb.
    • Tilføjet støtte til Confidential VMBus-mekanismen, der anvendes i HyperV-hypervisoren for sikker interaktion mellem gæstesystemet, der kører i hemmelighedsmodus (med hukommelseskryptering og registerisolering baseret på AMD SNP og Intel TDX-teknologier), og paravisoren ansvarlig for adgang til enheder, som behandler fortrolige data.
    • Tilføjet mulighed for at overføre information om en uventet afsluttet proces (til generering af coredump) via pidfd-mekanismen. PIDFD-identifikatoren knyttes til en bestemt proces og ændres ikke, mens PID kan være knyttet til en anden proces efter afslutningen af den aktuelle proces, der er tilknyttet denne PID. Brug af pidfd gør det muligt at blokere angreb, hvor en uventet afsluttet suid-proces byttes ud med en anden proces, hvilket skaber en tilstand af kapløb i perioden efter, at kernebehandlingen af den uventede afslutning er startet, men før brugerrummets håndterer kontrollerer procesparametrene.
  • Netværkssubsystem
    • Der er implementeret optimeringer i netværksunderstøttelsen for at forbedre dataoverførselseffektiviteten (TX). Fjernelse af spin-lock fra __dev_queue_xmit() og brug af en ubeskyttet llist-struktur har muliggjort en fire gange øget ydeevne under høj belastning og fordoblet intensiteten af pakkesending under lavere belastning på CPU'en.
    • Mulighed for at deaktivere systemgrænser for hukommelsesforbrug for bestemte netværkssokler er blevet tilføjet (i dette tilfælde vil de generelle hukommelsesgrænser, der er angivet for specifikke containere, blive brugt). For styring af afbrydelsen af grænserne er sysctl net.core.bypass_prot_mem og flaget SK_BPF_BYPASS_PROT_MEM blevet foreslået i funktionen bpf_setsockopt.
    • Support til RFC 5837-udvidelsen er blevet tilføjet, hvilket tilføjer oplysninger om indgående netværksgrænseflader til ICMP-meddelelserne "Time Exceeded", der returneres ved udløb af pakkelevetid (TTL), for at give mere detaljeret information ved sporing af ruter med traceroute-værktøjet.
    • Støtte til kontinuerlig aktiv polling (busy polling) i en separat kerneltråd med det formål at trække deskriptorer fra RX/TX-køer for applikationer, der kræver minimale forsinkelser, er blevet tilføjet.
    • Support for the CAN XL (Controller Area Network eXtended Length) protocol has been added, increasing the data field size to 2048 bytes to enable integration with TCP/IP networks, implemented the ability to tunnel Ethernet frames, and added support for pulse-width modulation, allowing data transmission at speeds of 20 Mbps and above.
    • Support for the sockaddr_unsized structure has been added, a variant of the sockaddr structure that uses an array with flexible elements instead of a fixed-size array (sa_data[] instead of sa_data[14], which was essentially used for references to larger structures).
    • The functionality of getsockname and getpeername can now be used through the io_uring subsystem.
    • The sysctl net.ipv4.tcp_rcvbuf_low_rtt and net.ipv4.tcp_comp_sack_rtt_percent parameters have been added for TCP optimization.
    • Support for links with a bandwidth of 1600 Gbps (1.6T) has been added.
  • Udstyr
    • An API for utilizing color transformation hardware capabilities has been added to the DRM (Direct Rendering Manager) subsystem, allowing such transformations to be carried out without performing them through shaders or executing code on the CPU. For output on HDR monitors, complex color transformations can now be handled by the display controller at the stages before and after layer blending, instead of by software compositing content into the final display buffer. In addition to reducing overhead and energy consumption when outputting to HDR, the proposed functionality can be used for accurate color reproduction in video or image editing applications.
    • The 'ethosu' driver for the Arm Ethos U65 and U85 NPUs, designed for hardware acceleration of AI model execution, has been added.
    • Support for hardware image sharpening has been added in the i915 driver for the Lunar Lake GPU and newer.
    • Work on the Xe DRM driver (Direct Rendering Manager) for GPUs based on the Intel Xe architecture, which is used in Intel Arc graphics cards and integrated graphics starting with Tiger Lake processors, has continued. Initial support for the Xe3P architecture used in the Crescent Island GPUs and the Nova Lake integrated graphics processor family has been added.
    • AMDGPU-driveren har implementeret fuld support til AMD-grafikkort i GCN 1.0 "Southern Island" og 1.1 "Sea Islands", som tidligere blev understøttet af Radeon-driveren. AMDGPU-driveren er blevet opdateret til at have samme funktionalitet som Radeon-driveren og er aktiveret som standard for de nævnte GPU'er. GCN 1.x kort blev produceret fra 2012 til 2019 og inkluderer modeller som Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 og andre Radeon Rx 200/Rx 300 grafikkort. Udover at øge ydelsen med i gennemsnit 24%, gjorde overgangen til AMDGPU det muligt at implementere support til Vulkan 1.3 grafisk API for disse GPU'er. Derudover er der tilføjet support for analoge forbindelser og Video Coding Engine 1.0 i AMDGPU, samt brugt Display Core-stakken (DC) som standard for GPU'er baseret på Bonaire mikroarkitektur (Radeon HD 7700).
    • Nouveau-driveren har implementeret support for NVJPG hardware accelerator, som findes i Tegra210 SoC.
    • I Panthor-driveren er der tilføjet support for GPU Mali-G1 og grundlæggende support for MediaTek MT8196 chip.
    • Der er tilføjet support for lydsystemer af Intel Nova Lake S-chips, HP bærbare computere med HDA CS35L41, samt lydinterfaces CIX IPBLOQ HD og Onkyo SE-300PCIE.
    • Integrationen af komponenter i Nova-driveren til NVIDIA GPU'er, udstyret med GSP-firmware, som anvendes fra NVIDIA GeForce RTX 2000 serien baseret på Turing mikroarkitektur, er fortsat. Driveren er skrevet i Rust. I den nye version begyndte arbejdet med RPC og implementeringen af GSP (GPU System Processor) co-processor boot er blevet afsluttet.
    • Der er tilføjet support for ARM-platforme, SoC og enheder: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluationskit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 varianter af Enclustra Mercury platforme.
    • Der er tilføjet support for smartphones og tablets baseret på Mediatek MT6582 SoC (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) og Qualcomm MSM8939 (ASUS ZenFone 2). Der er tilføjet support for bærbare computere baseret på Qualcomm sdm850 SoC, såsom Huawei MateBook E 2019.
    • Der er tilføjet support for SoC og boards baseret på RISC-V arkitekturen: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Samtidig har den latinamerikanske Free Software Foundation udarbejdet en fuldkommen fri kerne version 6.19 — Linux-libre 6.19-gnu, renset for firmware- og driverkomponenter, der indeholder ikke-frie elementer eller kodeområder, hvis anvendelse er begrænset af producenten. I version 6.19 er koden til indlæsning af binære firmware blevet fjernet fra SDCA lydsystemet. Koden til rensning af blobs i Intel XE, Nova-Core, Qualcomm Iris, Venus og Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 og TI tas2783 lydkodeker er blevet opdateret. Rensningen af blob-navne i dts-filer (devicetree) til ARM-chips er blevet udført. Rensningen af STM C8SECTPFE DVB driveren er ophørt, da den er blevet fjernet fra kernen.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster