SlÀpp av Linux-kÀrnan 6.2

Efter tvÄ mÄnader av utveckling presenterade Linus Torvalds slÀppet av Linux-kÀrnan 6.2. Bland de mest framtrÀdande förÀndringarna: stöd för kod under Copyleft-Next-licensen har tillÄtits, RAID5/6-implementeringen i Btrfs har förbÀttrats, integrationen av Rust-sprÄkets stöd har fortsatt, overheaden för skydd mot Retbleed-attacker har minskats, möjligheten att reglera minnesanvÀndningen under bakÄtskrivning har lagts till, en mekanism för balanshantering av TCP (Protective Load Balancing) har lagts till, en hybridmekanism för skydd av körordens utförande (FineIBT) har lagts till, i BPF har möjligheten att definiera egna objekt och datatyper införts, verktyget rv (Runtime Verification) har inkluderats, och energiförbrukningen i implementationen av RCU-lÄs har minskat.

I den nya versionen har 16843 korrigeringar frÄn 2178 utvecklare accepterats, patchens storlek Àr 62 MB (Àndringarna berör 14108 filer, 730195 kodrader har lagts till och 409485 kodrader har tagits bort). UngefÀr 42% av alla förÀndringar i 6.2 Àr relaterade till enhetsdrivrutiner, cirka 16% av förÀndringarna har att göra med uppdatering av hÄrdvaruarkitektur-specifik kod, 12% relaterar till nÀtverksstacken, 4% till filsystem och 3% till kÀrnans interna subsystems.

Huvudnyheterna i kÀrnan 6.2:

  • Minne och systemtjĂ€nster
    • Det har blivit tillĂ„tet att inkludera kod och förĂ€ndringar i kĂ€rnan som tillhandahĂ„lls under licensen Copyleft-Next 0.3.1. Licensen Copyleft-Next har skapats av en av upphovsmĂ€nnen till GPLv3 och Ă€r helt kompatibel med GPLv2, vilket bekrĂ€ftats av jurister pĂ„ företagen SUSE och Red Hat. JĂ€mfört med GPLv2 Ă€r Copyleft-Next betydligt mer kompakt och lĂ€ttare att förstĂ„ (inledningen och nĂ€mningen av förĂ„ldrade kompromisser har tagits bort), den definierar tidsramar och procedurer för att Ă„tgĂ€rda övertrĂ€delser och tar automatiskt bort copyleft-kraven för förĂ„ldrade verk som Ă€r över 15 Ă„r gamla.

      Copyleft-Next innehÄller ocksÄ en punkt om att ge rÀttigheter till patenterad teknik, vilket, till skillnad frÄn GPLv2, gör denna licens kompatibel med Apache 2.0-licensen. För att sÀkerstÀlla full kompatibilitet med GPLv2 anges det i texten till Copyleft-Next att hÀrledda verk kan tillhandahÄllas inte bara under den ursprungliga Copyleft-Next-licensen utan ocksÄ under GPL-licensen.

    • I paketet ingĂ„r verktyget "rv", som tillhandahĂ„ller ett grĂ€nssnitt för interaktion frĂ„n anvĂ€ndarrummet med RV (Runtime Verification) subsystemets handlare, avsett för att kontrollera korrektheten av driften pĂ„ högre pĂ„litliga system som garanterar avbrottsfri drift. Kontroll utförs under körning genom att bifoga handlare till spĂ„rningspunkter som jĂ€mför den faktiska exekveringen med en fördefinierad referensdeterministisk modell av automaten, som definierar systemets förvĂ€ntade beteende.
    • I enheten zRAM, som möjliggör lagring av en vĂ€xlingspartition i minnet i komprimerad form (ett blockenhet skapas i minnet för svapping med kompression), har möjligheten att ompacka sidor med ett alternativt algoritm implementerats för att uppnĂ„ en högre komprimeringsnivĂ„. HuvudidĂ©n Ă€r att ge val mellan flera algoritmer (lzo, lzo-rle, lz4, lz4hc, zstd), som erbjuder sina kompromisser mellan hastighet för komprimering/uppackning och komprimeringsnivĂ„ eller Ă€r optimala i sĂ€rskilda situationer (t.ex. för att komprimera stora minnessidor).
    • API:t "iommufd" har lagts till för att hantera in- och utdata minneshanteringssystemet IOMMU (I/O Memory-Management Unit) frĂ„n anvĂ€ndarrummet. Det nya API:t ger möjlighet att hantera in- och utdata minnessidtabeller med hjĂ€lp av filbeskrivare.
    • I BPF har möjligheten att skapa typer, definiera egna objekt, bygga sin egen objektstruktur och flexibelt utforma egna datastrukturer, som lĂ€nkade listor, tillhandahĂ„llits. För BPF-program som gĂ„r in i vilolĂ€ge (BPF_F_SLEEPABLE) har stöd för lĂ„sning via bpf_rcu_read_{,un}lock() lagts till. Stöd för att spara objekt av typen task_struct har implementerats. En map-typ BPF_MAP_TYPE_CGRP_STORAGE har lagts till, som tillhandahĂ„ller lokal lagring för cgroups.
    • För RCU (Read-copy-update) lĂ„smekanismen har en valfri mekanism för "latenta" callback-anrop implementerats, dĂ€r flera callback-anrop behandlas samtidigt i batchlĂ€ge via en timer. TillĂ€mpningen av den föreslagna optimeringen gör det möjligt att minska energiförbrukningen med 5-10 % pĂ„ Android- och ChromeOS-enheter genom att skjuta upp RCU-förfrĂ„gningar under stillastĂ„ende eller lĂ„g belastning pĂ„ systemet.
    • En sysctl split_lock_mitigate har lagts till för att hantera systemets reaktion nĂ€r split-lĂ„s upptĂ€cks, vilket uppstĂ„r vid Ă„tkomst till ojusterade data i minnet eftersom de vid utförande av atomĂ€ra instruktioner korsar tvĂ„ CPU-cachelinjer. SĂ„dana lĂ„s leder till en betydande nedgĂ„ng i prestanda. NĂ€r split_lock_mitigate sĂ€tts till vĂ€rdet 0 visas endast en varning om problemet, medan vĂ€rdet 1 utöver att visa en varning ocksĂ„ sĂ€nker hastigheten pĂ„ den process som orsakat lĂ„set för att bevara prestandan hos resten av systemet.
    • För PowerPC-arkitekturen har en ny implementering av qspinlock-lĂ„s föreslagits, vilket visar högre prestanda och löser vissa lĂ„sproblem som uppstĂ„r i exceptionella fall.
    • Koden för hantering av MSI (Message-Signaled Interrupts) har omarbetats, dĂ€r kvarstĂ„ende arkitekturproblem har Ă„tgĂ€rdats och stöd för bindning av separata handlare till olika enheter har lagts till.
    • För system baserade pĂ„ LoongArch instruktion-set arkitekturen, som anvĂ€nds i Loongson 3 5000 processorer och implementerar ett nytt RISC ISA liknande MIPS och RISC-V, har stöd för ftrace, stackskydd, vilande och vĂ€ntande lĂ€gen implementerats.
    • Möjligheten att ge namn till omrĂ„den med delad anonym minne har introducerats (tidigare kunde namn endast tilldelas privat anonym minne, kopplat till en viss process).
    • En ny parameter för kĂ€rnans kommandorad "trace_trigger" har lagts till, avsedd för att aktivera en spĂ„rningsutlösare som anvĂ€nds för att binda villkorliga kommandon som utlöses vid kontrollverifiering (t.ex. trace_trigger="sched_switch.stacktrace if prev_state == 2").
    • Kravet pĂ„ versionen av binutils har höjts. För att bygga kĂ€rnan krĂ€vs nu minst binutils 2.25.
    • Vid anrop av exec() har möjligheten lagts till att placera processen i ett tidsnamnrum dĂ€r tiden skiljer sig frĂ„n systemtiden.
    • Överföringen av ytterligare funktioner frĂ„n Rust-for-Linux-grenen har inletts, relaterat till anvĂ€ndning av Rust som ett andra sprĂ„k för utveckling av drivrutiner och kĂ€rnmoduler. Stödet för Rust Ă€r inaktivt som standard och medför inte att Rust ingĂ„r i kĂ€rnans obligatorium för byggberoenden. Den grundlĂ€ggande funktionalitet som föreslogs i det föregĂ„ende slĂ€ppet har utvidgats med möjligheter för stöd av lĂ„gnivĂ„kod, sĂ„som typen Vec och makron pr_debug!(), pr_cont!() och pr_alert!(), samt den procedurala makron "#[vtable]", som förenklar arbetet med funktionstĂ€vlingstabeller. TillĂ€gg av högre Rust-wrapper runt kĂ€rnsystemen som möjliggör skapandet av fullstĂ€ndiga drivrutiner i Rust förvĂ€ntas i framtida utgĂ„vor.
    • Den typ av "char" som anvĂ€nds i kĂ€rnan Ă€r nu som standard deklarerad som osignerad för alla arkitekturer.
    • Minnesdistributionsmekanismen slab – SLOB (slab allocator) har förklarats som förĂ„ldrad, vilket var designat för system med liten minnesmĂ€ngd. IstĂ€llet rekommenderas det att anvĂ€nda SLUB eller SLAB under normala förhĂ„llanden. För system med liten minnesmĂ€ngd rekommenderas SLUB i SLUB_TINY-lĂ€get.
  • Disksubsystem, in- och utmatning och filsystem
    • Btrfs har förbĂ€ttrats för att Ă„tgĂ€rda problemet med "write hole" i RAID 5/6-implementationen (försöket att Ă„terstĂ€lla RAID om ett krashtillfĂ€lle intrĂ€ffade under skrivningen och det Ă€r omöjligt att avgöra vilken block pĂ„ vilket av RAID-enheterna som har skrivits korrekt, vilket kan leda till förödelse av block som motsvarar oskrivna block). Dessutom aktiveras asynkron exekvering av "discard"-operationen automatiskt som standard för SSD, vilket möjliggör högre prestanda genom effektiv gruppering av "discard"-operationer i kön och bearbetning av kön av en bakgrundshanterare. Prestanda för send- och lseek-operationer samt ioctl FIEMAP har förbĂ€ttrats.
    • Möjligheterna för hantering av fördröjd skrivning (writeback, bakgrundssparande av Ă€ndrade data) för blockenheter har utvidgats. I vissa situationer, till exempel vid anvĂ€ndning av nĂ€tverksblockenheter eller USB-enheter, kan fördröjd skrivning leda till hög minnesanvĂ€ndning. För att styra beteendet för fördröjd skrivning och hĂ„lla storleken pĂ„ sidcacheminnet inom vissa grĂ€nser har nya parametrar strict_limit, min_bytes, max_bytes, min_ratio_fine och max_ratio_fine föreslagits i sysfs (\/sys\/class\/bdi\/).
    • I filsystemet F2FS har en ioctl-operation för atomĂ€r ersĂ€ttning implementerats, vilket möjliggör skrivning av data till en fil inom ramen för en atomĂ€r operation. I F2FS har en blockcache för extens blivit tillagd, vilket hjĂ€lper till att identifiera aktiva data eller data som har varit inaktiva under en lĂ€ngre tid.
    • I filsystemet ext4 noteras endast buggfixar.
    • I filsystemet ntfs3 har flera nya monteringsalternativ föreslagits: "nocase" för att hantera stor bokstav i fil- och mappenamn; windows_name för att förbjuda skapande av filnamn som innehĂ„ller tecken ogiltiga för Windows OS; hide_dot_files för att hantera tilldelningen av attributet dolda filer för filer som börjar med en punkt.
    • I filsystemet Squashfs har alternativet "threads=" implementerats, med vilket antalet trĂ„dar för parallellisering av uppackningsoperationer kan bestĂ€mmas. I Squashfs har Ă€ven möjligheten att mappa anvĂ€ndaridentiteter för monterade filsystem införts, vilket anvĂ€nds för att korrelera filer som tillhör en viss anvĂ€ndare pĂ„ ett monterat frĂ€mmande partition med en annan anvĂ€ndare i det nuvarande systemet.
    • Implementeringen av POSIX Åtkomstkontrollistor (POSIX ACL) har omarbetats. I den nya implementeringen har arkitekturella problem Ă„tgĂ€rdats, kodunderhĂ„llet har förenklats och sĂ€krare datatyper har anvĂ€nts.
    • I fscrypt-systemet, som anvĂ€nds för transparent kryptering av filer och kataloger, har stöd för krypteringsalgoritmen SM4 (kinesisk standard GB/T 32907-2016) lagts till.
    • Möjligheten att kompilera kĂ€rnan utan stöd för NFSv2 har tillhandahĂ„llits (i framtiden planeras stöd för NFSv2 att helt upphöra).
    • Organisationen för Ă„tkomstkontroll av NVMe-enheter har Ă€ndrats. Möjlighet till lĂ€sning och skrivning pĂ„ NVMe-enheten har givits om skrivprocessen har tillgĂ„ng till en speciell enhetsfil (tidigare krĂ€vdes behörighet CAP_SYS_ADMIN för processen).
    • Den paketdrivrutinen för CD/DVD har tagits bort, eftersom den ansĂ„gs obsolet 2016.
  • Virtualisering och sĂ€kerhet
    • En ny metod för skydd mot sĂ„rbarheten Retbleed i Intel- och AMD-CPU:er har implementerats, vilket anvĂ€nder spĂ„rning av anropsdjup och inte saktar ned prestandan lika mycket som den tidigare metoden mot Retbleed. För att aktivera det nya lĂ€get föreslĂ„s kommandoradsparametern för kĂ€rnan "retbleed=stuff".
    • En hybridmekanism för att skydda exekveringsflödet av FineIBT har lagts till, som kombinerar anvĂ€ndningen av hĂ„rdvaruinstruktioner frĂ„n Intel IBT (Indirect Branch Tracking) och programvaruskyddet kCFI (kernel Control Flow Integrity) för att blockera avvikelser i det normala exekveringsflödet orsakade av exploateringar som Ă€ndrar funktioner som lagras i minnet. FineIBT tillĂ„ter endast exekvering av indirekta grenar om det övergĂ„r till instruktionen ENDBR, som Ă€r placerad i början av funktionen. Dessutom genomförs, likt kCFI-mekanismen, hashkontroller som garanterar oförĂ€ndrade pekare.
    • BegrĂ€nsningar har lagts till för att blockera attacker som manipulerar genereringen av "oops"-tillstĂ„nd, efter vilka problematiska uppgifter avslutas och tillstĂ„ndet Ă„terstĂ€lls utan att systemets drift stoppar. Vid ett mycket stort antal Ă„tgĂ€rder av "oops"-tillstĂ„nd kan det uppstĂ„ en överflödning av referensrĂ€knaren (refcount), vilket kan utnyttja sĂ„rbarheter som orsakas av dereferensiering av NULL-pekare. För att skydda mot sĂ„dana attacker har en grĂ€ns för det maximala antalet "oops"-utlösningar lagts till kĂ€rnan, efter vilket kĂ€rnan kommer att initiera övergĂ„ngen till "panic"-lĂ€ge med efterföljande omstart, vilket förhindrar att antalet iterationer som krĂ€vs för att överflöda refcount nĂ„s. Som standard sĂ€tts grĂ€nsen till 10 000 "oops", men den kan Ă€ndras via parameter oops_limit.
    • En ny konfigurationsparameter LEGACY_TIOCSTI och sysctl legacy_tiocsti har lagts till för att inaktivera möjligheten att mata in data till terminalen via ioctl TIOCSTI, eftersom denna funktionalitet kan anvĂ€ndas för att injicera godtyckliga tecken i terminalens inmatningsbuffer och simulera anvĂ€ndarinmatning.
    • En ny typ av interna strukturer, encoded_page, har föreslagits, dĂ€r de lĂ€gre bitarna av pekaren anvĂ€nds för att lagra ytterligare information som anvĂ€nds för att skydda mot oavsiktlig dereferering av pekaren (vid verkligt behov av dereferering mĂ„ste dessa extra bitar först rensas).
    • PĂ„ ARM64-plattformen har möjligheten att aktivera och inaktivera den programvaruimplementation av Shadow Stack-mekanismen som anvĂ€nds för att skydda mot överskrivning av returadressen frĂ„n en funktion vid stacköverskridning lagts till under bootsteget (syftet med skyddet Ă€r att efter att kontrollen överlĂ€mnats till funktionen spara returadressen i en separat "skugga"-stack och hĂ€mta denna adress innan man lĂ€mnar funktionen). Stöd för bĂ„de hĂ„rdvaru- och programvaruimplementation av Shadow Stack i en och samma kĂ€rnversion möjliggör anvĂ€ndning av en kĂ€rna pĂ„ olika ARM-system, oavsett om de stöder instruktioner för pekarautentisering. Aktivering av programvaruimplementationen sker genom att underlĂ€tta nödvĂ€ndiga instruktioner i koden under boot.
    • Stödet för att anvĂ€nda mekanismen för asynkron utgĂ„ende notifikation (asynchronous exit notification) pĂ„ Intel-processorer har lagts till, vilket gör det möjligt att upptĂ€cka single-step-attacker pĂ„ kod som körs i SGX-enklaver.
    • Ett set av operationer har föreslagits för att hypervisorn ska kunna hantera förfrĂ„gningar frĂ„n Intel TDX (Trusted Domain Extensions) gĂ€stsystem.
    • BygginstĂ€llningar för kĂ€rnan RANDOM_TRUST_BOOTLOADER och RANDOM_TRUST_CPU har tagits bort, istĂ€llet bör motsvarande alternativ i kommandoraden random.trust_bootloader och random.trust_cpu anvĂ€ndas.
    • I mekanismen Landlock, som begrĂ€nsar interaktionen mellan en grupp processer och omvĂ€rlden, har stödet för flaggan LANDLOCK_ACCESS_FS_TRUNCATE lagts till, vilket ger möjlighet att kontrollera utförandet av filtrunkeringsoperationer.
  • NĂ€tverkssystemet
    • För IPv6 har stöd för PLB (Protective Load Balancing) lagts till, en metod för att balansera belastningen mellan nĂ€tverkslĂ€nkar som syftar till att minska överbelastningspunkter pĂ„ datacenter-switchar. Genom att Ă€ndra IPv6 Flow Label Ă€ndrar PLB slumpmĂ€ssigt paketvĂ€gar för att jĂ€mna ut belastningen pĂ„ switchportarna. För att minska paket omordning utförs denna operation, i möjligaste mĂ„n, efter perioder av inaktivitet. AnvĂ€ndningen av PLB i Googles datacenter har möjliggjort en genomsnittlig minskning av obalans i belastning pĂ„ switchportarna med 60 %, en minskning av paketförlust med 33 % och en sĂ€nkning av fördröjningarna med 20 %.
    • En drivrutin för MediaTek-enheter med stöd för Wi-Fi 7 (802.11be) har lagts till.
    • Stöd för 800-gigabit lĂ€nkar har lagts till.
    • Möjligheten att byta namn pĂ„ nĂ€tverksgrĂ€nssnitt i realtid, utan att stoppa verksamheten, har lagts till.
    • I loggmeddelandena om SYN-floder har en hĂ€nvisning till IP-adressen som paketet kom till lagts till.
    • För UDP har möjligheten att anvĂ€nda separata hash-tabeller för olika nĂ€tverksnamnutrymmen implementerats.
    • För nĂ€tverksbroar har stöd för autentiseringsmetoden MAB (MAC Authentication Bypass) implementerats.
    • För protokollet CAN (CAN_RAW) har stöd för socketlĂ€get SO_MARK implementerats för att koppla trafikfilter baserade pĂ„ fwmark.
    • I ipset har en ny parameter bitmask implementerats, vilket gör det möjligt att stĂ€lla in en mask baserat pĂ„ godtyckliga bitar i IP-adressen (till exempel, "ipset create set1 hash:ip bitmask 255.128.255.0").
    • I nf_tables har stöd för att behandla interna (inner) rubriker som kommer inuti inkapslade paket lagts till.
  • Utrustning
    • Ett system för "accel" har lagts till med en implementering av ett ramverk för berĂ€kningsacceleratorer, som kan levereras i form av separata ASIC:ar eller som IP-block inom SoC och GPU. Dessa acceleratorer Ă€r frĂ€mst inriktade pĂ„ att pĂ„skynda lösningen av maskininlĂ€rningsuppgifter.
    • I amdgpu-drivrutinen har stöd för IP-komponenter GC, PSP, SMU och NBIO lagts till. För ARM64-system har stöd för DCN (Display Core Next) implementerats. Implementeringen av skyddad skĂ€rmutgĂ„ng har överförts frĂ„n DCN10 till DCN21 och kan nu anvĂ€ndas vid anslutning av flera skĂ€rmar.
    • I drivrutinen i915 (Intel) har stödet för diskreta Intel Arc-grafikkort (DG2/Alchemist) stabiliserats.
    • I Nouveau-drivrutinen har stöd för GPU NVIDIA GA102 (RTX 30) baserat pĂ„ arkitekturen Ampere implementerats. För korten nva3 (GT215) har möjligheten att styra bakgrundsbelysningen lagts till.
    • Stöd för trĂ„dlösa adaptrar baserade pĂ„ Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) och MediaTek MT7996, Bluetooth-grĂ€nssnitt frĂ„n Broadcom BCM4377/4378/4387, samt Ethernet-kontroller Motorcomm yt8521, NVIDIA Tegra GE har lagts till.
    • ASoC (ALSA System on Chip) stöd för inbyggda ljudchip HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588 har lagts till. Stöd för ljudgrĂ€nssnittet Focusrite Saffire Pro 40 har lagts till. Ljudkodaren Realtek RT1318 har lagts till.
    • Stöd för smartphones och surfplattor frĂ„n Sony (Xperia 10 IV, 5 IV, X och X compact, OnePlus One, 3, 3T och Nord N100, Xiaomi Poco F1 och Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1) har lagts till.
    • Stöd för ARM SoC och Apple T6000-plattor (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695), SDM670 (Snapdragon 670), MSM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), RK3326 Odroid-Go/rg351, Zyxel NSA310S, InnoComm i.MX8MM, Odroid Go Ultra har lagts till.

Samtidigt har Latinamerikanska stiftelsen för fri programvara skapat en helt fri kĂ€rnversion 6.2 — Linux-libre 6.2-gnu, rensad frĂ„n firmware- och drivrutinskomponenter som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I den nya utgĂ„van har nya blobbar i drivrutinen nouveau rensats. InlĂ€sning av blobbar i drivrutinerna mt7622, mt7996 wifi och bcm4377 bluetooth har inaktiverats. Namnen pĂ„ blobbar i dts-filer för Aarch64-arkitekturen har rensats. Koden för att rensa blobbar i olika drivrutiner och underystem har uppdaterats. Rensningen av drivrutinen s5k4ecgx har upphört, eftersom den har tagits bort frĂ„n kĂ€rnan.

KĂ€lla: opennet.ru

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