Utgivelsen av Linux-kjernen 6.2

Etter to mÄneder med utvikling, presenterte Linus Torvalds utgivelsen av Linux-kjerne 6.2. Blant de mest bemerkelsesverdige endringene: mottak av kode under Copyleft-Next-lisensen er tillatt, forbedret implementering av RAID5/6 i Btrfs, videre integrering av stÞtte for Rust-sprÄket, reduserte kostnader ved beskyttelse mot Retbleed-angrep, mulighet for regulering av minneforbruk ved tilbakewriting, en mekanisme for TCP-balansering (Protective Load Balancing) er lagt til, lagt til en hybridmekanisme for beskyttelse av kommandostrÞmmen (FineIBT), i BPF har muligheten til Ä definere egne objekter og datatyper blitt introdusert, inkludert verktÞyet rv (Runtime Verification), redusert energiforbruk ved implementering av RCU-lÄser.

I den nye versjonen er 16843 feilrettinger fra 2178 utviklere inkludert, patch-stÞrrelsen er 62 MB (endringer berÞrte 14108 filer, 730195 linjer med kode ble lagt til, 409485 linjer ble fjernet). Omtrent 42 % av alle endringene i 6.2 er relatert til enhetsdrivere, omtrent 16 % av endringene er relatert til oppdatering av kode spesifikk for maskinvarearkitekturer, 12 % angÄr nettverksstakken, 4 % er relatert til filsystemer og 3 % til internkjernesystemer.

De viktigste nyhetene i kjerne 6.2:

  • Minne og systemtjenester
    • Det er tillatt Ă„ inkludere kode og endringer i kjernen som leveres under Copyleft-Next-lisensen 0.3.1. Copyleft-Next-lisensen er opprettet av en av forfatterne av GPLv3 og er fullt kompatibel med GPLv2, noe som er bekreftet av juridiske eksperter fra SUSE og Red Hat. Sammenlignet med GPLv2 er Copyleft-Next-lisensen betydelig mer kompakt og lettere Ă„ forstĂ„ (innledningen og referansen til utdaterte kompromisser er fjernet), den definerer tidsrammer og prosedyrer for Ă„ rette opp brudd, og fjerner automatisk copyleft-kravene for utdaterte verk som er over 15 Ă„r gamle.

      Copyleft-Next inneholder ogsÄ en bestemmelse om tildeling av rettigheter til patenterte teknologier, noe som, i motsetning til GPLv2, gjÞr denne lisensen kompatibel med Apache 2.0-lisensen. For Ä sikre full kompatibilitet med GPLv2 er det eksplisitt angitt i teksten til Copyleft-Next at avledede arbeider kan leveres ikke bare under den opprinnelige Copyleft-Next-lisensen, men ogsÄ under GPL-lisensen.

    • Den inneholder verktĂžyet «rv», som gir et grensesnitt for samhandling fra brukerrummet med hĂ„ndterere av RV (Runtime Verification) subsystemet, som er designet for Ă„ sjekke korrekt drift av hĂžyt pĂ„litelige systemer som garanterer fravĂŠr av feil. Sjekken skjer under kjĂžring ved Ă„ feste hĂ„ndterere til sporingspunkter som sammenligner den faktiske kjĂžringsforlĂžpet med en forhĂ„ndsdefinert referent deterministisk modell av en automat som definerer forventet systematferd.
    • I zRAM-enheten, som tillater lagring av bytteomrĂ„de i minnet i komprimert form (en blokk enhet opprettes i minnet der swapping skjer med komprimering), er det implementert muligheten for Ă„ repacke sider med bruk av et alternativt algoritme for Ă„ oppnĂ„ hĂžyere kompresjonsnivĂ„. Hovedideen er Ă„ gi valget mellom flere algoritmer (lzo, lzo-rle, lz4, lz4hc, zstd), som tilbyr sine kompromisser mellom hastighet pĂ„ komprimering/utpakking og kompresjonsnivĂ„, eller optimalt i spesielle situasjoner (for eksempel for komprimering av store minnesider).
    • API-en «iommufd» er lagt til for Ă„ administrere input/output minnestyringssystemet — IOMMU (I/O Memory-Management Unit) fra brukerrummet. Den nye API gir mulighet til Ă„ administrere minneside-tabeller for input/output ved bruk av filbeskrivelser.
    • I BPF er det nĂ„ mulig Ă„ opprette typer, definere egne objekter, bygge sitt eget objekthierarki og fleksibelt danne sine egne datatyper, som koblede lister. For BPF-programmer som gĂ„r inn i sĂžvntilstand (BPF_F_SLEEPABLE), er stĂžtten for bpf_rcu_read_{,un}lock()-lĂ„s lagt til. StĂžtte for lagring av objekter task_struct er implementert. En karttype BPF_MAP_TYPE_CGRP_STORAGE er lagt til, som gir lokal lagring for cgroups.
    • For RCU (Read-copy-update) lĂ„semekanismen er det implementert en valgfri mekanisme for «late» callback-anrop, der flere callback-anrop blir behandlet i batchmodus etter en tidsur. Bruken av den foreslĂ„tte optimaliseringen kan redusere energiforbruket med 5-10% pĂ„ Android- og ChromeOS-enheter ved Ă„ utsette RCU-forespĂžrselene under inaktivitet eller lav systembelastning.
    • Lagt til sysctl split_lock_mitigate for Ă„ kontrollere systemresponsen ved oppdagelse av delte lĂ„ser («split lock»), som oppstĂ„r nĂ„r det tilgangs til ukontrollerte data i minnet med et atomisk instruksjon der data krysser to CPU-cachelinjer. Slike lĂ„ser fĂžrer til betydelig reduksjon i ytelse. Med verdien 0 i split_lock_mitigate vises kun en advarsel om problemet, mens verdien 1 bĂ„de viser en advarsel og reduserer hastigheten pĂ„ prosessen som forĂ„rsaket lĂ„sen, for Ă„ bevare ytelsen til resten av systemet.
    • For PowerPC-arkitekturen er det foreslĂ„tt en ny implementering av qspinlock-lĂ„ser, som viser hĂžyere ytelse og lĂžser noen av de problemer med lĂ„ser som oppstĂ„r i sjeldne tilfeller.
    • Koden for behandling av MSI (Message-Signaled Interrupts) avbrudd er omarbeidet, i hvilken akkumulerte arkitekturproblemer er lĂžst og stĂžtte for binding av enkelte hĂ„ndterere til forskjellige enheter er lagt til.
    • For systemer basert pĂ„ LoongArch instruksjonssettarkitektur, brukt i Loongson 3 5000-prosessorer og implementert med en ny RISC ISA, som ligner pĂ„ MIPS og RISC-V, er stĂžtte for ftrace, stakkbeskyttelse, dvale og ventemodi blitt implementert.
    • Det er nĂ„ mulig Ă„ tildele navn til omrĂ„der av delt anonymt minne (tidligere kunne navn kun tildeles privat anonymt minne knyttet til en bestemt prosess).
    • En ny kjerne-kommandolinjeparameter «trace_trigger» er lagt til, som er designet for Ă„ aktivere en sporingstrigger som brukes til Ă„ binde betingede kommandoer som utlĂžses ved en sjekk (for eksempel trace_trigger=«sched_switch.stacktrace if prev_state == 2»).
    • Kravene til versjonen av binutils er Ăžkt. For Ă„ bygge kjernen kreves nĂ„ minst binutils 2.25.
    • Ved kall til exec() er det lagt til mulighet for Ă„ plassere prosessen i et tidsnavnrom (time namespace), hvor tiden er forskjellig fra systemtiden.
    • OverfĂžringen av tilleggskompetanse fra Rust-for-Linux-grenen har begynt, relatert til bruken av Rust som et sekundĂŠrt sprĂ„k for utvikling av drivere og kjernermoduler. Rust-stĂžtte er inaktiv som standard og fĂžrer ikke til at Rust inkluderes blant de obligatoriske byggavhengighetene for kjernen. Den grunnleggende funksjonaliteten som ble foreslĂ„tt i forrige utgivelse er nĂ„ utvidet med muligheter for stĂžtte av lavnivĂ„kode, slik som typen Vec og makroene pr_debug!(), pr_cont!() og pr_alert!(), samt prosedyremakroen "#[vtable]", som forenkler arbeidet med tabeller for funksjonspekere. Tilsetning av hĂžy-nivĂ„ Rust-bindy over kjernesubsystemene som vil tillate utvikling av fulle drivere i Rust er forventet i fremtidige utgivelser.
    • Type "char" som brukes i kjernen er nĂ„ som standard erklĂŠrt som usignert for alle arkitekturer.
    • Minnefordelingsmekanismen slab — SLOB (slab allocator) er erklĂŠrt utdĂždd, designet for systemer med lite minne. I stedet for SLOB anbefales det Ă„ bruke SLUB eller SLAB under vanlige forhold. For systemer med lite minne anbefales det Ă„ bruke SLUB i SLUB_TINY-modus.
  • Disk subsystem, I/O og filsystemer
    • I Btrfs er det gjort forbedringer, rettet mot Ă„ fikse problemet «write hole» i RAID 5/6-implementasjonen (et forsĂžk pĂ„ Ă„ gjenopprette RAID hvis et krasj skjer under skriving og det ikke er mulig Ă„ forstĂ„ hvilken blokk som ble skrevet korrekt pĂ„ hvilken av RAID-enhetene, noe som kan fĂžre til Ăždeleggelse av blokker som tilsvarer ufullstendige blokker). I tillegg aktiveres asynkron behandling av "discard"-operasjoner automatisk som standard for SSD, noe som gir hĂžyere ytelse pĂ„ grunn av effektiv gruppering av "discard"-operasjoner i kĂžen og behandling av kĂžen av en bakgrunnsbehandler. Ytelsen til send- og lseek-operasjoner er ogsĂ„ forbedret, samt ioctl FIEMAP.
    • Utvidede muligheter for Ă„ administrere utsatt skriving (writeback, bakgrunnslagring av endrede data) for blokkerte enheter. I visse situasjoner, for eksempel ved bruk av nettverksblokkerte enheter eller USB-minnepinner, kan utsatt skriving fĂžre til hĂžyt minneforbruk. For Ă„ hĂ„ndtere oppfĂžrselen til utsatt skriving og holde stĂžrrelsen pĂ„ sidens cache innen bestemte rammer i sysfs (\/sys\/class\/bdi\/) er det foreslĂ„tt nye parametere strict_limit, min_bytes, max_bytes, min_ratio_fine og max_ratio_fine.
    • I filsystemet F2FS er det implementert en ioctl-operasjon for atomisk erstatning, som gjĂžr det mulig Ă„ skrive data til en fil innenfor en enkelt atomisk operasjon. F2FS har ogsĂ„ fĂ„tt en blokkeringscache for utvidelser, som hjelper med Ă„ identifisere aktivt brukte data eller data som ikke har vĂŠrt brukt pĂ„ lenge.
    • I FS ext4 er det bare utfĂžrt feilrettinger.
    • I filsystemet ntfs3 er det foreslĂ„tt flere nye monteringsalternativer: «nocase» for hĂ„ndtering av store og smĂ„ bokstaver i filnavn og kataloger; windows_name for Ă„ forhindre oppretting av filnavn som inneholder tegn som er ugyldige for Windows OS; hide_dot_files for Ă„ hĂ„ndtere tildelingen av skjulte filmerker for filer som begynner med punktum.
    • I filsystemet Squashfs er det implementert en monteringsoppsjon «threads=», som gjĂžr det mulig Ă„ bestemme antall trĂ„der for parallellisering av dekomprimeringsoperasjoner. I Squashfs har det ogsĂ„ blitt mulig Ă„ kartlegge brukeridentifikatorer for monterte filsystemer, brukt for Ă„ knytte filer fra en bestemt bruker pĂ„ et montert eksternt partisjon til en annen bruker i det nĂ„vĂŠrende systemet.
    • Implementeringen av POSIX tilgangskontrollister (POSIX ACL) er omarbeidet. I den nye implementeringen er arkitekturproblemer lĂžst, vedlikehold av kodebasen er forenklet, og tryggere datatyper er brukt.
    • I fscrypt-subsystemet, som benyttes for transparent kryptering av filer og kataloger, er det lagt til stĂžtte for krypteringsalgoritmen SM4 (kinesisk standard GB\/T 32907-2016).
    • Muligheten for Ă„ bygge kjerner uten stĂžtte for NFSv2 er tilgjengelig (i fremtiden planlegges det Ă„ avvikle NFSv2-stĂžtte helt).
    • Tilgangskontrollsystemet for NVMe-enheter er endret. Det er nĂ„ gitt mulighet for lesing og skriving til NVMe-enheten om skriverprosessen har tilgang til en spesifikk enhetsfil (tidligere mĂ„tte prosessen ha CAP_SYS_ADMIN-rettigheter).
    • Pakke-driveren for CD/DVD som ble erklĂŠrt utdatert i 2016, er fjernet.
  • Virtualisering og sikkerhet
    • En ny metode for beskyttelse mot sĂ„rbarheten Retbleed i Intel og AMD CPU-er er implementert, som bruker sporingsdybde av anrop, noe som ikke bremser ytelsen like mye som den tidligere beskyttelsen mot Retbleed. for Ă„ aktivere den nye modusen er det foreslĂ„tt et kjernens kommandolinjeargument «retbleed=stuff».
    • Det er lagt til en hybrid mekanisme for beskyttelse av kommandoeflyt FineIBT, som kombinerer bruken av Intels IBT (Indirect Branch Tracking) maskinvareinstruksjoner og programvarebeskyttelse kCFI (kernel Control Flow Integrity) for Ă„ blokkere brudd pĂ„ den normale rekkefĂžlgen av utfĂžrelse (control flow) som fĂžlge av utnyttelser som endrer pekere i minnet. FineIBT tillater utfĂžrelse via indirekte forgrening kun nĂ„r det er en overgang til instrukser ENDBR, som plasseres i begynnelsen av funksjonen. I tillegg, lignende til kCFI-mekanismen, vil det bli utfĂžrt en hash-sjekk for Ă„ sikre at pekerne forblir uforandret.
    • Det er lagt til begrensninger for Ă„ blokkere angrep som manipulerer genereringen av «oops»-tilstander, etter hvilke problematiske oppgaver avsluttes og tilstanden gjenopprettes uten Ă„ stoppe systemdriften. Ved et meget stort antall anrop til «oops»-tilstanden oppstĂ„r det en overflyt i referanseteller (refcount), som kan utnytte sĂ„rbarheter forĂ„rsaket av dereferering av NULL-pekerne. For Ă„ beskytte mot slike angrep, er det lagt til en grense i kjernen for maksimum antall «oops»-utlĂžsninger, etter hvilken kjernen vil initiere en overgang til «panic»-tilstand med pĂ„fĂžlgende omstart, noe som gjĂžr det umulig Ă„ nĂ„ antall iterasjoner som er nĂždvendig for Ă„ overflyte refcount. Som standard er grensen satt til 10 000 «oops», men den kan endres via parameteren oops_limit.
    • Konfigurasjonsparameteren LEGACY_TIOCSTI og sysctl legacy_tiocsti er lagt til for Ă„ deaktivere muligheten for Ă„ skrive data til terminalen ved hjelp av ioctl TIOCSTI, ettersom denne funksjonaliteten kan brukes til Ă„ sette inn vilkĂ„rlige symboler i terminalens inndata-buffer og simulere brukerinngang.
    • En ny type interne strukturer, encoded_page, er foreslĂ„tt, der de lavere bitene av pekerens adresse brukes til Ă„ lagre tilleggsinformasjon som brukes for Ă„ beskytte mot utilsiktet dereferering av pekeren (ved reell behov for dereferering mĂ„ disse tilleggbitene fĂžrst ryddes).
    • PĂ„ ARM64-plattformen er det gitt mulighet for Ă„ aktivere og deaktivere den programvarebaserte implementeringen av Shadow Stack-mekanismen under oppstart, som brukes for Ă„ beskytte mot overskriving av returadressen fra funksjonen ved buffer-overflyt (beskyttelsens essens ligger i Ă„ lagre returadressen i en egen «skygge»-stack etter at kontrollen er overfĂžrt til funksjonen, og hente denne adressen fĂžr man gĂ„r ut av funksjonen). StĂžtte for bĂ„de programvare- og maskinvareimplementering av Shadow Stack i Ă©n og samme kjerne gjĂžr det mulig Ă„ bruke Ă©n kjerne pĂ„ forskjellige ARM-systemer, uavhengig av stĂžtte for instruksjoner for pekerauthentisering. Aktivering av programvareimplementeringen skjer ved Ă„ erstatte nĂždvendige instruksjoner i koden under oppstart.
    • StĂžtte for bruk av den asynkrone utgangsvarslingen (asynchronous exit notification) pĂ„ Intel-prosessorer er lagt til, noe som gjĂžr det mulig Ă„ oppdage single-step angrep pĂ„ kode som kjĂžres i SGX-enklaver.
    • Et sett med operasjoner er foreslĂ„tt for Ă„ la hypervisoren stĂžtte forespĂžrslene fra Intel TDX (Trusted Domain Extensions) gjeste-systemene.
    • Kjernebyggeinnstillingene RANDOM_TRUST_BOOTLOADER og RANDOM_TRUST_CPU er fjernet, og de tilsvarende kommandolinjealternativene random.trust_bootloader og random.trust_cpu bĂžr brukes i stedet.
    • Flagget LANDLOCK_ACCESS_FS_TRUNCATE, som gir mulighet for Ă„ kontrollere utfĂžrelsen av filtrimmeoperasjoner, er lagt til i Landlock-mekanismen, som begrenser samhandlingen til en gruppe prosesser med det ytre miljĂž.
  • Nettverks subsystem
    • StĂžtte for PLB (Protective Load Balancing) er lagt til for IPv6, en mekanisme for lastbalansering mellom nettverkslenker, som har som mĂ„l Ă„ redusere overbelastningspunkter pĂ„ datasenterbrytere. Ved Ă„ endre IPv6 Flow Label, endrer PLB tilfeldigvis ruter for pakker for Ă„ jevne ut lasten pĂ„ bryterporter. For Ă„ redusere pakkerekkefĂžlgen utfĂžres denne operasjonen om mulig etter perioder med inaktivitet (idle). Bruken av PLB i Google-datasentre har redusert ubalansen i lasten pĂ„ bryterporter med gjennomsnittlig 60%, redusert pakketap med 33%, og senket forsinkelsene med 20%.
    • En driver for MediaTek-enheter med stĂžtte for Wi-Fi 7 (802.11be) er lagt til.
    • StĂžtte for 800-gbit-lenker er lagt til.
    • Muligheten til Ă„ omdĂžpe nettverksgrensesnitt i sanntid, uten Ă„ stoppe driften, er lagt til.
    • Loggmeldinger om SYN-flooding har fĂ„tt tillegg av IP-adressen pakken kom fra.
    • For UDP er det mulig Ă„ bruke separate hash-tabeller for forskjellige nettverksnavnerom.
    • StĂžtte for MAB (MAC Authentication Bypass) autentiseringsmetoden er implementert for nettverksbroer.
    • StĂžtte for sokkelmodus SO_MARK for Ă„ feste trafikksfilter basert pĂ„ fwmark, er implementert for CAN-protokollen (CAN_RAW).
    • En ny parameter 'bitmask' er implementert i ipset, som tillater Ă„ angi en maske basert pĂ„ vilkĂ„rlige biter i IP-adressen (for eksempel 'ipset create set1 hash:ip bitmask 255.128.255.0').
    • StĂžtte for behandling av indre (inner) overskrifter som gĂ„r innen tunnellerte pakker er lagt til i nf_tables.
  • Utstyr
    • Et 'accel'-subsystem med implementering av en ramme for beregningsakseleratorer, som kan leveres bĂ„de som separate ASIC-er og som IP-blokker inne i SoC og GPU, er lagt til. Hovedsakelig er slike akseleratorer rettet mot Ă„ akselerere lĂžsningen av oppgaver for maskinlĂŠring.
    • Driveren amdgpu nĂ„ inkludert stĂžtte for IP-komponentene GC, PSP, SMU og NBIO. For ARM64-systemer er det lagt til stĂžtte for DCN (Display Core Next). Implementeringen av sikker skjermutgang er overfĂžrt fra Ă„ bruke DCN10 til DCN21, og kan nĂ„ brukes ved tilkobling av flere skjermer.
    • I driveren i915 (Intel) har stĂžtten for diskrete Intel Arc-grafikkort (DG2/Alchemist) vĂŠrt stabilisert.
    • I driveren Nouveau er stĂžtte for GPU NVIDIA GA102 (RTX 30) basert pĂ„ Ampere-arkitekturen implementert. For kort nva3 (GT215) er muligheten for Ă„ kontrollere bakgrunnsbelysning lagt til.
    • StĂžtte for trĂ„dlĂžse adaptere basert pĂ„ Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) og MediaTek MT7996, Bluetooth-grensesnitt Broadcom BCM4377/4378/4387, samt Ethernet-kontrollerne Motorcomm yt8521, NVIDIA Tegra GE, er lagt til.
    • StĂžtte for ASoC (ALSA System on Chip) for innebygde lydbrikker HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588 er lagt til. StĂžtte for lydgrensesnittet Focusrite Saffire Pro 40 er ogsĂ„ inkludert. Den lydkodek Realtek RT1318 er lagt til.
    • StĂžtte for smarttelefoner og nettbrett fra Sony (Xperia 10 IV, 5 IV, X og X compact), OnePlus One, 3, 3T og Nord N100, Xiaomi Poco F1 og Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1 er lagt til.
    • StĂžtte for ARM SoC og Apple T6000 (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 er lagt til.

Samtidig har den latinamerikanske Free Software Foundation utviklet en helt fri versjon av kjerne 6.2 — Linux-libre 6.2-gnu, renset for elementer fra firmwares og drivere som inneholder ikke-frie komponenter eller deler av kode hvis bruksomrĂ„de er begrenset av produsenten. I denne utgivelsen har det vĂŠrt rensing av nye blobber i nouveau-driveren. Lasting av blobber i mt7622, mt7996 wifi og bcm4377 bluetooth-drivere er deaktivert. Rensing av blobber i dts-filer for Aarch64-arkitektur er utfĂžrt. Koden for rensing av blobber i ulike drivere og subsystemer er oppdatert. Rensingen av driveren s5k4ecgx er stoppet, da den er fjernet fra kjernen.

Kilde: opennet.ru

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster