Efter to måneder med udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 5.17. Blandt de mest bemærkelsesværdige ændringer er: et nyt system til ydelseshåndtering for AMD-processorer, muligheden for rekursiv mapping af bruger-id'er i filsystemer, støtte til portabelt kompilering af BPF-programmer, overgangen af pseudotilfældighedsgeneratoren til BLAKE2s-algoritmen, værktøjet RTLA til realtidsanalyse af udførelse, en ny backend for fscache til caching af netværks-FS, samt muligheden for at knytte navne til anonyme mmap-operationer.
Den nye version inkluderer 14.203 rettelser fra 1.995 udviklere, patchstørrelsen er 37 MB (ændringerne vedrørte 11.366 filer, 506.043 linjer kode blev tilføjet, 250.954 linjer blev fjernet). Omkring 44% af alle ændringerne i 5.17 relaterer sig til enhedsdrivere, cirka 16% vedrører opdatering af kode specifik for hardwarearkitekturer, 15% relaterer sig til netværksstakken, 4% til filsystemerne og 4% til de interne underliggende systemer i kernen.
De vigtigste nyheder i kernen 5.17:
- DiskSubsystem, input/output og filsystemer
- Muligheden for indlejret mapping af bruger-id'er for monterede filsystemer er blevet implementeret, hvilket anvendes til at matche filer fra en bestemt bruger på et monteret eksternt partition med en anden bruger i det aktuelle system. Den tilføjede mulighed gør det muligt at bruge mapping rekursivt over filsystemer, hvor mapping allerede anvendes.
- Fscache-underdelen er blevet fuldstændig omkodet og bruges til at organisere caching i det lokale filsystem af data, der overføres via netværksfilssystemer. Den nye implementering skiller sig ud ved en betydelig forenkling af koden og udskiftning af komplekse planlægnings- og tilstandsovervågningsoperationer med enklere mekanismer. Støtte til det nye fscache er implementeret i CIFS-filsystemet.
- I fanotify-filsystemets begivenhedssporing er en ny begivenhedstype FAN_RENAME blevet implementeret, som gør det muligt at fange operationen for omdøbning af filer eller mapper på én gang (tidligere blev der anvendt to separate begivenheder FAN_MOVED_FROM og FAN_MOVED_TO til håndtering af omdøbninger).
- I filsystemet Btrfs er der foretaget optimering af logging- og fsync-operationer for store kataloger, som er realiseret ved kun at kopiere indeksnøgler og reducere mængden af loggede metadata. Der er sikret understøttelse af indeksering og søgning baseret på størrelsen af optagelser om ledig plads, hvilket har resulteret i en reduktion af forsinkelser på cirka 30 % og en forkortelse af søgetid. Det er nu muligt at afbryde defragmenteringsoperationer. Muligheden for at tilføje enheder uden at balancere mellem lagringsmedierne er blevet inkluderet, dvs. ved at montere FS med indstillingen skip_balance.
- Der er foreslået en ny syntaks til montering af Ceph-filsystemet, som løser eksisterende problemer relateret til binding til IP-adresser. Udover IP-adresser for at bestemme serveren kan der nu anvendes en klusteridentifikator (FSID): mount -t ceph user@fsid.fs_name=\[subdir] mnt -o mon_addr=monip1[:port][\/monip2[:port]]
- Filsystemet Ext4 er blevet opdateret til et nyt API til montering, som adskiller faserne for parsing af monteringsmuligheder og konfiguration af superblokken. Støtten til montagemulighederne lazytime og nolazytime, som blev tilføjet som en midlertidig ændring for at lette overgangen fra util-linux til brugen af flaget MS_LAZYTIME, er blevet ophævet. Understøttelsen af at sætte og læse etiketter i FS er blevet tilføjet (ioctl FS_IOC_GETFSLABEL og FS_IOC_SETFSLABEL).
- NFSv4 har fået tilføjet understøttelse af arbejde i filsystemer uden skelnen mellem store og små bogstaver i fil- og katalognavne. I NFSv4.1+ er der tilføjet støtte til at definere aggregerede sessioner (trunking).
- Hukommelse og systemtjenester
- Der er tilføjet en amd-pstate-driver, der muliggør dynamisk frekvensstyring for at opnå optimal ydeevne. Driveren understøtter AMD CPU'er og APU'er fra Zen 2 generationen og er udviklet i samarbejde med Valve med fokus på at forbedre energieffektiviteten. Til adaptiv frekvensjustering anvendes CPPC-mekanismen (Collaborative Processor Performance Control), som gør det muligt at ændre ydeevneparametre mere præcist (ikke begrænset til tre ydelsesniveauer) og reagere hurtigere på ændringer i tilstanden end tidligere brugte P-state-drivere baseret på ACPI (CPUFreq).
- I eBPF-subsystemet er der blevet foreslået en bpf_loop()-håndterer, som tilbyder en alternativ metode til at organisere sløjfer i eBPF-programmer, der er hurtigere og lettere at verificere.
- Der CO-RE (Compile Once — Run Everywhere) mekanisme er implementeret på kerne niveau, hvilket gør det muligt at kompilere eBPF-programmer kun én gang og bruge en speciel universel loader, der tilpasser det indlæste program til den aktuelle kerne og BTF-typer (BPF Type Format).
- Muligheden for at tildele navne til områder af privat anonym (tilpasset via malloc) hukommelse er blevet tilføjet, hvilket kan forenkle debuggingsprocessen og optimeringer af hukommelseforbruget i applikationer. Navne tildeles via prctl med flaget PR_SET_VMA_ANON_NAME og vises i /proc/pid/maps og /proc/pid/smaps i formen "[anon:<name>]".
- Scheduler giver mulighed for at spore og vise tiden, som processer tilbringer i tvinge dvale tilstand (forced-idle), hvilket f.eks. bruges til at reducere belastningen ved overophedning af CPU’en, i /proc/PID/sched.
- En gpio-sim modul er blevet tilføjet til simulering af GPIO-chips til testformål.
- Der er tilføjet en underkommando "latency" til kommandoen "perf ftrace" til at generere histogrammer med information om forsinkelse.
- Et sæt af værktøjer kaldet "RTLA" er blevet tilføjet til analyse af realtidsperformance. Dette inkluderer værktøjer som osnoise (bestemmer operativsystemets indflydelse på opgavens udførelse) og timerlat (ændrer timerrelaterede forsinkelser).
- Den anden serie patches, der implementerer konceptet med hukommelsessider (page folios), som ligner sammensatte hukommelsessider (compound pages), men som har en forbedret semantik og en mere klar arbejdsorganisation, er integreret. Brug af folios muliggør hurtigere hukommelsesstyring i visse dele af kernen. I de foreslåede patches er der gennemført en overgang fra sidet cache til brug af folios, og der er tilføjet indledende støtte til folios i XFS-filsystemet.
- Der er tilføjet en build-mode "make mod2noconfig", hvor der genereres en konfiguration, der bygger alle de deaktiverede subsystemer som kermoduler.
- Kravene til versionen af LLVM/Clang, som kan bruges til at bygge kernen, er blevet hævet. Nu kræves mindst version 11 af LLVM til bygning.
- Virtualisering og sikkerhed
- Den opdaterede implementering af RDRAND pseudorandom number generatoren, som styrer enhederne /dev/random og /dev/urandom, er bemærkelsesværdig for sin overgang til at bruge hash-funktionen BLAKE2s i stedet for SHA1 til blanding af entropi. Ændringen har øget sikkerheden i pseudorandom number generatoren ved at eliminere de problematiske SHA1-algoritmer og undgå overskrivning af RNG's initialiseringsvektor. Da BLAKE2s-algoritmen overgår SHA1 med hensyn til ydeevne, har brugen af den også haft en positiv indvirkning på systemets ydeevne.
- Tilføjet beskyttelse mod sårbarheder i processorer forårsaget af spekulativ udførelse af instruktioner efter betingelsesløse direkte spring. Problemet opstår på grund af forudsigende behandling af instruktioner, der findes i hukommelsen umiddelbart efter springkommandoen (SLS, Straight Line Speculation). For at aktivere beskyttelsen kræves en samling med GCC 12, der i øjeblikket er i testfase.
- Der er tilføjet et reference-tællingsmekanisme (refcount), der sigter mod at reducere antallet af fejl ved reference-tælling, som fører til adgang til hukommelse efter dens frigivelse. Mekanismen er i øjeblikket begrænset til netværkssystemet, men kan i fremtiden også tilpasses til andre dele af kernen.
- Udvidede checks for nye poster i processens hukommelsesside tabel er implementeret, hvilket muliggør opdagelse af visse typer beskadigelser og stopper systemet ved at blokere angreb i de tidlige faser.
- Muligheden for at pakke kerne-moduler direkte af selve kernen er blevet tilføjet, i stedet for af brugerlandets behandler, hvilket gør det muligt at sikre, at kerne-moduler indlæses i hukommelsen fra et verificeret lagringsenhed ved hjælp af LSM-modulet LoadPin.
- Sikret en samling med flaget '-Wcast-function-type', som aktiverer advarsler om konvertering af funktionspejle til inkompatible typer.
- En virtuel host-drivers pvUSB til hypervisoren Xen er blevet tilføjet, hvilket giver adgang til USB-enheder, der er forbipasseret til gæstesystemer (tillader gæstesystemer at tilgå fysiske USB-enheder, der er knyttet til gæstesystemen).
- En modul er blevet tilføjet, som muliggør Wi-Fi-interaktion med IME (Intel Management Engine) subsystemet, der findes på de fleste moderne bundkort med Intel-processorer og er implementeret som en separat mikroprocessor, der kører uafhængigt af CPU'en.
- Der er blevet implementeret support for KCSAN (Kernel Concurrency Sanitizer) debugværktøjet til ARM64-arkitekturen, der er designet til dynamisk at identificere race conditions i kerne.
- Muligheden for at anvende KFENCE-mekanismen til at identificere hukommelsesfejl er blevet tilføjet til 32-bit ARM-systemer.
- Under KVM-hypervisoren er der tilføjet support for AMX (Advanced Matrix Extensions) instruktionerne, der er implementeret i de kommende Intel Xeon Scalable serverprocessorer.
- Netværkssubsystem
- Support til offloading af trafikstyringsoperationer til netværksenheder er blevet tilføjet.
- Muligheden for at bruge MCTP (Management Component Transport Protocol) over serielle enheder er tilføjet. MCTP kan bruges til kommunikation mellem styringscontrollere og relaterede enheder (host-processorer, perifere enheder osv.).
- TCP-stakken er blevet optimeret, for eksempel er der implementeret forsinket frigivelse af socket-buffere for at forbedre ydeevnen ved recvmsg-anrop.
- På CAP_NET_RAW-niveau er det blevet tilladt at indstille SO_PRIORITY og SO_MARK-tilstande via setsockopt-funktionen.
- For IPv4 er det tilladt at knytte raw-sockets ikke til lokale IP-adresser ved hjælp af IP_FREEBIND og IP_TRANSPARENT mulighederne.
- Der er tilføjet sysctl arp_missed_max for at justere tærskelværdien for fejl ved ARP-overvågning, hvorefter netværksinterfacet skifter til deaktiveret tilstand.
- Det er nu muligt at konfigurere separate sysctl værdier, min_pmtu og mtu_expires, for netværksnavneområder.
- I ethtool API'et er der blevet tilføjet mulighed for at indstille og bestemme størrelsen på indgående og udgående pakke-buffere.
- Netfilter har fået tilføjet support til filtrering af transit pppoe-trafik i netværksbroen.
- I ksmbd-modulet med implementeringen af filsystemet, der bruger SMB3-protokollen, er der tilføjet support til nøgleudveksling, og netværksport 445 er blevet aktiveret for smbdirect, samt tilføjet støtte for parameteren 'smb2 max credit. server, использующего протокол SMB3, добавлена поддержка обмена ключами, задействован сетевой порт 445 для smbdirect и добавлена поддержка параметра «smb2 max credit.
- Udstyr
- I subsystemet drm (Direct Rendering Manager) og driveren i915 er der tilføjet støtte til skærme til visning af fortrolige oplysninger, for eksempel leveres nogle bærbare computere med skærme, der har indbygget fortrolighedstilstand, som vanskeliggør syn fra siden. De tilføjede ændringer muliggør tilslutning af specialiserede drivere til sådanne skærme og styring af fortrolighedstilstande gennem indstilling af egenskaber i almindelige KMS-drivere.
- Driveren amdgpu har fået støtte for fejlfindings teknologien STB (Smart Trace Buffer) til alle understøttede AMD GPU'ere. STB forenkler analyse af nedbrud og identifikation af problemårsager ved at gemme information om funktioner, der blev udført før det sidste nedbrud, i en særlig buffer.
- Driveren i915 har fået støtte for Intel Raptor Lake S chips, og der er aktiveret standardstøtte for den grafiske underkategori af Intel Alder Lake P chips. Muligheden for at styre skærmlyset via DPCD-grænsefladen VESA er blevet tilføjet.
- I drivere fbcon/fbdev er der genindført støtte til hardwareaccelereret scrolling i konsollen.
- Integration af ændringer til støtte for Apple M1 chips fortsætter. Muligheden for at bruge driveren simpledrm på systemer med Apple M1 chippen til at vise via framebufferen, der tilbydes af firmware, er blevet implementeret.
- Der er tilføjet støtte for ARM SoC, enheder og kort Snapdragon 7c, 845 og 888 (Sony Xperia XZ2/XZ2C/XZ3, Xperia 1 III/5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (anvendes i Wi-fi-routere), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
- Der er tilføjet støtte for ARM Cortex-M55 og Cortex-M33 processorer.
- Der er tilføjet støtte for enheder baseret på MIPS CPU: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
- Der er tilføjet støtte for SoC StarFive JH7100 baseret på RISC-V arkitektur.
- Der er tilføjet driveren lenovo-yogabook-wmi til styring af baggrundsbelysning af tastatur og adgang til forskellige sensorer i Lenovo Yoga Book.
- Der er tilføjet driveren asus_wmi_sensors til adgang til sensorer, der anvendes på MSI X370, X470, B450, B550 og X399 moderkort baseret på AMD Ryzen processorer.
- Der er tilføjet driveren x86-android-tablets til tablets baseret på x86-arkitektur, der leveres med Android-platformen.
- Tilføjet support til touchskærme TrekStor SurfTab duo W1 og elektronisk pen til Chuwi Hi10 Plus og Pro tablets.
- Driverne til SoC Tegra 20/30 har fået tilføjet support til strømstyring og spænding. Det er nu muligt at starte op på ældre 32-bit enheder baseret på SoC Tegra, som ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 og Pad TF300TG.
- Der er tilføjet drivere til industrielle computere fra Siemens.
- Tilføjet support for LCD-paneler Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA og Team Source Display TST043015CMHX.
- Tilføjet support til lydsystemer og codecs AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel systemer der bruger NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Problemer med Tegra194 HD-audio er løst. Support til HDA for codecs CS35L41 er tilføjet. Forbedret support til lydsystemer for bærbare computere fra Lenovo og HP samt bundkort fra Gigabyte.
Kilde: opennet.ru
