Etter to mÄneder med utvikling presenterte Linus Torvalds utgaven av Linux-kjernen 5.15. Blant de mest bemerkelsesverdige endringene: ny NTFS-driver med stÞtte for skriving, ksmbd-modul med implementering av SMB-server, DAMON-subsystem for overvÄkning av minnebruk, lÄseprimitiver for sanntidsmodus, stÞtte for fs-verity i Btrfs, systemanropet process_mrelease for system som reagerer pÄ minnemangel, modul for fjernattestering dm-ima.
Det er akseptert 13499 feilrettinger fra 1888 utviklere i den nye versjonen, patchstĂžrrelsen er 42 MB (endringene berĂžrte 10895 filer, 632522 nye kodelinjer ble lagt til, og 299966 linjer ble fjernet). Omtrent 45% av alle endringene i 5.15 er relatert til enhetsdrivere, rundt 14% av endringene har Ă„ gjĂžre med oppdatering av arkitekturspesifikk kode, 14% gjelder nettverksstakken, 6% for filsystemer og 3% for de interne subsystemene i kjernen.
Hovudnyhende:
- Disk subsystem, I/O og filsystemer
- En ny implementering av NTFS-filsystemet, Äpnet av Paragon Software, er akseptert i kjernen. Den nye driveren kan fungere i skrivemodus og stÞtter alle funksjoner i den aktuelle versjonen av NTFS 3.1, inkludert utvidede filattributter, tilgangslister (ACL), datakomprimeringsmodus, effektiv hÄndtering av ledige plasser i filer (sparse) og gjenskaping av endringer fra loggen for Ä gjenopprette integriteten etter krasj.
- I Btrfs-filsystemet er det implementert stÞtte for mekanismen fs-verity, som brukes for gjennomsiktig kontroll av integritet og ekthet av individuelle filer ved hjelp av kryptografiske hasher eller nÞkler lagret i metadataomrÄdet. Tidligere var fs-verity kun tilgjengelig for FS Ext4 og F2fs.
Btrfs har ogsÄ fÄtt stÞtte for mapping av brukertilordning for monterte filsystemer (tidligere stÞttet for FS FAT, ext4 og XFS). Denne funksjonen tillater Ä knytte filer fra en bestemt bruker pÄ en montert annen partisjon til en annen bruker i det nÄvÊrende systemet.
Blant andre endringer i Btrfs: akselerasjon av nÞkkeltillegg i katalogindeksen for Ä forbedre ytelse ved filopprettelse; mulighet for raid0 med ett enhet, og raid10 med to (for eksempel under omkonfigurering av arrayet); opsjonen «rescue=ibadroots» for Ä ignorere ugyldige extent-trÊr; akselerasjon av «send»-operasjonen; reduksjon av lÄse-konflikter under omdÞpeningsoperasjoner; mulighet for Ä bruke 4K-sektorer pÄ systemer med minneside-stÞrrelse pÄ 64K.
- I XFS er muligheten for bruk i FS-datoer etter 2038 stabilisert. Det er implementert en mekanisme for utsatt deaktivering av inode og stÞtte for utsatt tilsetning og fjerning av filattributter. For Ä unngÄ problemer er muligheten for Ä deaktivere disk-kvoter for allerede monterte partisjoner fjernet (kvotene kan tvinges fra, men den tilknyttede tellingen vil fortsette, sÄ for en fullstendig deaktivering kreves det at det monteres pÄ nytt).
- I EXT4 er det gjort arbeid for Ä Þke ytelsen for skriving av delalloc-buffere og hÄndtering av foreldrelÞse (orphan) filer, som fortsetter Ä eksistere fordi de stÄr Äpne, men ikke er knyttet til en katalog. HÄndteringen av discard-operasjoner er flyttet ut av jbd2-trÄden for Ä unngÄ blokkeringer av metadataoperasjoner.
- I F2FS er det lagt til en opsjon «discard_unit=block|segment|section» for Ä knytte discard-operasjoner (merking av frigjorte blokker som ikke lenger trenger Ä lagres fysisk) til justering i forhold til blokk, sektor, segment eller seksjon. Det er lagt til stÞtte for sporing av endringer i forsinkelser under inn-/utdata.
- I filsystemet EROFS (Extendable Read-Only File System) er det lagt til stĂžtte for direkte inn-/utdata for filer lagret uten komprimering, samt stĂžtte for fiemap.
- I OverlayFS er det implementert korrekt hÄndtering av monteringsflaggene «immutable», «append-only», «sync» og «noatime».
- I NFS er hÄndteringen av situasjoner hvor NFS-serveren har sluttet Ä svare pÄ forespÞrslene forbedret. Muligheten for Ä montere fra en allerede brukt, men tilgjengelig via en annen nettverksadresse er lagt til. serveren, men tilgjengelig via en annen nettverksadresse.
- Forberedelsene til omskrivning av FSCACHE-subsystemet har startet.
- StĂžtte for EFI-partisjoner med unormale plasseringer av GPT-tabeller er lagt til.
- Fanotify-mekanismen har fÄtt et nytt flagg FAN_REPORT_PIDFD, som fÞrer til at pidfd oppgis i de returnerte metadataene. Pidfd hjelper til med Ä hÄndtere situasjoner med gjenbruk av PID for mer presis identifisering av prosesser som fÄr tilgang til overvÄkede filer (pidfd er knyttet til en spesifikk prosess og endres ikke, mens PID kan knyttes til en annen prosess etter at den nÄvÊrende prosessen som er assosiert med denne PID-en er fullfÞrt).
- Det er lagt til muligheten for Ä legge til monteringspunkter i eksisterende delte grupper i systemkallet move_mount(), noe som lÞser problemer med Ä bevare og gjenopprette prosessstatus i CRIU-verktÞysettet nÄr det finnes flere monteringsomrÄder som deles mellom isolerte containere.
- Det er lagt til beskyttelse mot skjulte kapplÞpsforhold som potensielt kan fÞre til filskader nÄr det leses fra cache under behandling av hull i filen.
- StÞtten for obligatoriske (mandatory) fillÄser, implementert gjennom systemkall som fÞrer til endringer i filen, er opphÞrt. PÄ grunn av mulige kapplÞpsforhold ble disse lÄsene ansett som upÄlitelige og ble erklÊrt foreldet for mange Är siden.
- LightsNVM-subsystemet, som muliggjorde direkte tilgang til SSD-lagringsenheten, omgÄtt emuleringslaget, er fjernet. LightNVM mistet sin betydning etter at NVMe-standardene ble innfÞrt, som gir muligheter for zonering (ZNS, Zoned Namespace).
- Minne og systemtjenester
- DAMON (Data Access MONitor) subsystemet er implementert, og gjÞr det mulig Ä spore aktivitet knyttet til datatilgang i minnet, knyttet til en valgt prosess kjÞrende i brukerspace. Subsystemet lar deg analysere hvilke nÞyaktige minneomrÄder prosessen har hatt tilgang til gjennom hele sin levetid, og hvilke minneomrÄder som har vÊrt ubenyttet. Blant egenskapene til DAMON bemerkes lav CPU-belastning, lite minnebruk, hÞy nÞyaktighet, og forutsigbare konstante overhodetekoster, uavhengig av stÞrrelse. Subsystemet kan brukes bÄde av kjernen for Ä optimalisere minnehÄndtering, og av verktÞy i brukerspace for Ä forstÄ hva prosessen faktisk gjÞr og optimalisere minnebruken, for eksempel ved Ä frigjÞre unÞdvendig minne til systemet.
- Systemanropet process_mrelease har implementerats för att pÄskynda processen att frigöra minne frÄn en process som avslutar sitt arbete. Under normala omstÀndigheter tar frigörandet av resurser och avslutandet av processen inte omedelbart och kan fördröjas av olika anledningar, vilket stör funktionen hos system i anvÀndarsammanhang som reagerar tidigt pÄ minnesbrist, sÄsom oomd (tillhandahÄlls av systemd) och lmkd (anvÀnds i Android). Genom process_mrelease kan sÄdana system mer förutsÀgbart initiera minnesÄterlÀmning frÄn tvÄngsavslutade processer.
- FrĂ„n PREEMPT_RT-kĂ€rnans gren, dĂ€r stöd för realtidsdrift utvecklas, har varianter av primitiva Mutex-lĂ„s, ww_mutex, rw_semaphore, spinlock och rwlock, baserade pĂ„ RT-Mutex-subsystemet, överförts. Ăndringar har gjorts i SLUB slab allocator för att förbĂ€ttra dess funktionalitet i PREEMPT_RT-lĂ€get och minska pĂ„verkan pĂ„ avbrott.
- Cgroup har fÄtt stöd för task-schemalÀggningsegenskapen SCHED_IDLE, vilket gör det möjligt att ge detta kÀnnetecken till alla processer i en viss cgroup pÄ en gÄng. Det innebÀr att dessa processer endast kommer att köras nÀr det inte finns nÄgra andra uppgifter i systemet som vÀntar pÄ utförande. Till skillnad frÄn att stÀlla in SCHED_IDLE-egenskapen för varje enskild process, beaktas den relativa vikten av uppgifter inom gruppen nÀr SCHED_IDLE kopplas till cgroup.
- MinneanvÀndningsspÄrningsmekanismen i cgroup har utvidgats för att kunna spÄra ytterligare datakonstruktioner inom kÀrnan, inklusive de som skapas för polling, signalbehandling och namnomrÄden.
- Stöd för asynkron planering av bindning av uppgifter till processorarkitekturer har lagts till, dÀr vissa CPU:er tillÄter utförande av 32-bitars uppgifter och andra arbetar endast i 64-bitarslÀge (till exempel ARM). Det nya lÀget gör det möjligt att vid planering av 32-bitars uppgifter endast beakta CPU:er som stödjer 32-bitars uppgifter.
- I grensesnittet for asynkron I/O io_uring er det nÄ stÞtte for Ä Äpne filer direkte i den faste filindeksen uten Ä bruke filbeskrivere. Dette gir mulighet for en betydelig Þkning i hastighet for visse typer operasjoner, men er i strid med den tradisjonelle Unix-prosessen for bruk av filbeskrivere ved Äpning av filer.
I io_uring for BIO (Block I/O Layer) er det implementert en ny mekanisme for gjenbruk av ressurser («BIO recycling»), som reduserer kostnadene ved intern minnehÄndtering og kan Þke antallet behandlede I/O-operasjoner per sekund med omtrent 10 %. Det er ogsÄ lagt til stÞtte for systemanropene mkdirat(), symlinkat() og linkat().
- For BPF-programmer er det nÄ mulig Ä forespÞrre og behandle timer hendelser. Det er lagt til en iterator for UNIX-sokler, samt en mulighet for Ä hente og sette sokkelalternativer med setsockopt. BTF dumperen har nÄ stÞtte for typede data.
- PÄ NUMA-systemer med forskjellige typer minne med varierende ytelse, er det implementert en mekanisme for Ä flytte utskviste minnesider fra dynamisk minne (DRAM) til langsommere varig minne i tilfeller med mangel pÄ ledig plass, i stedet for Ä slette disse sidene. Tester har vist at denne taktikken vanligvis forbedrer ytelsen pÄ slike systemer. For NUMA er det ogsÄ lagt til mulighet for Ä allokere minnesider for prosessen fra et utvalgt sett av NUMA-noder.
- For ARC-arkitekturen er det implementert stÞtte for tre- og fire-nivÄ sidetabeller, noe som i fremtiden vil muliggjÞre stÞtte for 64-bits ARC-prosessorer.
- For s390-arkitekturen er det nÄ mulig Ä anvende KFENCE-mekanismen for Ä avdekke minnefeil, samt stÞtte for KCSAN-racedetektor er lagt til.
- Det er lagt til stĂžtte for indeksering av meldingslisten som skrives ut via printk(), noe som gjĂžr det mulig Ă„ hente alle slike meldinger og spore endringer i brukerrummet.
- I mmap() er stĂžtten for VM_DENYWRITE-alternativet fjernet, og koden i kjernen er blitt kvitt bruken av MAP_DENYWRITE-modus, noe som har redusert antallet situasjoner som fĂžrer til blokkering av skriving til fil med feilmeldingen ETXTBSY.
- Det er lagt til en ny type sjekker kalt «Event probes» i sporingssystemet, som kan knyttes til eksisterende sporingshendelser for Ä definere egen utdataformat.
- NÄr det bygges en kjerne med Clang-kompilatoren, er den innebygde assembleren fra LLVM-prosjektet nÄ aktivert som standard.
- Som en del av prosjektet for Ä fjerne koden fra kjernen som fÞrer til kompilatoradvarsler, ble det utfÞrt et eksperiment med Ä aktivere «-Werror» som standard. Under forberedelsene til utgivelsen 5.15 begynte Linus Ä akseptere endringer som ikke fÞrte til advarsler under byggingen av kjernen og aktiverte bygging med «-Werror», men ble deretter enige om at dette var en for tidlig avgjÞrelse og utsatte aktiveringen av «-Werror» som standard. HÄndteringen av aktiveringen av flagget «-Werror» under bygging skjer ved hjelp av parameteren WERROR, som som standard er satt til COMPILE_TEST, det vil si at det bare aktiveres under testbygg.
- Virtualisering og sikkerhet
- I Device Mapper (DM) er det lagt til en ny behandler dm-ima, som implementerer en mekanisme for ekstern attestasjonsbasert pÄ IMA-systemet (Integrity Measurement Architecture), som lar en ekstern tjeneste verifisere tilstanden til kjernesystemene for Ä forsikre seg om deres ekthet. I praksis lar dm-ima deg lage lagringssystemer ved hjelp av Device Mapper som er knyttet til eksterne skylÞsninger, der autenticiteten av den kjÞrende DM target-konfigurasjonen blir bekreftet av IMA.
- I prctl() er det implementert et nytt alternativ PR_SPEC_L1D_FLUSH, som nÄr det er aktivert, fÄr kjernen til Ä tilbakestille innholdet i fÞrste nivÄ cache (L1D) hver gang konteksten byttes. Denne modusen gir ekstra beskyttelse for de viktigste prosessene mot angrep Via sidekanaler, som brukes til Ä avdekke data som er lagret i cachen pÄ grunn av sÄrbarheter forÄrsaket av spekulativ utfÞrelse av instruksjoner i CPU. Kostnaden ved Ä aktivere PR_SPEC_L1D_FLUSH (som er deaktivert som standard) er en betydelig reduksjon i ytelsen.
- Muligheten for Ă„ bygge kjerner med GCC-flaggene "-fzero-call-used-regs=used-gpr" er implementert, som sĂžrger for at alle registre tilbakestilles fĂžr kontrollen returneres fra funksjonen. Dette alternativet beskytter mot informasjonlekkasje fra funksjoner og reduserer antall blokker som kan brukes til Ă„ lage ROP-gadgets (Return-Oriented Programming) i exploit med 20%.
- Det er nÄ mulig Ä bygge kjerner for ARM64-arkitekturen i form av klienter for Hyper-V-hypervisoren.
- Et nytt rammeverk for utvikling av drivere, «VDUSE», er foreslÄtt, som muliggjÞr implementering av virtuelle blokkenheter i brukerrommet og anvender Virtio som transport for tilgang fra gjestesystemer.
- En Virtio-driver for I2C-bussen er lagt til, som gir mulighet for Ă„ emulere I2C-kontrollere i para-virtualisering med separate backend.
- En Virtio-driver gpio-virtio er lagt til, som gir gjestesystemer tilgang til GPIO-linjene som tilbys av vertsystemet.
- Muligheten for Ä begrense tilgangen til minnesider for enhetsdrivere med DMA-stÞtte pÄ systemer uten I/O MMU (minnestyringsenhet) er lagt til.
- Det er implementert mulighet for Ă„ vise statistikk i form av lineĂŠre og logaritmiske histogrammer i KVM-hypervisoren.
- Nettverks subsystem
- Kjernen har fÄtt modulen ksmbd, som implementerer en filserver som bruker SMB3-protokollen. Modulen suppleres med den tidligere tilgjengelige SMB-klientimplementasjonen i kjernen, og i motsetning til SMB-serveren som kjÞrer i brukerrommet, er den mer effektiv med tanke pÄ ytelse, minneforbruk og integrasjon med kjernens utvidede funksjoner. Ksmbd tilbys som en hÞykapasitets utvidelse til Samba som er klar for bruk pÄ innebygde enheter, og kan integreres med verktÞy og biblioteker fra Samba hvis nÞdvendig. Blant funksjonene til ksmbd finnes forbedret stÞtte for distribuerte filcache-teknologier (SMB-leie) pÄ lokale systemer, som betydelig reduserer trafikken. I fremtiden planlegges det Ä legge til stÞtte for RDMA ("smbdirect") og protokollutvidelser relatert til forbedret pÄlitelighet av kryptering og verifisering gjennom digitale signaturer.
- StÞtten for NTLM og mindre pÄlitelige autentiseringsalgoritmer basert pÄ DES-algoritmen, som brukes i SMB1-protokollen, er avsluttet i CIFS-klienten.
- I gjennomfĂžringen av nettverksbroer for vlan er stĂžtte for multicast implementert.
- I bonding-driveren, som brukes til aggregering av nettverksgrensesnitt, er stĂžtte for XDP (eXpress Data Path) -systemet lagt til, noe som gjĂžr det mulig Ă„ manipulere nettverkspakker fĂžr de behandles av Linux-kjernens nettverksstakk.
- I den trÄdlÞse mac80211-stakken er stÞtte for 6GHz STA (Special Temporary Authorization) implementert i LPI-, SP- og VLP-moduser, samt muligheten til Ä sette separate TWT (Target Wake Time) i tilgangspunktmodus.
- StĂžtte for MCTP (Management Component Transport Protocol), som brukes til Ă„ kommunisere mellom administrative controllere og relaterte enheter (vertsprosessorer, periferiutstyr osv.), er lagt til.
- Integrasjonen av MPTCP (MultiPath TCP) i kjernen fortsetter, en utvidelse av TCP-protokollen for Ă„ organisere TCP-tilkoblinger med pakkelevering samtidig over flere ruter gjennom forskjellige nettverksgrensesnitt knyttet til forskjellige IP-adresser. Den nye utgaven inkluderer stĂžtte for adresser i fullmesh-modus.
- I netfilter er det lagt til behandlingsmoduler for nettverksstrĂžmmer, innkapslet i SRv6-protokollen (Segment Routing IPv6).
- StĂžtte for sockmap for strĂžmmet Unix-sokler er lagt til.
- Utstyr
- I amdgpu-driveren er stÞtte for APU Cyan Skillfish (utstyrt med GPU Navi 1x) implementert. For APU Yellow Carp er stÞtte for videokodeker lagt til. StÞtten for GPU Aldebaran er forbedret. Nye identifikatorer for kort basert pÄ GPU Navi 24 «Beige Goby» og RDNA2 er lagt til. En forbedret implementering av virtuelle skjermer (VKMS) er foreslÄtt. StÞtte for overvÄking av temperaturer pÄ AMD Zen 3-brikker er implementert.
- I amdkfd-driveren (for diskrete GPU-er som Polaris) er det implementert en delt virtuell minnebehandler (SVM, shared virtual memory) basert pÄ HMM (Heterogeneous memory management)-systemet, som gjÞr det mulig Ä bruke enheter med egne minnestyringsblokker (MMU, memory management unit), som kan fÄ tilgang til hovedminnet. Ved hjelp av HMM kan man ogsÄ organisere et felles adresseomrÄde mellom GPU og CPU, der GPU kan fÄ tilgang til hovedminnet til prosessen.
- I i915-driveren for Intel-grafikkort er bruken av minnekontrolleren TTM utvidet, og muligheten for energioptimering basert pÄ GuC (Graphics micro Controller) er inkludert. Forberedelsene til Ä implementere stÞtte for Intel ARC Alchemist-grafikkort og Intel Xe-HP GPU er pÄbegynt.
- I nouveau-driveren er det implementert kontroll av bakgrunnsbelysning pÄ eDP-paneler ved hjelp av DPCD (DisplayPort Configuration Data).
- I msm-driveren er det lagt til stĂžtte for GPU Adreno 7c Gen 3 og Adreno 680.
- Det er utviklet en IOMMU-driver for Apple M1-brikken.
- En lyddriver for systemer basert pÄ APU AMD Van Gogh er lagt til.
- I staging-grenen er Realtek R8188EU-driveren lagt til, som erstattet den gamle versjonen av driveren (rtl8188eu) for trÄdlÞse chip fra Realtek RTL8188EU 802.11 b/g/n.
- Driveren ocp_pt for PCIe-kort utviklet av Meta (Facebook) er tatt opp, med implementering av miniaturisierte atomklokker og GNSS-mottaker, som kan brukes til Ă„ organisere drift av isolerte servere synkronisering av nĂžyaktig tid.
- StĂžtte for smarttelefoner som Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle er lagt til.
- Det er lagt til stĂžtte for ARM SoCs og plater NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, Qualcomm Snapdragon SDM636/SM8150, Renesas R-Car H3e-2G/M3e-2G, Marvell CN913x, ASpeed AST2600 (serverplater Facebook Cloudripper, Elbert og Fuji), 4KOpen STiH418-b2264.
- StĂžtte for LCD-paneler Gopher 2b, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ilitek ili9341, E Ink VB3300-KCA, Samsung ATNA33XC20, Samsung DB7430, WideChips WS2401 er lagt til.
- LiteETH-driveren med stĂžtte for Ethernet-kontrollere brukt i programvare SoC LiteX (for FPGA) er lagt til.
- I usb-audio-driveren er det lagt til en lavlatens-modus for Ä kontrollere aktiveringen i minimumsventilmodus. Det er ogsÄ lagt til en quirk_flags-oppsjon for Ä overfÞre enhets-spesifikke innstillinger.
Samtidig har det latinamerikanske Fri Programvare-fondet laget en helt fri kjerneversjon 5.15 â Linux-libre 5.15-gnu, renset for elementer fra fastvare og drivere som inneholder ikke-frie komponenter eller kodebiter, hvor bruksomrĂ„det er begrenset av produsenten. I den nye utgivelsen er det implementert logging av meldingene som viser fullfĂžringen av rensingen. Problemer med pakkeforming ved bruk av mkspec er lĂžst, og stĂžtten for snap-pakker er forbedret. Noen varsler som vises ved behandling av header-filen firmware.h er fjernet. Noen typer varsler («format-extra-args», kommentarer, ubrukte funksjoner og variabler) er nĂ„ tillatt ved bygging i «-Werror» modus. Rensing av drivere for gehc-achc er lagt til. Koden for rensing av blobs i drivere og subsystemene adreno, btusb, btintel, brcmfmac, aarch64 qcom er oppdatert. Rensing av drivere prism54 (fjernet) og rtl8188eu (erstatet med r8188eu) er stoppet.
Kilde: opennet.ru
