Utgivelsen av Linux-kjernen 6.16

Etter to måneder med utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 6.16. Blant de mest bemerkelsesverdige endringene er: en driver for akselerering av OpenVPN, Kexec HandOver-mekanismen, standard aktivering av fem-nivå siden tabeller for x86, fjerning av DCCP-protokollen, zloop blokkdriver, muligheten til å sende core-dump via UNIX-socket, støtte for atomær skriving i XFS, offload-behandling av lyd for USB-enheter, optimaliseringer i Ext4, virtuell TPM-driver (Trusted Platform Module), fullstendig implementering av Device Memory TCP, støtte for unummererte kanaler i io_uring, forberedelse for integrering av Asahi DRM-driver, «usermode queue»-mekanisme i AMDGPU-driveren, støtte for Intel TDE (Trusted Domain Extensions) og Intel APE (Advanced Performance Extensions).

Den nye versjonen har mottatt 15924 feilrettinger fra 2145 utviklere, patch-størrelsen er 50 MB (endringene berørte 13793 filer, 655451 linjer med kode ble lagt til, 316441 linjer ble fjernet). I forrige utgave var det 15945 feilrettinger fra 2154 utviklere, patch-størrelsen var 59 MB. Omtrent 45 % av alle endringene presentert i 6.16 er relatert til enhetsdrivere, omtrent 16 % av endringene har med oppdatering av kode spesifikk for maskinvarearkitekturer, 13 % er relatert til nettverksstakken, 4 % til filsystemene og 3 % til de interne kjernesystemene.

Hovednyhetene i kjernen 6.16:

  • Disk subsystem, I/O og filsystemer
    • Zloop-driveren er lagt til for å opprette zonerte blokk loopback-enheter som monteres i loop-modus. Driveren etterligner arbeidet til vanlige blokk-enheter ved å bruke flere filer fra det eksisterende filsystemet (én fil for å lagre hver sone). Denne muligheten kan være nyttig for testing av filsystemer, device mapper-håndtere og applikasjoner for støtte av zonerte enheter som bruker gruppedeling av blokker eller sektorer hvor bare sekvensiell tillegg av data med oppdatering av hele blokks gruppen er tillatt.
    • I XFS-filsystemet er det implementert støtte for atomær skriving av store datamengder — flere blokker kan nå skrives i atomær modus (enten vil alle blokkene bli skrevet med suksess, eller ingen blokker vil bli skrevet).
    • I filsystemet Ext4 er ytelsen til mekanismen «fast commit» økt. Støtte for store minnesider (large folios) for vanlige filer er lagt til, noe som i gjennomførte tester har økt ytelsen med 37 % ved intensiv sekvensiell inn-/utdata. Støtte for atomære skriveoperasjoner som dekker flere blokker er lagt til.
    • I driveren for filsystemet ext2 er støtten for mekanismen DAX, som muliggjør direkte tilgang til FS uten om sidebufferet, erklært som utdatert. Fjerning av DAX fra driveren ext2 er planlagt til slutten av året. Årsaken som nevnes er at driveren ext2 betraktes som en stabil referanseimplementering, der bruk av spesifikke funksjoner som ikke har fått tilstrekkelig distribusjon, ikke er tillatt.
    • Filsystemene OrangeFS, UFS, BFS og OMFS er oppdatert til å bruke det nye API-et for montering av partisjoner.
    • I sysctl er innstillingen vfs_cache_pressure_denom lagt til for å kontrollere antallet oppføringer i «dentry»-cache (det interne representasjonen av katalogelementene) under forhold med begrenset minne i systemet. Jo høyere verdien er satt, desto flere oppføringer kan bli fjernet fra cachen (fewer entries remain in cache) ved minnemangel.
    • I FS Bcachefs er alternativet «rebalance_on_ac_only» lagt til, som forbyr utføring av rebalanseringsoperasjoner og bakgrunnskomprimering når systemet drives av batteri. Operasjoner for sletting av snapshots og enheter er akselerert. Minnebruken er redusert når det monteres i skrivebeskyttet modus. Muligheten til å starte noen gjenopprettingsoperasjoner i bakgrunnen uten å stoppe arbeidet med FS er lagt til.
    • Strømstyringssubsystemet har fått tillatelse til selvstendig å fryse filsystemer og EFI-variabler for venting og dvalemodus (hvis FS allerede er fryst av en håndterer i brukernivå, utføres ikke en ny frysing).
    • Muligheten for å akselerere arbeidet til EROFS ved hjelp av Intel-prosessorenes innebygde QAT (QuickAssist Technology)-akselerator, som tilbyr verktøy for å akselerere beregninger relatert til kompresjon og kryptering, er lagt til.
    • I NFS er den maksimale størrelsen på datablokker for lese- og skriveoperasjoner økt fra 1 til 4 MB (standardverdien er satt til 1 MB, da ikke alle klienter støtter større størrelser).
    • Brukere uten privilegier som har CAP_SYS_ADMIN-rettigheter i et eget brukernavnsrom (user namespace), men som ikke har utvidede rettigheter i rotbrukernavnsrommet, får muligheten til å bruke fanotify-mekanismen for å overvåke endringer i filsystemene.
    • For filsystemer som bruker FUSE-subsystemet, er det lagt til funksjonalitet for å rense alle hurtigbufrede katalogoppføringer (dentries) samtidig. FUSE-subsystemet har fått støtte for store sider i minnet.
    • I OverlayFS-filsystemet er det implementert støtte for å opprette lag med data i ikke-privilegerte brukernavnsrom, der datavalidering skjer basert på dm-verity-modulen. Denne muligheten gjør det mulig å kombinere pålitelige lag med metadata med upålitelige lag med data som behandles i ikke-privilegerte brukernavnsrom.
  • Minne og systemtjenester
    • KHO-mekanismen (Kexec HandOver) er lagt til for å starte et nytt kjerne fra et gammelt uten å miste systemstatus. Før kontrollen overføres til den nye kjerneversjonen, kan tilstanden til de viktigste kjernesubsystemene serialiseres i et minneområde som ikke vil bli berørt av videre operasjoner. Den nye kjernen gjenoppretter den serialiserte tilstanden. KHO danner grunnlaget for Live Update Orchestrator (LUO)-subsystemet, som tillater omstart av kjernen uten å stoppe enhetene.
    • En parameter for kjernekompilering, CONFIG_X86_NATIVE, er lagt til, noe som muliggjør bruken av alternativet ‘-march=native’ under kompilering for optimalisering i henhold til prosessorens evner på det nåværende systemet.
    • Støtte for Intel APX (Advanced Performance Extension) -arkitekturen er lagt til, som gir 16 ekstra allsidige registre (i tillegg til de 16 eksisterende), og reduserer bruken av lese- og skriveoperasjoner i minnet for å øke ytelsen og redusere energiforbruket.
    • En modus for automatisk justering av minnefordelingspolitikken i NUMA-systemer er lagt til, der alle vektene for noder blir recalibrert når ny informasjon om båndbredde blir tilgjengelig under oppstart eller ved varmt tilkobling av minne.
    • I gjennomføringen av futex-er har det blitt lagt til støtte for en lokal hashtabell for prosesser (local futex_hash_bucket), som i motsetning til den tidligere støttede felles hashtabellen for alle prosesser, er lokal for en enkelt prosess og deles av alle tråder i denne prosessen. Lokale hashtabeller brukes kun for futex-operasjonen PROCESS_PRIVATE. I tillegg er det i den nye utgivelsen lagt til støtte for alternativene FUTEX2_NUMA og FUTEX2_MPOL, som lar påvirke plasseringen av futex-er i minnet, for å plassere dem nærmere prosessene som bruker dem.
    • For systemer x86_64 er det aktivert permanent støtte for fem nivåers sidetabeller i minnet (parameteren CONFIG_X86_5LEVEL, som styrte aktiveringen av fem nivåers tabeller, er fjernet).
    • I driveren intel_pstate, som styrer energiforbruk (P-state) på systemer med Intel-prosessorer, er det lagt til støtte for oppgaveplanleggerens energi-vitende planlegging (EAS - Energy Aware Scheduling) på hybridprosessorer, som kombinerer høyytelses- og energibesparende CPU-kjerner, som Intel Lunar Lake.
    • I sysfs er det lagt til grensesnitt: "/sys/devices/system/cpu/cpuN/cpu_capacity" for å hente informasjon om kapasiteten til ulike CPU-er i hybridprosessorer og "/sys/devices/system/cpu/cpuidle/intel_c1_demotion" for å styre muligheten for å la CPU-en være i en mer ytelsesvennlig tilstand, selv om kjernen prøver å overføre CPU-en til en lavere energiforbrukstilstand (for eksempel kan kjernen be om å gå til energiforbrukstilstanden C6, men fastvaren kan holde den i tilstanden C1 ved høy vekkerintensitet).
    • For ARM64-arkitekturen er det lagt til støtte for modus for lat oppgaveutkalling (PREEMPT_LAZY, lazy preemption), som tilsvarer full oppgaveutkalling («full preemption») for sanntidsoppgaver (RR/FIFO/DEADLINE), men forsinker utkallingen av vanlige oppgaver (SCHED_NORMAL) til tikken.
    • For ARM64-arkitekturen er det lagt til støtte for bruk av SME-utvidelser (Scalable Matrix Extension), aktivert gjennom parameteren CONFIG_ARM64_SME.
    • Endringen fra Rust-for-Linux-grenen er fortsatt, angående bruken av Rust som et sekundært språk for utvikling av drivere og kjerne-moduler (Rust-støtte er ikke aktivert som standard og fører ikke til at Rust inkluderes som et obligatorisk kompilasjonsavhengighet for kjernen). For moduler skrevet i Rust er det gitt mulighet til å bruke configfs. Det er lagt til de nødvendige abstraksjonene for utvikling av grafiske drivere. Mulighetene for modulene alloc, time, str, list, workqueue og page er utvidet. Støtte for makroen 'assert!' i KUnit-baserte tester er lagt til. Et sett med abstraksjoner for CPU-frekvenskontroll og bruk av API-er knyttet til energihåndtering er lagt til. Støtte for datainstruksjonen 'xarray' er lagt til.
    • For RISC-V-arkitekturen er implementeringen av systemkallet getrandom() flyttet, optimalisert ved hjelp av vDSO (virtuelt dynamisk delt objekt), noe som gjør det mulig å flytte systemkallbehandleren fra kjernen til brukermodus og unngå kontektsbytter. I gjennomførte tester akselererte optimaliseringen innhentingen av tilfeldige tall 17 ganger. Støtte for de vektorbaserte utvidelsene Zicbop, Zabha og Svinval, som brukes i SiFive-prosessorer, er også implementert for RISC-V.
    • For LoongArch-arkitekturen er grensen for antall CPU-er i systemet hevet fra 256 til 2048. Støtte for oppgaveplanleggeren SCHED_MC (multi-core) er lagt til.
    • Muligheten til å bruke Unix-sokler for overføring av filbeskrivelser er lagt til. For å deaktivere denne muligheten kan applikasjoner bruke flagget SO_PASSRIGHTS i setsockopt().
    • Muligheten for å mappe ringbufferen, som brukes til å spore kjernens ytelse, inn i brukerminne er gitt.
    • Crash-dump-håndterere, som brukes til å lage en rapport om problemer etter at kjernen har krasjet, kan nå bruke LUKS-nøkler som ble brukt av den feilede kjernen for å lagre crash-dumper i krypterte filsystemer.
    • I systemet for asynkron inntak/utgang io_uring er det lagt til IORING_OP_PIPE-operasjonen for å opprette ikke-navngitte kanaler, som ligner på systemkallet pipe2, med unntak av at den støtter faste filbeskrivelser.
    • Det er lagt til et alternativ for kjernens kommandolinje 'rt_group_sched' for å styre aktiveringen av planleggeren for grupper av realtidsoppgaver (SCHED_RR). Alternativet tilsvarer innstillingen RT_GROUP_SCHED i Kconfig.
    • For devices based on the CXL (Compute Express Link) bus, used to organize high-speed interaction between the CPU and memory devices, support for RAS (Reliability, Availability, Serviceability) extensions has been implemented, allowing various schemes for error detection and correction. CXL enables the connection of new memory areas provided by external memory devices and uses them as additional resources of the physical address space to expand system RAM (DDR) or persistent memory (PMEM).
    • The minimum GCC version required to build the kernel for all architectures has been raised to GCC 8. Building now also requires at least version 2.30 of the binutils package.
    • The system call uselib() has been removed, which has long been deprecated, and instead, mmap() is used for program access to shared libraries.
  • Virtualisering og sikkerhet
    • Initial support for using Intel TDX (Trusted Domain Extensions) mechanism has been added to protect guest systems running under the KVM hypervisor from interference and analysis by the host system administrator and physical attacks on the hardware. Protection is provided through memory encryption. virtual machines.
    • A virtual TPM (Trusted Platform Module) driver has been added, allowing virtual machines to interact with TPM devices emulated by the SVSM (Secure VM Service Module).
    • The ability to use the GCC plugin randstruct, which randomizes data structure layouts at compile time to complicate exploitation of vulnerabilities, has been restored.
    • Support for the IMA (Integrity Measurement Architecture) technology has been added for integrity checking when booting new kernels using the kexec system call.
    • Work has been done to reduce the performance impact of using SELinux. To speed up operations, a cache for access check results to directories has been added. The genfscon rules now allow the use of masks.
    • The code for interacting with EFI has been enhanced to allow embedding an SBAT (UEFI Secure Boot Advanced Targeting) section with metadata about revoked boot component versions.
    • In the loaded modules, the section «.static_call_sites» has been switched to read-only mode after initialization is complete.
    • For 64-bit ARM systems, KVM hypervisor has implemented support for nested virtualization (disabled by default).
    • In the KVM hypervisor, stable support for the RISC-V architecture has been declared.
  • Nettverks subsystem
    • The ovpn driver has been adopted, allowing for a significant increase in OpenVPN performance by offloading encryption operations, packet processing, and connection management to the Linux kernel. The driver eliminates overhead related to context switching, enabling optimization through direct access to the kernel's internal API and avoiding slow data transfers between the kernel and user space (encryption, decryption, and routing are performed by the module without sending traffic to the user space handler). This offloads to the kernel to eliminate unnecessary context switches.
    • Support for sending data from device memory (TX path) has been added to the Device Memory TCP mechanism. Previously, for the sake of simplifying the integration of Device Memory TCP into the kernel, functionality was limited to only receiving data (RX path). Device Memory TCP allows the use of network sockets for direct sending of the peripheral device's memory contents over the network (zero-copy mode), as well as direct placement of the contents of network packets into the device's memory on the receiving side. The data transmitted in packets moves from the network card to the peripheral device's memory (DMABUF), for example, to the GPU's video memory, or from device memory directly to the network card, bypassing the CPU, while packet headers go into normal kernel buffers.
    • The ability to send core dump contents via an AF_UNIX socket has been provided, allowing for the creation of more secure core dump handlers in user space, unbound by kernel calls to privileged processes.
    • Support for the DCCP (Datagram Congestion Control Protocol) network protocol has been removed, as it has not gained traction and has remained in the kernel without maintenance for five years. The removal of DCCP from the kernel will eliminate barriers that hinder the redesign of the inet_connection_sock data structure to improve the efficiency of the TCP stack. Support for netfilter modules for filtering DCCP packets has been preserved.
    • For easier error handling when using sockets, SO_PEERPIDFD now allows the kernel to pass a pidfd for already terminated processes (pidfd is tied to specific processes and unlike pid is not reassigned).
    • With BPF, it's now possible to create queue management handlers in the network stack (qdiscs) to influence the order of network packet processing.
    • The network file system AFS now utilizes GSSAPI (Generic Security Services API) for managing encryption of connections with servere YFS and OpenAFS.
    • A large portion of optimizations has been implemented. The organization of locks for IPv6 routing tables has been redesigned (some operations with routes are now performed up to 3 times faster). Software computation of crc32c checksums has been accelerated. The GRO engine for tunneled UDP traffic has been sped up by 10%. The auto-tuning of the receiving buffer for TCP has been improved and the default limits have been increased (in conducted tests, the throughput for individual streams through a 200Gbs channel increased by 60%).
    • Netfilter has added the ability to use masks in the names of network devices used in netdev and flowtable. Connection tracking information (conntrack) has been integrated into the nft trace infrastructure. The extraction of connection tracking tables (conntrack) through procfs has been accelerated.
  • Utstyr
    • Support has been added for offloading processing of audio streams to USB interface sound devices (USB audio offload). This change significantly reduces power consumption in portable devices by allowing audio stream processing to continue while the rest of the system is in sleep mode. Previously, a platform-specific offload sound processing implementation was provided for USB devices in Android kernels, and now a universal implementation has appeared in the main kernel that can be used by any projects.
    • Integrasjonen av Nova-driverkomponentene for NVIDIA GPU-er utstyrt med GSP-firmware er fortsatt. Driveren er skrevet i Rust. I tillegg til nova-core-komponenten som ble lagt til i forrige utgivelse, som implementerer et grunnleggende nivå av abstraksjoner over programvaregrensesnittene for GSP-firware, inneholder versjon 6.16 en tidlig implementering av DRM-driveren nova-drm (Direct Rendering Manager) for interaksjon med GPU-en fra brukermodus.
    • Prosessen med å integrere Asahi DRM-driveren for Apple AGX GPU-er, som brukes i Apple Silicon-brikker, har startet. Driveren er skrevet i Rust. På dette tidspunktet er det kun headerfilene med UAPI fra Asahi-driveren som er inkludert i kjernen, nødvendige for Mesa, mens hovedkoden for Asahi-driveren vil bli integrert senere.
    • Nouveau-driveren har fått støtte for NVIDIA GPU-er fra Hopper- og Blackwell-familiene.
    • Arbeidet med Xe DRM-driveren (Direct Rendering Manager) for GPU-er basert på Intel Xe-arkitekturen, som brukes i Intel Arc-grafikkort og integrert grafikk fra Tiger Lake-prosessorene, fortsetter. Muligheten til å bruke forskjellige firmwarefiler for ulike Intel GPU-familier er lagt til.
    • AMDGPU-driveren implementerer støtten for «usermode queue»-mekanismen, som lar brukeren opprette egne jobbkøer i brukermodus og sende dem direkte til GPU-en uten å gå gjennom kjernens planlegger. Støtte for «usermode queue» er aktivert for GPU-er fra Navi 4X- og GFX 12-familiene.
    • Støtte for lydsystemer som Intel WCL (Whiskey Lake), AMD ACP 7.x (Audio Co-Processor), Cirrus Logic CS35L63 og CS48L32, Everest Semiconductor ES8375 og ES8389, Pioneer DJM-V10, Longsoon-1 AC’97, NVIDIA Tegra264, Richtek ALC203, RT9123 og Rockchip SAI, samt nye Intel AVS-plattformer er lagt til.
    • Støtte for ARM-plattformer, SoC-er og enheter har blitt lagt til: Samsung Exynos7870, Qualcomm Snapdragon X1P42100, Qualcomm MSM8926, RK3562, NXP i.MX94, Renesas RZ/V2N, Amlogic S6/S7/S7D, WonderMedia wm8950, Amlogic s805y, Allwinner A523, Toradex Verdin AM62P, ROCK 5B+, Nitrogen8M Plus, Retronix R-Car V4H Sparrow Hawk, MT8186 Ponyta Chromebook, VIA APC Rock/Paper, Renesas rz/t2h, ASUS Transformer Pad LTE TF300TL, LG Nexus 4, Google Pixel 4a, Raspberry Pi 2.
    • Driveren for videoinnhentingskort med STA2X11-brikker er fjernet.

Samtidig har den latinamerikanske Frie Programvarefonden laget en helt fri kjerneversjon 6.16 — Linux-libre 6.16-gnu, renset for elementer fra fastvare og drivere som inneholder ikke-frie komponenter eller kodebiter hvis bruksområde er begrenset av produsenten. I utgivelsen 6.16 er lastingen av blobs i de nye Intel qat 6xxx kryptodriverne, ST vd55g1 sensoren, ath12k AHB wifi, Aeonsemi AS21xxx og MediaTek 25Gb Ethernet deaktiverte. Navnene til blobs er blitt renset i dts-filer (devicetree) for ARM-brikker fra Qualcomm og MediaTek. Rengjøringskoden for blobs i Nova Core, Nouveau, Realtek r8169 Ethernet, Qualcomm Iris, Venus, Mediatek mt7996 wifi, Qualcomm ath11k og ath12k wifi, Texas Instruments tas2781 og Renesas R-Car gen4 PCIe drivere er også oppdatert.

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