Udgivelsen af Linux-kernen 5.15

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 5.15. Blandt de mest bemærkelsesværdige ændringer er: en ny NTFS-driver med skriveunderstøttelse, ksmbd-modul med implementering af SMB-server, DAMON-understøttelse til overvågning af hukommelsesadgang, låse-primitiver til realtidstilstand, fs-verity-understøttelse i Btrfs, systemopkaldet process_mrelease til systemer, der reagerer på hukommelsesmangel, og en fjernattesteringsmodul dm-ima.

Den nye version inkluderer 13499 rettelser fra 1888 udviklere, patch-størrelsen er 42 MB (ændringerne berørte 10895 filer, 632522 linjer kode blev tilføjet, og 299966 linjer blev fjernet). Cirka 45% af alle ændringerne i 5.15 vedrører enhedsdrivere, omtrent 14% er relateret til opdatering af arkitekturspecifik kode, 14% vedrører netværksstakken, 6% om filsystemer og 3% om kernen internt.

Hovednyhederne:

  • DiskSubsystem, input/output og filsystemer
    • I kernen er en ny implementering af NTFS-filsystemet, åbnet af Paragon Software, blevet godkendt. Den nye driver kan arbejde i skrivemode og understøtter alle funktionerne fra den aktuelle NTFS 3.1-version, herunder udvidede filattributter, adgangslister (ACL), datakomprimering, effektiv håndtering af tomrum i filer (sparse) og genoprettelse af integritet fra loggen ved fejl.
    • I Btrfs-filsystemet er der implementeret understøttelse af fs-verity-mekanismen, der bruges til gennemsigtig kontrol af integriteten og ægtheden af enkelte filer baseret på de kryptografiske hashes eller nøgler, der er knyttet til filerne og opbevaret i metadataområdet. Tidligere var fs-verity kun tilgængelig for filsystemerne Ext4 og F2fs.

      I Btrfs er der også tilføjet understøttelse af mapping af brugeridentifikatorer for monterede filsystemer (tidligere understøttet for FAT, ext4 og XFS filsystemer). Denne mulighed giver mulighed for at matche filer fra en bestemt bruger på et monteret fremmed partition med en anden bruger i det aktuelle system.

      Bland andre ændringer i Btrfs: acceleration af tilføjelse af nøgler til katalogindekset for at forbedre ydeevnen ved filoprettelse; mulighed for at køre raid0 med et enkelt enhed og raid10 med to (for eksempel under omkonfiguration af arrayet); indstillingen "rescue=ibadroots" til at ignorere et korrupt extent-træ; acceleration af "send"-operationen; reduktion af lås-konflikter under omdannelsesoperationer; mulighed for at bruge 4K-sektorer på systemer med en sides størrelse på 64K.

    • I XFS er muligheden for at bruge filsystemdatoer efter 2038 stabiliseret. En mekanisme til udskudt deaktivering af inode er implementeret, og støtte til udskudt oprettelse og sletning af filattributter. For at undgå problemer er det blevet umuligt at deaktivere disk-quotaer for allerede monterede partitioner (quotaer kan tvinges deaktiveret, men den relaterede opgørelse fortsætter, så for at deaktivere dem helt kræves det at genmontere).
    • I EXT4 er der arbejdet på at øge ydeevnen ved skrivning af delalloc-bufferne og behandling af forældreløse (orphan) filer, som fortsætter med at eksistere, fordi de forbliver åbne, men er uden tilknytning til et katalog. Behandling af discard-operationer er flyttet ud af jbd2-tråden kthread for at undgå blokeringer af metadata-operationer.
    • I F2FS er der tilføjet en indstilling "discard_unit=block|segment|section" til at knytte discard-operationer (mærkning af frigivne blokke, der ikke længere skal opbevares fysisk) til justering i forhold til blok, sektor, segment eller sektion. Støtte til sporing af ændringer i forsinkelse ved input/udgang er også tilføjet.
    • I filsystemet EROFS (Extendable Read-Only File System) er der tilføjet støtte til direkte input/udgang for filer, der er gemt uden kompression, samt støtte til fiemap.
    • I OverlayFS er der implementeret korrekt behandling af monteringsflaggene "immutable", "append-only", "sync" og "noatime".
    • I NFS er håndteringen af situationer, hvor NFS-serveren er holdt op med at svare på forespørgsler, forbedret. Muligheden for at montere fra en allerede brugt, men tilgængelig gennem en anden netværksadresse er tilføjet. serverMen tilgængelig via en anden netværksadresse.
    • Forberedelserne til omskrivning af FSCACHE undersystemet er begyndt.
    • Der er tilføjet støtte til EFI-partitioner med ikke-standard placering af GPT-tabeller.
    • I fanotify-mekanisme er der implementeret et nyt flag FAN_REPORT_PIDFD, som gør det muligt at angive pidfd blandt de returnerede metadata. Pidfd hjælper med at håndtere situationer med genbrug af PID for en mere præcis identifikation af processer, der henvender sig til de overvågede filer (pidfd er knyttet til en specifik proces og ændres ikke, mens PID kan være knyttet til en anden proces efter afslutningen af den aktuelle proces, der er associeret med dette PID).
    • Systemopkaldet move_mount() har fået muligheden for at tilføje monteringspunkter i eksisterende delte grupper, hvilket løser problemer med bevarelsen og genoprettelsen af processtatus i CRIU-værktøjet, når der er flere monteringsrum, der deles mellem isolerede containere.
    • Der er tilføjet beskyttelse mod skjulte race-tilstande, der potentielt kunne føre til filkorruption ved læsning fra cache under behandling af hulrum i filen.
    • Understøttelsen af obligatoriske fil-låsninger, der er implementeret gennem systemopkald, der fører til ændringer i filen, er blevet ophørt. På grund af mulige race-tilstande blev disse låsninger betragtet som usikre og blev for mange år siden erklæret forældede.
    • Subsystemet LightNVM, som tillod direkte adgang til SSD-lagerenhed uden om emuleringslaget, er blevet fjernet. LightNVM mistede mening efter fremkomsten af NVMe-standarder, der muliggør zonering (ZNS, Zoned Namespace).
  • Hukommelse og systemtjenester
    • Subsystemet DAMON (Data Access MONitor) er implementeret, hvilket muliggør overvågning af aktivitet relateret til dataadgang i RAM i forbindelse med en valgt proces, der kører i brugerrummet. Subsystemet gør det muligt at analysere, hvilke specifikke hukommelsesområder procesen har tilgået i hele sin drift, og hvilke hukommelsesområder der forblev ubenyttede. Blandt funktionerne i DAMON bemærkes den lave CPU-belastning, lavt hukommelsesforbrug, høj nøjagtighed og forudsigelige konstantomkostninger, der ikke afhænger af størrelse. Subsystemet kan bruges både af kernen til at optimere hukommelsesstyring og af værktøjer i brugerrummet til at forstå, hvad procesen præcist foretog sig, og optimere hukommelsesbrugen, for eksempel ved at frigive unødvendig hukommelse til systemet.
    • Systemanropet process_mrelease er implementeret, hvilket muliggør en hurtigere frigivelse af processens hukommelse, når den afslutter sit arbejde. Under normale forhold udføres frigivelse af ressourcer og afslutning af processen ikke øjeblikkeligt og kan forsinkes af forskellige årsager, hvilket hæmmer driften af brugerpladsens tidligt reaktive systemer til håndtering af hukommelsesmangel, såsom oomd (tilbydes af systemd) og lmkd (bruges i Android). Ved hjælp af process_mrelease-anropet kan sådanne systemer mere forudsigeligt indlede tilbagevenden af hukommelse fra tvangsmæssigt afsluttede processer.
    • Fra PREEMPT_RT-kernen, hvor understøttelsen af realtidsoperationer udvikles, er varianter af primitives til organisering af låse, såsom mutex, ww_mutex, rw_semaphore, spinlock og rwlock, baseret på RT-Mutex-subsystemet, blevet flyttet. Der er tilføjet ændringer i SLUB-slab allocatoren, som forbedrer ydeevnen i PREEMPT_RT-tilstand og mindsker indflydelsen på afbrydelser.
    • I cgroup er der tilføjet støtte til opgaven SCHED_IDLE-schedulerattributten, som giver mulighed for at anvende denne egenskab på alle processerne i gruppen, der hører til en bestemt cgroup. Det vil sige, at disse processer kun vil blive udført, når der ikke er andre opgaver i systemet, der venter på udførelse. I modsætning til at indstille SCHED_IDLE-attributten for hver proces individuelt, tager bindingen af SCHED_IDLE til cgroupen relativ vægt af opgaverne i gruppen i betragtning ved valg af en opgave til udførelse.
    • Mekanismen til registrering af hukommelsesforbrug i cgroup er udvidet med muligheden for at spore yderligere datastrukturer i kernen, herunder de, der oprettes til polling, signalbehandling og navnerum.
    • Understøttelsen af asymmetrisk opgaveplanlægning knyttet til processor-kerner er blevet tilføjet på arkitekturer, hvor nogle CPU'er tillader udførelse af 32-bit opgaver, mens nogle kun arbejder i 64-bit tilstand (f.eks. ARM). Den nye tilstand tillader, at ved planlægning af udførelse af 32-bit opgaver, tages der kun hensyn til CPU'er, der understøtter 32-bit opgaver.
    • I grænsefladen for asynkron I/O io_uring er der nu støtte for åbning af filer direkte i indeks-tabellen fixed-file uden brug af filbeskriver, hvilket gør det muligt at væsentligt accelerere visse typer operationer, men som er i strid med den traditionelle Unix-proces for brug af filbeskrivere til at åbne filer.

      I io_uring for BIO (Block I/O Layer) er der implementeret en ny mekanisme for genbearbejdning ('BIO recycling'), der reducerer omkostningerne ved håndtering af intern hukommelse og øger antallet af behandlede I/O-operationer pr. sekund med cirka 10%. io_uring har også fået støtte til systemopkald som mkdirat(), symlinkat() og linkat().

    • For BPF-programmer er muligheden for at anmode om og behandle timerbegivenheder blevet implementeret. Der er tilføjet en iterator for UNIX-sokler, samt mulighed for at få og indstille sokkelindstillinger via setsockopt. BTF dumperen har fået støtte til typede data.
    • På NUMA-systemer med forskellige typer hukommelse, der adskiller sig i ydeevne, er der blevet implementeret en mekanisme til at flytte udskydte hukommelsessider fra dynamisk hukommelse (DRAM) til langsommere permanent hukommelse (Persistent Memory) i situationer med udtømning af ledig plads i stedet for at slette disse sider. Test har vist, at en sådan taktik normalt forbedrer ydeevnen på sådanne systemer. For NUMA er muligheden for at allokere hukommelsessider til en proces fra et valgt sæt af NUMA-noder også blevet implementeret.
    • Der er implementeret støtte til tre- og fire-niveauer af side-tabeller for ARC-arkitekturen, hvilket fremadskuende muliggør støtte til 64-bit ARC-processorer.
    • For s390-arkitekturen er der implementeret muligheden for at anvende mekanismen KFENCE til at identificere fejl i hukommelsesoperationer, og der er tilføjet støtte til detektor for race-tilstande KCSAN.
    • Der er tilføjet støtte til indeksering af meddelelser, der udskrives via printk(), hvilket gør det muligt at udtrække alle sådanne meddelelser på én gang og spore ændringer i brugerrummet.
    • I mmap() er støtten til VM_DENYWRITE-indstillingen blevet ophørt, og kernens kode er blevet befriet for brugen af MAP_DENYWRITE-tilstanden, hvilket har reduceret antallet af situationer, der fører til fejl ved skrivning til fil med FEJL ETXTBSY.
    • Der sporingssystem har fået en ny type checker, «Event probes», som kan knyttes til eksisterende sporingsbegivenheder og definere sit eget outputformat.
    • Når kernen bygges med Clang-kompilatoren, anvendes der nu som standard en indbygget assembler fra LLVM-projektet.
    • I forbindelse med projektet om at fjerne kernekode, der fører til kompilatoradvarsler, blev der gennemført et eksperiment, hvor standardindstillingen for «-Werror» blev aktiveret, hvilket gør kompilatoradvarsler til fejl. Under forberedelsen af udgivelsen 5.15 begyndte Linus kun at acceptere ændringer, der ikke førte til advarsler under kernelbygning, og aktiverede bygning med «-Werror», men han gik senere med til, at det var for tidligt at træffe denne beslutning og udskød aktiveringen af «-Werror» som standard. Kontrollen af aktiveringen af flaget «-Werror» under bygning sker ved hjælp af parameteren WERROR, som som standard er indstillet til værdien COMPILE_TEST, hvilket betyder, at det kun aktiveres under testbygninger.
  • Virtualisering og sikkerhed
    • I Device Mapper (DM) er der tilføjet en ny behandler, dm-ima, som implementerer en mekanisme til ekstern attestering baseret på IMA (Integrity Measurement Architecture), der giver en ekstern tjeneste mulighed for at verificere tilstanden af kernesystemerne for at sikre deres ægthed. I praksis muliggør dm-ima oprettelse af lagerpladser via Device Mapper, der er knyttet til eksterne cloudsystemer, hvor IMA bruges til at verificere ægtheden af den aktive DM target-konfiguration.
    • I prctl() er der implementeret en ny mulighed PR_SPEC_L1D_FLUSH, som, når den er aktiveret, får kernen til at nulstille indholdet af første niveau cache (L1D) hver gang der skiftes kontekst. Denne tilstand muliggør en ekstra beskyttelse mod angreb via sidekanaler for de vigtigste processer ved at bestemme data, der er blevet tilbageholdt i cachen som følge af sårbarheder forårsaget af spekulativ udførelse af instruktioner i CPU'en. Prisen for at aktivere PR_SPEC_L1D_FLUSH (som som standard ikke er aktiveret) er et væsentligt fald i ydeevne.
    • Mulighed for at bygge en kerne med tilføjelsen af GCC-flaget "-fzero-call-used-regs=used-gpr" er implementeret, hvilket sikrer nulstilling af alle registre, før kontrollen returneres fra funktionen. Denne mulighed beskytter mod informationslækage fra funktioner og reducerer antallet af blokke, der er velegnede til opbygning af ROP-gadgets (Return-Oriented Programming) i udnyttelser med 20%.
    • Mulighed for at bygge kerner til ARM64-arkitekturen som klienter til Hyper-V hypervisoren er blevet implementeret.
    • Et nyt framework til udvikling af drivere ved navn "VDUSE" er blevet foreslået, hvilket gør det muligt at implementere virtuelle blokenheder i brugerrummet og anvende Virtio som transport til adgang fra gæstesystemer.
    • En Virtio-driver til I2C-bussen er blevet tilføjet, som gør det muligt at emulere I2C-controllere i para-virtualiseringstilstand ved brug af separate backend-systemer.
    • Virtio-driveren gpio-virtio er blevet tilføjet, som giver gæstesystemerne adgang til GPIO-linjer, der tilbydes af værtsystemet.
    • Muligheden for at begrænse adgangen til hukommelsessider for enhedsdrivere med DMA-understøttelse på systemer uden I/O MMU (hukommelsesadministrationsenhed) er blevet tilføjet.
    • I KVM-hypervisoren er der implementeret en mulighed for at udskrive statistik i form af lineære og logaritmiske histogrammer.
  • Netværkssubsystem
    • Der er tilføjet et modul ksmbd til kernen, som implementerer en filserver, der bruger SMB3-protokollen. Modulet supplerer den tidligere tilgængelige SMB-klientimplementering i kernen og er i modsætning til SMB-serveren, der kører i brugerrum, mere effektiv med hensyn til ydeevne, hukommelsesforbrug og integration med de udvidede muligheder i kernen. Ksmbd præsenteres som en højtydende og anvendelig udvidelse af Samba til indlejrede enheder, der kan integreres med værktøjer og biblioteker fra Samba efter behov. blandt de fremhævede funktioner i ksmbd er den forbedrede støtte til teknologi for distribueret filcache (SMB leases) på lokale systemer, som væsentligt reducerer trafikken. I fremtiden planlægges det at tilføje støtte til RDMA ("smbdirect") og protokoludvidelser relateret til forbedret krypteringens pålidelighed og digital signaturverifikation.
    • I CIFS-klienten er understøttelsen af NTLM og mindre pålidelige autentificeringsalgoritmer baseret på DES-algoritmen, anvendt i SMB1-protokollen, blevet ophørt.
    • Implementeringen af netværksbroer til VLAN understøtter multicast.
    • I bonding-driveren, der anvendes til aggregation af netværksinterfaces, er der tilføjet støtte til XDP (eXpress Data Path), der muliggør manipulation af netværkspakker på stadiet før deres behandling af Linux-kerne netværksstakken.
    • I det trådløse mac80211-stak er der tilføjet støtte til 6GHz STA (Special Temporary Authorization) i LPI, SP og VLP tilstande, samt mulighed for at indstille separate TWT (Target Wake Time) i adgangspunktstilstand.
    • Der er tilføjet støtte til MCTP (Management Component Transport Protocol), der anvendes til at kommunikere med controllerne og deres tilknyttede enheder (hostprocessorer, perifere enheder osv.).
    • Integration af MPTCP (MultiPath TCP) i kernen er fortsat, en udvidelse af TCP-protokollen til at oprette TCP-forbindelser med pakkelevering samtidigt over flere ruter gennem forskellige netværksinterfaces, knyttet til forskellige IP-adresser. Den nye version tilføjer support til adresser i fullmesh-tilstand.
    • I netfilter er der tilføjet håndterere til netværksstrømme, der er indkapslet i SRv6 (Segment Routing IPv6) protokollen.
    • Der er tilføjet støtte til sockmap for strømførende Unix-sockets.
  • Udstyr
    • I amdgpu-driveren er der tilføjet støtte til APU Cyan Skillfish (udstyret med GPU Navi 1x). Til APU Yellow Carp er der tilføjet støtte til videokodere. Støtten til GPU Aldebaran er forbedret. Nye identifikatorer for kort baseret på GPU Navi 24 «Beige Goby» og RDNA2 er tilføjet. En forbedret implementering af virtuelle skærme (VKMS) er blevet foreslået. Der er tilføjet støtte til temperaturovervågning af AMD Zen 3-chips.
    • I amdkfd-driveren (til diskrete GPU'er som Polaris) er der implementeret en manager for delt virtuel hukommelse (SVM, shared virtual memory) baseret på HMM (Heterogeneous memory management) subsystemet, som gør det muligt at bruge enheder med egne hukommelsesadministrationsblokke (MMU, memory management unit), der kan få adgang til hovedhukommelsen. Dette gør det muligt for GPU'en at få adgang til hovedhukommelsen i processen via et delt adressrum mellem GPU og CPU ved hjælp af HMM.
    • I i915-driveren til Intel grafikkort er anvendelsen af TTM videohukommelsesstyringsmanageren blevet udvidet, og der er inkluderet mulighed for energiforvaltning baseret på GuC (Graphics micro Controller). Forberedelsen til at implementere support for Intel ARC Alchemist grafikkortet og GPU Intel Xe-HP er begyndt.
    • I driver nouveau har implementeret styring af baggrundsbelysningen på eDP-paneler ved hjælp af DPCD (DisplayPort Configuration Data).
    • Driveren msm har tilføjet støtte til GPU Adreno 7c Gen 3 og Adreno 680.
    • Der er udviklet en IOMMU-driver til Apple M1-chippen.
    • Der er tilføjet en lyddriver til systemer baseret på APU AMD Van Gogh.
    • Den staging-branch har fået driveren Realtek R8188EU, som har erstattet den gamle version af driveren (rtl8188eu) til trådløse chip Realtek RTL8188EU 802.11 b/g/n.
    • Driveren ocp_pt er blevet accepteret til en PCIe-kort udviklet af Meta (Facebook) med implementering af miniature atomure og GNSS-modtagere, der kan bruges til at organisere arbejde for isolerede servere synkronisering af præcist tid.
    • Der er tilføjet støtte til smartphones Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle.
    • Der er tilføjet støtte til ARM SoCs og 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 (serverplader Facebook Cloudripper, Elbert og Fuji), 4KOpen STiH418-b2264.
    • Der er tilføjet støtte til 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.
    • Driveren LiteETH er blevet tilføjet med støtte til Ethernet-controllere, der anvendes i software SoC LiteX (til FPGA).
    • I driveren usb-audio er muligheden lowlatency blevet tilføjet for at styre aktiveringen af en minimal latenstilstand. Der er også blevet tilføjet en option quirk_flags til at overføre enhedsspecifikke indstillinger.

Samtidig har den latinamerikanske Free Software Foundation udgivet en version af den helt frie kerne 5.15 — Linux-libre 5.15-gnu, som er renset for firmware og drivere, der indeholder ikke-frie komponenter eller kodeafsnit, hvis anvendelse er begrænset af producenten. I den nye udgave er der implementeret logbeskeder ved afslutningen af rensningen. Problemer ved pakkeoprettelse med mkspec er blevet løst, og understøttelsen af snap-pakker er forbedret. Nogle advarsler, der opstod ved behandling af header-filen firmware.h, er blevet fjernet. Visse advarselstyper („format-extra-args“, kommentarer, ubrugte funktioner og variabler) er nu tilladt under opbygning i „-Werror“-tilstand. Rensningen af driveren gehc-achc er tilføjet. Koden til rensning af blobs i drivere og subsystemer såsom adreno, btusb, btintel, brcmfmac, aarch64 qcom er blevet opdateret. Rensningen af driverne prism54 (fjernet) og rtl8188eu (erstatten med r8188eu) er stoppet.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster