Lansering av Linux-kjernen 5.19

Etter to måneders utvikling presenterte Linus Torvalds lanseringen av Linux-kjernen 5.19. Blant de mest merkbare endringene er: støtte for prosessorarkitekturen LoongArch, integrering av «BIG TCP»-patcher, «on-demand»-modus i fscache, fjerning av kode for støtte til a.out-formatet, muligheten til å bruke ZSTD for komprimering av fastvare, et grensesnitt for håndtering av utfasing av minne fra brukerrutinen, forbedret pålitelighet og ytelse til generatoren av pseudotilfeldige tall, samt støtte for Intel IFS (In-Field Scan)-utvidelser, AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) og ARM SME (Scalable Matrix Extension).

I kunngjøringen sa Linus at den neste kjernelanseringen sannsynligvis vil få versjonsnummer 6.0, da det har blitt tilstrekkelig mange utgivelser i 5.x-grenen til å rettferdiggjøre å endre det første tallet i versjonsnummeret. Endringen av nummerering skjer av estetiske grunner og er et formelt skritt for å fjerne ubehag ved å ha et stort antall utgivelser i serien.

Linus nevnte også at han brukte en Apple-bærbar datamaskin basert på ARM64-arkitekturen (Apple Silicon) med et Linux-miljø basert på distribusjonen Asahi Linux til å lage utgivelsen. Dette er ikke Linus' hovedarbeidsstasjon, men han brukte denne plattformen for å teste dens egnethet for arbeid med kjernen og for å være sikker på at han kunne lage kjernelanseringer på reise, med en lett bærbar datamaskin tilgjengelig. Før dette, for mange år siden, hadde Linus erfaring med å bruke Apple-utstyr til utvikling — han brukte en gang en datamaskin med CPU ppc970 og en Macbook Air.

Den nye versjonen har tatt imot 16401 feilrettinger fra 2190 utviklere (i forrige utgave var det 16206 feilrettinger fra 2127 utviklere), størrelsen på patchen er 90 MB (endringene berørte 13847 filer, 1149456 linjer med kode ble lagt til, og 349177 linjer ble fjernet). Omtrent 39 % av alle endringene i 5.19 er relatert til enhetsdrivere, omtrent 21 % av endringene har med oppdatering av maskinvare-spesifikk kode å gjøre, 11 % er relatert til nettverksstakken, 4 % til filsystemer, og 3 % til interne kjernesystemer.

De viktigste nyhetene i kjernen 5.19:

  • Disk subsystem, I/O og filsystemer
    • EROFS-filsystemet (Enhanced Read-Only File System) er designet for bruk på partisjoner som kun er tilgjengelige i lesemodus, og er oversatt til å bruke fscache-undermodulen for datacaching. Denne endringen har betydelig forbedret ytelsen til systemer der et stort antall containere startes fra EROFS-baserte bilder.
    • Fscache-undermodulen har fått en «on-demand»-lesemodus, som er aktivert for å optimalisere EROFS. Den nye modusen gjør det mulig å organisere lesecaching fra filsystembilder som ligger på det lokale systemet. I motsetning til den opprinnelig tilgjengelige arbeidsmodusen, som var fokuserte på caching i det lokale filsystemet for data overført via nettverksfilsystemer, delegerer «on-demand»-modusen funksjonen for datainnhenting og caching til en separat bakgrunnsprosess som kjører i brukerrummet.
    • XFS har fått muligheten til å lagre milliarder av utvidede attributter i i-node. Det maksimale antallet extenter for en fil er økt fra 4 milliarder til 247. Det er implementert en modus for atomisk oppdatering av flere utvidede attributter for en fil samtidig.
    • I Btrfs-filsystemet er håndteringen av låser optimalisert, noe som har resultert i en ytelsesforbedring på omtrent 7 % ved direkte skriving i «nowait»-modus. Ytelsen for operasjoner i NOCOW-modus (uten copy-on-write) er økt med omtrent 3 %. Belastningen på sidesystemcachen ved kjøring av «send»-kommandoen er redusert. Den minimale størrelsen på underlag er redusert fra 64K til 4K (underlag kan ha en størrelse som er mindre enn kjernens sidestørrelse). Overgangen fra bruk av basis-tre (radix tree) til algoritmen XArrays har blitt gjennomført.
    • NFS-serveren har fått en modus for forlengelse av låsbesparelse satt av en klient som har sluttet å svare på forespørslene. Den nye modusen tillater at opprydning av låsen kan forsinkes i opptil et døgn, hvis en annen klient ikke ber om en konkurrerende lås. I standardmodus ryddes låsen opp etter 90 sekunder når klienten har sluttet å svare.
    • I fanotify-filsystemets hendelsessporingsundermodul er flagget FAN_MARK_EVICTABLE implementert, som kan deaktivere låsing av mål-i-node i cachen, for eksempel for å ignorere undertrær uten å låse deler av dem i cachen.
    • FAT32-driveren har fått støtte for å hente informasjon om filens opprettelsestid gjennom systemanropet statx, med implementering av en mer effektiv og funksjonell variant av stat(), som returnerer utvidet informasjon om filen.
    • Betydelige optimaliseringer er gjort i exFAT-driveren, relatert til samtidig opprydding av en gruppe sektorer under aktiv 'dirsync'-modus, i stedet for sekvensiell opprydning per sektor. Ved å redusere antall blokkforespørselen etter optimaliseringen har ytelsen for opprettelse av et stort antall kataloger på SD-kortet økt med mer enn 73-85% avhengig av klusterstørrelsen.
    • Det første korrigerende oppdateringen av ntfs3-driveren er inkludert i kjernen. Siden ntfs3 ble inkludert i kjernen 5.15 i oktober i fjor, har driveren ikke blitt oppdatert, og forbindelsen til utviklerne ble tapt, men nå har utviklerne gjenopptatt publiseringen av endringer. De foreslåtte patchene har rettet opp feil som førte til minnelekkasjer og krasj, løst problemer med xfstests, ryddet opp i ubrukelig kode og rettet skrivefeil.
    • For OverlayFS er muligheten for mapping av bruker-ID-er fra monterte filsystemer implementert, brukt for å tilknytte filer til en bestemt bruker på et montert eksternt partisjon med en annen bruker i det nåværende systemet.
  • Minne og systemtjenester
    • Innledende støtte for LoongArch-instruksjonssettarkitekturen er lagt til, brukt i Loongson 3 5000 prosessorene og implementerer en ny RISC ISA som ligner på MIPS og RISC-V. LoongArch-arkitekturen er tilgjengelig i tre varianter: begrenset 32-bit (LA32R), normal 32-bit (LA32S) og 64-bit (LA64).
    • Koden for støtte av a.out kjørbare filformat er fjernet, som ble ansett som foreldet i versjon 5.1. a.out-formatet har lenge vært utdatert på Linux-systemer, og generering av a.out-filer støttes ikke av moderne verktøy i standard Linux-konfigurasjoner. Lasten for a.out filer kan implementeres helt i brukerrens rom.
    • Støtten for oppstartsalternativer spesifik til x86-arkitekturen: nosep, nosmap, nosmep, noexec og noclflush er avsluttet.
    • Støtten for den foreldede CPU-arkitekturen h8300 (Renesas H8/300), som lenge har vært uten vedlikehold, er avsluttet.
    • Mulighetene knyttet til håndtering av oppdagede delt låser («split lock»), som oppstår ved tilgang til ujusterte data i minnet fordi de under utførelsen av atomiske instruksjoner krysser to CPU-cache-linjer, er utvidet. Slike låser fører til betydelig nedgang i ytelsen. Mens kjernen tidligere som standard ga advarsler med informasjon om prosessen som forårsaket låsen, vil den nå bremse den problematiske prosessen ytterligere for å opprettholde ytelsen til resten av systemet.
    • Støtte for mekanismen IFS (In-Field Scan), implementert i Intel-prosessorer, er lagt til. Denne mekanismen tillater kjøring av lavnivå diagnostiske tester av CPU-er, som kan avdekke problemer som ikke oppdages av standard verktøy basert på feilkorrigeringskoder (ECC) eller paritetsbiter. Utførte tester er formatert som lastbare fastvareoppdateringer, lik oppdateringer av mikrokoden. Testresultatene er tilgjengelige gjennom sysfs.
    • Muligheten til å integrere bootconfig-filen i kjernen er lagt til, noe som gjør det mulig å definere kjernens driftsparametere via en innstillingsfil i tillegg til kommandolinjalternativer. Integrasjonen skjer ved hjelp av byggealternativet 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Tidligere ble bootconfig definert gjennom vedlegg til initrd-bildet. Integrasjonen i kjernen tillater bruk av bootconfig i konfigurasjoner uten initrd.
    • Muligheten til å laste inn fastvare komprimert med Zstandard-algoritmen er implementert. I sysfs er det lagt til et sett med kontrollfiler /sys/class/firmware/* som gjør det mulig å initiere lasting av fastvare fra brukerrommet.
    • I grensesnittet for asynkron I/O io_uring er en ny flagg IORING_RECVSEND_POLL_FIRST introdusert. Når denne flaggen er aktivert, vil den nettverksoperasjonen først bli sendt til behandling ved hjelp av polling, noe som kan spare ressurser i situasjoner hvor det er akseptabelt å behandle operasjonen med noe forsinkelse. io_uring har også fått støtte for systemanropet socket(), vært med nye flagg for å forenkle håndtering av filbeskrivelser, fått en 'multi-shot' modus for å motta flere forbindelser i accept()-anropet, samt fått operasjoner for å sende NVMe-kommandoer direkte til enheten.
    • For the Xtensa architecture, support for the KCSAN (Kernel Concurrency Sanitizer) debugging tool has been provided, designed for dynamic detection of race conditions within the kernel. Support for sleep mode and coprocessors has also been added.
    • Support for the m68k (Motorola 68000) architecture has been implemented. en virtuell maskin (platform simulator), based on the Android Goldfish emulator.
    • For the AArch64 architecture, support for Armv9-A SME (Scalable Matrix Extension) has been implemented.
    • In the eBPF subsystem, the storage of typed pointers in map structures has been allowed, and support for dynamic pointers has been added.
    • A new proactive memory eviction mechanism has been proposed, which supports user-space management through the memory.reclaim file. Writing a number to the specified file will attempt to evict the corresponding number of bytes from the set associated with the cgroup.
    • The accuracy of memory usage accounting during data compression in the swap space has been improved using the zswap mechanism.
    • For the RISC-V architecture, support for running 32-bit executables on 64-bit systems has been provided, a mode has been added to bind limiting attributes to memory pages (for example, to prohibit caching), and the kexec_file_load() function has been implemented.
    • The implementation of support for 32-bit Armv4T and Armv5 systems has been adapted for use in universal multi-platform kernel builds suitable for different ARM systems.
  • Virtualisering og sikkerhet
    • In the EFI subsystem, the ability for confidential information to be sent to guest systems without disclosing it to the host system has been implemented. Data is provided through the security/coco directory in securityfs.
    • In Lockdown protection mode, which restricts root user access to the kernel and blocks UEFI Secure Boot bypass paths, a loophole allowing circumventing protection through kernel debugger manipulation has been closed.
    • Patches aimed at improving the reliability and performance of the pseudorandom number generator have been included.
    • Support for the randomization mechanism of kernel structures has been implemented when building with Clang 15.
    • In the Landlock mechanism, which allows limiting a group of processes' interaction with the external environment, support for rules controlling file renaming operations has been provided.
    • IMA-subsystem (Integrity Measurement Architecture), designed to verify the integrity of operating system components through digital signatures and hashes, has been translated to use the fs-verity module for file verification.
    • The logic for actions when disabling unprivileged access to the eBPF subsystem has been changed — previously, all commands related to the bpf() system call were disabled, but starting from version 5.19, access to commands that do not lead to the creation of objects has been retained. With this behavior, a privileged process is required to load a BPF program, but afterwards, unprivileged processes can interact with that program.
    • Support for the AMD SEV-SNP (Secure Nested Paging) extension has been added, enabling secure operation with nested memory page tables and protecting against 'undeSErVed' and 'SEVerity' attacks on AMD EPYC processors, which can bypass the AMD SEV (Secure Encrypted Virtualization) protection mechanism.
    • Support for the Intel TDX (Trusted Domain Extensions) mechanism has been added, allowing the blocking of attempts for external access to encrypted memory. virtual machines.
    • The virtio-blk driver, used for emulating block devices, has added support for input/output using polling, which tests have shown reduces latency by about 10%.
  • Nettverks subsystem
    • A series of BIG TCP patches have been included, allowing for an increase in the maximum size of TCP packets to 4GB to optimize the performance of high-speed internal data center networks. Such an increase in packet size with a 16-bit header field is achieved through the implementation of 'jumbo' packets, where the size in the IP header is set to 0, and the actual size is passed in a separate 32-bit field in an attached header. Performance testing has shown that setting the packet size to 185 KB allowed an increase in throughput by 50% and significantly reduced data transmission delays.
    • Arbeidet med å integrere verktøy for å spore årsaker til pakketap (årsaks koder) er fortsatt i gang. Årsakskoden overføres under frigjøring av minne knyttet til pakken, og gjør det mulig å ta hensyn til situasjoner som pakketap på grunn av feil i felt i headeren, identifisering av spoofing av rp_filter-algoritmen, feil kontrollsum, utilstrekkelig minne, utløsing av IPSec XFRM-regler, feil sekvensnummer for TCP osv.
    • Støtte for å rulle tilbake MPTCP (MultiPath TCP)-tilkoblinger til vanlig TCP er lagt til i situasjoner der spesifikke MPTCP-funksjoner ikke kan brukes. MPTCP er en utvidelse av TCP-protokollen som organiserer TCP-tilkoblingen med levering av pakker samtidig gjennom flere ruter via forskjellige nettverksgrensesnitt knyttet til forskjellige IP-adresser. API for å administrere MPTCP-strømmer fra brukerrommet er lagt til.
  • Utstyr
    • Mer enn 420 tusen nye linjer med kode relatert til amdgpu-driveren er lagt til, hvorav omtrent 400 tusen linjer er automatisk genererte header-filer med data for ASIC-registre i driveren for AMD GPU-er, og ytterligere 22,5 tusen linjer gir den innledende implementeringen av støtte for AMD SoC21. Den totale størrelsen på driveren for AMD GPU-er har nådd over 4 millioner linjer med kode. I tillegg til SoC21 inkluderer AMD-driveren støtte for SMU 13.x (System Management Unit), oppdatert støtte for USB-C og GPUVM, samt forberedelse til støtte for fremtidige generasjoner av RDNA3 (RX 7000) og CDNA (AMD Instinct)-plattformer.
    • I i915-driveren (Intel) er energistyringsfunksjonene utvidet. Identifikatorene for Intel DG2 GPU-er (Arc Alchemist) som brukes på bærbare datamaskiner er lagt til, i tillegg er den innledende støtten for Intel Raptor Lake-P (RPL-P) plattformen sikret, informasjon om Arctic Sound-M-grafikkort er lagt til, ABI for beregningsmotorer er implementert, og støtte for Tile4-formatet er lagt til for DG2-kort. Det er også implementert støtte for DisplayPort HDR for systemer basert på Haswell mikroarkitektur.
    • I Nouveau-driveret er det blitt gjort et skifte til bruk av drm_gem_plane_helper_prepare_fb-behandleren, og for noen strukturer og variabler er minnet tildelt statisk. Når det gjelder bruken av åpen kildekode fra NVIDIA for Nouveau-moduler, er arbeidet så langt begrenset til å identifisere og rette feil. Det planlegges å bruke den publiserte fastvaren for å forbedre ytelsen til driveren.
    • En driver for NVMe-kontrolleren, som brukes i Apple-datamaskiner med M1-brikken, har blitt lagt til.

Samtidig har den latinamerikanske stiftelsen for fri programvare utviklet en helt fri kjerneversjon 5.19 — Linux-libre 5.19-gnu, renset for elementer fra fastvarer og drivere som inneholder ikke-frie komponenter eller kodebiter med begrenset bruksområde etter produsentens bestemmelser. I den nye utgaven er driverne for pureLiFi X/XL/XC og TI AMx3 Wkup-M3 IPC blitt renset. Koden for å rense blobber i driverne og subsystemene til Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu-driverne er oppdatert. Støtte for devicetree-filer fra Qualcomm AArch64 er implementert. En ny navngivningsskjema for komponenter i Sound Open Firmware er lagt til. Rensingen av driveren ATM Ambassador, som er fjernet fra kjernen, er avsluttet. Rengjøringen av blobber i HDCP og Mellanox Core er flyttet til separate kconfig-tags.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster