Utgivelsen av Linux-kjernen 6.1.

Etter to måneder med utvikling har Linus Torvalds presentert utgivelsen av Linux-kjerne 6.1. Blant de mest merkbare endringene er: støtte for utvikling av drivere og moduler i Rust-språket, oppgradering av mekanismen for bestemmelse av brukte minnesider, en spesialminnebehandler for BPF-programmer, KMSAN-systemet for feildiagnostisering av minneproblemer, KCFI (Kernel Control-Flow Integrity) beskyttelsesmekanismen, og implementeringen av Maple tree-strukturen.

Den nye versjonen inkluderer 15115 rettinger fra 2139 utviklere, patch-størrelsen er 51 MB, som er omtrent halvparten så stor som patchene fra kjerne 6.0 og 5.19. Endringene berører 13165 filer, 716247 linjer med kode er lagt til, og 304560 linjer er fjernet. Omtrent 45 % av alle endringene i 6.1 er relatert til enhetsdrivere, ca. 14 % av endringene gjelder oppdatering av kode spesifikk for maskinvarearkitekturer, 14 % er relatert til nettverksstakken, 3 % til filsystemer, og 3 % til interne kjerner.

Hovednyhetene i kjerne 6.1:

  • Minne og systemtjenester
    • Muligheten til å bruke Rust-språket som et sekundært språk for utvikling av drivere og kjerner. Hovedmotivet for støtten til Rust er å forenkle skrivingen av sikre og kvalitetsdrivere ved å redusere sannsynligheten for feil ved minnehåndtering. Rust-støtte er deaktivert som standard og fører ikke til at Rust inkluderes blant de obligatoriske byggavhengighetene til kjernen. For nå er det bare akseptert en minimal, nedskalert versjon av patchene, som er redusert fra 40 til 13 tusen linjer med kode og gir bare minimum nødvendig for å bygge en enkel kjerne-modul skrevet i Rust. Det er planer om gradvis å øke den eksisterende funksjonaliteten ved å overføre og andre endringer fra Rust-for-Linux-grenen. Prosjekter for bruk av den foreslåtte infrastrukturen til utvikling av NVMe-diskdrivere, 9p nettverksprotokoll, og Apple M1 GPU-drivere utvikles parallelt.
    • For systems based on AArch64, RISC-V, and LoongArch architectures with EFI, the ability for direct booting from compressed kernel images has been implemented. Handlers for loading, starting, and unloading kernel images, called directly from EFI zboot, have been added. Additionally, handlers for installing and removing protocols from the EFI protocols database have been included. Previously, unpacking was performed by a separate bootloader; now, the handler within the kernel can handle this—creating the kernel image as an EFI application.
    • Included are some patches implementing a multi-level memory management model, allowing for the separation of memory banks with different performance characteristics. For example, the most frequently used pages can be placed in the fastest memory, while rarely used pages may be stored in relatively slower memory. In the 6.1 kernel, a mechanism has been adopted to identify frequently used pages in slow memory to promote them to faster memory, along with a general concept of memory levels and their relative performance.
    • The MGLRU (Multi-Generational LRU) mechanism has been included, replacing the old LRU (Least Recently Used) implementation based on two queues with a multi-tier structure, which better determines which memory pages are truly in use and which can be evicted to swap space.
    • Support has been added for the data structure ‘maple tree’, proposed by Oracle engineers, which is positioned as a more efficient alternative to the ‘red-black tree’. The maple tree is a variant of the B-tree that supports range-based indexing and is designed for efficient cache usage. moderne prosessorerSome memory management subsystems have already been translated to use the maple tree, positively impacting their performance. In the future, the maple tree may be used to implement range locking.
    • BPF-subsystem har fått muligheten til å lage "destruktive" BPF-programmer, spesiallaget for å initiere en nødavslutning gjennom kallet crash_kexec(). Slike BPF-programmer kan være nødvendige for feilsøkingsformål for å initiere opprettelsen av en crash-dump på et bestemt tidspunkt. For å få tilgang til destruktive operasjoner ved lasting av BPF-programmet, må flagget BPF_F_DESTRUCTIVE angis, sysctl kernel.destructive_bpf_enabled aktiveres, og rettighetene CAP_SYS_BOOT må være til stede.
    • For BPF-programmer er det gitt mulighet for å iterere over cgroup-elementer, samt iterere over ressurser (filer, vma, prosesser osv.) for en bestemt tråd eller oppgave. En ny karttype er implementert for å lage brukerdefinerte ringbuffere (user ring buffer).
    • En spesiell kall for minneallokering i BPF-programmer (memory allocator) er lagt til, som sikrer en sikrere minnefordeling i BPF-sammenheng enn den vanlige kmalloc().
    • Den første delen av endringene som gir mulighet for oppretting av drivere for innretninger med HID (Human Interface Device) grensesnitt, implementert som BPF-programmer, er integrert.
    • Koden for å støtte formatet for kjørbare filer a.out er fullstendig fjernet fra kjernen, og dette formatet ble ansett som foreldet i utgave 5.1. Fra versjoner 5.18 og 5.19 ble det deaktivert for hovedarkitekturer. Formatet a.out har lenge vært utdatert i Linux-systemer, og generering av a.out-filer støttes ikke av moderne verktøy i standard Linux-konfigurasjoner. Lasteren for a.out-filer kan implementeres helt i brukerrens rom.
    • For systemer basert på instruksjonssettet LoongArch, brukt i Loongson 3 5000-prosessorer og implementerende en ny RISC ISA lignende MIPS og RISC-V, er det implementert støtte for ytelsesmålingseventer (perf event), kexec, kdump og JIT-kompilering av BPF.
    • I grensesnittet for asynkron I/O io_uring er det foreslått en ny modus IORING_SETUP_DEFER_TASKRUN, som gjør det mulig å midlertidig utsette utførelsen av arbeid knyttet til ringbufferen til en forespørsel kommer fra applikasjonen, noe som kan brukes til å organisere utførelsen av arbeidet i batchmodus og forhindre problemer med forsinkelser forårsaket av at applikasjonen blir utvist på et upassende tidspunkt.
    • Prosessene i brukerens rom har fått muligheten til å initiere konverteringen av vanlige minnesider til et sett med store minnesider (Transparent Huge-Pages).
    • Implementering av enheten /dev/userfaultfd er lagt til, som gjør det mulig å få tilgang til funksjonaliteten til systemanropet userfaultfd() med tilgangsrettigheter i FS. Funksjonaliteten userfaultfd gjør det mulig å opprette håndterere for sidefeil i brukerens rom.
    • Kravene til versjonen av verktøyet GNU Make er hevet — for å kompilere kjernen kreves nå minst versjon 3.82.
  • Disk subsystem, I/O og filsystemer
    • Det er gjort betydelige ytelsesoptimaliseringer i filsystemet Btrfs, blant annet er ytelsen til ioctl-anropet FIEMAP økt betydelig. Støtte for asynkron bufferet skriving for applikasjoner som bruker io_uring er lagt til. Støtte for filer beskyttet med fs-verity er lagt til i "send"-operasjonen.
    • I filsystemet ext4 er det lagt til ytelsesoptimaliseringer knyttet til vedlikehold av journalen og drift i skrivebeskyttet modus.
    • I filsystemet EROFS (Enhanced Read-Only File System), som er ment for bruk på partisjoner tilgjengelig i skrivebeskyttet modus, er det implementert mulighet for felleslagring av data som dupliseres i forskjellige FS.
    • Systemanropet statx() har fått muligheten til å vise informasjon om muligheten for bruk av direkte inn- og utdata på filer.
    • I FUSE (Filesystems in User Space) er det lagt til støtte for å opprette midlertidige filer med flagget O_TMPFILE.
  • Virtualisering og sikkerhet
    • Implementasjonen av CFI (Control Flow Integrity) beskyttelsesmekanismen er blitt endret. Den legger til en sjekk før hver indirekte funksjonsanrop for å avdekke visse former for ubestemt oppførsel som potensielt kan føre til brudd på den normale utførelsesordenen (control flow) som følge av utnyttelse som endrer funksjonspekere lagret i minnet. Den standard CFI-implementasjonen fra LLVM-prosjektet er blitt erstattet med en variant, også basert på Clang, men spesielt tilpasset for å beskytte lavnivå undersystemer og operativsystemkjerner. I LLVM vil den nye implementasjonen bli tilbudt i Clang 16-utgivelsen og vil bli inkludert med alternativet "-fsanitize=kcfi". Et nøkkeldifferensial ved den nye implementasjonen er at den ikke er knyttet til optimaliseringer under kobling (LTO), og ikke fører til at funksjonspekere blir erstattet med referanser i overgangstabellen.
    • For LSM-moduler (Linux Security Module) er det nå mulig å opprette håndterere som fanger opp operasjoner ved opprettelse av navnerom.
    • Det er gitt midler for verifisering av digitale signaturer PKCS#7 i BPF-programmer.
    • Muligheten for å åpne /dev/random i ikke-blokkerende modus (O_NONBLOCK) er gjenopprettet, etter å ha blitt fjernet ved en glipp i kjerneversjon 5.6.
    • For systemer med x86-arkitektur er det lagt til en advarsel hvis kjerneressurser mapper minnesider som tillater både utførelse og skriving samtidig. Det vurderes videre muligheten til å fullstendig forby slik minnemapping.
    • En KMSAN (Kernel Memory Sanitizer) feilsøkingsmekanisme er lagt til for å avdekke bruken av ikke-initialisert minne i kjernen, samt lekkasjer av ikke-initialisert minne mellom brukerrom og enheter.
    • Forbedringer har blitt gjort i den kryptonett-sikre pseudotilfeldige tallgeneratoren CRNG, brukt ved kall til getrandom. Endringene er utarbeidet av Jason Donenfeld, skaperen av WireGuard og er rettet mot å forbedre sikkerheten ved uttak av pseudotilfeldige heltall. VPN I TCP-stakken er det implementert muligheten (deaktivert som standard) for separat bruk av hash-tabeller for sokler i hvert navnerom, noe som øker ytelsen for systemer med et stort antall navnerom.
  • Nettverks subsystem
    • I TCP-stakken har muligheten for separat bruk av hash-tabeller for sokler i hvert navnerom blitt implementert (deaktivert som standard), noe som forbedrer ytelsen i systemer med høy navnerombruk.
    • Fjernet støtte for det utdaterte DECnet-protokollen. For brukerland er det etterlatt API-plasseringsholdere som lar applikasjoner som bruker DECnet kompilere, men disse applikasjonene vil ikke kunne koble til nettverket.
    • Netlink-protokollen er dokumentert.
  • Utstyr
    • I amdgpu-driveren er det lagt til støtte for DSC (Display Stream Compression) for tapsfri datakomprimering under kommunikasjon med skjermer som støtter svært høy oppløsning. Arbeidet med å sikre støtte for AMD RDNA3-plattformer (RX 7000) og CDNA (Instinct) fortsetter. Støtte for IP-komponenter DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x og GMC 11.x er lagt til. I amdkfd-driveren (for diskrete AMD GPU-er, som Polaris) er støtte for GFX 11.0.3 implementert.
    • I i915-driveren (Intel) er støtte for Meteor Lake GPU aktivert. For Meteor Lake og nyere GPU-er er støtte for DP 2.0 (DisplayPort) sikret. Identifikatorer for grafikkort basert på Alder Lake S mikroarkitektur er lagt til.
    • Støtte for lydsystemer implementert i Apple Silicon, Intel SkyLake og Intel KabyLake-prosessorer er lagt til. I CS35L41 HDA-lydriveren er det lagt til støtte for dvale. Støtte for ASoC (ALSA System on Chip) for innebygde lydprosessorer fra Apple Silicon, AMD Rembrant DSP-er, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake og Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP-er, Qualcomm SC8280XP, SM8250, SM8450 og Texas Instruments SRC4392 er lagt til.
    • Støtte for LCD-paneler som Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1, AUO B116XAK01.6, BOE NT116WHM-N21, INX N116BCA-EA2, INX N116BCN-EA1, Multi-Inno Technology MI0800FT-9 er lagt til.
    • Støtte for AHCI SATA-kontrollere brukt i Baikal-T1 SoC er lagt til.
    • Støtte for Bluetooth-brikker fra MediaTek MT7921, Intel Magnetor (CNVi, integrert tilkobling), Realtek RTL8852C, RTW8852AE og RTL8761BUV (Edimax BT-8500) er lagt til.
    • I ath11k-driveren for Qualcomm trådløse moduler er støtte for spektralskanning i 160 MHz-båndet lagt til, flertrådet NAPI er implementert, og støtten for Wi-Fi-brikker fra Qualcomm WCN6750 er forbedret.
    • Drivere for tastatur til PinePhone, berøringsplater fra InterTouch (ThinkPad P1 G3), Xbox Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM-kontrollpaneler (IBM Operation Panel), Xbox One Elite-kontroller og XP-PEN Deco Pro S og Intuos Pro Small (PTH-460) er lagt til.
    • En driver for krypteringsakseleratorer Aspeed HACE (Hash and Crypto Engine) er lagt til.
    • Støtte for integrerte Thunderbolt/USB4-kontrollere fra Intel Meteor Lake er lagt til.
    • Støtte for smarttelefonene Sony Xperia 1 IV, Samsung Galaxy E5, E7 og Grand Max, Pine64 Pinephone Pro er lagt til.
    • Støtte for ARM SoC og kort har blitt lagt til: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 og RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, Kontron SL/BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Drivere for SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom og NXP har blitt oppdatert.

Samtidig har den latinamerikanske Stiftelsen for fri programvare utviklet en variant av det helt frie kjernen 6.1 — Linux-libre 6.1-gnu, renset for firmware og drivere som inneholder ikke-frie komponenter eller kodebiter med bruksområder begrenset av produsenten. I den nye utgaven har det blitt gjort renhold av den nye driveren rtw8852b og DTS-filer for ulike SoC fra Qualcomm og MediaTek med prosessorer basert på AArch64-arkitekturen. Koden for rensingen av blobber i drivere og subsystemer som amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI har blitt oppdatert. Rensingen av utdaterte drivere for tm6000 TV-kort, cpia2 v4l, sp8870, av7110 har blitt justert.

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