Linux 6.3 kernel udgivelse

Efter to måneders udvikling har Linus Torvalds frigivet Linux 6.3 kernen. Blandt de mest bemærkelsesværdige ændringer: oprydning af forældede ARM-platforme og grafikdrivere, fortsat integration af Rust-sprogunderstøttelse, hwnoise-værktøj, understøttelse af rød-sorte træstrukturer i BPF, BIG TCP-tilstand til IPv4, indbygget Dhrystone-benchmark, mulighed for at deaktivere udførelse i memfd, understøttelse af oprettelse af HID-drivere ved hjælp af BPF, ændringer er blevet foretaget i Btrfs for at reducere blokgruppefragmentering.

Den nye version accepterede 15637 rettelser fra 2055 udviklere; patchstørrelse - 76 MB (ændringer påvirkede 14296 filer, 1023183 linjer kode tilføjet, 883103 linjer slettet). Til sammenligning blev der i den tidligere version foreslået 16843 rettelser fra 2178 udviklere; patchstørrelse - 62 MB. Omkring 39 % af alle ændringer, der er introduceret i 6.3-kernen, er relateret til enhedsdrivere, omkring 15 % af ændringerne er relateret til opdatering af kode, der er specifik for hardwarearkitekturer, 10 % er relateret til netværksstakken, 5 % til filsystemer og 3 % til interne kerneundersystemer.

Vigtigste innovationer i kerne 6.3:

  • Hukommelse og systemtjenester
    • En betydelig oprydning af kode relateret til gamle og ubrugte ARM-kort er blevet udført, hvilket har reduceret størrelsen af ​​kernekilderne med 150 tusind linjer. Fjernet over 40 gamle ARM-platforme.
    • Implementeret muligheden for at skabe drivere til inputenheder med HID (Human Interface Device) interface implementeret i form af BPF programmer.
    • Fortsat portering fra Rust-for-Linux-grenen af ​​yderligere funktionalitet relateret til at bruge Rust som et andet sprog til udvikling af drivere og kernemoduler. Rust-understøttelse er ikke aktiveret som standard og resulterer ikke i, at Rust inkluderes som en obligatorisk kernebygningsafhængighed. Funktionaliteten, der tilbydes i tidligere udgivelser, er blevet udvidet med understøttelse af Arc-typerne (en implementering af pointere med et referenceantal), ScopeGuard (rydder op, når der udføres uden for scope) og ForeignOwnable (giver markørbevægelse mellem C og Rust-kode) . Fjernet modul 'lån' fra pakken 'alloc' (skriv 'Ko' og træk 'ToOwned'). Det bemærkes, at støttetilstanden for Rust i kernen allerede er tæt på at begynde at acceptere de første moduler skrevet i Rust ind i kernen.
    • Brugertilstand Linux (kører kernen som en brugerproces) på x86-64-systemer understøtter kode skrevet i Rust. Tilføjet understøttelse af opbygning af brugertilstand Linux ved hjælp af clang med linktidsoptimeringer aktiveret (LTO).
    • Tilføjet hwnoise-værktøj til at spore forsinkelser forårsaget af hardwareadfærd. Afvigelser i udførelsestiden for operationer (jitter) bestemmes, når afbrydelsesbehandling er deaktiveret, og overskrider et mikrosekund i 10 minutters beregninger.
    • Et kernemodul er blevet tilføjet med en Dhrystone benchmark-implementering, der kan bruges til at evaluere CPU-ydeevne i konfigurationer uden brugerrumskomponenter (for eksempel på porteringsstadiet for nye SoC'er, der kun implementerer kerneindlæsning).
    • Tilføjet "cgroup.memory=nobpf"-kernekommandolinjemulighed for at deaktivere hukommelsesforbrug, der tager højde for BPF-programmer, hvilket kan være nyttigt for systemer med isolerede containere.
    • For BPF-programmer foreslås en implementering af den rød-sorte trædatastruktur, som bruger kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) i stedet for at tilføje en ny kortlægningstype.
    • I mekanismen med genstartbare sekvenser (rseq, genstartbare sekvenser) er muligheden for at overføre parallelle eksekveringsidentifikatorer (memory-map concurrency ID) identificeret med CPU-nummeret blevet tilføjet til processer. Rseq giver et middel til hurtigt at udføre operationer, der, hvis de afbrydes af en anden tråd, ryddes op og prøves igen.
    • ARM-processorer understøtter SME 2-instruktioner (Scalable Matrix Extension).
    • For s390x- og RISC-V RV64-arkitekturerne er understøttelse af "BPF-trampolin"-mekanismen implementeret, hvilket gør det muligt at minimere overhead ved overførsel af opkald mellem kernen og BPF-programmerne.
    • På systemer med processorer baseret på RISC-V-arkitekturen er brugen af ​​"ZBB"-instruktioner implementeret for at fremskynde strengoperationer.
    • For systemer baseret på LoongArch-instruktionssæt-arkitekturen (bruges i Loongson 3 5000-processorerne og implementerer en ny RISC ISA svarende til MIPS og RISC-V), understøttelse af randomisering af kerneadresserum (KASLR), flytning af kernen i hukommelsen (flytning) ), hardwarepunkter stop og kprobe-mekanisme.
    • DAMOS-mekanismen (Data Access Monitoring-based Operation Schemes), som giver dig mulighed for at frigøre hukommelse baseret på frekvensen af ​​hukommelsesadgang, understøtter filtre til at udelukke visse områder af hukommelsen fra behandling i DAMOS.
    • Det minimale standard C-bibliotek Nolibc implementerer understøttelse af s390-arkitekturen og Arm Thumb1-instruktionssættet (udover understøttelse af ARM, AArch64, i386, x86_64, RISC-V og MIPS).
    • Objtool er blevet optimeret til at fremskynde kernebyggeri og reducere maksimalt hukommelsesforbrug under builds (når man bygger kernen i "allyesconfig"-tilstand, er der ingen problemer med tvungen afslutning af processer på systemer med 32 GB RAM).
    • Support til samlingen af ​​kernen af ​​Intel ICC-kompileren er blevet afbrudt, som har været uden arbejde i lang tid, og ingen har udtrykt ønske om at rette det.
  • Diskundersystem, I/O og filsystemer
    • tmpfs understøtter monteret filsystem-bruger-id-mapping, som bruges til at kortlægge en specifik brugers filer på en monteret fremmed partition til en anden bruger på det aktuelle system.
    • I Btrfs, for at reducere fragmenteringen af ​​grupper af blokke, opdeles omfanget efter størrelse ved tildeling af blokke, dvs. enhver gruppe af blokke er nu begrænset til små (op til 128KB), medium (op til 8MB) og store udstrækninger. raid56-implementeringen er blevet refaktoreret. Omdesignet kode til kontrol af kontrolsummer. Der er foretaget ydeevneoptimeringer for at fremskynde afsendelsesoperationen med op til 10 gange ved at cache utime for mapper og kun udføre kommandoer, når det er nødvendigt. 10x hurtigere fiemap-operationer ved at springe backlink-tjek over for delte data (snapshots). Operationer med metadata accelereres med XNUMX % ved at optimere søgningen efter nøgler i b-træstrukturer.
    • Forbedret ydeevne af ext4 FS ved at tillade flere processer at udføre direkte I/O-operationer samtidigt til præ-allokerede blokke ved hjælp af delte inodelåse i stedet for eksklusive låse.
    • I f2fs er der arbejdet på at forbedre kodens læsbarhed. Rettede vigtige problemer relateret til atomskrivning og den nye omfangscache.
    • EROFS (Enhanced Read-Only File System), designet til brug på skrivebeskyttede partitioner, implementerer evnen til at binde komprimerede fildekomprimeringsoperationer til CPU'en for at reducere dataadgangsforsinkelser.
    • BFQ I/O-planlæggeren har tilføjet understøttelse af avancerede roterende diskdrev, såsom dem, der bruger flere separat styrede drev (Multi Actuator).
    • Understøttelse af datakryptering ved hjælp af AES-SHA2-algoritmen er blevet tilføjet til implementeringen af ​​NFS-klienten og -serveren.
    • FUSE-undersystemet (Filesystems In User Space) har tilføjet understøttelse af forespørgselsudvidelsesmekanismen, som giver dig mulighed for at tilføje yderligere oplysninger i forespørgslen. Baseret på denne funktion implementeres tilføjelsen af ​​gruppeidentifikatorer til FS-anmodningen, som er nødvendige for at tage højde for adgangsrettigheder ved oprettelse af objekter i FS'en (create, mkdir, symlink, mknod).
  • Virtualisering og sikkerhed
    • KVM-hypervisoren til x86-systemer tilføjer understøttelse af udvidede Hyper-V-hyperkald og giver dem viderestilling til en handler, der kører i et brugerrumsværtsmiljø. Ændringen gjorde det muligt at implementere understøttelse af indlejret lancering af Hyper-V hypervisor.
    • KVM gør det nemmere at begrænse gæstesystemadgang til PMU-hændelser (Performance Monitor Unit) relateret til præstationsmåling.
    • Memfd-mekanismen, som giver dig mulighed for at identificere et hukommelsesområde gennem en filbeskrivelse, der sendes mellem processer, er blevet tilføjet muligheden for at skabe områder, hvor kodeudførelse er forbudt (ikke-eksekverbar memfd), og det er umuligt at indstille udførelsesrettigheder i fremtid.
    • En ny PR_SET_MDWE prctl-operation er blevet tilføjet for at blokere forsøg på at inkludere hukommelsesadgangsrettigheder, der tillader både skrivning og udførelse på samme tid.
    • Beskyttelse mod angreb af Spectre-klassen er blevet tilføjet og aktiveret som standard baseret på den automatiske IBRS (Enhanced Indirect Branch Restricted Speculation)-tilstand foreslået i AMD Zen 4-processorer, som giver dig mulighed for adaptivt at aktivere og deaktivere spekulativ udførelse af instruktioner under afbrydelsesbehandling , systemopkald og kontekstskift. Den foreslåede beskyttelse resulterer i lavere overhead sammenlignet med Retpoline-beskyttelse.
    • Løser en sårbarhed, der kan omgå Spectre v2-angrebsbeskyttelse ved brug af simultan multithreading-teknologi (SMT eller Hyper-Threading) og forårsaget af deaktivering af STIBP-mekanismen (Single Thread Indirect Branch Predictors) ved valg af IBRS-beskyttelsestilstand.
    • For ARM64-baserede systemer er der tilføjet et nyt "virtconfig" build-mål, som, når det er valgt, kun aktiverer det mindste sæt af kernekomponenter, der kræves for at starte i virtualiseringssystemer.
    • Tilføjet understøttelse af filtrering af systemkald ved hjælp af seccomp-mekanismen til m68k-arkitekturen.
    • Tilføjet understøttelse af AMD Ryzen-processorers indbyggede CRB TPM2 (Command Response Buffer) enheder baseret på Microsoft Pluton-teknologi.
  • Netværks undersystem
    • Et netlink-interface er blevet tilføjet for at konfigurere PLCA-underlaget (Physical Layer Collision Avoidance), defineret i IEEE 802.3cg-2019-specifikationen og brugt i 802.3cg (10Base-T1S) Ethernet-netværk optimeret til at forbinde IoT-enheder og industrielle systemer. Brugen af ​​PLCA forbedrer ydeevnen på delte medier Ethernet-netværk.
    • Understøttelse af "trådløse udvidelser" API til styring af trådløse WiFi 7 (802.11be) grænseflader er blevet afbrudt, da denne API ikke dækker alle de nødvendige indstillinger. Når du forsøger at bruge "trådløse udvidelser" API, som fortsat understøttes som et emuleret lag, vil der nu blive vist en advarsel for de fleste aktuelle enheder.
    • Der er udarbejdet detaljeret dokumentation om netlink API'et (for kerneudviklere og for udviklere af brugerrumsapplikationer). Ynl-gen-c-værktøjet er blevet implementeret til at generere C-kode baseret på YAML-specifikationerne for Netlink-protokollen.
    • Understøttelse af IP_LOCAL_PORT_RANGE-indstillingen er blevet tilføjet til netværkssockets for at forenkle konfigurationen af ​​udgående forbindelser gennem adresseoversættere uden brug af SNAT. Når du bruger den samme IP-adresse på flere værter, tillader IP_LOCAL_PORT_RANGE hver vært at bruge sit eget udvalg af udgående netværksporte og på gatewayen til at videresende pakker baseret på portnumre.
    • For MPTCP (MultiPath TCP) er muligheden for at håndtere blandede streams, der bruger IPv4- og IPv6-protokollerne, implementeret. MPTCP er en udvidelse af TCP-protokollen til at organisere driften af ​​en TCP-forbindelse med levering af pakker samtidigt langs flere ruter gennem forskellige netværksgrænseflader bundet til forskellige IP-adresser.
    • For IPv4 er muligheden for at bruge BIG TCP-udvidelsen implementeret, som gør det muligt at øge den maksimale TCP-pakkestørrelse op til 4 GB for at optimere driften af ​​højhastigheds interne netværk af datacentre. Denne stigning i pakkestørrelse med et 16-bit headerfelt opnås ved at implementere "jumbo"-pakker, der har IP-headerstørrelsen sat til 0 og den faktiske størrelse transmitteret i et separat 32-bit felt i en separat vedhæftet header.
    • En ny sysctl-parameter default_rps_mask er blevet tilføjet, hvorigennem du kan indstille standard RPS (Receive Packet Steering)-konfigurationen, som er ansvarlig for at distribuere behandlingen af ​​indgående trafik på tværs af CPU-kerner på interrupt-handler-niveau.
    • Afbrudt understøttelse af kødiscipliner for at begrænse CBQ (klassebaseret kø), ATM (ATM virtuelle kredsløb), dsmark (differentieret servicemarkør), tcindex (trafikkontrolindeks) og RSVP (ressourcereservationsprotokol) trafik. Disse discipliner har været opgivet i lang tid, og ingen var villige til at fortsætte deres støtte.
  • Оборудование
    • Fjernede alle DRI1-baserede grafikdrivere: i810 (gamle Intel 8xx integrerede grafikkort), mga (Matrox GPU), r128 (ATI Rage 128 GPU inklusive Rage Fury, XPERT 99 og XPERT 128 kort), savage (S3 Savage GPU), sis ( Crusty SiS GPU), tdfx (3dfx Voodoo) og via (VIA IGP), som blev udfaset i 2016 og ikke er blevet understøttet i Mesa siden 2012.
    • Fjernede forældede framebuffer (fbdev) drivere omap1, s3c2410, tmiofb og w100fb.
    • En DRM-driver er blevet tilføjet til VPU (Versatile Processing Unit) integreret i Intel Meteor Lake (14. generation) CPU'er, designet til at accelerere computersyn og maskinlæring. Driveren er implementeret ved hjælp af "accel"-undersystemet, der har til formål at yde support til computeracceleratorer, som kan leveres både i form af separate ASIC'er og som IP-blokke inde i SoC'en og GPU'en.
    • i915 (Intel) driveren udvider understøttelsen af ​​Intel Arc (DG2/Alchemist) diskrete grafikkort, introducerer foreløbig understøttelse af Meteor Lake GPU'er og inkluderer understøttelse af Intel Xe HP 4tile GPU'er.
    • Amdgpu-driveren tilføjer understøttelse af AdaptiveSync-teknologi og muligheden for at bruge Secure Display med flere skærme. Opdateret understøttelse af DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x og DP 2.1.
    • Tilføjet understøttelse af SM8350, SM8450 SM8550, SDM845 og SC8280XP platforme til msm-driveren (GPU Qualcomm Adreno).
    • Nouveau-driveren har droppet understøttelse af gamle ioctl-opkald.
    • Eksperimentel understøttelse af NPU VerSilicon (VeriSilicon Neural Network Processor) er blevet tilføjet til etnaviv-driveren.
    • Pata_parport-driveren til IDE-drev forbundet via en parallel port er blevet implementeret. Den tilføjede driver gjorde det muligt at fjerne den gamle PARIDE-driver fra kernen og opgradere ATA-undersystemet. En begrænsning ved den nye driver er manglende evne til samtidig at forbinde en printer og en disk gennem en parallelport.
    • Tilføjet ath12k-driver til trådløse kort baseret på Qualcomm-chips med understøttelse af Wi-Fi 7. Tilføjet understøttelse af trådløse kort baseret på RealTek RTL8188EU-chips.
    • Tilføjet understøttelse af 46 boards baseret på ARM64-arkitektur, inklusive 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 og også enheder baseret 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 K3328, RK3 og K642 654/AM68 / AM69).

Samtidig dannede Latin American Free Software Foundation en variant af den helt gratis kerne 6.3 - Linux-libre 6.3-gnu, renset for firmware- og driverelementer indeholdende ikke-frie komponenter eller kodesektioner, hvis omfang er begrænset af producenten. I udgivelse 6.3 blev der ryddet op i blobs i de nye ath12k-, aw88395- og peb2466-drivere, såvel som i de nye devicetree-filer til AArch64-baserede qcom-enheder. Opdateret blob-rensningskode i amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 drivere og undersystemer, samt i drivere til DVB-kort med softwareafkodning og i prækompilerede BPF-filer. Stoppet rensning af drivere mga, r128, tm6000, cpia2 og r8188eu, da de blev fjernet fra kernen. Forbedret i915 driver klat rengøring.

Kilde: opennet.ru

Tilføj en kommentar