Linux 5.18 kernel udgivelse

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af ​​Linux-kernen 5.18. Blandt de mest bemærkelsesværdige ændringer: en større oprydning af forældet funktionalitet blev udført, Reiserfs FS blev erklæret forældet, brugerprocessporingshændelser blev implementeret, understøttelse af mekanismen til blokering af Intel IBT-udnyttelser blev tilføjet, en bufferoverløbsdetekteringstilstand blev aktiveret, når ved hjælp af memcpy()-funktionen blev der tilføjet en mekanisme til sporing af fprobe-funktionskald. Ydeevnen af ​​opgaveplanlæggeren på AMD Zen CPU'er er blevet forbedret, en driver til styring af Intel CPU-funktionalitet (SDS) er inkluderet, nogle patches er blevet integreret til omstrukturering af header-filer, og brugen af ​​C11-standarden er godkendt.

Den nye version indeholder 16206 rettelser fra 2127 udviklere (i den sidste udgivelse var der 14203 rettelser fra 1995 udviklere), patchstørrelsen er 108 MB (ændringerne påvirkede 14235 filer, 1340982 kodelinjer blev tilføjet, 593836 linjer blev slettet). Omkring 44 % af alle ændringer, der er introduceret i 5.18, er relateret til enhedsdrivere, ca. 16 % af ændringerne er relateret til opdatering af kode, der er specifik for hardwarearkitekturer, 11 % er relateret til netværksstakken, 3 % er relateret til filsystemer og 3 % er relateret til interne kerneundersystemer.

Vigtigste innovationer i kerne 5.18:

  • Diskundersystem, I/O og filsystemer
    • Btrfs-filsystemet har tilføjet understøttelse af videresendelse af komprimerede data, når der udføres sende- og modtagehandlinger. Tidligere, når du brugte send/modtag, dekomprimerede afsendersiden de data, der var gemt i komprimeret form, og den modtagende side komprimerede dem igen, før de skrev dem. I 5.18-kernen fik brugerrumsapplikationer, der bruger send/modtag opkald, muligheden for at transmittere komprimerede data uden ompakning. Funktionaliteten er implementeret takket være de nye ioctl-operationer BTRFS_IOC_ENCODED_READ og BTRFS_IOC_ENCODED_WRITE, som giver dig mulighed for direkte at læse og skrive information i omfang.

      Derudover forbedrer Btrfs fsync-ydeevnen. Tilføjet muligheden for at deduplikere og udføre reflink (kloning af filmetadata ved at oprette et link til eksisterende data uden faktisk at kopiere det) for hele lageret, ikke begrænset til monteringspunkter.

    • I Direct I/O-tilstand er det muligt at få adgang til krypterede filer, når fscrypt bruger inline-kryptering, hvor krypterings- og dekrypteringsoperationer udføres af drevcontrolleren i stedet for kernen. Med almindelig kernekryptering er adgang til krypterede filer ved hjælp af Direct I/O stadig umulig, da filer tilgås uden om buffermekanismen i kernen.
    • NFS-serveren inkluderer understøttelse af NFSv3-protokollen som standard, som nu ikke kræver separat aktivering og er tilgængelig, når NFS er aktiveret generelt. NFSv3 anses for at være den primære og altid understøttede version af NFS, og understøttelse af NFSv2 kan blive afbrudt i fremtiden. Effektiviteten af ​​at læse biblioteksindhold er blevet væsentligt forbedret.
    • ReiserFS-filsystemet er blevet forældet og forventes at blive fjernet i 2025. Udfasning af ReiserFS vil reducere den indsats, der kræves for at vedligeholde filsystemomfattende ændringer relateret til understøttelse af den nye API til montering, iomap og tomes.
    • For F2FS-filsystemet er muligheden for at kortlægge bruger-id'er for monterede filsystemer implementeret, som bruges til at sammenligne filerne for en specifik bruger på en monteret fremmed partition med en anden bruger på det aktuelle system.
    • Koden til beregning af statistik i Device-mapper handlers er blevet omarbejdet, hvilket væsentligt har forbedret nøjagtigheden af ​​regnskabet i handlere såsom dm-crypt.
    • NVMe-enheder understøtter nu 64-bit kontrolsummer til integritetskontrol.
    • For exfat-filsystemet er en ny monteringsmulighed "keep_last_dots" blevet foreslået, som deaktiverer sletning af prikker i slutningen af ​​filnavnet (i Windows fjernes prikker i slutningen af ​​filnavnet som standard).
    • EXT4 forbedrer ydeevnen af ​​fast_commit-tilstand og øger skalerbarheden. "mb_optimize_scan"-monteringsmuligheden, som gør det muligt at øge ydeevnen under forhold med store filsystemfragmentering, er tilpasset til at arbejde med filer med omfang.
    • Understøttelse af skrivestrømme i undersystemet, der understøtter blokenheder, er afbrudt. Denne funktion blev foreslået til SSD'er, men var ikke udbredt, og der er i øjeblikket ingen enheder i brug, der understøtter denne tilstand, og det er usandsynligt, at de vil dukke op i fremtiden.
  • Hukommelse og systemtjenester
    • Integrationen af ​​et sæt patches er begyndt, hvilket gør det muligt at reducere tiden for genopbygning af kernen markant ved at omstrukturere hierarkiet af header-filer og reducere antallet af krydsafhængigheder. Kernel 5.18 indeholder patches, der optimerer strukturen af ​​opgaveplanlæggerens header-filer (kerne/sched). Sammenlignet med den tidligere udgivelse blev CPU-tidsforbrug ved samling af kerne/sched/-kode reduceret med 61 %, og den faktiske tid faldt med 3.9 % (fra 2.95 til 2.84 sek.).
    • Kernelkode må bruge C11-standarden, udgivet i 2011. Tidligere skulle kode tilføjet til kernen overholde ANSI C (C89) specifikationen, dannet tilbage i 1989. I 5.18 kernel build-scripts blev indstillingen '—std=gnu89' erstattet med '—std=gnu11 -Wno-shift-negative-value'. Muligheden for at bruge C17-standarden blev overvejet, men i dette tilfælde ville det være nødvendigt at øge den minimumsunderstøttede version af GCC, mens medtagelsen af ​​C11-understøttelse passer ind i de nuværende krav til GCC-versionen (5.1).
    • Forbedret opgaveplanlægningsydelse på AMD-processorer med Zen-mikroarkitektur, som giver flere Last Level Cache (LLC) for hver node med lokale hukommelseskanaler. Den nye version eliminerer LLC-ubalancen mellem NUMA-noder, hvilket førte til en betydelig stigning i ydeevnen for nogle typer arbejdsbyrde.
    • Værktøjer til sporing af applikationer i brugerrummet er blevet udvidet. Den nye kerneversion tilføjer muligheden for brugerprocesser til at oprette brugerbegivenheder og skrive data til sporingsbufferen, som kan ses gennem standard kernesporingsværktøjer som ftrace og perf. Brugerpladssporingshændelser er isoleret fra kernesporingshændelser. Hændelsesstatus kan ses gennem filen /sys/kernel/debug/tracing/user_events_status, og hændelsesregistrering og dataregistrering gennem filen /sys/kernel/debug/tracing/user_events_data.
    • Tilføjet en mekanisme til overvågning af (probe) funktionskald - fprobe. fprobe API er baseret på ftrace, men er kun begrænset af muligheden for at knytte tilbagekaldsbehandlere til funktionsindgangspunkter og funktionsudgangspunkter. I modsætning til kprobes og kretprobes giver den nye mekanisme dig mulighed for at bruge én handler til flere funktioner på én gang.
    • Understøttelse af ældre ARM-processorer (ARMv4 og ARMv5), der ikke er udstyret med en hukommelsesstyringsenhed (MMU), er afbrudt. Understøttelse af ARMv7-M-systemer uden MMU bibeholdes.
    • Understøttelse af den RISC-lignende NDS32-arkitektur, der bruges i Andes Technologies-processorer, er afbrudt. Koden blev fjernet på grund af manglende vedligeholdelse og manglende efterspørgsel efter NDS32-understøttelse i Linux-hovedkernen (resterende brugere bruger specialiserede kernebuilds fra hardwareproducenter).
    • Som standard er opbygning af kernen med understøttelse af det eksekverbare a.out-filformat deaktiveret for alpha- og m68k-arkitekturerne, som fortsætter med at bruge dette format. Det er sandsynligt, at understøttelse af det gamle a.out-format snart vil blive fuldstændig fjernet fra kernen. Planer om at fjerne a.out-formatet har været diskuteret siden 2019.
    • PA-RISC-arkitekturen giver minimal understøttelse af vDSO-mekanismen (virtuelle dynamiske delte objekter), som giver et begrænset sæt af systemkald, der er tilgængelige i brugerrummet uden kontekstskift. vDSO-understøttelse gjorde det muligt at implementere muligheden for at køre med en ikke-eksekverbar stak.
    • Tilføjet understøttelse af Intel HFI (Hardware Feedback Interface) mekanismen, som gør det muligt for hardwaren at overføre information til kernen om den aktuelle ydeevne og energieffektivitet for hver CPU.
    • Tilføjet en driver til Intel SDSi (Software-Defined Silicon) mekanismen, som giver dig mulighed for at kontrollere medtagelsen af ​​yderligere funktioner i processoren (for eksempel specialiserede instruktioner og ekstra cachehukommelse). Tanken er, at chips kan leveres til en lavere pris med avancerede funktioner låst, som så kan "købes" og aktiveres yderligere funktioner uden hardwareudskiftning af chippen.
    • Amd_hsmp-driveren er blevet tilføjet for at understøtte AMD HSMP-grænsefladen (Host System Management Port), som giver adgang til processorstyringsfunktioner gennem et sæt specielle registre, der er dukket op i AMD EPYC-serverprocessorer, der starter med Fam19h-generationen. For eksempel kan du gennem HSMP få data om strømforbrug og temperatur, indstille frekvensgrænser, aktivere forskellige ydelsesforbedringstilstande og administrere hukommelsesparametre.
    • Den io_uring asynkrone I/O-grænseflade implementerer IORING_SETUP_SUBMIT_ALL-muligheden til at registrere et sæt filbeskrivelser i en ringbuffer, og IORING_OP_MSG_RING-operationen til at sende et signal fra en ringbuffer til en anden ringbuffer.
    • DAMOS-mekanismen (Data Access Monitoring-based Operation Schemes), som gør det muligt at frigive hukommelse under hensyntagen til frekvensen af ​​hukommelsesadgang, har udvidede muligheder for at overvåge hukommelsesoperationer fra brugerplads.
    • En tredje serie af patches er blevet integreret med implementeringen af ​​konceptet sidefolioer, som minder om sammensatte sider, men har forbedret semantik og en klarere organisering af arbejdet. Brug af tomes giver dig mulighed for at fremskynde hukommelseshåndtering i nogle kerneundersystemer. I de foreslåede patches blev interne hukommelsesstyringsfunktioner oversat til folioer, inklusive variationer af funktionen get_user_pages() . Giver support til at skabe store mængder i read-ahead kode.
    • Assembly-systemet understøtter nu USERCFLAGS og USERLDFLAGS miljøvariabler, med hvilke du kan sende yderligere flag til compileren og linkeren.
    • I eBPF-undersystemet giver BTF-mekanismen (BPF Type Format), som giver typekontrolinformation i BPF-pseudokode, mulighed for at tilføje annoteringer til variabler, der refererer til hukommelsesområder i brugerrummet. Annoteringer hjælper BPF-kodebekræftelsessystemet med bedre at identificere og verificere hukommelsesadgange.
    • En ny hukommelsesallokeringsbehandler til lagring af indlæste BPF-programmer er blevet foreslået, som tillader mere effektiv brug af hukommelse i situationer, hvor et stort antal BPF-programmer er indlæst.
    • MADV_DONTNEED_LOCKED flaget er blevet tilføjet til madvise() systemkaldet, som giver værktøjer til optimering af proceshukommelsesstyring, som komplementerer det eksisterende MADV_DONTNEED flag, hvorigennem kernen kan informeres på forhånd om den forestående frigivelse af en hukommelsesblok, dvs. at denne blok ikke længere er nødvendig og kan bruges af kernen. I modsætning til MADV_DONTNEED er brugen af ​​MADV_DONTNEED_LOCKED-flaget tilladt for hukommelsessider, der er fastgjort i RAM, som, når madvise kaldes, bliver smidt ud uden at ændre deres fastgjorte status, og i tilfælde af en efterfølgende adgang til blokering og generering af en "side fejl,” returneres med bindingen bevaret. Derudover er der tilføjet en ændring for at tillade MADV_DONTNEED-flaget at blive brugt med store hukommelsessider i HugeTLB.
  • Virtualisering og sikkerhed
    • Til x86-arkitekturen er der tilføjet understøttelse af Intel IBT (Indirect Branch Tracking) kommandoflowbeskyttelsesmekanisme, som forhindrer brugen af ​​udnyttelseskonstruktionsteknikker ved brug af returorienterede programmeringsteknikker (ROP, Return-Oriented Programming), hvor udnyttelsen er dannet i form af en kæde af opkald, der allerede eksisterer i hukommelsen af ​​stykker af maskininstruktioner, der ender med en kontrolreturinstruktion (som regel er disse ender på funktioner). Essensen af ​​den implementerede beskyttelsesmetode er at blokere indirekte overgange til en funktions krop ved at tilføje en speciel ENDBR-instruktion i begyndelsen af ​​funktionen og kun tillade udførelse af en indirekte overgang i tilfælde af en overgang til denne instruktion (en indirekte kald gennem JMP og CALL skal altid falde på ENDBR instruktionen, som er placeret helt i begyndelsen af ​​funktionerne).
    • Aktiverede mere streng kontrol af buffergrænser i funktionerne memcpy(), memmove() og memset(), udført på kompileringstidspunktet, når CONFIG_FORTIFY_SOURCE-tilstand er aktiveret. Den tilføjede ændring går ud på at kontrollere, om elementer af strukturer, hvis størrelse er kendt, går ud over grænserne. Det bemærkes, at den implementerede funktion ville tillade blokering af alle memcpy()-relaterede kernebufferoverløb identificeret i mindst de sidste tre år.
    • Tilføjet anden del af koden til den opdaterede implementering af RDRAND pseudo-tilfældige tal generator, som er ansvarlig for driften af ​​/dev/random og /dev/urandom enhederne. Den nye implementering er kendt for at forene driften af ​​/dev/random og /dev/urandom, tilføje beskyttelse mod forekomsten af ​​dubletter i strømmen af ​​tilfældige tal, når du starter virtuelle maskiner, og skifte til at bruge BLAKE2s hash-funktion i stedet for SHA1 for entropiblandingsoperationer. Ændringen forbedrede sikkerheden for pseudo-tilfældige talgeneratoren ved at eliminere den problematiske SHA1-algoritme og eliminere overskrivningen af ​​RNG-initialiseringsvektoren. Da BLAKE2s-algoritmen er overlegen i forhold til SHA1 i ydeevne, havde brugen også en positiv effekt på ydeevnen.
    • Til ARM64-arkitekturen er der tilføjet understøttelse af en ny pointer-godkendelsesalgoritme - "QARMA3", som er hurtigere end QARMA-algoritmen, samtidig med at den opretholder det korrekte sikkerhedsniveau. Teknologien giver dig mulighed for at bruge specialiserede ARM64-instruktioner til at verificere returadresser ved hjælp af digitale signaturer, der er gemt i de ubrugte øvre bits af selve markøren.
    • For ARM64-arkitekturen er der implementeret support til montering med inklusion i GCC 12 af en beskyttelsestilstand 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.
    • Tilføjet en ny nøglering - "maskine", der indeholder systemejernøglerne (MOK, Machine Owner Keys), understøttet i shim bootloaderen. Disse nøgler kan bruges til digitalt at signere kernekomponenter indlæst på et post-boot-stadium (for eksempel kernemoduler).
    • Fjernet understøttelse af asymmetriske private nøgler til TPM'er, som blev tilbudt i en ældre version af TPM, havde kendte sikkerhedsproblemer og blev ikke brugt bredt i praksis.
    • Tilføjet beskyttelse af data med typen size_t mod heltalsoverløb. Koden inkluderer handlere size_mul(), size_add() og size_sub(), som giver dig mulighed for sikkert at multiplicere, addere og subtrahere størrelser med typen size_t.
    • Når kernen bygges, aktiveres flagene "-Warray-bounds" og "-Wzero-length-bounds", som viser advarsler, når indekset går ud over array-grænsen, og når nul-længde-arrays bruges.
    • Virtio-krypto-enheden har tilføjet understøttelse af kryptering ved hjælp af RSA-algoritmen.
  • Netværks undersystem
    • I implementeringen af ​​netværksbroer er der tilføjet understøttelse af portbindingstilstand (låst tilstand), hvor brugeren kun kan sende trafik gennem porten fra en autoriseret MAC-adresse. Muligheden for at bruge flere strukturer til at evaluere tilstanden af ​​STP (Spanning Tree Protocol) protokollen er også blevet tilføjet. Tidligere kunne VLAN'er kun kortlægges direkte til STP (1:1), med hvert VLAN administreret uafhængigt. Den nye version tilføjer parameteren mst_enable, når den er aktiveret, styres tilstanden af ​​VLAN'er af MST-modulet (Multiple Spanning Trees), og bindingen af ​​VLAN'er kan svare til M:N-modellen.
    • Arbejdet fortsatte med at integrere værktøjer i netværksstakken for at spore årsagerne til at droppe pakker (årsagskoder). Årsagskoden sendes, når den hukommelse, der er knyttet til pakken, frigøres og giver mulighed for situationer som f.eks. kassering af pakke på grund af header-fejl, rp_filter-spoofing-detektering, ugyldig kontrolsum, tom for hukommelse, IPSec XFRM-regler udløst, ugyldigt sekvensnummer TCP osv.
    • Det er muligt at overføre netværkspakker fra BPF-programmer lanceret fra brugerrum i BPF_PROG_RUN-tilstanden, hvor BPF-programmer udføres i kernen, men returnere resultatet til brugerrummet. Pakker transmitteres ved hjælp af XDP (eXpress Data Path) undersystemet. Live-pakkebehandlingstilstand er understøttet, hvor XDP-processoren kan omdirigere netværkspakker på farten til netværksstakken eller til andre enheder. Det er også muligt at oprette softwaregeneratorer af ekstern trafik eller erstatte netværksrammer i netværksstakken.
    • For BPF-programmer knyttet til netværks-cgroups er hjælpefunktioner blevet foreslået til eksplicit at indstille returværdien af ​​systemkald, hvilket gør det muligt at formidle mere fuldstændig information om årsagerne til blokeringen af ​​systemkaldet.
    • XDP (eXpress Data Path)-undersystemet har tilføjet understøttelse af fragmenterede pakker placeret i flere buffere, hvilket giver dig mulighed for at behandle Jumbo-rammer i XDP og bruge TSO/GRO (TCP Segmentation Offload/Generic Receive Offload) til XDP_REDIRECT.
    • Processen med at slette netværksnavneområder er blevet betydeligt fremskyndet, hvilket var efterspurgt på nogle store systemer med en stor mængde trafik.
  • Оборудование
    • Amdgpu-driveren inkluderer som standard FreeSync adaptiv synkroniseringsteknologi, som giver dig mulighed for at justere opdateringshastigheden af ​​information på skærmen, hvilket sikrer glatte og rivefri billeder, mens du spiller spil og ser videoer. Aldebaran GPU-understøttelse er blevet annonceret som stabil.
    • i915-driveren tilføjer understøttelse af Intel Alderlake N-chips og Intel DG2-G12 diskrete grafikkort (Arc Alchemist).
    • Nouveau-driveren giver understøttelse af højere bithastigheder til DP/eDP-grænseflader og understøttelse af lttprs (Link-Training Tunable PHY Repeaters) kabelforlængere.
    • I drm (Direct Rendering Manager) undersystemet i drivere armada, exynos, gma500, hyperv, imx, ingenic, mcde, mediatek, msm, omap, rcar-du, rockchip, sprd, sti, tegra, tilcdc, xen og vc4 parameterunderstøttelse er blevet tilføjet nomodeset, som giver dig mulighed for at deaktivere skift af videotilstande på kerneniveau og brugen af ​​hardwaregengivelsesaccelerationsværktøjer, hvilket kun efterlader funktionalitet relateret til systemets framebuffer.
    • Tilføjet understøttelse af ARM SoС Qualcomm Snapdragon 625/632 (bruges i LG Nexus 5X og Fairphone FP3-smartphones), Samsung Exynos 850, Samsung Exynos 7885 (bruges i Samsung Galaxy A8), Airoha (Mediatek/EcoNet) EN7523, Mediatek PMT6582Mt5008 tablet 3G), Microchip Lan966, Renesas RZ/G2LC, RZ/V2L, Tesla FSD, TI K3/AM62 og i.MXRTxxxx.
    • Tilføjet understøttelse af ARM-enheder og boards fra Broadcom (Raspberry Pi Zero 2 W), Qualcomm (Google Herobrine R1 Chromebook, SHIFT6mq, Samsung Galaxy Book2), Rockchip (Pine64 PineNote, Bananapi-R2-Pro, STM32 Emtrion emSBS, Samsung Galaxy Tab S , Prestigio PMT5008 3G tablet), Allwinner (A20-Marsboard), Amlogic (Amediatek X96-AIR, CYX A95XF3-AIR, Haochuangy H96-Max, Amlogic AQ222 og OSMC Vero 4K+), Aspeed (Quanta S6Q, ASRVE8), Marveled 3 / Armada (Ctera C200 V1 og V2 NAS), Mstar (DongShanPiOne, Miyoo Mini), NXP i.MX (Protonic PRT8MM, emCON-MX8M Mini, Toradex Verdin, Gateworks GW7903).
    • Tilføjet understøttelse af lydsystemer og codecs AMD PDM, Atmel PDMC, Awinic AW8738, i.MX TLV320AIC31xx, Intel CS35L41, ESSX8336, Mediatek MT8181, nVidia Tegra234, Qualcomm SC7280, Renesas R2Ms.V. Tilføjet indledende implementering af lyddriver til Intel AVS DSP-chip. Opdateret driverunderstøttelse til Intel ADL og Tegra585 og foretaget ændringer for at forbedre lydunderstøttelse på Dell, HP, Lenovo, ASUS, Samsung og Clevo-enheder.

    Samtidig dannede Latin American Free Software Foundation en version af den helt gratis kerne 5.18 - Linux-libre 5.18-gnu, renset for elementer af firmware og drivere indeholdende ikke-frie komponenter eller kodesektioner, hvis omfang er begrænset af producenten. Den nye udgivelse renser drivere til MIPI DBI-paneler, VPU Amphion, WiFi MediaTek MT7986 WMAC, Mediatek MT7921U (USB) og Realtek 8852a/8852c, Intel AVS og Texas Instruments TAS5805M lydchips. DTS-filer blev også renset for forskellige Qualcomm SoC'er med processorer baseret på AArch64-arkitekturen. Opdateret blob-rensningskode i drivere og undersystemer af AMD GPU, MediaTek MT7915, Silicon Labs WF200+ WiFi, Mellanox Spectru Ethernet, Realtek rtw8852c, Qualcomm Q6V5, Wolfson ADSP, MediaTek HCI UART.

Kilde: opennet.ru

Tilføj en kommentar