Etter to måneders utvikling presenterte Linus Torvalds utgivelsen av Linux-kjerne 6.10. Blant de mest bemerkelsesverdige endringene er: ntsync-driveren med synkroniseringsprimitiver fra Windows NT, DRM Panic-komponentene for implementering av en analog til "den blå skjermen av døden", opphør av støtte for gamle Alpha CPU-er, muligheten for integritetsbekreftelse i FUSE-baserte FS, begrenset tilgang til ioctl gjennom Landlock-mekanismen, et subsystem for profilering av minneallokeringsoperasjoner, systemanropet mseal(), muligheten for kryptert datakommunikasjon med TPM-enheter, støtte for høyprioriterte arbeidskøer i dm-crypt, og panthor-driveren for tiende generasjon GPU Mali.
Den nye versjonen inkluderer 14564 feilrettinger fra 1989 utviklere, patch-størrelsen er 41 MB (endringene berørte 12509 filer, 547663 linjer med kode ble lagt til, og 312464 linjer ble fjernet). Den forrige utgivelsen hadde 15680 feilrettinger fra 2106 utviklere, med en patch-størrelse på 54 MB. Omtrent 41 % av endringene i 6.10 er relatert til enhetsdrivere, ca. 15 % av endringene er knyttet til oppdatering av maskinvare-arkitekturspesifikk kode, 13 % er relatert til nettverksstakken, 5 % til filsystemer, og 4 % til interne subsystemer i kjernen.
De viktigste nyhetene i kjerne 6.10:
- Disk subsystem, I/O og filsystemer
- Det har blitt lagt til en ny fcntl-operasjon F_DUPFD_QUERY, som gjør det mulig for prosessen å bestemme at to forskjellige filbeskrivere refererer til den samme filen. I motsetning til lignende funksjoner som tilbys av systemanropet kcmp(), avslører ikke F_DUPFD_QUERY unødvendig informasjon og fungerer på systemer der kcmp() er slått av.
- I FUSE-subsystemet, som brukes til implementering av filsystemer i brukerrommet, er det nå mulig å bruke fs-verity-mekanismen for å verifisere integriteten og ektheten av filer.
- I dm-crypt-modulen, som brukes til kryptering av blokk-enheter, er det lagt til en opsjon "high_priority" som lar deg bruke høyprioriterte arbeidskøer for å øke ytelsen på kraftige maskiner. servere. Som standard er modusen av deaktivert, da det kan føre til økte forsinkelser i utførelsen av oppgaver som ikke er relatert til kryptering, som lydbehandling, på vanlige PC-er.
- En bygget protokoll basert på netlink for styring av NFS-serveren i kjernen er lagt til. I brukerrommet er det utviklet et verktøy kalt nfsdctl basert på denne protokollen. Støtte for montering av NFS v2 er som standard deaktivert (støtten for NFS v2 i verktøyet mount.nfs ble fjernet allerede i 2021).
- I XFS-filsystemet er arbeidet med å implementere muligheten til å bruke verktøyet fsck for å kontrollere og rette opp avdekkede problemer i online-modus, uten å montere filsystemet, fortsatt i gang. ioctl XFS_IOC_EXCHANGE_RANGE er lagt til for atomisk bytte av byteområder mellom to filer.
- Btrfs har implementert støtte for å redusere (shrinker) ikke-bundne utvidede kart, noe som kan være nyttig for å redusere minneforbruket under forhold med lite minne i systemet. Koden for datakomprimering og funksjonen put_file_data() er oversatt til å bruke sidesjekker (page folios). Mekanismen for å låse utvidelser under bakover-skriveoperasjoner er omarbeidet.
- I Ext4-filsystemet er det lagt til støtte for ioctl FS_IOC_GETFSSYSFSPATH for å bestemme plasseringen av et spesifisert montert FS i hierarkiet /sys/fs.
- Filsystemene OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX og FREEVXFS er oversatt til å bruke det nye API-et for montering av partisjoner.
- I EROFS-filsystemet (Extendable Read-Only File System), som er ment for bruk på partisjoner tilgjengelig i skrivebeskyttet modus, er det lagt til støtte for komprimeringsalgoritmen Zstandard.
- I Bcachefs er det forberedt for å utføre fsck uten å montere partisjonen (online-sjekk). Det er lagt til endringer og rettelser for å forbedre driftsstabiliteten. Mulighet for oppdatering og tilbakestilling av filsystemformatet i "nochanges"-modus, som deaktiverer skriving og kun lagrer metadata i minnet, er implementert.
- I OverlayFS-filsystemet er det lagt til støtte for å opprette midlertidige filer ved å bruke alternativet O_TMPFILE.
- Støtten for mekanismen for begrensning av båndbredde for blokkenheter «CONFIG_BLK_DEV_THROTTLING_LOW» er avsluttet, som siden 2017 har vært status som eksperimentell, ikke fått praktisk utbredelse og kompliserer vedlikeholdet av blokkenhetssubsystemet.
- Minne og systemtjenester
- Legger til, men deaktivert under bygging, ntsync-driveren, som implementerer det symbolske enheten /dev/ntsync og et sett med synkroniseringsprimitive brukt i Windows NT-kjernen. Implementering av slike primitive på kjernens nivå kan betydelig forbedre ytelsen til Windows-spill som kjøres ved hjelp av Wine. Ytelsesforbedringen skyldes eliminering av overhead knyttet til bruk av RPC i brukerrommet. Opprettelse av en egen driver for Linux-kjernen skyldes utfordringene med korrekt implementering av NT-synkroniserings-API over eksisterende primitive i kjernen.
- Det ble lagt til et delsystem for profilering av minneallokeringsoperasjoner i Linux-kjernen, som gjør det mulig å oppdage minnelekkasjer i kjernen og forenkler optimalisering av minneforbruk. Delsystemet gir lave overhead, noe som gjør det mulig å bruke det ikke bare i debug-bygg av kjernen, men også på produksjonssystemer.
- En tidlig implementering av nødbehandleren i kjernen er lagt til — DRM Panic, som bruker DRM (Direct Rendering Manager) subsystemet for å vise en fargefull rapport i stil med «blå skjerm av død». I neste utgivelse er det planlagt å legge til muligheten for å vise logo og QR-kode på skjermen ved oppstått nødtilstand.
- Overføringen av endringer fra Rust-for-Linux-grenen fortsetter, relatert til bruken av Rust-språket som det andre språket for utvikling av drivere og kjerne-moduler (Rust-støtte er ikke aktiv som standard, og gjør ikke at Rust inkluderes som obligatorisk byggeavhengighet til kjernen). Overgangen til Rust 1.78 er gjennomført, som har tillatt bytte til bruken av standardbiblioteket alloc i stedet for egen avlegger. Abstraksjoner for arbeid med tid i kjernen er lagt til (innpakking over strukturen ktime_t). Støtte for bruk av kjernedeler på Rust-språket på RISC-V-arkitektur er lagt til.
- I BPF-programmene er det blitt lagt til muligheten for å bruke ventekøer (wait queue) i kjernen. Funksjonene bpf_preempt_disable og bpf_preempt_enable er lagt til, som gjør det mulig å opprette ikke-preemptible seksjoner med kode. BPF-programmer får tilgang til kjernens kryptografiske funksjoner (crypto). Støtte for JIT-kompilering av BPF-programmer på systemer med 32-biters prosessorer ARCv2 er implementert.
- For 32-biters ARM-systemer er det implementert støtte for å bygge kjernen med Clang-kompilatoren med aktivert CFI (Control Flow Integrity) beskyttelsesmodus, som blokkerer brudd på normal utførelsesordning (control flow) som følge av utnyttelser som endrer lagrede pekere til funksjoner i minnet.
- Muligheten for direkte refleksjon gjennom mmap() av ringbufferne for sporing er lagt til, som gjør det mulig å overføre innholdet til brukerområdet uten ekstra kopiering.
- Det er lagt til et systemanrop ‘mseal’ som lar prosesser sette en lås på endring av bestemte deler av sitt adresseområde. I praksis planlegges det nye systemanropet å bli brukt i nettleseren Chrome for å styrke sandkasseisolasjonen.
- For subarkitekturen x32, som gir en hybrid x86_64 ABI som tillater bruk av en 32-biters minneadressere modell på 64-biters systemer (prosessoren kjører i 64-biters modus, men bruker 32-biters pekere og aritmetiske operasjoner), er det lagt til støtte for Shadow Stack-mekanismen, som blokkerer mange utnyttelser ved å bruke maskinvaremuligheter fra Intel-prosessorer for å beskytte mot overskriving av returadressen fra funksjonen i tilfelle bufferoverløp i stakken.
- På systemer med ARM64-arkitektur er det i systemanropet userfaultfd(), som gir mulighet for å lage håndterere for sidefeil (page faults) i brukerområdet, implementert funksjoner relatert til beskyttelse mot skriving til minneområder og elementer i sidenotatstabellen.
- Koden for støtte av Alpha 21164 (EV5) prosessorer, og eldre serier, utgitt siden 1995, er fjernet. Vedlikehold av koden for disse prosessorene var blitt komplisert på grunn av mangel på mulighet for å få tilgang til minne på byte-nivå. Alpha var den første arkitekturen hvor Linux-kjernen ble portert, opprinnelig tilgjengelig kun for x86-systemer.
- Virtualisering og sikkerhet
- Støtte for kryptert datakommunikasjon med TPM-enheter (Trusted Platform Module) og verifikasjon av transaksjonsintegritet er lagt til.
- LSM-modulen Landlock, som begrenser interaksjonen til en gruppe prosesser med omgivelsene, har fått muligheten til å bruke regler for å begrense tilgangen til ioctl()-anrop.
- Det er foreslått en oppstartbar opsjon init_mlocked_on_free, som sikrer nullstilling av innholdet i minnet beskyttet mot utrulling til swap-partisjonen ved hjelp av mlock()-anropet, hvis dette minnet blir frigitt uten å bli ulåst ved munlock(). Bruk av denne opsjonen forhindrer at kryptografiske nøkler blir igjen i minnet i tilfelle et krasj av applikasjonen som arbeider med dem.
- I kryptosystemet er utførelsen av disk-krypteringsoperasjoner ved hjelp av AES-XTS-algoritmen akselerert på x86_64-systemer med Intel- og AMD-prosessorer som støtter VAES-, AVX2-, VPCLMULQDQ-, AVX10- eller AVX512-utvidelser.
- Muligheten for å samle statistikk om bruken av kjernens kryptosubsystem (CONFIG_CRYPTO_STATS) er fjernet. Denne muligheten ble ikke brukt i praksis og førte til betydelig ytelsestap samt skapte en merkbar ekstra belastning for de som vedlikeholdt systemet.
- Nettverks subsystem
- Ytelsen ved sending av data i zero-copy-modus er betydelig forbedret ved bruk av io_uring-systemet. Muligheten til å slå sammen ("bunde") flere bufre for sending og mottak av data er lagt til.
- Koden for søppelinnsamling, brukt ved sending av filbeskrivelser gjennom Unix-sokler ved bruk av SCM_RIGHTS-meldinger, er omskrevet. Endringen løser problemet med å akkumulere sykliske referansetellere.
- Muligheten for å sette filtre for PFCP (Packet Forwarding Control Protocol), som brukes i 4G og 5G-nettverk, er lagt til.
- Støtte for alternativet nettverksoker SO_PEEK_OFF er lagt til, som, på lik linje med det samme alternativet for Unix-sokker, lar deg bestemme forskyvningen av data i køen som brukes av systemanropet recv når flagget MSG_PEEK er spesifisert (markerer data som ulest og de vil bli levert på nytt ved neste kall til recv).
- Støtte for operasjonen IORING_CQE_F_SOCK_NONEMPTY er lagt til i io_uring-undersystemet, som lar deg fastslå om det er forespørsel om tilkobling som venter på behandling på en nettverksok.
- En implementering av PoE (Power over Ethernet)-teknologi er foreslått, basert på tidligere tilgjengelig kode for støtte av PoDL (Power over Data Line) og kompatibel med PoE-kontrollerne Microchip PD692x0 og TI TPS23881.
- For protokollene TCP, DCCP og MPTC er støtte for mekanismen rstreason lagt til, som lar deg fastslå årsaken til sending av RST-pakker (for eksempel NO_SOCKET).
- Utstyr
- Driveren panthor for tiende generasjon GPU Mali (G310, G510, G710) er inkludert, der teknologien CSF (Command Stream Frontend) brukes, og flytter noen funksjoner til fastvaren for å redusere belastningen på CPU og tilbyr en ny modell for organisering av arbeidet på GPU. Endringer for støtte av den nye driveren er også vedtatt i Mesa og inkludert i Gallium-driveren panfrost for GPU Mali.
- PCI-identifikatorene for de nye diskrete grafikkortene Intel Arc (DG2/Alchemist) er lagt til i driveren i915.
- Arbeidet med drm-driveren (Direct Rendering Manager) Xe for GPU basert på Intel Xe-arkitekturen, som brukes i Intel Arc-grafikkort og integrert grafikk, begynner med Tiger Lake-prosessorene. Støtte for CPU Arrow Lake H er lagt til. Implementeringen av støtte for Lunar Lake-prosessorer fortsetter. Innledende støtte for mekanismen SR-IOV (Single Root I/O Virtualization) er også lagt til.
- Støtte for SMU 14.0 (System Management Unit) er lagt til i AMDGPU-driveren. Muligheten for å bruke nye AMD GPU-er på systemer med RISC-V-arkitektur er også lagt til.
- En driver for akseleratoren for kryptografiske operasjoner Tegra Security Engine er lagt til, som kan brukes til å akselerere AES og forskjellige hash-algoritmer.
- Støtte for skjermpanelene LG SW43408, Innolux G121XCE-L01 LVDS, RK3326 GameForce Chi, Crystal Clear CMT430B19N00, POWERTIP PH128800T006-ZHC01, Startek KD050HDFIA020-C020A, Pixel 3a, Khadas TS050 V2, Raydium RM69380, BOE NT116WHM-N44, CMN N116BCA-EA1 og AUO B120XAN01.0 er lagt til.
- Støtte for lydsystemet på Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X og ASUS Zenbook 2024 HN7306 er lagt til. Støtte for eksterne lydkort som Vocaster One og Vocaster Two er også lagt til. Driveren for forsterkere NAU8325 fra Nuvoton Technology er lagt til.
- HID-Steam-driveren har nå støtte for IMU (Inertial Measurement Unit) på spillkontrolleren Steam Deck, som gjør det mulig å bruke en egen evdev-enhet for tilgang til data fra gyroskop og akselerometer.
- Endringer for å støtte ARM SoC Snapdragon X Elite, som bruker Qualcomm Oryon 12-kjerners CPU og Qualcomm Adreno GPU, er aktivert. Brikken er rettet mot bruk i bærbare datamaskiner og PC-er, og overgår mange prestasjonstester sammenlignet med Apple M3 og Intel Core Ultra 155H.
- Støtte for ARM-plattformer, SoC og enheter er lagt til: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 China, Motorola Moto G, RK3326 GameForce Chi, Anbernic RG35XX (Plus/H/2024), Airoha EN7581, Radxa ROCK 3C, ArmSom Sige7, Tanix TX1, Toradex Colibri iMX8DX, Renesas RZ/V2H, Forlinx OK3588-C, Protonic MECSBC, Emcraft Systems NavQ+, NXP S32G3, Wolfvision pf5, Amlogic A4/A5, ASUS RT-AC3200, ASUS RT-AC5300, ASrock E3C256D4I, IBM system1 BMC, Meta Harma BMC(AST2600), ASRock X570D4U BMC, Au-Zone Maivin AI Vision Starter Kit.
- Støtte for Milk-V Mars kort som benytter SoC Starfive JH7110 basert på RISC-V-arkitektur er lagt til.
Samtidig har det latinamerikanske Free Software Fund lagt ut en variant av det helt frie kjernen 6.10 — Linux-libre 6.10-gnu, renset for elementer fra fastvare og drivere som inneholder ikke-frie komponenter eller kodebiter, hvis bruksområde er begrenset av produsenten. I versjon 6.10 er koden for rensing av blobs i Intel i915-drivere, rtl8xxxu, qla2xxx og QCAI sahara oppdatert. Blob-navnene i dts-filer (device tree) for Aarch64-arkitekturen er renset. Nye filer lagt til i Adreno, Intel IPU3 og PRUEth-driverne er renset for blobs. Nye drivere som Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID og pcm6240 har blitt renset. Rengjøring av Prism2.5/3 USB-driveren som ble fjernet fra kjernen er avsluttet.
Kilde: opennet.ru
