Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af kerne Linux 6.10. Blandt de mest iøjnefaldende ændringer er: ntsync-driveren med synkroniseringsprimitive til Windows NT, DRM Panic-komponenter til implementering af en analog til "den blå skærm af døden", stop for understøttelse af gamle Alpha CPU'er, mulighed for integritetsverifikation i FUSE-baserede filsystemer, begrænsning af adgang til ioctl gennem Landlock-mekanismen, et subsystem til profilering af hukommelsesallokeringsoperationer, systemopkaldet mseal(), muligheden for krypteret dataudveksling med TPM-enheder, understøttelse af højprioriterede jobkøer i dm-crypt, og panthor-driveren til den tiende generation af Mali GPU'er.
I den nye version er der blevet inkluderet 14.564 rettelser fra 1.989 udviklere; patchens størrelse er 41 MB (ændringerne berørte 12.509 filer, 547.663 linjer kode blev tilføjet, og 312.464 linjer blev slettet). I den tidligere udgave var der 15.680 rettelser fra 2.106 udviklere, og patchens størrelse var 54 MB. Cirka 41 % af alle ændringerne i 6.10 handler om enhedsdrivere, omtrent 15 % relaterer sig til opdatering af kode specifik for hardwarearkitekturer, 13 % omhandler netværksstakken, 5 % berører filsystemer, og 4 % handler om interne subsystemer i kernen.
De vigtigste nyheder i kernen 6.10:
- DiskSubsystem, input/output og filsystemer
- En ny fcntl-operation, F_DUPFD_QUERY, er blevet tilføjet, som gør det muligt for en proces at bestemme, at to forskellige filbeskrivelser henviser til den samme fil. I modsætning til lignende muligheder, der tilbydes af systemopkaldet kcmp(), afslører F_DUPFD_QUERY ikke unødvendige oplysninger og fungerer på systemer med kcmp deaktiveret.
- I FUSE-subsystemet, der bruges til implementering af filsystemer i brugerrummet, er muligheden for at anvende fs-verity-mekanismen til kontrol af integritet og ægthed af filer blevet realiseret.
- I dm-crypt-modulet, der bruges til kryptering af bloklagringsenheder, er der blevet tilføjet en "high_priority" mulighed, der gør det muligt at aktivere højprioriterede jobkøer for at forbedre ydeevnen på kraftige maskiner. servereSom standard er denne tilstand deaktiveret, da den kan medføre øgede forsinkelser ved udførelse af opgaver, der ikke er relateret til kryptering, såsom lydbehandling, på almindelige PC'er.
- En netlink-baseret protokol til styring af NFS-serveren er blevet tilføjet i kernen. I brugerområdet er der udviklet et værktøj nfsdctl baseret på denne protokol. Støtten til montering af NFS v2 er som standard deaktiveret (støtten til NFS v2 i værktøjet mount.nfs blev stoppet allerede i 2021).
- I XFS-filsystemet er arbejdet med at implementere muligheden for at anvende værktøjet fsck til at kontrollere og rette opdagede problemer i online-tilstand uden at afmontere filsystemet fortsat i gang. ioctl XFS_IOC_EXCHANGE_RANGE er tilføjet til at udveksle byteområder mellem to filer i atomisk tilstand.
- I Btrfs er der implementeret support for at trimme (shrinker) ikke-bundne kort over extent, hvilket kan være nyttigt til at reducere hukommelsesforbruget under betingelser med begrænset hukommelse i systemet. Koden til datakomprimering og funktionen put_file_data() er konverteret til at anvende sidefollier (page folios). Mekanismen til låsning af extent under udførelsen af tilbageskrivningsoperationer er blevet revideret.
- I Ext4-filsystemet er der tilføjet støtte til ioctl FS_IOC_GETFSSYSFSPATH for at bestemme placeringen af et bestemt monteret FS i hierarkiet /sys/fs.
- Filsystemerne OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX og FREEVXFS er blevet konverteret til at anvende det nye API til montering af partitioner.
- I EROFS-filsystemet (Extendable Read-Only File System), der er beregnet til brug på partitioner tilgængelige i skrivbeskyttet tilstand, er der tilføjet støtte for komprimeringsalgoritmen Zstandard.
- I Bcachefs er der blevet forberedt til at udføre fsck uden at afmontere partitionen (online-kontrol). Der er tilføjet ændringer og rettelser for at forbedre pålideligheden. Det er blevet muligt at opdatere og rulle filsystemformatet tilbage i 'nochanges' tilstand, som deaktiverer skrivning og kun gemmer metadata i hukommelsen.
- I OverlayFS-filsystemet er der tilføjet støtte til at oprette temporære filer ved hjælp af indstillingen O_TMPFILE.
- Støtten til mekanismen til begrænsning af båndbredden for block-enheder 'CONFIG_BLK_DEV_THROTTLING_LOW' er blevet ophørt. Denne mekanisme har siden 2017 været i en eksperimentel status, har ikke vundet praktisk anvendelse og komplicerer vedligeholdelsen af block-enhedssubsystemet.
- Hukommelse og systemtjenester
- Tilføjet, men deaktiveret under opbygning, denne ntsync-driver implementerer det symbolske enhed /dev/ntsync og et sæt primitivs til synkronisering, der anvendes i Windows NT-kernen. Implementeringen af disse primitivs på kerne-niveau giver en betydelig stigning i ydeevnen for Windows-spil, der køres via Wine. Ydeevneforøgelsen opnås ved at undgå omkostningerne forbundet med brug af RPC i brugerens rum. Oprettelsen af en separat driver til Linux-kernen skyldes vanskelighederne ved korrekt implementering af NT-synkroniserings-API'en ovenfor eksisterende primitivs i kernen.
- En underindustri til profilering af hukommelsesallokeringsoperationer i Linux-kernen er blevet tilføjet, hvilket gør det muligt at identificere hukommelseslækager i kernen og forenkler optimering af hukommelsesforbruget. Underindustriens lave overhead muliggør brug på både debug- og produktionskernen.
- Den indledende implementering af nødtilstandsbehandleren i kernen - DRM Panic - er blevet tilføjet. Denne bruger DRM (Direct Rendering Manager) subsystemet til at vicefarve en visuel rapport i stil med en "blå skærm af død". I den næste version planlægges det at tilføje muligheden for at vise logoet og QR-koden på skærmen ved opståede fejl.
- Overførslen af ændringer fra Rust-for-Linux-grenen fortsætter, relateret til brugen af Rust som et andet sprog til udvikling af drivere og kernemoduler (Rust-support er ikke aktiveret som standard, og fører ikke til, at Rust inkluderes som et obligatorisk byggeafhængighed for kernen). Overgangen til at bruge Rust 1.78-versionen, der muliggør skift til brugen af standard alloc-biblioteket, i stedet for en egen afledning, er gennemført. Abstraktioner til arbejde med tid i kernen (wrapper over strukturen ktime_t) er blevet tilføjet. Der er tilføjet support til at bruge kernekomponenter skrevet i Rust på systemer med RISC-V-arkitektur.
- I BPF-programmerne er der implementeret mulighed for brug af ventekøer (wait queue) i kernen. Der er tilføjet funktionerne bpf_preempt_disable og bpf_preempt_enable, som muliggør oprettelse af ikke-forstyrrede sektioner med kode. Der er givet mulighed for adgang til BPF-programmers kryptografiske funktioner (crypto). Understøttelse af JIT-kompilering af BPF-programmer er implementeret på systemer med 32-bit processorer ARCv2.
- For 32-bit ARM-systemer er understøttelse af kernesamling med Clang-kompilator med aktiveret CFI (Control Flow Integrity) beskyttelse implementeret, som blokerer unormale udførelsesforløb (control flow) forårsaget af exploits, der ændrer pointere til funktioner, der er gemt i hukommelsen.
- Muligheden for direkte afspejling via mmap() af ringbufferne til sporing er tilføjet for at overføre deres indhold til brugerrummet uden yderligere kopiering.
- Systemopkaldet 'mseal' er tilføjet, hvilket giver processer mulighed for at låse ændringer af bestemte dele af deres adressrum. I praksis planlægges det nye systemopkald at blive brugt i Chrome-browseren for at styrke sandbox-isoleringen.
- For subarkitekturen x32, som tilbyder en hybrid x86_64 ABI, der muliggør brug af 32-bit hukommelsesadressering på 64-bit systemer (processoren kører i 64-bit måde, men bruger 32-bit pointere og aritmetiske operationer), er understøttelse af Shadow Stack-mekanismer tilføjet, som muliggør blokering af mange exploits ved at udnytte Intel-processorers hardwarefunktioner til at beskytte mod overskrivning af returadressen fra en funktion i tilfælde af buffer overflow på stakken.
- På ARM64-arkitektur er der implementeret funktioner relateret til beskyttelse mod skrivning af hukommelsesområder og elementer i hukommelsestabeller i systemopkaldet userfaultfd(), der giver mulighed for oprettelse af håndterere for sidefejl (page faults) i brugerrummet.
- Koden for support af Alpha 21164 (EV5) processorerne og tidligere serier, der blev udgivet siden 1995, er blevet fjernet. Vedligeholdelse af koden til disse processorer er blevet kompliceret på grund af manglende evne til at tilgå hukommelse på byte-niveau. Alpha var den første arkitektur, som Linux-kernen blev portet til; den var oprindeligt kun tilgængelig for x86-systemer.
- Virtualisering og sikkerhed
- Understøttelse af krypteret datatransmission med TPM-enheder (Trusted Platform Module) og integritetskontrol af transaktioner er blevet tilføjet.
- I LSM-modulet Landlock, der begrænser interaktionen imellem en gruppe processer og det ydre miljø, er der tilføjet mulighed for at anvende regler til at begrænse adgang til ioctl()-opkald.
- Der er foreslået en indstillingsmulighed init_mlocked_on_free ved opstart, som sikrer nulstilling af indholdet af hukommelsen, der er beskyttet mod udveksling til swap-filen ved hjælp af opkaldet mlock(), hvis denne hukommelse frigives uden at blive låst op med opkaldet munlock(). Brug af denne indstilling kan forhindre, at kryptografiske nøgler forbliver i hukommelsen i tilfælde af et nedbrud i den kørende applikation.
- I kryptosystemet er udførelsen af disk krypteringsoperationer ved hjælp af AES-XTS-algoritmen blevet accelereret på x86_64-systemer med Intel- og AMD-processorer, der understøtter VAES-, AVX2-, VPCLMULQDQ-, AVX10- eller AVX512-udvidelser.
- Muligheden for at indsamle statistik om brug af kryptosystemet i kernen (CONFIG_CRYPTO_STATS) er blevet fjernet. Denne funktion blev ikke brugt i praksis og førte til betydeligt performance tab samt en mærkbar ekstra belastning for vedligeholderne.
- Netværkssubsystem
- Ydelsen af dataoverførselsoperationer i zero-copy-tilstand er blevet markant forbedret ved brug af io_uring-systemet. Der er tilføjet mulighed for at samle 'bundles' af flere buffere til dataoverførsels- og modtagelsesoperationer.
- Koden for affaldssamling, der anvendes ved forsendelse af filbeskrivelser via Unix-sokler med SCM_RIGHTS-meldinger, er blevet omskrevet. Ændringen løser problemet med ophobning af cirkulerende reference tællere.
- Muligheden for at installere filtre for PFCP-protokollen (Packet Forwarding Control Protocol), der anvendes i 4G- og 5G-netværk, er blevet tilføjet.
- Support for the network socket option SO_PEEK_OFF has been added, which, similar to the same option for Unix sockets, allows determining the offset of data in the queue used by the system call recv when specifying the MSG_PEEK flag (marks data as unread and they will be issued again in the next recv call).
- The io_uring subsystem has been enhanced with support for the IORING_CQE_F_SOCK_NONEMPTY operation, which allows determining whether a network socket has connection requests waiting to be processed.
- An implementation of the PoE (Power over Ethernet) technology has been proposed, based on the previously available code for supporting PoDL (Power over Data Line) and compatible with the Microchip PD692x0 and TI TPS23881 PoE controllers.
- Support for the rstreason mechanism has been added for TCP, DCCP, and MPTC protocols, allowing the identification of the reason for sending RST packets (for example, NO_SOCKET).
- Udstyr
- The panthor driver for the tenth generation Mali GPUs (G310, G510, G710) has been included, which applies the CSF (Command Stream Frontend) technology, offloading some driver functions to firmware to reduce CPU load and offering a new model for organizing tasks execution on the GPU. Changes to support the new driver have also been accepted in Mesa and included in the Gallium panfrost driver for Mali GPUs.
- The i915 driver has been updated with PCI identifiers for new Intel Arc discrete graphics cards (DG2/Alchemist).
- Work on the Xe drm driver (Direct Rendering Manager) for GPUs based on the Intel Xe architecture has continued, which is used in Intel Arc graphics cards and integrated graphics starting from Tiger Lake processors. Support for Arrow Lake H CPUs has been added. Implementation support for Lunar Lake processors has continued. Initial support for the SR-IOV (Single Root I/O Virtualization) mechanism has been added.
- Support for SMU 14.0 (System Management Unit) has been added in the AMDGPU driver. The ability to use new AMD GPUs on RISC-V architecture systems has been introduced.
- A driver for the Tegra Security Engine cryptographic operation accelerator has been added, which can be used to accelerate AES and various hashing algorithms.
- Support for the following display panels has been added: 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, and AUO B120XAN01.0.
- Tilføjet støtte til lydsystemet i Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X og ASUS Zenbook 2024 HN7306. Tilføjet støtte for eksterne lydkort Vocaster One og Vocaster Two. Installeret driver til forstærkere NAU8325 fra Nuvoton Technology.
- HID-Steam-driveren har fået tilføjet støtte til IMU (Inertial Measurement Unit) i gaming-controlleren Steam Deck, hvilket muliggør brug af en separat evdev-node for at få adgang til data fra gyroskopet og accelerometeret.
- Ændringer er inkluderet for at støtte ARM SoC Snapdragon X Elite, der bruger en 12-core CPU Qualcomm Oryon og GPU Qualcomm Adreno. Chippet er målrettet brug i bærbare computere og pc'er og overgår i mange ydeevnetests Apple M3 og Intel Core Ultra 155H.
- Tilføjet støtte til ARM-platforme, SoC og enheder: 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.
- Tilføjet støtte til Milk-V Mars boards, der bruger SoC Starfive JH7110 baseret på RISC-V arkitekturen.
Samtidig har det latinoamerikanske Free Software Foundation udarbejdet en version af det helt frie kernel 6.10 — Linux-libre 6.10-gnu, der er renset for elementer fra firmware og drivere, der indeholder ikke-frie komponenter eller kodeområder, hvis anvendelse er begrænset af producenten. I udgivelsen 6.10 er koden til rensning af blobs i driverne Intel i915, rtl8xxxu, qla2xxx og QCAI sahara blevet opdateret. Rensning af blobnavne i dts-filer (devicetree) til Aarch64-arkitekturen er gennemført. Nye filer, der blev tilføjet i driverne Adreno, Intel IPU3 og PRUEth, er blevet renset for blobs. Der er blevet renset nye drivere Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID og pcm6240. Rensningen af USB-driveren Prism2.5/3 USB, som er fjernet fra kernen, er blevet stoppet.
Kilde: opennet.ru
