Lansering av Linux-kjerne 6.15

Etter to måneders utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 6.15. Blant de mest bemerkelsesverdige endringene er: revisjonsmekanismen i Landlock, minnekartleggingens fastlåste modus, fwctl underrutene, Nova-driveren for NVIDIA GPU, implementering av vertssystemet for Hyper-V hypervisor, støtte for zonerte lagringsenheter i XFS, optimalisering av nettverksunderlaget, scrub-kontroll i Bcachefs, og muligheten for kontroll over operasjoner via io_uring.

Den nye versjonen har mottatt 15945 feilrettinger fra 2154 utviklere, med en patchstørrelse på 59 MB (endringene berørte 13596 filer, 739608 linjer kode ble lagt til, og 312168 linjer ble fjernet). I forrige utgave var det 12115 feilrettinger fra 1984 utviklere, og patchstørrelsen var 39 MB. Omtrent 41% av all endringene presentert i 6.15 er relatert til enhetsdrivere, ca. 16% av endringene gjelder oppdatering av kode spesifikk for maskinvarearkitekturer, 13% angår nettverksstakken, 5% er relatert til filsystemer, og 4% til interne kjernesystemer.

Hovednyhetene i kjernen 6.15:

  • Disk subsystem, I/O og filsystemer
    • Fanotify-mekanismen har fått muligheten til å spore hendelser ved montering og avmontering.
    • XFS har fått støtte for zonerte lagringsenheter (inndeling i soner av blokker eller sektorer, der det kun er tillatt med sekvensiell datatilføring med oppdatering av hele blokkgjengen). En rwf_dontcache-flag er lagt til for å deaktivere caching ved skriving. Muligheten for atomisk skriving av flere datablokker samtidig er implementert.
    • I Btrfs er det mulig å angi negative komprimeringsnivåer med zstd (fra -15 til -1, for eksempel «compress=zstd:-5») ved montering, noe som gir høyere hastighet på bekostning av redusert kompresjonseffektivitet. Filbane-caching er forbedret (i testen økte hastigheten for «send»-operasjonen med 30%). Støtte for blokker på 2Kb er lagt til.
    • I EXT4 er ytelsen for journaling med et veldig stort antall tilbakekalte oppføringer forbedret (last som er typisk for partisjoner under FS Lustre). Det er implementert en lineær søkefunksjon for «dentry»-oppføringer (intern representasjon av katalogelementer), som løser tilgangsproblemer for enkelte filer i modusen uten hensyn til tegnsetting. Funksjonen for montering «errors=remount-ro» har fått oppsett. Robustheten for behandling av skadede filsystemer er forbedret.
    • I F2FS er det implementert ioctl for å hente informasjon om prioriteten til I/O-operasjonen for en spesifisert fil. Det er utført arbeid med å gå over til bruk av minneside-foliantene (page folios).
    • I Bcachefs er det lagt til en «scrub»-modus, der korrektheten av lesing av alle data og metadata fra filsystemet blir sjekket. Hvis det oppdages feil, startes prosedyren for gjenoppretting. Bcachefs har også fått støtte for filsystemer der blokkstørrelsen er større enn størrelsen på minnesiden. Formatet for diskstrukturene i Bcachefs er stabilisert (fremtidige endringer i formatet vil bli implementert i form av valgfrie tillegg).
    • I EROFS er det lagt til støtte for 48-bits adressering av blokker.
    • I FUSE-subsystemet er sysctl default_request_timeout og max_request_timeout implementert for å angi tidsavbrudd for utførelse av forespørselen, noe som gjør det mulig å overvåke henginger i FUSE-komponenter som kjører i brukerrommet. Maksimal størrelse på filnavn i FUSE er økt til 1024 tegn.
    • Det er lagt til en mulighet i systemkallet statmount() for å hente informasjon om mapping av brukeridentifikatorer for monterte filsystemer, brukt til å matche filer eid av en spesifikk bruker på en montert fremmed partisjon med en annen bruker i det nåværende systemet.
    • Det er mulighet for å opprette et monteringspunkt med en annen mapping av brukeridentifikatorer enn den for den opprinnelige monterte partisjonen.
    • Det er gjort endringer i API-en for montasjehåndtering som forenkler oppbyggingen av komplekse filsystemhierarkier uten å avsløre individuelle deler av filsystemene som må holdes skjult.
    • Det er lagt til støtte for maskinvarebeskyttelsesenheter for krypteringsnøkler i subsystemet for block devices.
    • I SMB-filsystemet er alternativet is_network_name_deleted implementert, og smbz_server_kerberos5-modus er aktivert som standard.
    • For OverlayFS er alternativet for montering «override_creds» lagt til, som angir at tilgang til de nedre nivåene i lagringssystemet vil bruke legitimasjonen til den kallende brukeren, snarere enn den som utførte monteringen. Denne endringen gjør for eksempel at det ved montering av OverlayFS kan kreves en bruker med CAP_SYS_ADMIN-rettigheter, men at filsystemet kan brukes med legitimasjon uten denne privilegien.
    • I exFAT er filfjerningene akselerert. I stedet for å sende 'discard'-forespørslene én etter én for hver frigjort kluster av den slettede filen, grupperer nå driveren forespørslene. I en utført test ble tid for å slette en fil på 80 GB redusert fra 286 sekunder til 1.6 sekunder.
    • Alle pseudo-FS samt EXT2 FS er blitt oppdatert for å bruke det nye API-et for montering av partisjoner.
    • Støtten for filsystemene SYSV (SystemV/386, Xenix og Coherent) er fjernet, da den fra 2023 er merket som foreldet (orphaned).
  • Minne og systemtjenester
    • Den nødvendige minimumsversjonen av GCC for å bygge kjerne er hevet til 8.1, og Clang til 15.0.0.
    • Fwctl (Firmware Control) under-systemet er lagt til, som gir API for sikker administrering av fastvare og kjøring av håndterere på fastvare-siden fra brukerrummet. Det er utviklet drivere basert på fwctl for CXL-enheter (Compute Express Link), Ethernet-adaptere fra Mellanox ConnectX (mlx5) og AMD/Pensando tjenestekort.
    • Mulighetene til pidfd-mekanismen er utvidet, som lar bruk av identifikatorer knyttet til spesifikke prosesser og som ikke kan tildeles på nytt, i motsetning til pid. Det gis mulighet for å hente informasjon om prosessens avslutningsstatus, identifisert gjennom pidfd etter at forelderen har fått bekreftelse på at den underordnede prosessen er avsluttet (reaped) og ressursene er frigitt. En PIDFD_SELF-flagg er lagt til i systemanropene, som lar prosessen referere til seg selv.
    • For RISC-V-arkitekturen er det implementert støtte for utvidelsene BFloat16, Zaamo (atomiske minneoperasjoner), Zalrsc (Load-Reserved/Store-conditional) og ZBKB (bitoperasjoner for kryptografi).
    • Ved sporing er det mulig å lagre argumentene til de påkallte funksjonene og vise dem i sporingsloggene.
    • Systemet for asynkron inn-/utgang io_uring har fått støtte for å lese informasjon om hendelser fra epoll. Bruken av io_uring for å håndtere hendelser fra epoll reduserer antallet kontekstavbrytelser og gir muligheten til å håndtere flere epoll-hendelser samtidig.
    • I eBPF-underdelen er verificeringen af programmer med løkker forbedret. Nye instruktioner som «timed_may_goto», «load-acquire» og «store-release» er blevet tilføjet. Der er mulighed for at ændre udvidede filattributter fra BPF-programmer. Funktionen try_alloc_pages() er blevet tilføjet, som er beregnet til at allokere hukommelse under høj sandsynlighed for operationens fiasko (ved kørsel af BPF-programmer i begrænsede kontekster).

      Der er implementeret en ny låsemekanisme — rqspinlock (Resilient Queued Spin Lock), der under kørsel identificerer situationer, der fører til deadlocks. Den nye mekanisme muliggør indlæsning af BPF-programmer, hvor verificeringen ikke garanterede korrekt funktion med låse.

    • Pålideligheden af allokeringen af store hukommelsessider (huge-page) er væsentligt forbedret.
    • Beregningshastigheden for CRC64-tjekksummer på x86-systemer er blevet betydeligt forbedret. Bl.a. er nye vektor-instruktioner fra AVX-512-sættet blevet anvendt til at fremskynde processen. I nogle situationer er ydeevnen steget med op til 100 gange.
    • Overførslen af ændringer fra Rust-for-Linux-grenen fortsætter, hvilket vedrører brugen af Rust som det sekundære sprog til udvikling af drivere og kernelmoduler (Rust-support er ikke aktiv som standard og medfører ikke, at Rust bliver en obligatorisk bygning afhængighed for kernen). Der er blevet mulighed for at bruge makroen «#[kunit_tests()]» i kernelkoden til at køre unit-tests. Support for ARMv7-arkitekturen er blevet tilføjet. Der er implementeret moduler dma og hrtimer med Rust-bindings til DMA (tilføjet af Linus uden om vedligeholderen, som derefter trak sig tilbage fra sin stilling) og høj-præcise timere. Modulerne ‘list’, ‘str’, ‘sync’, ‘error’ og ‘alloc’ er blevet udvidet. Support for den nye syntaks ‘&raw’ (raw_ref_op) er tilføjet.
    • Der er tilføjet mulighed for profilering af latenser i perf-underdelen ved brug af oplysninger fra opgaveplanlæggeren.
    • Der er tilføjet en kernel-kommandolinjeparameter «traceoff_after_boot», der deaktiverer sporing efter at kernen er blevet indlæst og init-processen er startet. Parameteren kan bruges til at diagnosticere problemer relateret til indlæsningen, og sikrer, at de sporedatasamlinger, der er indsamlet under indlæsningen, ikke bliver overskrevet.
    • Støtte for 32-bit x86-systemer med mer enn 8 CPU-er og 4 GB RAM er avsluttet. Slik maskinvare har lenge vært utgått, og systemer som krever slike ressurser har blitt overført til 64-bit CPU-er.
    • Endringer er gjort i implementeringen av POSIX-timere, som gjør at CRIU-verktøyet (Checkpoint/Restore in Userspace) kan lagre og gjenopprette ID-er for timere.
  • Virtualisering og sikkerhet
    • Det er lagt til muligheten for å bruke Linux som rotmiljø (Dom0, rotpartisjon) for Hyper-V-hypervisoren (Microsoft Hypervisor). Vertsmiljøet har ansvar for å administrere hypervisoren, organisere oppstart av gjestesystemer, tildele ressurser og sikre interaksjon virtual machines med maskinvare. Administrasjon av Hyper-V-hypervisoren i Linux skjer gjennom enheten /dev/mshv.
    • Landlock-modulen, som gir ikke-privilegerte programmer verktøy for å begrense bruken av Linux-kjernens objekter (filhierarkier, nettverks-sokler, ioctl osv.), har fått en revisjonsmekanisme. Revisjonen gjør det mulig å vurdere årsakene til tilgangsblokker som skjer ved bruk av Landlock, og til å forstå når og hvilken operasjon som ble blokkert, hvorfor blokken ble utført og hvilket regelverk som ble aktivert.
    • Det er lagt til muligheten for implementering av håndterere i LSM-moduler (Linux Security Modules) som kontrollerer tilgang til asynkrone input/output-operasjoner via io_uring og som kan blokkere bruken av io_uring for å omgå tilgangsbegrensninger til systemanrop. En slik håndterer er implementert i LSM-modulen SELinux.
    • I SELinux er det mulig å anvende policyer på alle typer data som lastes opp av kjernen, inkludert firmwarebilder, sikkerhetspolicyer og sertifikater.
    • En låsemode (seal) for enkelte minnekartleggingsoperasjoner som utføres av kjernen i prosessens adresserom, er lagt til. Låsing konverterer kartleggingen til skrivebeskyttet modus og tillater ikke endring i tilfelle utnyttelse av sårbarheter. Dette gjelder kartlegging av vDSO, vsyscall, vvar, sigpage og uprobes. Modusen er som standard deaktivert, da det kan forstyrre funksjonen til enkelte applikasjoner. For å aktivere dette er det lagt til en samlesetting CONFIG_MSEAL_SYSTEM_MAPPINGS.
  • Nettverks subsystem
    • Arbeidet med å fjerne nettverksstakken fra den globale låsen RTNL (rtnl_lock) fortsetter, og den omgjøres til låser knyttet til separate nettverksnavnerom.
    • Den innledende muligheten for å motta nettverkspakker via io_uring er lagt til, med innholdskopiering direkte til programminnet i brukerens rom uten mellombuffring (zero-copy). I utførte tester tillot endringen behandling av trafikk gjennom en 200 gigabit kanal ved hjelp av ett CPU-kjerne.
    • Sysctl tcp_rto_max_ms og TCP-socket-alternativet TCP_RTO_MAX_MS er implementert, som lar deg angi maksimal tid mellom forsøkene på å overføre pakker på nytt.
    • En serie callback-funksjoner for å få informasjon om tiden fra forskjellige steder i nettverksstakken er lagt til BPF, som kan brukes til å diagnostisere problemer med nettverksforsinkelse.
    • Ytelsesoptimaliseringer for nettverksoperasjoner er lagt til:
      • Optimaliseringen GRO (Generic Receive Offload), som kombinerer flere små pakker til én stor, er nå aktivert ved omstilling av pakkebehandling til en annen CPU (for lastbalansering) når man bruker XDP (eXpress Data Path)-systemet, som tillater pakkeprosessering på nivået av nettverksdriveren før de sendes til nettverksstakken. Ytelsesforbedringen av TCP-strømbehandling ved bruk av optimaliseringen kan nå opp til det dobbelte.
      • Under tung belastning er ytelsen til funksjonen connect() økt med opptil det dobbelte ved å erstatte spin-lock med RCU (Read-Copy-Update) synkroniseringsmekanismen ved søk etter poster med informasjon om tilkoblingsparter (kilde og mål og porter). I tillegg er det gjort en optimalisering av hashing, som sikrer en ytterligere ytelsesforbedring på 229%. IP-adresser Implementeringen av MPTCP (Multipath TCP), en utvidelse av TCP-protokollen for å organisere levering av pakker samtidig via flere ruter gjennom forskjellige nettverksgrensesnitt koblet til ulike IP-adresser, har blitt akselerert. MPTCP i enkeltstrømmode er akselerert med 29%.
      • I netfilter, når det er en sokkel, er søket etter ruter i FIB (Forwarding Information Base) stoppet. Takket være denne optimaliseringen har ytelsen økt med 20%.
      • Ytelsen til UDP under flom (flood) har økt med 10% ved å utelate unødvendige operasjoner med strukturen sk_tsflags ved mottak av pakker.
      • Ytelsen til UDP under flomforhold (flood) er økt med 10% ved å utelukke unødvendige operasjoner med strukturen sk_tsflags ved mottak av pakker.
    • En driver med implementeringen av MCTP-over-USB-protokollen er lagt til.
  • Utstyr
    • Den innledende implementeringen av Nova-driveren for NVIDIA GPU-er, utstyrt med GSP-fastvare som brukes fra NVIDIA GeForce RTX 2000-serien basert på Turing-mikroarkitektur, er vedtatt i kjernen. Driveren er skrevet i Rust. I den første fasen er kun grunnstrukturen nova-core lagt til, som består av omtrent 400 linjer med kode og implementerer et grunnleggende nivå av abstraksjoner over programgrensesnittene til GSP-fastvaren. I neste fase planlegges det å inkludere DRM-driveren nova-drm (Direct Rendering Manager) i kjernen for interaksjon med GPU fra brukerrom, samt en VFIO-driver med en vGPU-manager, som muliggjør bruk av virtuelle NVIDIA GPU-er i virtualiseringssystemer.
    • Arbeidet med drm-driveren (Direct Rendering Manager) Xe for GPU-er basert på Intel Xe-arkitekturen, som brukes i Intel Arc-serien av grafikkort og integrert grafikk som startet med Tiger Lake-prosessorer, er videreført. Støtte for SVM (Shared Virtual Memory), en komponent av DRM-rammeverket som styrer delt minne brukt av både CPU og GPU, er lagt til.
    • Identifikatorer for nye GPU-er er lagt til i i915-driveren.
    • GSP RPC i Nouveau-driveren er omarbeidet og drm_slave_encoder-grensesnittet er integrert.
    • Støtte for DCN36 (Display Core Next)-arkitekturen er implementert i AMDGPU-driveren. Muligheten for å angi egne lyskurver for justering av skjermens lysstyrke er lagt til.
    • Støtte for Qualcomm Adreno 623 GPU er lagt til i adreno-driveren.
    • Støtte for Apple Touch Bar berøringspaneler er lagt til.
    • Støtte for den andre versjonen av eUSB2-utvidelsen (eUSB2V2 - Embedded USB2 Version 2.0) er lagt til, noe som gjør det mulig å redusere strømspenningen (ned til 1.2 volt) og øke ytelsen til USB 2.0. Dataoverføringshastigheten i eUSB2V2 kan nå opptil 4.8 Gbps, som er 10 ganger raskere enn de vanlige 480 Mbps typiske for USB 2.0. eUSB2V2 vil tillate laptopprodusenter å utstyre enhetene med høyoppløste webkameraer, samtidig som de fortsatt bruker bussen Embedded USB2 for tilkobling.
    • Støtte for Intel Killer E5000 (RTL8126) Ethernet-adaptere er lagt til.
    • Støtte for skjermpanelene Visionox RM692E5, Rockchip w552793dba-v10, kingdisplay-kd110n11-51ie og starry-2082109qfh040022-50e er lagt til.
    • En driver for Samsung Galaxy Book-laptoper er lagt til.
    • Støtte for lydsystemene Presonus Studio 1824c, Jabra Evolve 65 er lagt til. Støtte for DSP-moduler AMD ACP 7.x, AWINC WM88166, Everest ES8388, Intel AVS PEAKVOL og GAIN er også lagt til. Støtten for lyd på ASUS, HP og Lenovo-laptoper er forbedret.
    • Støtte for ARM-plattformer, SoC og enheter er lagt til: Arm Morello, AMD (Xilinx) Versal NET, Google Pixel Pro 6, NetCube Kumquat, MYIR Remi Pi, Huawei Matebook E Go, Milk-V Jupiter ST STM32MP2, Mediatek MT8370, Apple T2, Skov (i.MX8MP), EVK (i.MX95), Rockchip RK35xx, Allwinner A523, og 11 Toradex-plattformer basert på i.MX6.

Samtidig har den latinamerikanske Stiftelsen for fri programvare utviklet en variant av den helt frie kjernen 6.15 – Linux-libre 6.15-gnu, som er renset for elementer av fastvare og drivere som inneholder ikke-frie komponenter eller kodebiter hvis bruksområde er begrenset av produsenten. I utgivelsen 6.15 er opplasting av blobber i driverne nova, Qualcomm iris v4l2, Airoha NPU, Tehuti Networks TN40xx 10G ethernet, Realtek 8814A wifi, Apple Silicon SoC berøringsskjerm, Renesas UFS og aw88166 lyd gjort ineffektiv. Rensingen av Spider 1Gb ethernet-driveren, som ble fjernet fra kjernen, er opphørt. Lenker til tiviserte binære filer er fjernet. Blokkering av opplasting av blobber fra Rust-kode er implementert.

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