Linux 6.7 kernel udgivelse

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af ​​Linux-kernen 6.7. Blandt de mest bemærkelsesværdige ændringer: integration af Bcachefs-filsystemet, afbrydelse af understøttelse af Itanium-arkitekturen, Nouveas evne til at arbejde med GSP-R-firmware, understøttelse af TLS-kryptering i NVMe-TCP, muligheden for at bruge undtagelser i BPF, understøttelse af futex i io_uring, optimering af fq (Fair Queuing) scheduler-ydeevne), understøttelse af TCP-AO-udvidelsen (TCP Authentication Option) og muligheden for at begrænse netværksforbindelser i Landlock-sikkerhedsmekanismen, tilføjet adgangskontrol til brugernavneområde og io_uring via AppArmor.

Den nye version indeholder 18405 rettelser fra 2066 udviklere, patchstørrelsen er 72 MB (ændringerne berørte 13467 filer, 906147 linjer kode blev tilføjet, 341048 linjer blev slettet). Den sidste udgivelse havde 15291 rettelser fra 2058 udviklere, patchstørrelsen var 39 MB. Omkring 45 % af alle ændringer, der er introduceret i 6.7, er relateret til enhedsdrivere, ca. 14 % af ændringerne er relateret til opdatering af kode, der er specifik for hardwarearkitekturer, 13 % er relateret til netværksstakken, 5 % er relateret til filsystemer og 3 % er relateret til interne kerneundersystemer.

Vigtigste innovationer i kerne 6.7:

  • Diskundersystem, I/O og filsystemer
    • Kernen anvender Bcachefs filsystemkode, som forsøger at opnå ydeevne, pålidelighed og skalerbarhed af XFS, kombineret med elementer af den avancerede funktionalitet, der findes i Btrfs og ZFS. For eksempel understøtter Bcachefs funktioner såsom at inkludere flere enheder i en partition, flerlags drevlayouts (det nederste lag med ofte brugte data baseret på hurtige SSD'er og det øverste lag med mindre brugte data fra harddiske), replikering (RAID 1/10), caching, transparent datakomprimering (LZ4, gzip og ZSTD-tilstande), tilstandssnit (øjebliksbilleder), integritetsverifikation ved hjælp af kontrolsummer, muligheden for at gemme Reed-Solomon fejlkorrektionskoder (RAID 5/6), lagring af information i krypteret form (ChaCha20 og Poly1305 bruges). Med hensyn til ydeevne er Bcachefs foran Btrfs og andre filsystemer baseret på Copy-on-Write-mekanismen og demonstrerer driftshastighed tæt på Ext4 og XFS.
    • Btrfs-filsystemet introducerer en forenklet kvotetilstand, der giver dig mulighed for at opnå højere ydeevne ved kun at spore omfang i den underpartition, hvor de er oprettet, hvilket væsentligt forenkler beregninger og forbedrer ydeevnen, men ikke tillader dig at tage højde for omfang, der deles i flere underpartier.
    • Btrfs har tilføjet en ny "stripe tree" datastruktur, der er velegnet til logisk udstrækningskortlægning i situationer, hvor fysiske kortlægninger ikke matcher på tværs af enheder. Strukturen bruges i øjeblikket i implementeringer af RAID0 og RAID1 til zoneinddelte blokenheder. I fremtiden planlægger de at bruge denne struktur i RAID'er på højere niveau, hvilket vil løse en række problemer, der eksisterer i den nuværende implementering.
    • Ceph-filsystemet implementerer understøttelse af kortlægning af bruger-id'er for monterede filsystemer, der bruges til at matche filerne fra en specifik bruger på en monteret fremmed partition med en anden bruger på det aktuelle system.
    • Tilføjet muligheden for at specificere uid og gid på mount til efivarfs for at tillade ikke-rodprocesser at ændre UEFI-variabler.
    • Tilføjet ioctl-kald til exFAT til læsning og ændring af FS-attributter. Tilføjet håndtering af biblioteker i nul størrelse.
    • F2FS implementerer muligheden for at bruge 16K blokke.
    • Autofs automount-mekanismen er blevet skiftet til at bruge den nye partitionsmonterings-API.
    • OverlayFS tilbyder "lowerdir+" og "datadir+" monteringsmuligheder. Tilføjet understøttelse for indlejret montering af OverlayFS med xattrs.
    • XFS har optimeret CPU-belastningen i blokallokeringskoden i realtid. Muligheden for samtidig at udføre læse- og FICLONE-operationer er tilvejebragt.
    • EXT2-koden er blevet konverteret til at bruge sidefolioer.
  • Hukommelse og systemtjenester
    • Understøttelse af ia64-arkitekturen brugt i Intel Itanium-processorer, som blev helt udgået i 2021, er blevet afbrudt. Itanium-processorer blev introduceret af Intel i 2001, men ia64-arkitekturen kunne ikke konkurrere med AMD64, primært på grund af den højere ydeevne af AMD64 og den mere jævne overgang fra 32-bit x86-processorer. Som et resultat skiftede Intels interesser til fordel for x86-64-processorer, og Itaniums parti forblev HP Integrity-servere, som ordrer på blev stoppet for tre år siden. Kode til ia64 support blev fjernet fra kernen hovedsageligt på grund af den langsigtede mangel på support til denne platform, mens Linus Torvalds udtrykte sin vilje til at returnere ia64 support til kernen, men kun hvis der er en vedligeholder, der kan demonstrere høj kvalitet understøttelse af denne platform uden for hovedkernen i mindst et år.
    • Tilføjet "ia32_emulation"-kernelinjekommandoparameteren, som giver dig mulighed for at aktivere eller deaktivere understøttelse af 32-bit mode emulering i kerner bygget til x86-64 arkitekturen på opstartsstadiet. På den praktiske side giver den nye mulighed dig mulighed for at bygge kernen med understøttelse af kompatibilitet med 32-bit applikationer, men deaktiver denne tilstand som standard for at reducere angrebsvektoren på kernen, da kompatibilitets-API'en er mindre testet end hovedkernen grænseflader.
    • Fortsat migrering af ændringer fra Rust-for-Linux-grenen relateret til brugen af ​​Rust-sproget som et andet sprog til udvikling af drivere og kernemoduler (Rust-understøttelse er ikke aktiv som standard og fører ikke til inklusion af Rust blandt nødvendige samlingsafhængigheder for kernen). Den nye version gør overgangen til at bruge Rust 1.73-udgivelsen og tilbyder et sæt bindinger til at arbejde med arbejdskøer.
    • Det er muligt at bruge binfmt_misc-mekanismen til at tilføje understøttelse af nye eksekverbare filformater (for eksempel til at køre kompilerede Java- eller Python-applikationer) inden for separate uprivilegerede navnerum.
    • cgroup-controlleren cpuset, som giver dig mulighed for at kontrollere brugen af ​​CPU-kerner, når du udfører en opgave, giver en opdeling i lokal og fjernpartitionering, som adskiller sig fra, om den overordnede cgroup er den korrekte rodsektion eller ej. Nye indstillinger "cpuset.cpus.exclusive" og "cpuset.cpus.excluisve.effective" er også blevet tilføjet til cpuset for eksklusiv CPU-binding.
    • BPF-undersystemet implementerer understøttelse af undtagelser, som behandles som en nødudgang fra et BPF-program med mulighed for sikkert at afvikle stabelrammer. Derudover tillader BPF-programmer brug af kptr-pointere i forbindelse med CPU'en.
    • Understøttelse af operationer med futex er blevet tilføjet til io_uring-undersystemet, og nye operationer er blevet implementeret: IORING_OP_WAITID (asynkron version af waitid), SOCKET_URING_OP_GETSOCKOPT (getsockoptand option), SOCKET_URING_OP_SETSOCKOPT (setsockopt-option_OP_ og REHOTIOAD stopper ikke-multiRING-option) og REHOTIOAD, mens operationen stopper der er data eller er ikke fuld buffer).
    • Tilføjet implementering af letvægts enkeltforbundne FIFO-køer, der kun kræver en spinlock til dekø i en proceskontekst og undlader en spinlock for atomiske tilføjelser til køen i enhver sammenhæng.
    • Tilføjet en ringbuffer "objpool" med en skalerbar implementering af en højtydende kø til allokering og returnering af objekter.
    • Den indledende del af ændringerne er blevet tilføjet for at implementere den nye futex2 API, som har bedre ydeevne på NUMA-systemer, understøtter andre størrelser end 32 bit og kan bruges i stedet for det multipleksede futex() systemkald.
    • For ARM32- og S390x-arkitekturer er understøttelse af det aktuelle sæt (cpuv4) af BPF-instruktioner blevet tilføjet.
    • For RISC-V-arkitekturen er det muligt at bruge Shadow-Call Stack-kontroltilstanden tilgængelig i Clang 17, designet til at beskytte mod overskrivning af returadressen fra en funktion i tilfælde af et bufferoverløb på stakken. Essensen af ​​beskyttelsen er at gemme returadressen i en separat "skygge"-stabel efter at have overført kontrol til en funktion og hentet denne adresse, før funktionen forlades.
    • En ny smart hukommelsessidescanningstilstand er blevet tilføjet til mekanismen til at flette identiske hukommelsessider (KSM: Kernel Samepage Merging), som sporer forgæves scannede sider og reducerer intensiteten af ​​deres genscanning. For at aktivere den nye tilstand er indstillingen /sys/kernel/mm/ksm/smart_scan blevet tilføjet.
    • Tilføjet en ny ioctl-kommando PAGEMAP_SCAN, som, når den bruges sammen med userfaultfd(), giver dig mulighed for at bestemme fakta om at skrive til et specifikt hukommelsesområde. Den nye funktion kan for eksempel bruges i systemet til at gemme og gendanne tilstanden af ​​CRIU-processer eller i spil-anti-cheat-systemer.
    • I assemblersystemet, hvis Clang-kompileren er tilgængelig, er samlingen af ​​eksempler på brug af perf-undersystemet, skrevet som BPF-programmer, aktiveret som standard.
    • Det gamle videobuf-lag, som blev brugt til at styre framebuffere i medieundersystemet og blev erstattet af en ny implementering af videobuf10 for mere end 2 år siden, er blevet fjernet.
  • Virtualisering og sikkerhed
    • Evnen til at kryptere data i blokke, der er mindre end blokstørrelsen i filsystemet, er blevet tilføjet til fscrypt-undersystemet. Dette kan være nødvendigt for at aktivere hardwarekrypteringsmekanismer, der kun understøtter små blokke (for eksempel kan UFS-controllere, der kun understøtter en 4096 blokstørrelse, bruges med et filsystem med en 16K blokstørrelse).
    • "iommufd"-undersystemet, som giver dig mulighed for at administrere IOMMU (I/O Memory-Management Unit) hukommelsessidetabeller gennem filbeskrivelser fra brugerplads, har tilføjet sporing af data, der endnu ikke er blevet tømt fra cachen (beskidte) til DMA operationer, som er nødvendige for at bestemme hukommelse med ikke-tømte data under procesmigrering.
    • Understøttelse til at definere adgangskontrolregler for TCP-sockets er blevet tilføjet til Landlock-mekanismen, som giver dig mulighed for at begrænse interaktionen af ​​en gruppe af processer med det eksterne miljø. For eksempel kan du oprette en regel, der kun tillader adgang til netværksport 443 for at etablere HTTPS-forbindelser.
    • AppArmor-undersystemet har tilføjet muligheden for at kontrollere adgangen til io_uring-mekanismen og oprette brugernavneområder, som giver dig mulighed for selektivt at tillade adgang til disse funktioner kun til bestemte processer.
    • Tilføjet virtuel maskine attestation API for at bekræfte integriteten af ​​den virtuelle maskine boot proces.
    • LoongArch-systemer understøtter virtualisering ved hjælp af KVM-hypervisoren.
    • Når du bruger KVM-hypervisoren på RISC-V-systemer, er der opstået understøttelse af Smstateen-udvidelsen, som blokerer den virtuelle maskine i at få adgang til CPU-registre, der ikke eksplicit understøttes af hypervisoren. Også tilføjet understøttelse af brugen af ​​Zicond-udvidelsen i gæstesystemer, som tillader brugen af ​​nogle betingede heltalsoperationer.
    • I x86-baserede gæstesystemer, der kører under KVM, er op til 4096 virtuelle CPU'er tilladt.
  • Netværks undersystem
    • NVMe-TCP (NVMe over TCP)-driveren, som giver dig adgang til NVMe-drev over netværket (NVM Express over Fabrics) ved hjælp af TCP-protokollen, har tilføjet understøttelse af kryptering af datatransmissionskanalen ved hjælp af TLS (ved hjælp af KTLS og en baggrundsproces). i brugerrum tlshd til forbindelsesforhandling).
    • Ydeevnen af ​​fq (Fair Queuing) pakkeplanlæggeren blev optimeret, hvilket gjorde det muligt at øge gennemløbet med 5 % under tunge belastninger i tcp_rr (TCP Request/Response) testen og med 13 % med et ubegrænset flow af UDP-pakker.
    • TCP tilføjer en valgfri mikrosekund-præcisions-tidsstempling (TCP TS)-funktion (RFC 7323), som giver mulighed for mere nøjagtig latenstidsvurdering og mere avancerede overbelastningskontrolmoduler. For at aktivere det kan du bruge kommandoen "ip route add 10/8 ... features tcp_usec_ts".
    • TCP-stakken har tilføjet understøttelse af TCP-AO-udvidelsen (TCP Authentication Option, RFC 5925), som gør det muligt at verificere TCP-headere ved hjælp af MAC-koder (Message Authentication Code), ved hjælp af mere moderne algoritmer HMAC-SHA1 og CMAC-AES- 128 i stedet tidligere tilgængelig TCP-MD5-mulighed baseret på den gamle MD5-algoritme.
    • En ny type virtuelle netværksenheder "netkit" er blevet tilføjet, hvor dataoverførselslogikken er indstillet ved hjælp af et BPF-program.
    • KSMBD, en implementering på kerneniveau af en SMB-server, har tilføjet understøttelse til at løse filnavne, der indeholder surrogatpar af sammensatte tegn.
    • NFS har forbedret implementeringen af ​​tråde med RPC-tjenester. Tilføjet understøttelse af skrivedelegering (til NFSv4.1+). NFSD har tilføjet understøttelse af rpc_status netlink handler. Forbedret understøttelse af NFSv4.x-klienter ved reeksport til knfsd.
  • Оборудование
    • Indledende understøttelse af GSP-RM-firmware er blevet tilføjet til Nouveau-kernemodulet, som bruges i NVIDIA RTX 20+ GPU'en til at flytte initialiserings- og GPU-kontroloperationer til siden af ​​en separat GSP-mikrocontroller (GPU System Processor). GSP-RM-understøttelse gør det muligt for Nouveau-driveren at arbejde gennem firmwarekald i stedet for direkte programmering af hardwareinteraktioner, hvilket gør det meget nemmere at tilføje understøttelse af nye NVIDIA GPU'er ved at bruge forudbyggede opkald til initialisering og strømstyring.
    • AMDGPU-driveren understøtter GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 og DML2. Forbedret understøttelse af problemfri indlæsning (ingen flimren ved skift af videotilstand).
    • i915-driveren tilføjer understøttelse af Intel Meteor Lake-chips og tilføjer en indledende implementering af Intel LunarLake (Xe 2).
    • Tilføjet understøttelse af asymmetriske transmissionskanaler tilføjet til USB4 v2 (120/40G) specifikationen.
    • Tilføjet understøttelse af ARM SoC: Qualcomm Snapdragon 720G (bruges i Xiaomi-smartphones), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (bruges i routere og NAS).
    • Tilføjet understøttelse af Fairphone 5-smartphone og ARM-kort Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Tilføjet understøttelse af RISC-V boards Milk-V Pioneer og Milk-V Duo.
    • Tilføjet understøttelse af lydgrænseflader på HUAWEI bærbare computere, der leveres med AMD CPU'er. Tilføjet understøttelse af ekstra højttalere installeret på Dell Oasis 13/14/16 bærbare computere. Tilføjet understøttelse af indbyggede højttalere ASUS K6500ZC. Tilføjet understøttelse af mute-indikatoren på HP 255 G8 og G10 bærbare computere. Tilføjet understøttelse af acp6.3 lyddrivere. Tilføjet understøttelse af Focusrite Clarett+ 2Pre og 4Pre professionelle optagegrænseflader.

Samtidig dannede Latin American Free Software Foundation en version af den helt gratis kerne 6.7 - Linux-libre 6.7-gnu, renset for elementer af firmware og drivere indeholdende ikke-frie komponenter eller kodesektioner, hvis omfang er begrænset af producenten. I udgivelse 6.7 er blob-rensningskoden blevet opdateret i forskellige drivere og undersystemer, for eksempel i amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs og btqca-drivere. Koden til at rense localtalk- og rtl8192u-driverne er blevet fjernet på grund af deres udelukkelse fra kernen. Fjernede unødvendige komponenter til rengøring af xhci-pci-, rtl8xxxu- og rtw8822b-driverne, som tidligere er tilføjet ved en fejl. Ryddede op i blob-navne i dts-filer til Aarch64-arkitekturen. Fjernede klatter i de nye drivere mt7925, tps6598x, aw87390 og aw88399.

Kilde: opennet.ru

Tilføj en kommentar