Utgivelsen av Linux-kjernen 7.1

Etter to måneder med utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 7.1. Blant de mest merkbare endringene er: ny ntfsplus-driver, første fase av slutt på støtte for CPU i486, fjerning av gamle Ethernet-adaptere, fjerning av ISDN- og AX.25-protokoller, standard aktivering av Intel FRED-mekanismen, støtte for BPF-håndterere i io_uring, optimalisering av sideinnlasting, støtte for underplanleggere i sched_ext, inn- og utdata i zero-copy-modus i ublk-driveren, ioctl-operasjon «shutdown» i Btrfs, dynamisk skifting av ytelsestilstand i amd-pstate-driveren, støtte for xattr for Unix-sokker.

I den nye versjonen ble 17275 feilrettinger fra 2589 utviklere inkludert,
patch-størrelsen er 57 MB (endringene berørte 13528 filer, 751785 linjer med kode ble lagt til, 405916 linjer ble fjernet). I forrige utgave var det 15624 feilrettinger fra 2477 utviklere, og patch-størrelsen var 56 MB. Omtrent 41 % av alle endringene i 7.1 er relatert til enhetsdrivere, omtrent 12 % av endringene gjelder oppdatering av kode spesifikk for maskinvarearkitekturer, 14 % har å gjøre med nettverksstakken, 5 % med filsystemer og 3 % med interne kjernundersystemer.

De viktigste nyhetene i kjernen 7.1 (1, 2, 3):

  • Disk subsystem, I/O og filsystemer
    • Det er tatt inn en ny implementering av NTFS-filsystemet - ntfsplus, basert på koden fra den klassiske ntfs-driveren som er fjernet fra kjernen. Den gamle driveren har blitt omarbeidet, utvidet med muligheten for dataskriving og tilpasset støtte for moderne funksjoner, som bruk av minnesider (folios) i stedet for buffer_head-strukturen. Den nye driveren har implementert utsettelse av blokkallokering, noe som har gjort det mulig å oppnå høy ytelse i skriveoperasjoner og redusert fragmentering. For buffrede skrive-/leseoperasjoner, direkte inn-/utdata, ekstent-mapping og side-/leseoperasjoner er iomap-biblioteket brukt. I iozone-testene viste ntfsplus-driveren seg å være 3-5 % raskere enn ntfs3 ved skriving i enkelttrådet modus og 35-110 % raskere ved bruk av 4 tråder. Lesehastigheten til ntfsplus og ntfs3 ligger omtrent på samme nivå. ntfs3-driveren forblir en del av kjernen og har fått feilrettinger og små forbedringer.
    • Støtte for generering og verifisering av T10-integritetsdata på filsystemnivå, i stedet for blokkdevice-nivå, er lagt til, noe som gir bedre ytelse i leseoperasjoner.
    • I blokkdevice-driveren ublk, som gjør det mulig å flytte spesifikk logikk til prosessen i brukerrommet, er støtte for input/output via delt minne uten datakopiering mellom buffere (zero-copy-modus) lagt til.
    • For selv-enkrypterende blokk-enheter SED-OPAL er ioctl-er for å kontrollere Single User-modus lagt til, og STACK_RESET-kommandoen er implementert.
    • I Btrfs er støtte for ioctl-operasjonen 'shutdown' erklært stabil, noe som gjør det mulig å sette FS i en tilstand der det gjøres et forsøk på å fullføre allerede igangsatte operasjoner, men blokkere alle nye operasjoner.
    • I exfat er muligheten for å reservere ledige områder via fallocate()-kallet implementert.
    • I CIFS-filsystemet er støtte for å opprette midlertidige filer med O_TMPFILE-flagget lagt til.
    • I systemanropet fsmount() er alternativet FSMOUNT_NAMESPACE lagt til, som oppretter et nytt rom for navngitte monteringspunkter for det monterte filsystemet. I systemanropene clone3() og unshare() er det lagt til flagg for å returnere det nye rommet for navngitte monteringspunkter, som inneholder bare den monterte tomme FS-stubben basert på nullfs og fs-dax-driveren med FS-grensesnittet til DAX-enheter (Direct Access).
    • I NFS-serveren er det lagt til beskyttelse mot angrep som retter seg mot filbeskrivelser, implementert gjennom signering av beskrivelser med kryptografisk signatur. Beskyttelsen aktiveres gjennom monteringsalternativet sign_fh.
    • En symbolsk driver fs-dax er lagt til, som gir et grensesnitt for interaksjon med DAX-enheter (Direct Access) som støtter bypass av sidenes cache. Det angitte grensesnittet er nødvendig for integrasjon i filsystemkjernen famfs, som er plassert i hovedminnet.
    • I Ceph-filsystemet er implementert innsamling av I/O-metrikker knyttet til delmenn.
  • Minne og systemtjenester
    • Den første serien av endringer for å avslutte støtten for i486-prosessorer er godkjent. Alternativene for bygging av kjernen med støtte for 486DX, 486SX og AMD ELAN-prosessorer (CONFIG_M486, CONFIG_M486SX og CONFIG_MELAN) er fjernet fra Kconfig, og kompilasjonsalternativer for i486-systemer (-march=i486) er utelatt fra Makefile. Koden for faktisk støtte av drift på i486-prosessorer er foreløpig beholdt i kjernen, men bygging for slike systemer krever nå patching av byggerfilene. Årsakene til fjerning av støtte for i486-prosessorer skyldes et ønske om å gjøre kjernen fri for komplisert kode som emulerer visse maskinvareoperasjoner, som CX8 (sammenlign og bytt 8 byte) og TSC (CPU-teller som brukes i oppgaveplanleggeren).
    • I amd-pstate-driveren, som brukes til å håndtere strømforbruket på systemer med AMD-prosessorer, er det implementert dynamisk bytte av ytelsesinnstillinger og endringer i strømstyringsadferden avhengig av om man jobber fra stasjonær strømkilde eller batteri. Når den er koblet til stasjonær strøm, aktiveres nå 'performance'-modus, mens 'balance_performance' aktiveres når den kjører på batteri.
    • Intel FRED (Flexible Return and Event Delivery)-mekanismen er nå aktivert som standard, og denne øker effektiviteten og påliteligheten av leveringen av informasjon om lavnivåhendelser. Økningen i ytelse og reduksjon av forsinkelse oppnås ved å returnere hendelser ved hjelp av prosessorinstruksjonen IRET i stedet for å sende hendelser via IDT (Interrupt Descriptor Table). Økt pålitelighet oppnås ved separat behandling av innkommende hendelser i kjernens og brukerens kontekst, beskyttelse mot innlagt NMI-kjøring, samt lagring av alle registerne relatert til unntak i den utvidede stakken.
    • Støtte for ytelsesovervåkningsenheter (PMU – Performance Monitoring Unit) som brukes i SoC NVIDIA Tegra410 er lagt til perf-subsystemet.
    • Utførelsen av futex-operasjoner på ARM-systemer er akselerert takket være bruken av Arm 9.6 LSUI-instruksjoner, som lar kjernen få tilgang til minnet til brukerrommet uten å måtte deaktivere PAN (Privileged Access Never)-beskyttelsesmodusen på forhånd.
    • På systemer med ARM-prosessorer er støtten for utvidelsen av MPAM (Memory System Resource Partitioning and Monitoring) forbedret, og muligheten for å bruke dette i brukermodus for ressursstyring via resctrl-mekanismen er lagt til. MPAM sørger for merking av hvert minnetilgang med en seksjonsidentifikator (PARTID, Partition ID) og en overvåkningsgruppeidentifikator (PMG, Monitoring Group ID). I tilknytning til PARTID kan ressursforbruk, som minnebåndbredde eller cache-størrelse, begrenses, slik at en gruppe oppgaver ikke tar alle ressursene. I overvåkningskonteksten kan kombinasjonen av PMG og PARTID brukes til å spore minneforbruk under bestemte typer belastning.
    • Muligheten til å bruke sanntidsmodus (PREEMPT_RT) på 32-bits ARM-prosessorer er lagt til. Tidligere var støtten for PREEMPT_RT kun tilgjengelig for arkitekturene x86 og x86-64, ARM64, RISC-V og LoongArch.
    • Nye flagg har blitt lagt til systemanropet clone3(): CLONE_NNP — nektelse av å motta nye privilegier i den opprettede prosessen; CLONE_AUTOREAP — automatisk avslutning av prosessen i stedet for å gjøre den om til en zombiprosess til den parent prosessen utfører wait()-funksjonen;
      CLONE_PIDFD_AUTOKILL — avslutning av barnprosessen hvis den tilknyttede pidfd-deskriptøren lukkes (for eksempel når foreldren avsluttes).
    • For hver kjernermodul er det lagt til en fil import_ns i katalogen /sys/module, som inneholder en liste over importerte symbolnavnrom (symbol namespace).
    • I systemet for asynkron I/O io_uring er det lagt til støtte for bruk av BPF-subsystemet for å lage håndterere. For eksempel kan hoveddistribusjonsløkken byttes ut med et BPF-program.
    • BPF-subsystemet har fått en oppgradering med analyser av bruk av stakken, noe som betydelig har akselerert verifiseringen av mange BPF-programmer.
    • For å optimalisere ytelsen er hrtimer (high resolution timer) subsystemet omskrevet. Oppgaveplanleggeren kan nå bruke høyoppløselige tidtakere uten å miste ytelse i stedet for mindre nøyaktige tidtakere.
    • Endringene fra Rust-for-Linux-grenen er fortsatt overført, knyttet til bruken av Rust som et sekundært språk for utviklingen av drivere og kjerne-moduler (Rust-støtte er ikke aktivert som standard, og fører ikke til at Rust inkluderes som en obligatorisk byggeavhengighet for kjernen). Kravene til Rust-versjon som kreves for å bygge kjernekomponenter er økt til versjon 1.85 (som leveres i Debian 13). En eksperimentell Kconfig-alternativ CONFIG_RUST_INLINE_HELPERS for å integrere C-makroer i Rust-kode under kompilering er lagt til (optimaliseringen økte ytelsen til null-blokkdriveren med 2 %). Makroen 'const_assert!' er lagt til. Kapasiteten til moduler 'sizes', 'clk', 'ptr', 'sync', 'error' er utvidet.
    • I SCHED_EXT-mekanismen, som lar BPF brukes til å lage CPU-planleggere, er det lagt til en tidlig mulighet for å lage nestede planleggere (sub-scheduler), som gjør det mulig å bruke en egen oppgaveplanlegger for hver cgroup.
    • Optimeringen av swap-underenheten er fortsatt. Den gamle swap_map-strukturen er fjernet og erstattet med en mekanisme kalt 'Swap Table'. Endringen har forbedret ytelsen og redusert minneforbruket i swap-underenheten.
    • I DAMON (Data Access MONitor) underenheten, som lar overvåke prosessens tilgang til data i RAM (for eksempel kan man finne ut hvilke minneområder prosessen har tilgang til, og hvilke minneområder som forblir ubenyttede), er det lagt til støtte for ulike algoritmer for automatisk tuning av kvoter.
    • I sporingsundersystemet er et konsept med eksterne ringbufferne implementert, som gjør det mulig å hente sporingsdata fra virtual machines. Muligheten er utnyttet i hypervisorer KVM og nVHE for å overføre sporingsdata fra gjestesystemet til vertssiden.
    • I RV (Runtime Verification) underenheten, som er designet for å verifisere korrekt drift av høyt pålitelige systemer, er det lagt til overvåkningskomponenter 'stall' for å spore oppgaver som er midlertidig stanset eller blokkert, og 'deadline' for å analysere oppgaveplanleggerens oppførsel.
  • Virtualisering og sikkerhet
    • Som standard er flagget PROC_MEM_FORCE_PTRACE aktivert, som tillater omgåelse av tilgangsrettighetene til prosessens minne via filen /proc/PID/mem, kun for prosesser som bruker systemkallet ptrace() for debugging.
    • En ny sett med hook-ar for LSM-moduler (Linux Security Module) er lagt til, noe som forenkler implementeringen av retningslinjer for stabelfilsystemer som overlayfs. I LSM er det også lagt til en hook for tilgangskontroll til Unix-sokler, som brukes i LSM-modulen Landlock for å tildele tilgangspolicies til Unix-sokler.
    • Det er lagt til støtte for algoritmene AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH og SM3 i den innebygde kryptobiblioteket lib/crypto, som tilbyr enklere og raskere funksjoner enn det tradisjonelle crypto API. Dokumentasjonen for lib/crypto er også lagt til.
    • Modus pKVM (Protected KVM) for streng isolasjon av anonymt minne ved hjelp av virtualiseringsutvidelser for AArch64-arkitekturen er implementert. I dette modus blir gjestememory-sider ekskludert fra vertssystemets tabell over virtuelle adresser.
    • Støtte for den femte versjonen av den virtuelle avbruddscontrolleren ARM (VGICv5 – ARM Virtual Generic Interrupt Controller v5) har blitt lagt til hypervisor KVM.
  • Nettverks subsystem
    • For unix-sokler opprettet av funksjonen socket() er det implementert støtte for utvidede filattributter (xattr) «user.*». Bruksområder inkluderer merking gjennom utvidede attributter til Unix-sokler som brukes for IPC Varlink, for å skille dem fra mengden for inspeksjon og feilsøking av IPC-arbeid ved hjelp av BPF-programmer. I systemd-journald er utvidede attributter ment brukt for å bestemme logformatet i tilknytning til sokkelen /dev/log.
    • Støtten for UDP-Lite-protokollen (RFC 3828), som tillater levering av pakker med feilaktig sjekksum med forventningen om at for eksempel delvis skadede lyd- og videodata kan gjenopprettes på codec-nivå, er fjernet. Protokollen ble fjernet da ingen benyttet seg av den.
    • Muligheten for å bygge IPv6-stakken som en kjerne-modul, som ikke ble brukt i praksis (IPv6 integreres enten i kjernen eller deaktiveres helt), er fjernet, men kompliserte vedlikeholdet. Ved bygging av IPv6 som en kjerne-modul (CONFIG_IPV6=m), må mange undersystemer legge til unyttige behandlere for å håndtere muligheten for å laste ut IPv6-modulen.
  • Utstyr
    • I AMDGPU-driveren er en ny skjermmotor (DC) for AMD APU-serien HD 7000 (Sea Islands, GCN 1.1) inkludert.
    • Nouveau-driveren har fått innledende støtte for GPU NVIDIA GA100 basert på mikroarkitekturen Ampere.
    • Arbeidet med drm-driveren (Direct Rendering Manager) Xe for GPU-er basert på Intel Xe-arkitekturen fortsetter, som brukes i grafikkort fra Intel-familien Arc og integrert grafikk, fra Tiger Lake-prosessorene. Støtte for den grafiske subsystemen i Intel Nova Lake-P prosessorene er lagt til. Gjennomførte rensbare bufferobjekter (Purgeable Buffer Objects).
    • Integrasjonen av Nova-driverkomponentene for NVIDIA GPU-er med GSP-faste oppdateringer har fortsatt, og gjelder fra NVIDIA GeForce RTX 2000-serien basert på Turing mikroarkitektur. Driveren er skrevet på Rust. Innledende støtte for GPU-er basert på Turing mikroarkitektur er lagt til.
    • DRM-driveren corebootdrm er lagt til for å vise grafikk via framebuffer av firmware basert på CoreBoot.
    • Støtte for lyd-ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP og WM8962 er lagt til. Forbedret støtte for lyd-enheter med USB-grensesnitt: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow,
      PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
    • Driveren yogafan er lagt til for å spore hastigheten til kjøleviftene på Lenovo Yoga, Legion og IdeaPad bærbare datamaskiner.
    • Støtte for ARM-plattformer, SoC og enheter er lagt til: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 og ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
    • Støtte for AHCI SATA- og PCIe-kontrollerne som ble brukt i SoC Baikal-T1 er fjernet, samt drivere for timer, minne, physmap, bus, hwmon, dwc og bt1-rom. Årsaken til fjerning er mangel på oppdateringer og ufullstendig integrering av komponentene fra Baikal-plattformen i kjernen, hvis produksjon i Russland ble avsluttet i november 2025.
    • 12 drivere for Ethernet-enheter med ISA og PCMCIA-grensesnitt som ble produsert før 2002 er fjernet, da det ikke var noen brukere av dem i driftsystemer. Også fra kjernen er
      ISDN-subsystemet, implementeringene av protokollene AX.25, CAIF og Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), driverne yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Radio), inport og logibm (busmouse) er ekskludert. Årsaken til fjerning er mangel på aktive vedlikeholdere, til tross for økning i antall feil oppdaget med syzbot og AI-verktøy, som ingen tar på seg å fikse, og all lasten av å løse alvorlige problemer faller på vedlikeholderne av de viktigste nettverksundersystemene i kjernen. Totalt er mer enn 140 000 linjer med kode fjernet.

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