Udgivelse af Linux-kernen 6.7

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux 6.7-kernen. Blandt de mest bemærkelsesværdige ændringer er integrationen af filsystemet Bcachefs, ophør af understøttelse af Itanium-arkitekturen, muligheden for, at Nouveau fungerer med GSP-R-firmwares, understøttelse af TLS-kryptering i NVMe-TCP, mulighed for at bruge undtagelser i BPF, understøttelse af futex i io_uring, optimering af planlæggerens ydeevne fq (Fair Queuing), understøttelse af TCP-AO-udvidelsen (TCP Authentication Option) og muligheden for at begrænse netværksforbindelser i Landlock-beskyttelsesmekanismen, samt tilføjet adgangskontrol til user namespace og io_uring via AppArmor.

I den nye version er der blevet accepteret 18405 rettelser fra 2066 udviklere, patchstørrelsen er 72 MB (ændringerne berørte 13467 filer, 906147 kodelinjer blev tilføjet, og 341048 linjer blev fjernet). I den tidligere version var der 15291 rettelser fra 2058 udviklere, patchstørrelsen var 39 MB. Omkring 45% af alle ændringerne i 6.7 er relateret til enhedsdrivere, cirka 14% vedrører opdatering af hardware-arkitektur-specifik kode, 13% er relateret til netværksstakken, 5% til filsystemer og 3% til interne subsystems i kernen.

De vigtigste nyheder i kernen 6.7:

  • DiskSubsystem, input/output og filsystemer
    • Koden for filsystemet Bcachefs er blevet accepteret i kernen, hvor der er gjort forsøg på at opnå et niveau af ydeevne, pålidelighed og skalerbarhed, der svarer til XFS, kombineret med elementer af udvidet funktionalitet fra Btrfs og ZFS. For eksempel understøtter Bcachefs funktioner såsom integration af flere enheder i et partition, lagdelte opbevaringsarrangementer (nederste lag med ofte brugte data på hurtige SSD'er og det øverste lag med mindre efterspurgte data fra harddiske), replikation (RAID 1/10), caching, gennemsigtig datakomprimering (LZ4, gzip og ZSTD-modes), snapshots, kontrolsumvalidering, mulighed for at opbevare Reed-Solomon fejlkorrigeringskoder (RAID 5/6), opbevaring af oplysninger i krypteret form (ved brug af ChaCha20 og Poly1305). Med hensyn til ydeevne overgår Bcachefs Btrfs og andre filsystemer baseret på Copy-on-Write-mekanismen og viser hastighed, der er tæt på Ext4 og XFS.
    • Btrfs-filsystemet har fået en forenklet kvotemodus, der muliggør forbedret ydeevne ved kun at overvåge extent i den underordnede enhed, hvor de er oprettet. Dette forenkler beregningerne betydeligt og forbedrer ydeevnen, men det giver ikke mulighed for at tage hensyn til extent, der bruges af flere underordnede enheder.
    • Btrfs har fået en ny data struktur kaldet "stripe tree", der er velegnet til logisk kortlægning af extent i situationer, hvor den fysiske kortlægning ikke stemmer overens på forskellige enheder. Strukturen er i øjeblikket implementeret i RAID0- og RAID1-implementationer for zonede blokkeringsenheder. I fremtiden planlægges det at bruge denne struktur i RAID af højere niveau, hvilket vil løse en række eksisterende problemer i den nuværende implementering.
    • I Ceph-filsystemet er der implementeret støtte til kortlægning af bruger-id'er for monterede filsystmer, som bruges til at matche filer tilhørende en bestemt bruger på et monteret fremmed partition med en anden bruger i det nuværende system.
    • I efivarfs er der tilføjet mulighed for at angive uid og gid ved montering for at muliggøre ændringer af UEFI-variabler af processer, der kører uden root-rettigheder.
    • I exFAT er der tilføjet ioctl-opkald til læsning og ændring af filsystattribute. Behandling af kataloger med nul størrelse er blevet tilføjet.
    • I F2FS er muligheden for at bruge blokke på 16K blevet realiseret.
    • Autofs automount mekanismen er blevet overført til at bruge det nye API til montering af partitioner.
    • I OverlayFS er der foreslået monteringsmulighederne "lowerdir+" og "datadir+". Støtte til indlejret montering af OverlayFS med xattrs er blevet tilføjet.
    • XFS har gennemgået en optimering af CPU-belastningen i koden til fordeling af blokke i realtid. Det er blevet gjort muligt at udføre læseoperationer og FICLONE-operationer samtidig.
    • EXT2-koden er blevet overført til at anvende side folios.
  • Hukommelse og systemtjenester
    • Støtten til ia64-arkitekturen, der anvendes i Intel Itanium-processorer, er blevet ophørt, da salget af disse processorer helt blev stoppet i 2021. Itanium-processorerne blev præsenteret af Intel i 2001, men ia64-arkitekturen kunne ikke konkurrere med AMD64, hovedsageligt på grund af den højere ydeevne fra AMD64 og den glattere overgang fra 32-bit x86-processorer. Som følge heraf skiftede Intels interesser i retning af x86-64-processorer, mens Itanium blev. servere HP Integrity, som stoppe for ordreoptagelse for tre år siden. Koden til support af ia64 er blevet fjernet fra kernen hovedsageligt på grund af den lange mangel på vedligeholdelse af denne platform; dog har Linus Torvalds udtrykt vilje til at genoptage støtten til ia64 i kernen, men kun hvis nogen vil påtage sig vedligeholdelsen, som demonstrerer kvalitetsvedligeholdelse af denne platform uden for den primære kerne i mindst et år.
    • En ny kommando-linjeparameter i kernen «ia32_emulation» er tilføjet, hvilket muliggør aktivering og deaktivering af understøttelse af emulering af 32-bit-tilstand under opstarten i kerner, der er bygget til x86-64-arkitekturen. Praktisk set tillader den nye parameter at samle en kerne med kompatibilitet for 32-bit applikationer, men som standard er denne tilstand deaktiveret for at reducere angrebsfladen mod kernen, da API'en til at sikre kompatibiliteten er mindre testet end de primære kerneinterfaces.
    • Overførslen af ændringer fra Rust-for-Linux-grenen er fortsat, relateret til brugen af Rust som det andet sprog til udvikling af drivere og kernelmoduler (support for Rust er ikke aktiveret som standard og medfører ikke, at Rust bliver en obligatorisk byggeafhængighed for kernen). I den nye version er der sket en overgang til brug af Rust 1.73-versionen og et sæt bindinger til arbejde med arbejds-køer (workqueues) er blevet foreslået.
    • Muligheden for at bruge binfmt_misc-mekanismen er blevet tilføjet for at støtte nye formater af eksekverbare filer (f.eks. til kørsel af kompileringerede applikationer på Java eller Python) inden for separate, ikke-privilegerede navneområder (namespace).
    • I cgroup-controller cpuset, der tillader styring af CPU-kernerne under opgaveudførelse, er der etableret en opdeling i lokal og remote partitionering, som adskiller sig ved, om den overordnede cgroup er en korrekt rodsektion eller ej. Nye indstillinger «cpuset.cpus.exclusive» og «cpuset.cpus.exclusive.effective» er også blevet tilføjet til eksklusiv binding til CPU.
    • I BPF-subsystemet er der implementeret understøttelse af undtagelser, som behandles som et nødudgang fra BPF-programmet med muligheden for sikker rulling af stakrammer. Desuden er brugen af kptr-pegepinde i CPU-binding tilladt i BPF-programmer.
    • I io_uring-subsystemet er der tilføjet støtte til operationer med futexer, samt implementeret nye operationer: IORING_OP_WAITID (den asynkrone version af waitid), SOCKET_URING_OP_GETSOCKOPT (varianten af getsockopt) og SOCKET_URING_OP_SETSOCKOPT (varianten af setsockopt) samt IORING_OP_READ_MULTISHOT (gentagne læseoperationer, der ikke stopper, så længe der er data eller bufferet ikke er fyldt).
    • Der er tilføjet implementering af letvægts enkeltlinkede FIFO-køer, der kræver spin-locking kun for fjernelse fra køen i proceskontext og som ikke kræver spin-locking for atomisk tilføjelse til køen i enhver kontekst.
    • Der er tilføjet en ringbuffer «objpool» med en skalerbar implementering af en højtydende kø til tildeling og returnering af objekter.
    • Der er tilføjet den indledende del af ændringerne til implementering af det nye API futex2, som adskiller sig ved højere ydeevne på NUMA-systemer, understøtter størrelser, der adskiller sig fra 32 bit, og kan bruges i stedet for den multiplexede systemopringning futex().
    • For arkitekturerne ARM32 og S390x er der tilføjet støtte til det aktuelle sæt (cpuv4) af BPF-instruktioner.
    • For RISC-V-arkitekturen er muligheden for at bruge den i Clang 17 disponible Shadow-Call Stack kontroltilstand implementeret, som er designet til at beskytte mod overskrivning af returadressen fra funktionen i tilfælde af bufferoverløb i stakken. Beskyttelsen går ud på at gemme returadressen i en separat ‘skygge’-stak, efter kontrol er givet til funktionen, og hente denne adresse før udgangen fra funktionen.
    • Den identiske siden for minne-sammensmelting (KSM: Kernel Samepage Merging) har fått en ny smart skannemodus som sporer feilaktig skannede sider og reduserer intensiteten av deres gjennomsøking. For å aktivere den nye modusen er det lagt til en innstilling i /sys/kernel/mm/ksm/smart_scan.
    • En ny ioctl-kommando PAGEMAP_SCAN er lagt til, som når den brukes med userfaultfd(), lar deg bestemme om det har vært skriving til et bestemt minneområde. Denne nye funksjonen kan for eksempel brukes i systemet for å lagre og gjenopprette tilstanden til prosesser CRIU eller i spill anti-cheat-systemer.
    • I byggesystemet er det nå aktivert standardkompilering av eksempler på bruk av perf-subsystemet, skrevet som BPF-programmer, når Clang-kompilatoren er til stede.
    • Det gamle laget videobuf, som ble brukt til å håndtere rammebufferne i mediesubsystemet og mer enn 10 år siden ble erstattet av den nye implementeringen videobuf2, er fjernet.
  • Virtualisering og sikkerhed
    • I fscrypt-subsystemet er det lagt til mulighet for å kryptere data i blokker som er mindre enn blokkstørrelsen i filsystemet. Dette kan være nødvendig for å aktivere maskinvarekrypteringsmekanismer som bare støtter små blokker (for eksempel vil UFS-kontrollere som bare støtter blokkstørrelse 4096, kunne brukes med FSys med blokkstørrelse 16K).
    • I subsystemet 'iommufd', som muliggjør administrering av sidetabeller for inn- og utdata (IOMMU) via filbeskrivelser fra brukerrommet, er det lagt til sporingsmulighet for ikke-nullstillte data (dirty) for DMA-operasjoner, noe som er nødvendig for å bestemme minnet med ikke-nullstilte data ved prosessflytting.
    • I Landlock-mekanismen, som gjør det mulig å begrense interaksjonen mellom en gruppe prosesser og det ytre miljøet, er det lagt til støtte for å definere tilgangsregler for TCP-sokler. For eksempel kan du lage en regel som kun tillater tilgang via nettverksport 443 for å opprette HTTPS-tilkoblinger.
    • I AppArmor-subsystemet er det lagt til mulighet for å administrere tilgang til io_uring-mekanismen og opprette brukernavnsrom, noe som tillater selektiv tilgang til disse funksjonene for bestemte prosesser.
    • API-en for attesteringsfunksjoner er lagt til virtual machines for å bekrefte integriteten til prosessene deres ved lasting.
    • LoongArch-systemerne har implementeret virtualisering med brug af KVM-hypervisoren.
    • Ved brug af KVM-hypervisoren på RISC-V-systemer er der tilføjet support for Smstateen-udvidelsen, som blokerer virtuelle maskiners adgang til CPU-registre, som ikke er eksplicit understøttet af hypervisoren. Der er også tilføjet support for brug af Zicond-udvidelsen i gæstesystemer, der muliggør nogle betingede heltalsoperationer.
    • I gæstesystemer kørende under KVM baseret på x86-arkitekturen er brug af op til 4096 virtuelle CPU'er tilladt.
  • Netværkssubsystem
    • I NVMe-TCP-driveren (NVMe over TCP), som muliggør adgang til NVMe-lager over netværk (NVM Express over Fabrics) ved hjælp af TCP-protokollen, er der tilføjet support for dataoverførselsslutning med TLS (bruger KTLS og en baggrundsproces i brugerrum tlshd til at forhandle forbindelsen).
    • Ydelsesoptimering er blevet udført på fq (Fair Queuing) pakkeplanlæggeren, hvilket har øget båndbredden med 5% under høj belastning i tcp_rr-testen (TCP Request/Response) og 13% under ubegribelig UDP-pakkeflow.
    • I TCP-protokollen er der tilføjet en valgfri mulighed for at bruge tidsstempler (TCP TS) med mikrosekund-præcision (RFC 7323), hvilket muliggør mere præcise vurderinger af forsinkelse og skaber mere avancerede kontrolmoduler for overbelastning. Kommandoen "ip route add 10/8 … features tcp_usec_ts" kan bruges til at aktivere dette.
    • TCP-stakken har fået support til TCP-AO (TCP Authentication Option, RFC 5925) udvidelsen, som gør det muligt at verificere TCP-hoveder baseret på MAC-koder (Message Authentication Code), ved hjælp af mere moderne algoritmer HMAC-SHA1 og CMAC-AES-128 i stedet for den tidligere tilgængelige TCP-MD5 mulighed baseret på den forældede MD5-algoritme.
    • En ny type virtuelle netværksenheder "netkit" er blevet tilføjet, hvis datatransmissionslogik defineres ved hjælp af BPF-programmer.
    • I KSMBD, en SMB-serverimplementering på kerneniveau, er der tilføjet support for at konvertere filnavne, der indeholder surrogate par af sammensatte tegn.
    • I NFS er implementeringen af strømme med RPC-tjenester forbedret. Der er tilføjet support for skrivedelDelegation (for NFSv4.1+). I NFSD er der tilføjet support for netlink-behandler rpc_status. Støtten til NFSv4.x-klienter er forbedret ved genudsendelse til knfsd.
  • Udstyr
    • Nouveau-kernen har fået indledende support til GSP-RM-firmware, som anvendes i NVIDIA RTX 20+ GPU'er til at håndtere initialisering og kontrol af GPU'en via en separat mikrocontroller kaldet GSP (GPU System Processor). Support til GSP-RM giver Nouveau-driveren mulighed for at arbejde gennem firmware-anmodninger i stedet for direkte programmering af hardware-interaktionsoperationer, hvilket væsentligt forenkler tilføjelsen af støtte til nye NVIDIA GPU'er ved at anvende allerede eksisterende kald til initialisering og energistyring.
    • AMDGPU-driveren har implementeret support for GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 og DML2. Der er forbedret støtte til sømløs indlæsning (uden flimmer ved skift af videomode).
    • i915-driveren har implementeret support for Intel Meteor Lake-chips og tilføjet indledende implementering af Intel LunarLake (Xe 2).
    • Support til asymmetriske transmissionkanaler, der er tilføjet i USB4 v2-specifikationerne (120/40G), er blevet tilføjet.
    • Support til ARM SoC: Qualcomm Snapdragon 720G (anvendes i Xiaomi-smartphones), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (anvendes i routere og NAS).
    • Support til smartphone Fairphone 5 og ARM-platforme Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30 er blevet tilføjet.
    • Support til RISC-V-platforme Milk-V Pioneer og Milk-V Duo er blevet tilføjet.
    • Support til lydgrænseflader i bærbare computere fra HUAWEI, der leveres med AMD CPU'er, er blevet tilføjet. Der er tilføjet support til ekstra højttalere installeret på Dell Oasis 13/14/16 bærbare computere. Support til indbyggede højttalere i ASUS K6500ZC er også blevet tilføjet. Support til lydoverførselsindikatorer på HP 255 G8 og G10 bærbare computere er tilføjet. Support til lyddrivere acp6.3 er blevet tilføjet. Endelig er der blevet tilføjet support til professionelle lydinterface Focusrite Clarett+ 2Pre og 4Pre.

Samtidig har den latinamerikanske Fond for Fri Software udviklet en helt fri kerne 6.7 — Linux-libre 6.7-gnu, renset for firmware og drivere, der indeholder ikke-frie komponenter eller kodeområder, hvis anvendelse er begrænset af producenten. I version 6.7 er koden til at rense blobs opdateret i forskellige drivere og undersystemer, for eksempel i driverne amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs og btqca. Koden til at rense driverne localtalk og rtl8192u er fjernet på grund af deres eksklusion fra kernen. Unødvendige komponenter til rensning af driverne xhci-pci, rtl8xxxu og rtw8822b, som tidligere blev tilføjet ved en fejl, er blevet fjernet. Rensningen af blobs-navne i dts-filer til arkitekturen Aarch64 er blevet gennemført. Blobs i de nye drivere mt7925, tps6598x, aw87390 og aw88399 er blevet fjernet.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster