Linux 6.19

Linux 6.19

Efter to måneders udvikling præsenterede Linus Torvalds den kerneudgivelse Linux 6.19. Bland de mest iøjnefaldende ændringer er: Live Update Orchestrator subsysteem, support for PCIe Link Encryption, systemopkaldet listns, Zero-Copy Receive tilstand i io_uring, support for ARM-udvidelsen MPAM, klp-build til generering af live-patches, support for LoongArch32-arkitekturen, QoS for s2idle, optimering af audit subsystmet, Intel LASS til beskyttelse mod Spectre, support for hashes SHA-3 og BLAKE2b, Confidential VMBus mekanisme, TX-optimeringer i netværkssubsystemet, CAN XL protokol, API til hardwareacceleration af HDR-udgang.

I annoncen om den nye version meddelte Linus, at den næste udgave af kernen vil få nummer 7.0, da der i 6.x-grenen er ophobes tilstrækkeligt med udgivelser til at ændre det første ciffer i versionsnummeret (6.0 blev udviklet umiddelbart efter 5.19). Ændringen af nummereringen sker af æstetiske grunde og er et formelt skridt, som fjerner ubehaget ved en stor ophobning af udgivelser i rækken. Linus bemærkede spøgende, at han bliver forvirret af de store tal, da han ikke har nok fingre til både hænder og fødder. Samtidig er der formelt grund til at ændre versionsnummeret betydeligt, da vi fra den næste udgave vil overføre support for Rust er det besluttet fra eksperimentelle funktioner til de primære funktioner i kernen.

Den nye version indeholder 15657 rettelser fra 2237 udviklere, patchstørrelsen er 52 MB (ændringerne påvirkede 13682 filer, 794649 linjer kode blev tilføjet, 335498 linjer blev slettet). I den tidligere udgave var der 15035 rettelser fra 2217 udviklere, patchstørrelsen var 45 MB. Cirka 40% af alle ændringerne præsenteret i 6.19 vedrører enhedsdrivere, omtrent 13% af ændringerne er relateret til opdatering af hardware-specifik kode, 12% vedrører netværksstakken, 5% vedrører filsystemer, og 3% vedrører interne subsystemer i kernen.

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

  • DiskSubsystem, input/output og filsystemer
    • I Btrfs fs-kontrolprocesser (scrub) og enhedserstatninger blokerer ikke længere systemovergang til dvaletilstand (før dvaletilstand gemmes scrub-kontrolens tilstand; efter at systemet vågner fortsætter scrub-kontrollen, og enhedserstatningsoperationen genstartes). RAID56 implementeringen tilføjede support for blokke, hvis størrelse overstiger størrelsen af en hukommelsesside. Der er forberedt support for fscrypt . Ydelsen ved blokering under udførelse af operationer relateret til pladsreservation er forbedret.Forbedret ydeevne ved håndtering af låsninger under udførelse af operationer relateret til reservation af plads. Tilføjet understøttelse af ioctl-operationen shutdown, der muliggør at sætte FS i en tilstand, hvor der gøres forsøg på at afslutte allerede kørende operationer, men hvor alle nye operationer blokeres.
    • I filsystemet Ext4 er understøttelse af blokke, hvis størrelse overstiger størrelsen på en hukommelsesside (>4KB på x86-systemer). Brugen af store blokke det muligt øger ydeevnen af buffer-baserede skriveoperationer med i gennemsnit 50%, men reducerer ydeevnen af direkte input/output på grund af den øgede tid til beregning af kontrolsummer. I den nye version også er tilføjet optimeringer, der har forbedret båndbredden ved udførelse af online-defragmentering.
    • I subsystemet FUSE er den understøttelse af buffered læsning forbedret ved brug af store store sider af hukommelse (large folios). Gennem iomap er der implementeret mulighed for at spore delvist aktuelle folios for kun at indlæse data, som mangler i bufferen.
    • I VFS er der tilføjet støtte for tilbagekaldeligt delegationssystem for directory control (recallable directory delegation), hvilket gør det muligt i NFS overførslen af directory control fra serveren til klienten, så NFS-klienten selv kan spore tilstanden af directory uden at henvende sig til NFS-serveren baseret på lokal cache. Hvis en anden NFS-klient foretager ændringer relateret til denne directory, vil delegationen af kontrol blive tilbagekaldt fra den første klient.
    • For NFS tilføjet er der støtte for læsning i direkte input/output-tilstand (direct I/O). Implementeret indstillinger /sys/kernel/debug/nfsd/io_cache_read og /sys/kernel/debug/nfsd/io_cache_write til kontrol af aktivering af caching og direkte input/output-operationer, manipulation af disse indstillinger kan reducere overheaden på siden af NFS-klienten under store input/output-operationer.
    • I NTFS er der implementeret understøttelse af ioctl-operationen shutdown, inkluderet standardmonteringsindstillingerne acl og prealloc, der er tilføjet støtte for tid før 1. januar 1970.
    • For blok-enheder og FS inkluderet standardmæssigt separat caching af objekter for hver CPU «bio» (Block I/O), der definerer aktive input/output-operationer.
  • Hukommelse og systemtjenester
    • I kernen er subsystemet Live Update Orchestrator (LUO), der muliggør fuld genstart og opdatering af kernen uden at stoppe driften og uden at miste systemets, enhedernes og processernes tilstand. Subsystemet LUO er baseret på den tidligere tilføjede mekanisme i kernen. KHO (Kexec HandOver) og udover muligheden for at starte en ny kerne fra en gammel uden at miste systemtilstand løser det opgaver som at bevare tilstanden af enheder og RAM, samt sikre kontinuitet i operationer relateret til DMA og håndtering af afbrydelser. Tilstanden bevares indtil skiftet til den nye kerne og genoprettes efter aktiveringen af den nye kerne uden at forstyrre de kontinuerlige operationer med enheder, der udføres af systemet og applikationerne i brugerrummet.

    • Tilføjet systemopkaldet listns() til at vise listen over eksisterende navnerum i systemet uden at skulle gennemgå /proc//ns/ for alle processer.

    • Systemet for asynkron I/O io_uring har fået tilføjet støtte til placering af elementer af forskellig størrelse i sendekøen (SQE, Submission Queue Entry), på samme måde som det tidligere blev tilladt at blande størrelsen af indholdet af resultatkøen (CQE, Completion Queue Event). Indtil da skulle alle elementer i køen have samme størrelse, hvilket medførte unødvendigt forbrug af hukommelse på grund af behovet for at bruge den maksimale størrelse for alle elementer i køen.

      I io_uring er der også tilføjet støtte til zcrx (Zero-Copy Receive) mekanisme for at modtage data uden kopiering mellem kernen og brugerrummet. Støtte til hukommelseslayout-forespørgsler for køer SQ (Submission Queue) og CQ (Completion Queue) er tilføjet, hvilket gør det muligt at få information om størrelsen på ringbufferen, som er nødvendig ved brugerdefineret hukommelsesallokering ved hjælp af flagene IORING_SETUP_NO_MMAP og IORING_MEM_REGION_TYPE_USER.

    • For hurtig staksporings ved hjælp af værktøjer som perf er der tilføjet støtte til SFrame-formatet med informations- om stakoprulning (unwind). SFrame er allerede understøttet i GCC og binutils, medfører ikke et fald i ydeevnen, og indeholder kun det minimale sæt informationer, der er nødvendige for staksporing i modsætning til DWARF-formatet.

    • I værktøjet perf tilføjet støtte til enhedlige beskrivelser af metrics og begivenheder i JSON-format samt forsinket stakoprulning (deferred unwinding) i brugerrummet.

    • For AMD-processorer der er implementeret en datacache-substitutionsmekanisme, der tillader input/output-enheder direkte at indsætte data i CPU's L3-cache uden forudgående placering i RAM.

    • Tilføjet support for MPAM (Memory System Resource Partitioning and Monitoring), udvidelser af ARMv8-A instruktionssættets arkitektur for at markere hver hukommelsesadgang med en partitionsidentifikator (PARTID) og en overvågningsgruppeidentifikator (PMG). I forbindelse med PARTID kan ressourceforbruget, såsom hukommelsesbåndbredde eller cache-størrelse, begrænses, så en gruppe opgaver ikke optager alle ressourcerne. I overvågningssammenhæng kan kombinationen af PMG og PARTID bruges til at spore hukommelsesressourceforbruget under bestemte belastningstyper.

    • Ved en nødafslutning af processen efter at have modtaget et signal, kan en anden proces, der har pidfd for den afsluttede proces, nu bestemme signalnummeret, der førte til procesafslutningen.

    • Implementeringen af genstartbare sekvenser (restartable sequences), der giver applikationer mulighed for at organisere pseudo-atomisk, uafbrudt udførelse af en gruppe instruktioner (i tilfælde af afbrydelse fra en anden tråd forsøges det at genstarte sekvensen). Den nye implementering tilbyder højere ydeevne.

    • For BPF-programmer er implementeret BPF_JMP, BPF_X og BPF_JA instruktioner for at udføre indirekte spring til en bestemt position fra springtabellen. Begrebet dynamiske pegepinde (dynptr) er blevet tilføjet for at muliggøre læsning af data fra strukturerede filer. Tilføjet muligheden for at vedhæfte flere byte med metadata til netværkspakker.

    • Python-moduler, der bruges til at behandle dokumentation til kernen, er flyttet til en separat mappe tools/lib/python.

    • Tilføjet en funktion mempool_alloc_bulk() til sikker allokering af elementer fra hukommelsespuljer på én gang for flere objekter.

    • Fortsat overførelse af ændringer fra grenen Rust-for-Linux, relateret til brugen af Rust-sproget som et andet sprog til udvikling af drivere og modul i kernen (Rust-understøttelse er ikke aktiveret som standard og fører ikke til, at Rust bliver en nødvendig byggeafhængighed for kernen). I den nye version er der inkluderet integrated biblioteket “syn” med en parser til Rust-kode, der forenkler skrivningen af komplekse makroer. Funktionaliteten af bibliotekerne kernel, pin-init og rbtree er blevet udvidet. Et num-bibliotek er blevet tilføjet med Integer trait til manipulation af heltal. Makroen module! har fået støtte til heltalsparametre. Muligheden for at angive parametre ved indlæsning af modul til kernen, der er skrevet i Rust, er blevet implementeret. Abstraktioner til I2C PWM og systemer er blevet implementeret. (Pulse Width Modulation).

    • Tilføjet makro at_least (for eksempel, param[at_least 7]), der informerer om den mindste tilladte størrelse af den array, der sendes til funktionen. Hvis en array med færre elementer sendes til funktionen, så vil compileren give en advarsel.

    • Tilføjet til aktiveret script klp-build til generering af kernemoduler, der Foretager ændringer i den kørende kerne (livepatch), baseret på en patch-fil. Der er ændringer i objtool for at muliggøre oprettelsen af live-patches.

    • I User-mode Linux (kørsel af kernen som en brugerproces) begrænset understøttelse af multiprocessor er tilføjet, men tråde inden for en proces kan endnu ikke køre samtidig. Startede portering af User-mode Linux til biblioteket nolibc.

    • Tilføjet understøttelse af arkitekturen LoongArch32 (LA32R, LA32S) ud over LoongArch64.

    • Tilføjet mulighed for at sætte QoS-grænser for intensiteten af processorvækning i strømbesparende tilstand s2idle (Suspend-To-Idle), der fryser udførelsen af processer i brugerrummet, men lader nogle behandlere i kernen være aktive.

    • Tilføjet understøttelse af styring af hukommelsesside-tabeller for controllere IOMMU (Input-Output Memory Management Unit), som udfører oversættelse af virtuelle adresser, der ses af hardwareenheden, til fysiske adresser, med mulighed for at filtrere DMA-operationer efter virtuelle adresser, samt begrænse og isolere input-output-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.

    • **Vagtsider i hukommelsen(( (guard page), adgang til hvilken forårsager undtagelse og nedbrud af processen (SIGSEGV) bliver nu mærket med et særligt mærke i filen /proc/PID/smaps.

    • Tilføjet mulighed for at styre store hukommelsessider (transparent huge page) i den private hukommelse af zonede enheder.

    • I enheden zram, der anvendes til komprimeret opbevaring af swap-partitionen i hukommelsen, er implementeret understøttelse af udskiftning af flere 'bio' strukturer (Block I/O) i batch-tilstand (writeback batching).

    • Pakken inkluderer skrifttypen «Terminus 10×18», der forbedrer læsbarheden af information fra konsollen på notebooks med mellemopløsning (1440×900).

    • Betydeligt optimiseret arbejde audit subsystemer — der observeres en halvering af omkostningerne.

  • Virtualisering og sikkerhed
    • Understøttelse af Intel-processorerens funktionalitet til deling adresserum (LASS, linear address-space separation), der gør det muligt at adskille adresserum mellem brugerrum og kerne for at forbedre sikkerheden. Adresserummet opdeles efter den mest betydningsfulde bit i adressen – den øverste halvdel bruges til kernen, mens den nederste til brugerrum. I de indledende faser af instruktionens udførelse (før spekulativ udførelse) foretages der en validering af, om brugerrum kan tilgå adresser med den mest betydningsfulde bit sat, og omvendt. Denne opdeling forhindrer hukommelseslækager fra kernen til brugerrum via sidekanaler, selv ved spekulativ udførelse af instruktioner, hvilket muliggør anvendelsen af LASS til beskyttelse mod Meltdown- og Spectre-angreb uden betydelige omkostninger.
    • Muligheden for at aktivere udvidelser forstærkning af sikkerheden for PCI Express-bussen – PCIe Link Encryption og PCIe Device Authentication, der gør det muligt at bekræfte ægtheden og kryptere kommunikationskanalen mellem PCIe-enheden og den virtuelle maskine, der er beskyttet ved hjælp af Intel TDX (Trusted Domain Extensions) og AMD SEV-SNP (Secure Nested Paging) mekanismer. De implementerede teknologier forhindrer aflytning, analyse og indsættelse af data i DMA-trafik, når der er adgang til værtsystemet eller andre enheder.
    • I den indbyggede kryptografiske biblioteks tilføjet understøttelse af SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), SHAKE128, SHAKE256 og BLAKE2b.
    • For LSM-moduler (Linux Security Modules) og især for SELinux, er implementeret muligheden for at spore oprettelsen af memfd-deskriptorer for at anvende sikkerhedspolitikker på de relaterede objekter.
    • I LSM-modulet IPE (Integrity Policy Enforcement), der definerer den overordnede politik for integritetsbeskyttelse for hele systemet, er der tilføjet understøttelse af flaget AT_EXECVE_CHECK i funktionen execveat(), som involverer validering af scriptets integritet før det udføres af fortolkeren.
    • Der er tilføjet primitive scoped_user_read_access(), scoped_user_write_access og scoped_user_rw_access() for begrænset adgang til data i brugerrum med beskyttelse mod spekulative angreb.
    • Tilføjet understøttelse af mekanismen Confidential VMBus, der bruges i hypervisoren HyperV til beskyttet interaktion mellem gæstesystemet, der kører i privat tilstand (med hukommelseskryptering og registrerisolering baseret på AMD SNP og Intel TDX-teknologier), og paravisoren, der håndterer enheder, der behandler private data.
    • Tilføjet muligheden for at overføre oplysninger om en pludselig afsluttet proces (til generering af coredump) via mekanismen pidfd. PIDFD-identifikatoren er knyttet til en bestemt proces og ændres ikke, mens PID kan være knyttet til en anden proces efter afslutningen af den nuværende proces, der er associeret med denne PID. Brug af pidfd forhindrer ændringen angreb ved at erstatte den pludseligt afsluttede suid-proces med en anden proces, hvilket skaber en racecondition lige efter kernelens behandling af nedbruddet, men inden behandleren i brugerrummet undersøger procesparametrene.
  • Netværkssubsystem
    • I netværkssystemet er indført optimeringer til forbedring af datatransmissionseffektivitet (TX). At fjerne funktionen __dev_queue_xmit() fra spin-låsning og bruge en låsefri struktur llist har gjort det muligt at øge ydeevnen med 4 gange under høj belastning og fordoble pakkeafsendelsen ved lavere CPU-belastning med en faktor 2.
    • Givet mulighed deaktivering af systemgrænser for hukommelsesbrug for individuelle netværkssokler (i dette tilfælde vil de fælles hukommelsesgrænser, der er angivet for individuelle containere, blive brugt). For at styre deaktiveringen af grænserne er sysctl net.core.bypass_prot_mem og flaget SK_BPF_BYPASS_PROT_MEM i funktionen bpf_setsockopt blevet foreslået.
    • Tilføjet understøttelse af udvidelse RFC 5837, som tilføjer oplysninger om indgående netværksgrænseflader til ICMP-meddelinger Time Exceeded, der returneres, når pakkets livsvarighed (TTL) udløber, for at give mere detaljeret information ved sporing af ruter med værktøjet traceroute.
    • Tilføjet understøttelse af kontinuerlig aktiv polling (busy polling) i en separat kerneltråd for at hente beskrivelser fra RX/TX-køerne til applikationer, der kræver minimale forsinkelser.
    • Der er tilføjet support for protokollen CAN XL (Controller Area Network eXtended Length), hvor størrelsen af datakentet er øget til 2048 byte for at muliggøre integration med TCP/IP-netværk, er implementeret mulighed for tunneling af Ethernet-rammer og tilføjet support for bredde-pulsm modulering, der muliggør dataoverførsel ved hastigheder på 20 Mbit/s og højere.
    • Tilføjet understøttelse af strukturen sockaddr_unsized, en variant af sockaddr-strukturen, der bruger et array med fleksible elementer i stedet for et array af fast størrelse (sa_data[] i stedet for sa_data[14], som i praksis blev brugt til at referere til andre strukturer af større størrelse).
    • Tilføjet mulighed for at anvende funktionerne getsockname og getpeername via io_uring-subsystemet.
    • Tilføjet sysctl net.ipv4.tcp_rcvbuf_low_rtt og net.ipv4.tcp_comp_sack_rtt_percent til optimering af TCP.
    • Tilføjet understøttelse af forbindelser med en båndbredde på 1600 Gbps (1.6T).
  • Udstyr
    • I DRM (Direct Rendering Manager) subsystemet er der tilføjet API til anvendelse af hardwarefunktionaliteter til farvekonvertering, hvilket gør det muligt at undgå at udføre sådanne konverteringer gennem shaders eller ved at udføre kode på CPU'en. For output af indhold til en HDR-skærm kan komplekse farvekonverteringer nu udføres af displaycontrolleren i stadiet før og efter lagblanding (blending), i stedet for at udføre softwarekomposittering af indholdet i den endelige visningsbuffer. Udover at reducere omkostningerne og energiforbruget ved organisering af output i HDR, kan den foreslåede funktionalitet også anvendes til korrekt farvegengivelse i video- eller billedredigeringsprogrammer.
    • Tilføjet ethosu-driver til Arm Ethos U65 og U85 NPU'er designet til hardwareacceleration af udførelse af AI-modeller.
    • Support for hardware image sharpening has been added in the i915 driver for the Lunar Lake GPU and newer.
    • Fortsat arbejdet på drm-driveren (Direct Rendering Manager) Xe til GPU'er baseret på Intel Xe-arkitekturen, som anvendes i Intel Arc grafikkort og integreret grafik, startende med Tiger Lake-processorer. Der er tilføjet indledende understøttelse af Xe3P-arkitekturen, som anvendes i GPU Crescent Island og Nova Lake-familien af processorer med integreret grafik.
    • I AMDGPU-driveren er der implementeret fuld understøttelse af AMD grafikkort i GCN 1.0 'Southern Island' og 1.1 'Sea Islands' familierne, som tidligere blev betjent af Radeon-driveren. AMDGPU-driveren er blevet opdateret til at matche funktionaliteten i Radeon-driveren og er aktiveret som standard for de nævnte GPU'er. GCN 1.x grafikkort blev produceret mellem 2012 og 2019 og dækker 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 grafikkort fra Radeon Rx 200/Rx 300 familierne. Udover forøgelsen ydelse i gennemsnitlig stigning på 24%, overgangen til AMDGPU har gjort det muligt at implementere understøttelse af grafik-API'et Vulkan 1.3 for disse GPU'er. Desuden er der tilføjet understøttelse af analoge stik og Video Coding Engine 1.0 til AMDGPU, samt anvendt som standard en DC (Display Core) stak for GPU'er baseret på mikroarkitekturen Bonaire (Radeon HD 7790).
    • I Nouveau-driveren er implementeret understøttelse af NVJPG hardwareacceleratoren, der findes i SoC Tegra210.
    • I Panthor-driveren tilføjet understøttelse af GPU Mali-G1 og indledende understøttelse af chippen MediaTek MT8196.
    • Tilføjet understøttelse af lydsystemet for Intel Nova Lake S-chips, HP-laptops med HDA CS35L41, samt lydgrænsefladerne CIX IPBLOQ HD og Onkyo SE-300PCIE.
    • Integrationen af komponenter i Nova-driveren for NVIDIA GPU'er, der er udstyret med GSP-firmware, er fortsat. Disse anvendes fra NVIDIA GeForce RTX 2000 serien baseret på Turing mikroarkitekturen. Driveren er skrevet i Rust. I den nye version er arbejdet med RPC startet og afsluttet implementeringen af GSP (GPU System Processor) opstart.
    • Tilføjet understøttelse af 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-boards.
    • 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.
    • tilføjet understøttelse af SoC og boards baseret på RISC-V arkitektur: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Samtidig oprettede den Latinamerikanske Free Software Foundation skabte variant fuldstændigt frit kernel 6.19 — Linux-libre 6.19-gnu, renset for elementer fra firmware og drivere, der indeholder ikke-frie komponenter eller kode, 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 oprydning 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 lydcodec'er er blevet opdateret. Der er udført oprydning af blob-navne i dts-filer (devicetree) for ARM-chips. Rydning af driveren STM C8SECTPFE DVB, der er blevet fjernet fra kernen, er blevet stoppet.

Kilde: linux.org.ru

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