Etter to mÄneders utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 5.17. Blant de mest bemerkelsesverdige endringene: et nytt ytelsesstyringssystem for AMD-prosessorer, muligheten for rekursiv mapping av brukeridentifikatorer i filsystemer, stÞtte for bÊrbare BPF-programmer, overfÞring av generatoren for pseudotilfeldige tall til BLAKE2s-algoritmen, RTLA-verktÞyet for sanntidsanalyse av utfÞrelse, en ny fscache-backend for caching av nettverks-FS, og muligheten til Ä knytte navn til anonyme mmap-operasjoner.
Den nye versjonen inkluderer 14 203 rettelser fra 1 995 utviklere, patch-stĂžrrelsen er 37 MB (endringene berĂžrte 11 366 filer, 506 043 linjer med kode ble lagt til, og 250 954 linjer ble fjernet). Omtrent 44 % av alle endringene i 5.17 er relatert til enhetsdrivere, omtrent 16 % av endringene gjelder oppdatering av koden for spesifikke maskinarkitekturer, 15 % er knyttet til nettverksstakken, 4 % til filsystemer og 4 % til kjerneundersystemer.
De viktigste nyhetene i kjernen 5.17:
- Disk subsystem, I/O og filsystemer
- Muligheten for innbakt mapping av brukeridentifikatorer for monterte filsystemer er implementert. Dette brukes for Ä tilordne filer til en bestemt bruker pÄ et montert fremmed partisjon med en annen bruker i det nÄvÊrende systemet. Den nye muligheten tillater rekursiv bruk av mapping over filsystemer der mapping allerede er brukt.
- fscache-undersystemet er fullstendig omkodet. Dette brukes til Ă„ organisere caching i de lokale filsystemene for data som overfĂžres over nettverksfilsystemer. Den nye implementasjonen utmerker seg med betydelig forenkling av koden og erstatning av kompliserte planlegging- og tilstandsoppfĂžlgingstrinn med enklere mekanismer. StĂžtte for den nye fscache er implementert i CIFS-filsystemet.
- I fanotify-hendelsessporingssystemet er en ny type hendelse FAN_RENAME implementert, som lar deg fange opp fil- eller katalogomdÞpingsoperasjonen samtidig (tidligere ble to separate hendelser FAN_MOVED_FROM og FAN_MOVED_TO brukt for Ä hÄndtere omdÞpinger).
- Btrfs-filsystemet har fÄtt optimalisert logging- og fsync-operasjoner for store kataloger, realisert ved Ä kopiere kun indeksnÞkler og redusere mengden loggfÞrt metadata. StÞtte for indeksering og sÞk basert pÄ stÞrrelsen pÄ oppfÞringer om ledig plass er implementert, noe som har redusert ventetid med omtrent 30% og forkortet sÞketid. Det er nÄ tillatt Ä avbryte defragmenteringsoperasjoner. Muligheten til Ä legge til enheter mens bÄndingen mellom lagrene er deaktivert, er inkludert, dvs. ved Ä montere FS med alternativet skip_balance.
- En ny syntaks for montering av Ceph-filsystemet er foreslÄtt, som lÞser tidligere problemer knyttet til IP-adressebinding. I tillegg IP-adresser kan man nÄ bruke klusteridentifikator (FSID) for Ä bestemme serveren: mount -t ceph user@fsid.fs_name=\/[subdir] mnt -o mon_addr=monip1[:port][\/monip2[:port]]
- Ext4-filsystemet er overfĂžrt til et nytt API for montering, som skiller mellom parsing-faser for monteringsalternativer og oppsett av superblokk. StĂžtte for monteringsalternativene lazytime og nolazytime, som ble lagt til som en midlertidig endring for Ă„ forenkle overgangen til util-linux for bruk av flagget MS_LAZYTIME, er opphĂžrt. StĂžtte for Ă„ sette og lese etiketter i FS (ioctl FS_IOC_GETFSLABEL og FS_IOC_SETFSLABEL) er lagt til.
- I NFSv4 er stÞtte for Ä jobbe i filsystmer uten skille mellom store og smÄ bokstaver i fil- og katalognavn lagt til. I NFSv4.1+ er stÞtte for Ä definere aggregerte sesjoner (trunking) lagt til.
- Minne og systemtjenester
- amd-pstate-driveren er lagt til, som gir dynamisk frekvenskontroll for optimal ytelse. Driveren stÞtter AMD CPU-er og APU-er fra Zen 2-generasjonen og er utviklet i samarbeid med Valve, med mÄl om Ä forbedre energieffektiviteten. For adaptiv frekvensjustering brukes CPPC (Collaborative Processor Performance Control)-mekanismen, som gir mer presis endring av ytelse (ikke begrenset til tre ytelsesnivÄer) og raskere reaksjon pÄ endringer i status enn tidligere P-state-drivere basert pÄ ACPI (CPUFreq).
- I eBPF-subsystemet er bpf_loop()-behandleren foreslÄtt, som gir en alternativ mÄte Ä organisere lÞkker i eBPF-programmer, raskere og enklere Ä verifisere for verifikatoren.
- I kjernen er det implementert en mekanisme for CO-RE (Compile Once â Run Everywhere), som lar deg kompilere eBPF-programmer bare Ă©n gang og bruke en spesiell universell laster som tilpasser programmet til den nĂ„vĂŠrende kjernen og BTF (BPF Type Format).
- Det er nÄ mulig Ä tildele navn til omrÄder med privat anonym (allokert via malloc) minne, noe som kan forenkle feilsÞking og optimalisering av minneforbruk i applikasjoner. Navn tildeles via prctl med flagget PR_SET_VMA_ANON_NAME og vises i /proc/pid/maps og /proc/pid/smaps i formen «[anon:]».
- I oppgaveplanleggeren er det mulig Ă„ spore og vise tiden prosessene har tilbrakt i tvungen hvile (forced-idle) i /proc/PID/sched, noe som brukes for Ă„ redusere belastningen ved overoppheting av prosessoren.
- Modulen gpio-sim er lagt til, som er ment for Ă„ simulere GPIO-brikker for testing.
- Det er lagt til en underkommando «latency» til kommandoen «perf ftrace» for Ä generere histogrammer med informasjon om forsinkelser.
- Et sett med verktÞy kalt «RTLA» er lagt til for analyse av sanntidsdrift. Blant verktÞyene finnes osnoise (som bestemmer innflytelsen fra operativsystemet pÄ oppgavens utfÞrelse) og timerlat (som endrer forsinkelser relatert til timere).
- Den andre serien av patcher er integrert med implementeringen av konseptet med minnesider (page folios), som ligner pÄ kombinerte minnesider (compound pages), men har en forbedret semantikk og en mer intuitiv organisering. Bruken av folios gjÞr det raskere Ä administrere minnet i noen kjernesystemer. I de foreslÄtte patchene er oversettelsen av sidenes cache over til bruk av folios fullfÞrt, og grunnleggende stÞtte for folios er lagt til i FS XFS.
- Det er lagt til en byggemodus «make mod2noconfig», som genererer en konfigurasjon som bygger alle de frakoblete subsystemene som kjernemoduler.
- Kravene til versjonen av LLVM/Clang som kan brukes til Ă„ bygge kjernen har blitt hevet. NĂ„ kreves minst LLVM 11 for bygging.
- Virtualisering og sikkerhet
- Den oppdaterte implementeringen av RDRAND, som styrer enhetene /dev/random og /dev/urandom, er bemerkelsesverdig for overgangen til bruk av hash-funksjonen BLAKE2s i stedet for SHA1 for blanding av entropi. Endringen har forbedret sikkerheten til den pseudorandomtaleren ved Ä eliminere problemer knyttet til SHA1-algoritmen og unngÄ overskrivning av RNG-initieringsvektoren. Siden BLAKE2s-algoritmen overgÄr SHA1 i ytelse, har bruken av den ogsÄ hatt en positiv innvirkning pÄ ytelsen.
- Det er lagt til beskyttelse mot sÄrbarheter i prosessorer forÄrsaket av spekulativ utfÞrelse av instruksjoner etter ubetingede sprang. Problemet oppstÄr pÄ grunn av fremoverbehandling av instruksjoner i minnet som fÞlger direkte etter spranginstruksjonen (SLS, Straight Line Speculation). For Ä aktivere beskyttelsen kreves en kompilering med GCC 12 i testfase.
- En mekanisme for sporing av referansetelling (refcount) er lagt til, med fokus pÄ Ä redusere antallet feil i referansetellingen som fÞrer til minnetilgang etter frigivelse. Mekanismen er for tiden begrenset til nettverksunderkystemet, men kan tilpasses for andre deler av kjernen i fremtiden.
- Utvidede kontroller for nye oppfĂžringer i prosessens sidetabel er implementert, noe som gjĂžr det mulig Ă„ identifisere visse typer skader og stoppe systemet ved Ă„ blokkere tidlige angrep.
- Muligheten for Ă„ pakke ut kjernemoduler direkte av kjernen selv, i stedet for av en brukerrombehandler, er lagt til. Dette gjĂžr det mulig Ă„, ved hjelp av LSM-modulen LoadPin, sikre at kjernemodulene lastes inn i minnet fra et verifisert lagringsmedium.
- Kompatibilitet med flagget "-Wcast-function-type" er sikret, som aktiverer varsler om omcasting av funksjonspekere til inkompatibel type.
- En virtuell vertdriver, pvUSB, for Xen hypervisoren er lagt til, og gir tilgang til USB-enheter som er viderekoblet til gjestesystemer (fÞrer til at gjestesystemene kan fÄ tilgang til fysiske USB-enheter som er knyttet til gjestesystemet).
- En ny modul har blivit tillagd för att interagera med IME (Intel Management Engine) via Wi-Fi, vilket levereras med de flesta moderna moderkort med Intel-processorer och implementeras som en separat mikrokontroller som arbetar oberoende av CPU:n.
- à tgÀrden för ARM64-arkitekturen har implementerat stöd för KCSAN (Kernel Concurrency Sanitizer), som anvÀnds för att dynamiskt identifiera tillstÄnd med tÀvlingar inuti kÀrnan.
- För 32-bitars ARM-system har en funktion för att anvÀnda KFENCE-mekanismen lagts till för att identifiera minnesfel.
- I KVM-hypervisorn har stöd för AMX-instruktioner (Advanced Matrix Extensions) lagts till, som implementeras i de kommande Intel Xeon Scalable-serverprocessorerna.
- Nettverks subsystem
- Stöd för offloading av trafikhanteringsoperationer till nÀtverksenheter har lagts till.
- Möjligheten att anvÀnda MCTP (Management Component Transport Protocol) över enheter med seriellt grÀnssnitt har lagts till. MCTP kan anvÀndas för att interagera med styrkontrollanter och relaterade enheter (vÀrdprocessorer, perifera enheter etc.).
- TCP-stacken har optimerats, exempelvis har fördröjd frigöring av socketbuffrar implementerats för att öka prestandan av recvmsg-anrop.
- PÄ nivÄn CAP_NET_RAW har det blivit tillÄtet att stÀlla in SO_PRIORITY och SO_MARK-lÀgen via funktionen setsockopt.
- För IPv4 har det blivit tillÄtet att ansluta raw-sockets inte till lokala IP-adresser med hjÀlp av IP_FREEBIND och IP_TRANSPARENT-alternativen.
- Sysctl arp_missed_max har lagts till för att stÀlla in tröskelvÀrdet för antalet fel i ARP-övervakningen, efter vilket nÀtverksgrÀnssnittet sÀtts till inaktivt.
- Möjligheten att stÀlla in separat sysctl-vÀrden för min_pmtu och mtu_expires för nÀtverksnamnrymder har tillhandahÄllits.
- I ethtool API har möjligheten att stÀlla in och bestÀmma storleken pÄ inkommande och utgÄende paketbuffrar lagts till.
- I Netfilter har stöd för filtrering av transit pppoe-trafik i nÀtverksbron lagts till.
- I ksmbd-modulen som implementerar filsystemet serveren, som anvÀnder SMB3-protokollet, har stöd för nyckelutbyte lagts till, nÀtverksport 445 har anvÀnts för smbdirect och stöd för parametern "smb2 max credit" har lagts till.
- Utstyr
- I drm (Direct Rendering Manager) og i915-driveren er stĂžtte for skjermer for konfidensiell informasjon lagt til; for eksempel er noen bĂŠrbare datamaskiner utstyrt med skjermer som har en innebygd konfidensialitetsmodus som gjĂžr det vanskeligere for andre Ă„ se. De nye endringene muliggjĂžr tilkobling av spesialiserte drivere for slike skjermer og styring av konfidensialitetsmoduser gjennom innstillinger i vanlige KMS-drivere.
- I amdgpu-driveren er stĂžtte for STB (Smart Trace Buffer) debugging-teknologi lagt til for alle AMD GPUer som stĂžtter den. STB forenkler feilanalyse og identifisering av kilden til problemer ved Ă„ lagre informasjon om funksjonene som ble utfĂžrt fĂžr den siste feilen i en spesialbuffer.
- I i915-driveren er stÞtte for Intel Raptor Lake S-brikker lagt til, og stÞtte for den grafiske subsystemet i Intel Alder Lake P-brikker er aktivert som standard. Muligheten til Ä styre skjermlyset via DPCD-interface fra VESA er ogsÄ tillatt.
- I fbcon/fbdev-driverne er stĂžtte for maskinvareakselerasjon av rulling i konsollen gjeninnfĂžrt.
- Integreringen av endringer for stÞtte av Apple M1-brikker har fortsatt. Det er nÄ mulig Ä bruke simpledrm-driveren pÄ systemer med Apple M1-brikken for Ä utgi via framebuffer som tilbys av fastvaren.
- StĂžtte for ARM SoC, enheter og brett som 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 (brukes i Wi-Fi rutere), 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 er lagt til.
- StĂžtte for ARM Cortex-M55 og Cortex-M33-prosessorer er lagt til.
- StĂžtte for MIPS-baserte CPU-enheter er lagt til: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
- StĂžtte for RISC-V-baserte SoC StarFive JH7100 er lagt til.
- En driver for lenovo-yogabook-wmi er lagt til for Ä kontrollere bakgrunnsbelysningen pÄ tastaturet og fÄ tilgang til forskjellige sensorer i Lenovo Yoga Book.
- En driver for asus_wmi_sensors er lagt til for tilgang til sensorer som brukes pÄ Asus X370, X470, B450, B550 og X399 hovedkort basert pÄ AMD Ryzen-prosessorer.
- En driver for x86-android-tablets er lagt til for nettbrett basert pÄ x86-arkitekturen som leveres med Android-plattformen.
- StÞtte for berÞringsskjermer pÄ TrekStor SurfTab duo W1 og elektroniske penner for Chuwi Hi10 Plus og Pro-nettbrett er lagt til.
- StrÞm- og spenningskontrollstÞtte er lagt til i drivere for SoC Tegra 20/30. Mulighet for oppstart pÄ gamle 32-bit enheter basert pÄ SoC Tegra, som ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 og Pad TF300TG, er sikret.
- Drivere for industrielle datamaskiner fra Siemens er lagt til.
- StĂžtte for LCD-paneler som Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA og Team Source Display TST043015CMHX er lagt til.
- StÞtte for lydsystemer og kodekene AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel-systemer som bruker NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx er lagt til. Problemer med Tegra194 HD-audio er lÞst. StÞtte for HDA for kodekene CS35L41 er lagt til. Forbedret stÞtte for lydsystemer pÄ bÊrbare datamaskiner fra Lenovo og HP, samt hovedkort fra Gigabyte.
Kilde: opennet.ru
