Linux 6.19

Linux 6.19

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds Är kÀrnlansering Linux 6.19. Bland de mest pÄtagliga förÀndringarna: Live Update Orchestrator-systemet, stöd för PCIe Link Encryption, systemanropet listns, Zero-Copy Receive-lÀget i io_uring, stöd för ARM-förlÀngningen MPAM, klp-build för att generera live-patchar, stöd för LoongArch32-arkitekturen, QoS för s2idle, optimering av revisionssystemet, Intel LASS för att skydda mot Spectre, stöd för hash-algoritmerna SHA-3 och BLAKE2b, Confidential VMBus-mekanismen, TX-optimeringar i nÀtverksunderlaget, CAN XL-protokollet, API för hÄrdvaruaccelerering av HDR-utmatning.

I meddelandet om den nya versionen sa Linus att nÀsta kÀrnversion kommer att fÄ nummer 7.0, eftersom tillrÀckligt med utgÄvor har samlats i 6.x-grenen för att förÀndra det första numret i versionsnumret (vid den tiden bildades version 6.0 strax efter 5.19). Numreringen Àndras av estetiska skÀl och Àr ett formellt steg som avlÀgsnar obehaget av att ha ett stort antal utgÄvor i serien. Linus skÀmtade om att han blir förvirrad av stora nummer, dÀr han inte har tillrÀckligt med fingrar pÄ hÀnder och fötter. Samtidigt finns det formellt skÀl för att göra en betydande Àndring av versionsnumret, eftersom det börjar med nÀsta utgÄva stödet för Rust beslutats att flytta frÄn experimentella till de grundlÀggande funktionerna i kÀrnan.

I den nya versionen har 15657 korrigeringar frÄn 2237 utvecklare antagits, patchstorleken Àr 52 MB (förÀndringarna berörde 13682 filer, 794649 rader kod tillkom, 335498 rader togs bort). I förra utgÄvan var det 15035 korrigeringar frÄn 2217 utvecklare, patchstorleken var 45 MB. UngefÀr 40 % av alla förÀndringar i 6.19 Àr relaterade till enhetsdrivrutiner, cirka 13 % av förÀndringarna har att göra med uppdatering av arkitekturspecifik kod, 12 % relaterar till nÀtverksstacken, 5 % till filsystem och 3 % till interna kÀrnsystem.

De viktigaste nyheterna i kÀrnan 6.19 (1, 2, 3):

  • Disksubsystem, in- och utmatning och filsystem
  • Minne och systemtjĂ€nster
    • I kĂ€rnan Ă€r inkluderad undersystemet Live Update Orchestrator (LUO), som gör det möjligt att fullstĂ€ndigt omstarta och uppdatera kĂ€rnan utan att stoppa driften och utan att förlora systemets, enheternas och processernas tillstĂ„nd. LUO-systemet bygger pĂ„ en mekanism som tidigare lagts till kĂ€rnan. KHO (Kexec HandOver) och utöver möjligheten att starta en ny kĂ€rna frĂ„n en gammal utan att förlora systemets tillstĂ„nd, löser det sĂ„dana uppgifter som att spara tillstĂ„ndet för enheter och RAM, samt sĂ€kerstĂ€lla kontinuitet i operationer relaterade till DMA och avbrottshantering. TillstĂ„ndet sparas fram till bytet till den nya kĂ€rnan och Ă„terstĂ€lls efter att den nya kĂ€rnan aktiverats utan att avbryta de kontinuerliga operationerna med enheterna som systemet och applikationerna i anvĂ€ndarrummet utför.

    • Tillagd systemanropet listns() för att visa en lista över befintliga namnrymder i systemet utan att behöva iterera över /proc//ns/ för alla processer.

    • Det asynkrona in-/utdata systemet io_uring har fĂ„tt stöd för att placera element av olika storlek i sĂ€ndningskön (SQE, Submission Queue Entry), likt hur det i den föregĂ„ende versionen blev möjligt att blanda storleken pĂ„ elementen i resultatkön (CQE, Completion Queue Event). Tidigare var alla element i kön tvungna att ha samma storlek, vilket ledde till onödig minnesanvĂ€ndning pĂ„ grund av behovet av att anvĂ€nda den maximala storleken för alla element i kön.

      I io_uring har ocksÄ stöd lagts till för mekanismen zcrx (Zero-Copy Receive) för att ta emot data utan kopiering mellan kÀrnan och anvÀndarutrymmet. Stöd för förfrÄgningar om minneslayout för köerna SQ (Submission Queue) och CQ (Completion Queue) har lagts till, vilket gör det möjligt att fÄ information om storleken pÄ cirkulÀrt buffertutrymme, vilket Àr nödvÀndigt vid anvÀndartilldelning av minne med hjÀlp av flaggorna IORING_SETUP_NO_MMAP och IORING_MEM_REGION_TYPE_USER.

    • För snabb spĂ„rning av stacken med hjĂ€lp av verktyg som perf har stöd för SFrame-formatet lagts till, vilket innehĂ„ller information om avveckling av funktionsanrop (unwind). SFrame stöds redan i GCC och binutils, pĂ„verkar inte prestandan och, till skillnad frĂ„n DWARF-formatet, innehĂ„ller endast en minimal uppsĂ€ttning information som behövs för att spĂ„ra stacken.

    • I verktyget perf har lagts till stöd för en enhetlig beskrivning av metrik och hĂ€ndelser i JSON-format, samt fördröjd avveckling (deferred unwinding) av stacken i anvĂ€ndarutrymmet.

    • För AMD-processorer implementerat en mekanism för att införa data direkt i L3-cachen pĂ„ CPU:n frĂ„n in-/utmatningsenheter utan att först placera dem i RAM.

    • Stöd för MPAM (Memory System Resource Partitioning and Monitoring), utvidningar av ARMv8-A kommandosetets arkitektur för att mĂ€rka varje minnesanrop med en sektionens identifierare (PARTID, Partition ID) och en övervakningsgrupps identifierare (PMG, Monitoring Group ID). I förhĂ„llande till PARTID kan resursförbrukning, sĂ„som minnesbandbredd eller cache-storlek, begrĂ€nsas sĂ„ att en viss uppgiftsgrupp inte upptar alla resurser. I sammanhanget av övervakning kan kombinationen av PMG och PARTID anvĂ€ndas för att spĂ„ra minnesresursförbrukning under vissa typer av belastningar.

    • NĂ€r en process ovĂ€ntat avslutas efter att ha mottagit en signal, kan en annan process som har pidfd för den avslutade processen nu bestĂ€mma nummer pĂ„ signalen som ledde till processens avslutning.

    • Implementeringen av omstartbara sekvenser (restartable sequences), som tillĂ„ter applikationer att organisera ett pseudo-atomĂ€rt, icke-interruptible utförande av en grupp instruktioner (vid avbrott av en annan trĂ„d görs ett försök att Ă„ter utföra sekvensen). Den nya implementationen erbjuder högre prestanda.

    • För BPF-program implementeras instruktioner BPF_JMP, BPF_X och BPF_JA för att utföra indirekta hopp till en viss position i hopp-tabellen. Konceptet av dynamiska pekare har lagts till (dynptr), vilket gör det möjligt att lĂ€sa data frĂ„n strukturerade filer. Tillagd möjlighet att fĂ€sta flera byte med metadata till nĂ€tverkspaket.

    • Moduler skrivna i Python, som anvĂ€nds för att bearbeta dokumentation till kĂ€rnan, har flyttats till en separat katalog tools/lib/python.

    • Funktionalitet har lagts till mempool_alloc_bulk() för sĂ€ker allokering av element frĂ„n minnespoolen för flera objekt samtidigt.

    • Fortsatt överföring av förĂ€ndringar frĂ„n grenen Rust-for-Linux, relaterat till anvĂ€ndningen av Rust-sprĂ„ket som ett andra sprĂ„k för utveckling av drivrutiner och kĂ€rnmoduler (stöd för Rust Ă€r inte aktiverat som standard och leder inte till att Rust ingĂ„r bland kĂ€rnans obligatoriska byggberoenden). I den nya versionen Ă€r kĂ€rnan inbyggd biblioteket “syn» med Rust-kodparser som förenklar skrivandet av komplexa makron. Utökade funktioner i biblioteken kernel, pin-init och rbtree. En ny bibliotek num har lagts till med typalen Integer för manipulering av heltal. Makrot module! har fĂ„tt stöd för heltalsparametrar. Möjlighet har implementerats att ange parametrar vid inlĂ€sning av kĂ€rnmoduler skrivna i Rust. Abstraktioner för subsystem har implementerats. I2C och PWM (Pulsbreddsmodulering).

    • Tillagd makrot at_least (till exempel, param[at_least 7], som informerar om den minimi tillĂ„tna storleken pĂ„ matrisen som skickas till funktionen. Om en matris med fĂ€rre element Ă€n sĂ„ hĂ€r skickas till funktionen, kommer kompilatorn att ge en varning.

    • I sammansĂ€ttningen pĂ„slagen skriptet klp-build för att generera kĂ€rnmoduler som gör Ă€ndringar i den körande kĂ€rnan (livepatch) baserat pĂ„ en patchfil. Ändringar har införts i verktyget objtool som Ă€r nödvĂ€ndiga för att skapa live-patchar.

    • I User-mode Linux (köra kĂ€rnan som en anvĂ€ndarprocess) har lagts till begrĂ€nsat stöd för multiprocessoritet, men trĂ„dar inom en enda process kan för nĂ€rvarande inte köras parallellt. Har startat portering av User-mode Linux till biblioteket nolibc.

    • Tillagd stöd för arkitektur LoongArch32 (LA32R, LA32S) utöver LoongArch64.

    • Tillagd möjlighet att stĂ€lla in QoS-grĂ€nser för intensiteten av processorvĂ€ckning i energibesparande lĂ€ge s2idle (Suspend-To-Idle), som fryser körningen av processer i anvĂ€ndarutrymmet, men lĂ„ter vissa hanterare i kĂ€rnan förbli aktiva.

    • Tillagd stöd för att hantera minnessidtabeller för kontroller IOMMU (Input-Output Memory Management Unit), som utför översĂ€ttning av virtuella adresser som syns för hĂ„rdvaran till fysiska adresser, med möjlighet att filtrera DMA-operationer baserat pĂ„ virtuella adresser, samt att begrĂ€nsa och isolera in- och utdataoperationer.

    • I hĂ€ndelser av spĂ„rning av systemanrop har möjligheten att lĂ€sa buffertar frĂ„n anvĂ€ndarutrymmet och inkludera deras innehĂ„ll (till exempel filnamn) i resultaten av spĂ„rningen implementerats.

    • **Vaktminnessidor(( (guard page), Ă„tkomst till vilka orsakar ett undantag och kraschar processen (SIGSEGV), Ă€r nu markerade med en speciell etikett i filen /proc/PID/smaps.

    • Tillagd möjlighet att hantera stora minnessidor (transparent huge page) i privat minne pĂ„ zonerade enheter.

    • I enheten zram, som anvĂ€nds för komprimerad lagring av swap-partitionen i minnet, har möjligheten stöd för att utvisa flera «bio»-strukturer (Block I/O) i batchlĂ€ge (writeback batching).

    • Typsnittet ingĂ„r «Terminus 10×18», vilket förbĂ€ttrar lĂ€sbarheten av information frĂ„n konsolen pĂ„ skĂ€rmar av medelhög upplösning (1440×900).

    • Betydligt optimerad arbete revisionssystem — en halvering av overheadkostnaderna har observerats.

  • Virtualisering och sĂ€kerhet
    • Stödet för den funktion som erbjuds av Intel-processorer har lagts till separation av linjĂ€rt adressutrymme (LASS, linear address-space separation) gör att man hĂ„rdvarumĂ€ssigt kan separera adresseringsomrĂ„dena för anvĂ€ndarutrymmet och kĂ€rnan för att öka sĂ€kerheten. Adressutrymmet separeras efter den högsta adressbiten – hĂ€lften av adressutrymmet med den högsta biten satt anvĂ€nds för kĂ€rnan, medan den nedre anvĂ€nds för anvĂ€ndarutrymmet. Under den tidiga exekveringsfasen av instruktioner (före spekulativ exekvering) utförs en kontroll av giltigheten för Ă„tkomst frĂ„n anvĂ€ndarutrymmet till adresser med den högsta biten satt och vice versa. Denna separation möjliggör blockering av kĂ€rnminneslĂ€ckor till anvĂ€ndarutrymmet via sidokanaler Ă€ven vid spekulativ exekvering av instruktioner, vilket gör att LASS kan anvĂ€ndas för att skydda mot attacker av klassen Meltdown och Spectre utan att orsaka stora overheadkostnader.
    • Möjlighet till aktivering har lagts till. tillĂ€gg förstĂ€rkning av sĂ€kerheten pĂ„ PCI Express-bussen – PCIe Link Encryption och PCIe Device Authentication, som gör det möjligt att bekrĂ€fta Ă€ktheten och kryptera kommunikationskanalen mellan PCIe-enheten och den virtuella maskinen, som skyddas av mekanismer frĂ„n Intel TDX (Trusted Domain Extensions) och AMD SEV-SNP (Secure Nested Paging). De implementerade teknologierna tillĂ„ter inte att man fĂ„ngar, analyserar och injicerar data i DMA-trafiken vid tillgĂ„ng till vĂ€rdsystemet eller andra enheter.
    • I den inbyggda kryptografiska biblioteket har lagts till stödet för algoritmerna SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512) SHAKE128, SHAKE256 och BLAKE2b.
    • För LSM-moduler (Linux Security Modules) och sĂ€rskilt för SELinux, har möjligheten möjligheten att spĂ„ra skapandet av memfd-deskriptorer för att tillĂ€mpa sĂ€kerhetspolicys pĂ„ associerade objekt.
    • I LSM-modulen IPE (Integrity Policy Enforcement), som definierar en övergripande policy för att sĂ€kerstĂ€lla integriteten för hela systemet, har stöd för flaggan AT_EXECVE_CHECK i funktionen execveat(), som inkluderar en kontroll av skriptets integritet innan det körs av tolken.
    • Primtalen scoped_user_read_access(), scoped_user_write_access och scoped_user_rw_access har lagts till för begrĂ€nsad Ă„tkomst till data i anvĂ€ndarutrymmet med skydd mot spekulativa attacker.
    • Tillagd stöd för mekanismen Confidential VMBus, som anvĂ€nds i HyperV-hypervĂ€xeln för att möjliggöra sĂ€ker interaktion mellan gĂ€stsystemet som körs i konfidentiellt lĂ€ge (med minneskryptering och registerisolering baserat pĂ„ AMD SNP- och Intel TDX-teknologier), och paravisorn som ansvarar för Ă„tkomsten till enheter som hanterar konfidentiella data.
    • Tillagd möjlighet att överföra information om en process som avslutats ovĂ€ntat (för att generera coredump) via mekanismen pidfd. PIDFD-identifikatorn kopplas till en specifik process och förĂ€ndras inte, medan PID kan kopplas till en annan process efter att den aktuella processen kopplad till detta PID har avslutats. AnvĂ€ndningen av pidfd möjliggör blockering av att attacker ersĂ€tta den ovĂ€ntat avslutade suid-processen med en annan process, vilket Ă„stadkommer en race-tillstĂ„nd under tiden efter att kĂ€rnan har pĂ„börjat bearbetningen av det ovĂ€ntade avslutet men före att anvĂ€ndarutrymmesbehandlaren har kontrollerat processparametrarna.
  • NĂ€tverkssystemet
    • I nĂ€tverksunderdelarna har optimeringar införts för att öka effektiviteten i datatransmission (TX). Genom att avlĂ€gsna spin-lĂ„sningen frĂ„n funktionen __dev_queue_xmit() och anvĂ€nda en lĂ„sfria strukturen llist möjliggjordes en fyrfaldig ökning av prestandan under hög belastning och en fördubblad paketutsĂ€ndningsintensitet vid lĂ€gre CPU-belastning.
    • TillhandahĂ„llet att avstĂ€ngning av systemgrĂ€nser för minnesanvĂ€ndning för specifika nĂ€tverksockets (i det hĂ€r fallet kommer gemensamma minnesgrĂ€nser som anges för specifika containrar att anvĂ€ndas). För att hantera borttagning av grĂ€nser föreslĂ„s sysctl net.core.bypass_prot_mem och flaggan SK_BPF_BYPASS_PROT_MEM i funktionen bpf_setsockopt.
    • Tillagd stöd för utvidgningen RFC 5837, som lĂ€gger till data om inkommande nĂ€tverksgrĂ€nssnitt i ICMP-meddelanden Time Exceeded, som returneras nĂ€r paketets livslĂ€ngd (TTL) löper ut, för att fĂ„ mer detaljerad information vid spĂ„rning av rutter med traceroute-verktyget.
    • Tillagd stöd för kontinuerlig aktiv polling (busy polling) i en separat kĂ€rntrĂ„d för att hĂ€mta descriptors frĂ„n RX/TX-köer för applikationer som krĂ€ver minimala fördröjningar.
    • Stöd för protokollet CAN XL (Controller Area Network eXtended Length), dĂ€r storleken pĂ„ datadelen har ökat till 2048 byte för att möjliggöra integration med TCP/IP-nĂ€tverk, har funktionen för att tunnelera Ethernet-ramar implementerats och stöd har lagts till. breddimpulsmodulering, vilket möjliggjorde dataöverföringar med hastigheter pĂ„ 20 Mbit/s och högre.
    • Tillagd stöd för strukturen sockaddr_unsized, en variant av sockaddr-strukturen som anvĂ€nder en array med flexibla element istĂ€llet för en array med fast storlek (sa_data[] istĂ€llet för sa_data[14], som i grunden anvĂ€ndes för att referera till andra större strukturer).
    • Funktionaliteten för getsockname och getpeername har lagts till via io_uring-subsystemet.
    • Sysctl har lagts till net.ipv4.tcp_rcvbuf_low_rtt och net.ipv4.tcp_comp_sack_rtt_percent för att optimera TCP.
    • Tillagd stöd för lĂ€nkar med en bandbredd pĂ„ 1600 Gbps (1.6T).
  • Utrustning
    • I DRM-subsystemet (Direct Rendering Manager) har ett API lagts till för att anvĂ€nda hĂ„rdvarufunktioner för fĂ€rgkonvertering, vilket möjliggör att dessa omvandlingar kan göras utan att anvĂ€nda shaders eller köra kod pĂ„ CPU:n. För att visa innehĂ„ll pĂ„ HDR-monitorer kan komplexa fĂ€rgkonverteringar nu utföras av displaykontrollern före och efter blandning av lager (blending), istĂ€llet för att göra programmatisk sammansĂ€ttning av innehĂ„llet i den slutliga visningsbufferten. Utöver att minska overhead och energiförbrukning vid HDR-grafik kan den föreslagna funktionaliteten anvĂ€ndas för korrekt fĂ€rgĂ„tergivning i videoredigerare eller bildredigerare.
    • Tillagd ethosu-drivrutinen för NPU Arm Ethos U65 och U85, avsedd för hĂ„rdvaruacceleration av AI-modeller.
    • I i915-drivrutinen för GPU Lunar Lake och nyare har stöd för hĂ„rdvaruökning av bildskĂ€rpa (Sharpening) lagts till.
    • FortsĂ€tter arbete med drm-drivrutinen (Direct Rendering Manager) Xe för GPU:er baserade pĂ„ Intel Xe-arkitekturen, som anvĂ€nds i Intel:s grafikkort frĂ„n Arc-familjen och integrerad grafik, som börjar frĂ„n Tiger Lake-processorer. GrundlĂ€ggande stöd för Xe3P-arkitekturen, som anvĂ€nds i GPU Crescent Island och Nova Lake-familjens integrerade grafikprocessorer, har lagts till.
    • I AMDGPU-drivrutinen implementeras fullt stöd för AMD:s grafikkort frĂ„n GCN 1.0-serien "Southern Island" och 1.1-serien "Sea Islands", för vilka Radeon-drivrutinen tidigare anvĂ€ndes. AMDGPU-drivrutinen har försetts med funktioner motsvarande Radeon-drivrutinen och Ă€r aktiverad för de angivna GPU:erna som standard. GCN 1.x-kort slĂ€pptes mellan 2012 och 2019 och omfattar 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 och andra grafikkort frĂ„n Radeon Rx 200/Rx 300-familjen. Förutom ökningen av prestanda med i genomsnitt 24 %, möjliggjorde övergĂ„ngen till AMDGPU stöd för grafiskt API Vulkan 1.3 för dessa GPU:er. Dessutom tillades stöd för analoga anslutningar och Video Coding Engine 1.0 i AMDGPU, och Display Core-stacken (DC) aktiverades som standard för GPU:er baserade pĂ„ mikroarkitekturen Bonaire (Radeon HD 7790).
    • I Nouveau-drivrutinen har möjligheten Ă€r stöd för hĂ„rdvaruacceleratorn NVJPG, som finns i SoC Tegra210.
    • I Panthor-drivrutinen har lagts till stöd för GPU:n Mali-G1 och grundlĂ€ggande stöd för MediaTek MT8196-chipet.
    • Tillagd stöd för ljudsystemet i Intel Nova Lake S-chips, laptops frĂ„n HP med HDA CS35L41, samt ljudgrĂ€nssnitt CIX IPBLOQ HD och Onkyo SE-300PCIE.
    • Integrationen av komponenter frĂ„n Nova-drivrutinen för NVIDIA GPU:er, som anvĂ€nder GSP-firmware, som infördes med NVIDIA GeForce RTX 2000-serien baserad pĂ„ Turing-mikroarkitekturen, har fortsatt. Drivrutinen Ă€r skriven i Rust. I den nya versionen har arbetet med RPC pĂ„börjats och avslutats implementeringen av GSP (GPU System Processor)-kooperativet.
    • Tillagd stöd för ARM-plattformar, SoC och enheter: 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 Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 varianter av Enclustra Mercury-kort.
    • Stöd har lagts till för smartphones och surfplattor baserade pĂ„ SoC Mediatek MT6582 (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) och Qualcomm MSM8939 (ASUS ZenFone 2). Stöd för laptops baserade pĂ„ SoC Qualcomm sdm850, sĂ„som Huawei MateBook E 2019, har lagts till.
    • Stöd har lagts till för SoC och kort baserade pĂ„ RISC-V-arkitekturen: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Samtidigt har den Latinamerikanska stiftelsen för fri programvara skapat en variant av den helt fria kĂ€rnan 6.19 — Linux-libre 6.19-gnu, rensad frĂ„n firmware- och drivrutinskomponenter som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I version 6.19 har koden för att ladda binĂ€ra firmware-strĂ€ngar tagits bort frĂ„n ljudsystemet SDCA. Koden för rengöring av blobbar i drivrutinerna Intel XE, Nova-Core, Qualcomm Iris, Venus och Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 och ljudcodec TI tas2783 har uppdaterats. Blob-namn har rensats i dts-filer (devicetree) för ARM-chip. Rengöringen av drivrutinen STM C8SECTPFE DVB, som tagits bort frĂ„n kĂ€rnan, har upphört.

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster