Utgivelsen av Linux-kjernen 6.3

Etter to måneders utvikling har Linus Torvalds presentert utgivelsen av Linux-kjernen 6.3. Blant de mest merkbare endringene: fjerning av utdaterte ARM-plattformer og grafikkdrivere, videre integrasjon av støtte for programmeringsspråket Rust, verktøyet hwnoise, støtte for rød-svart tre-strukturer i BPF, BIG TCP-modus for IPv4, innebygd ytelsestest Dhrystone, muligheten for å forby utførelse i memfd, støtte for oppretting av HID-drivere ved bruk av BPF, og i Btrfs er det innført endringer for å redusere fragmentering av blokkgrupper.

I den nye versjonen er det akseptert 15637 feilrettinger fra 2055 utviklere; patch-størrelsen er 76 MB (endringene berørte 14296 filer, lagt til 1023183 linjer med kode og fjernet 883103 linjer). Til sammenligning ble det i forrige versjon foreslått 16843 feilrettinger fra 2178 utviklere; patch-størrelsen var 62 MB. Omtrent 39% av alle endringene i kjernen 6.3 er relatert til enhetsdrivere, omtrent 15% av endringene har med oppdatering av kode spesifikk for maskinarkitekturer, 10% er knyttet til nettverksstakken, 5% til filsystemer og 3% til interne delsystemer i kjernen.

De viktigste nyhetene i kjernen 6.3:

  • Minne og systemtjenester
    • Det har blitt utført en betydelig opprydding av kode relatert til gamle og ubrukte ARM-plattformer, noe som har redusert størrelsen på kildekoden for kjernen med 150 000 linjer. Mer enn 40 gamle ARM-plattformer er fjernet.
    • Det er implementert muligheten for å lage drivere for inngangs-enheter med HID (Human Interface Device)-grensesnitt, implementert som BPF-programmer.
    • Overføringen fra Rust-for-Linux-grenen av ytterligere funksjonalitet knyttet til bruken av Rust som det andre språket for utvikling av drivere og modulene i kjernen er fortsatt i gang. Støtte for Rust er ikke aktivert som standard, og krever ikke at Rust blir en obligatorisk byggavhengighet for kjernen. Funksjonaliteten som ble foreslått i tidligere utgivelser, er utvidet med støtte for typer Arc (implementering av pekere med referanseteller), ScopeGuard (håndterer opprydning ved utgang fra synlighetsområdet) og ForeignOwnable (muliggjør overføring av pekere mellom C- og Rust-kode). Modulen 'borrow' er fjernet fra 'alloc'-pakken (typen 'Cow' og typetren 'ToOwned'). Det bemerkes at tilstanden for Rust-støtte i kjernen allerede er nær å begynne å akseptere de første modulene skrevet i Rust.
    • I User-mode Linux (kjøring av kjernen som en brukers prosess) på x86-64 systemer har blitt implementert støtte for kode skrevet i Rust. Støtte er lagt til for å bygge User-mode Linux ved hjelp av clang med inkludering av optimaliseringer under lenkingen (LTO).
    • Verktøyet hwnoise er lagt til for å overvåke forsinkelser forårsaket av maskinvaremanerer. Det bestemmes avvik i utførelsestidene (jitter) ved å deaktivere interruptbehandling, som overstiger en mikrosekund over 10 minutter med beregninger.
    • En kjernerutine med implementering av ytelsestesten Dhrystone har blitt lagt til, som kan brukes til å vurdere CPU-ytelsen i konfigurasjoner uten brukerromkomponenter (for eksempel under portering til nye SoC-er hvor bare kjerneinnlastning er implementert).
    • Det er lagt til en kommandolinjparameter for kjernen «cgroup.memory=nobpf», som deaktiverer registreringen av minneforbruk for BPF-programmer, noe som kan være nyttig for systemer med isolerte containere.
    • For BPF-programmer er det foreslått en implementering av datastrukturen rød-svart tre, hvor kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) brukes i stedet for å legge til en ny type mappestruktur.
    • I mekanismen for restartbare sekvenser (rseq, restartable sequences) er det lagt til mulighet for å overføre prosessene parallellkjøringsidentifikatorer (memory-map concurrency ID) som identifiseres med CPU-nummeret. Rseq gir verktøy for rask atomisk utførelse av operasjoner, som ved avbrudd av en annen tråd blir renset og forsøker på nytt.
    • På ARM-prosessorer er støtte for instruksjoner SME 2 (Scalable Matrix Extension) sikret.
    • For s390x og RISC-V RV64 arkitekturene er støtte for BPF trampoline-mekanismen implementert, noe som minimerer overhead ved å overføre anrop mellom kjernen og BPF-programmene.
    • På systemer med RISC-V arkitekturbaserte prosessorer benyttes instruksjoner «ZBB» for å akselerere operasjoner med strenger.
    • For systemer basert på LoongArch instruksjonssettarkitekturen (brukt i Loongson 3 5000 prosessorer som implementerer et nytt RISC ISA, lik MIPS og RISC-V) er støtte for randomisering av kjernens adresserom (KASLR), endring av kjernens plassering i minnet (relocation), maskinvare-brytepunkter og mekanisme kprobe implementert.
    • I DAMOS (Data Access Monitoring-based Operation Schemes) mechanism, which allows memory to be freed based on the frequency of access, supports filters for excluding certain memory areas from processing in DAMOS.
    • The minimal standard C library Nolibc has implemented support for the s390 architecture and the Arm Thumb1 instruction set (in addition to support for ARM, AArch64, i386, x86_64, RISC-V, and MIPS).
    • Optimization of objtool has been carried out to speed up kernel builds and reduce peak memory consumption during compilation (compiling the kernel in the 'allyesconfig' mode no longer causes forced process termination issues on systems with 32 GB of RAM).
    • Support for building the kernel with Intel ICC compiler has been discontinued, as it has been non-functional for a long time and no one has expressed a desire to fix it.
  • Disk subsystem, I/O og filsystemer
    • In tmpfs, support for mapping user IDs of mounted file systems has been implemented for matching files of a specific user on a mounted foreign partition with another user in the current system.
    • In Btrfs, to reduce fragmentation of block groups, extents are now divided by size when allocating blocks, i.e., any block group is now limited to small (up to 128KB), medium (up to 8MB), and large extents. The implementation of raid56 has been refactored. Code for checksum verification has been redesigned. Performance optimizations have allowed for up to a 10-fold increase in the speed of the send operation due to caching utime for directories and executing commands only when necessary. The execution of fiemap operations has been tripled by skipping back-reference checks for shared data (snapshots). Metadata operations are 10% faster due to optimizing key searches in b-tree structures.
    • Performance of the ext4 file system has been improved by allowing multiple processes to simultaneously perform direct input/output operations on pre-allocated blocks, using shared inode locks instead of exclusive locking.
    • In f2fs, work has been done to improve code readability. Important issues related to atomic writes and the new extent cache have been resolved.
    • I filsystemet EROFS (Enhanced Read-Only File System), beregnet for bruk i partisjoner som er tilgjengelige i bare lesemodus, er det implementert muligheten for å knytte CPU til avlastingsoperasjoner for komprimert filinnhold for å redusere forsinkelser ved tilgang til data.
    • I BFQ I/O-planleggeren er det lagt til støtte for avanserte lagringsenheter med roterende disker, for eksempel de som bruker flere separat styrte hodene (Multi Actuator).
    • I implementeringen av klienten og serveren NFS er det lagt til støtte for kryptering av data ved hjelp av AES-SHA2 algoritmen.
    • I FUSE-subsystemet (Filesystems In User Space) er det lagt til støtte for en forespørselsextensionsmekanisme som lar ekstra informasjon inkluderes i forespørselen. Basert på denne muligheten er det implementert tillegg av gruppeidentifikatorer til FS-forespørselen, som er nødvendige for å ta hensyn til tilgangsrettigheter ved opprettelse av objekter i FS (create, mkdir, symlink, mknod).
  • Virtualisering og sikkerhet
    • I KVM-hypervisoren for x86-systemer er det lagt til støtte for utvidede hypercalls av Hyper-V, som gjør at de kan sendes til en behandler som kjører i vertsmodusen i brukerrommet. Endringen har gjort det mulig å implementere støtte for nestet kjøring av Hyper-V-hypervisoren.
    • I KVM er tilgangen til gjestesystemets PMU-events (Performance Monitor Unit) som måler ytelsen, forenklet.
    • I memfd-mekanismen, som gjør det mulig å identifisere et minneområde gjennom en filbeskrivelse som sendes mellom prosessene, er muligheten for å opprette områder der kodeutførelse er forbudt (non-executable memfd) og det ikke er mulig å sette kjøretilgang senere, lagt til.
    • En ny prctl-operasjon PR_SET_MDWE er lagt til, som blockerer forsøk på å aktivere minnetilgangsrettigheter som samtidig tillater skriving og utførelse.
    • Beskyttelse mot Spectre-angrep, implementert basert på den automatiske IBRS-modusen (Enhanced Indirect Branch Restricted Speculation) foreslått i AMD Zen 4-prosessorene, er lagt til og aktivert som standard. Denne modusen tillater adaptiv tillatelse og forbud mot spekulativ utførelse av instruksjoner under håndtering av avbrudd, systemanrop og kontekstbytter. Den foreslåtte beskyttelsen medfører lavere overhead sammenlignet med Retpoline-beskyttelse.
    • Sårbarheten som gjorde det mulig å omgå beskyttelsen mot Spectre v2-angrep ved bruk av samtidig multitråding (SMT eller Hyper-Threading) er blitt løst. Dette ble forårsaket av deaktivierung av STIBP-mekanismen (Single Thread Indirect Branch Predictors) når beskyttelsesmodus IBRS ble valgt.
    • For systemer basert på ARM64-arkitekturen er det lagt til et nytt byggemål «virtconfig», som aktiverer bare et minimum av kjernekomponenter som er nødvendige for oppstart i virtualiseringssystemer.
    • For m68k-arkitekturen er støtten for filtrering av systemanrop ved hjelp av seccomp-mekanismen lagt til.
    • Støtte for innebygde AMD Ryzen-enheter med CRB TPM2 (Command Response Buffer), basert på Microsoft Pluton-teknologi, er lagt til.
  • Nettverks subsystem
    • Netlink-grensesnittet for konfigurasjon av PLCA (Physical Layer Collision Avoidance) er lagt til. Dette er definert i IEEE 802.3cg-2019-spesifikasjonen og brukes i Ethernet-nettverk 802.3cg (10Base-T1S), optimalisert for tilknytning av ting-internett-enheter og industrielle systemer. Bruken av PLCA kan øke ytelsen i Ethernet-nettverk med delt mediemiljø.
    • Støtten for API-en «wireless extensions» for å styre WiFi 7 (802.11be) trådløse grensesnitt er opphevet, da dette API-et ikke dekker alle nødvendige innstillinger. Når man forsøker å bruke API-en «wireless extensions», som fortsatt støttes som et emulert lag, vil det nå bli gitt en advarsel for de fleste nåværende enheter.
    • Detaljert dokumentasjon for netlink- API-et er forberedt (for kjerneutviklere og applikasjonsutviklere i brukermiljøet). Verktøyet ynl-gen-c er implementert for å generere C-kode basert på YAML-spesifikasjonene til Netlink-protokollen.
    • Støtte for IP_LOCAL_PORT_RANGE-alternativet er lagt til i nettverks-sockets for å forenkle konfigurasjonen av utgående forbindelser gjennom adresseoversettere uten bruk av SNAT. Når en enkelt IP-adresser på flere vertsmaskiner gir IP_LOCAL_PORT_RANGE muligheten til å bruke sitt eget utgående nettverksportområde på hver vert, og på gatewayen omdirigere pakker basert på portnumre.
    • For MPTCP (MultiPath TCP), the ability to process mixed streams using both IPv4 and IPv6 protocols has been implemented. MPTCP is an extension of the TCP protocol that enables TCP connections to deliver packets simultaneously over multiple routes through different network interfaces bound to different IP addresses.
    • For IPv4, the use of the BIG TCP extension has been implemented, allowing the maximum size of a TCP packet to be increased to 4GB to optimize the performance of high-speed internal data center networks. This increase in packet size with a 16-bit field size in the header is achieved through the implementation of 'jumbo' packets, where the size in the IP header is set to 0, and the actual size is transmitted in a separate 32-bit field in an additional attached header.
    • A new sysctl parameter, default_rps_mask, has been added to specify the default configuration for RPS (Receive Packet Steering), which is responsible for distributing incoming traffic processing across CPU cores at the interrupt handler level.
    • Support for queue disciplines for traffic control such as CBQ (class-based queuing), ATM (ATM virtual circuits), dsmark (differentiated service marker), tcindex (traffic-control index), and RSVP (resource reservation protocol) has been discontinued. These disciplines have been abandoned for a long time, and there have been no takers to continue their maintenance.
  • Utstyr
    • All graphics drivers based on DRI1 have been removed: i810 (older integrated Intel 8xx graphics cards), mga (Matrox GPU), r128 (ATI Rage 128 GPU, including Rage Fury, XPERT 99, and XPERT 128 cards), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo), and via (VIA IGP), which were declared obsolete in 2016 and have not been supported in Mesa since 2012.
    • Obsolete framebuffer (fbdev) drivers omap1, s3c2410, tmiofb, and w100fb have been removed.
    • A DRM driver for the integrated CPU Intel Meteor Lake (14th generation) VPU (Versatile Processing Unit) blocks has been added, designed to accelerate operations related to computer vision and machine learning. The driver is implemented using the 'accel' subsystem, aimed at ensuring support for computational accelerators, which may be provided as separate ASICs or as IP blocks within SoCs and GPUs.
    • In the i915 (Intel) driver, support for discrete Intel Arc (DG2/Alchemist) graphics cards has been expanded, with preliminary support for Meteor Lake GPUs and support for Intel Xe HP 4tile GPUs included.
    • I drivar amdgpu er det lagt til støtte for AdaptiveSync-teknologi og muligheten til å bruke flere skjermer med beskyttelsesmodus for visning av data (Secure Display). Støtten for DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x og DP 2.1 er oppdatert.
    • I drivar msm (GPU Qualcomm Adreno) er det lagt til støtte for plattformer SM8350, SM8450, SM8550, SDM845 og SC8280XP.
    • I drivar Nouveau er støtten for gamle ioctl-kall opphevet.
    • I drivar etnaviv er det lagt til eksperimentell støtte for NPU VerSilicon (VeriSilicon Neural Network Processor).
    • Drivar pata_parport for IDE-lagringsenheter tilkoblet via parallellport er implementert. Den nye driveren har gjort det mulig å fjerne den gamle PARIDE-driveren fra kjernen og oppgradere ATA-subsystemet. En begrensning med den nye driveren er at det ikke er mulig å tilkoble både en skriver og en disk samtidig via parallellporten.
    • Drivar ath12k for trådløse kort på Qualcomm-brikker med støtte for Wi-Fi 7 er lagt til. Støtte for trådløse kort på RealTek RTL8188EU-brikker er også lagt til.
    • Støtte for 46 hovedkort med prosessorer basert på ARM64-arkitektur er lagt til, inkludert Samsung Galaxy Tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, samt enheter basert på SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 og SDM632, Rockchips RK3128 TV-boks, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 og RK3328, TI K3 (AM642/AM654/AM68/AM69).

Samtidig har den latinamerikanske Frist for fri programvare utviklet en helt fri kjerne variant 6.3 — Linux-libre 6.3-gnu, renset for elementer fra firmware og drivere som inneholder ikke-frie komponenter eller kodelinjer hvis bruksområde er begrenset av produsenten. I utgave 6.3 er det utført rensing av blobs i de nye driverne ath12k, aw88395 og peb2466, samt i nye device tree-filer for qcom-enheter basert på AArch64-arkitektur. Koden for rensing av blobs i drivere og subsystemer som amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, så vel som i drivere for DVB-kort med programvare-dekoding og i forhåndskompliserte BPF-filer er oppdatert. Rensingen av driverne mga, r128, tm6000, cpia2 og r8188eu er opphevet, da de ble fjernet fra kjernen. Rensing av blobs i driveren i915 er forbedret.

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