UtgÄvan av Linux-kÀrnan 6.1

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds version 6.1 av Linux-kÀrnan. Bland de mest anmÀrkningsvÀrda förÀndringarna finns stöd för utveckling av drivrutiner och moduler med Rust-sprÄket, modernisering av mekanismen för att identifiera anvÀnda minnessidor, en sÀrskild minneshanterare för BPF-program, ett system för diagnostik av minnesproblem kallat KMSAN, en skyddsmekanik för KCFI (Kernel Control-Flow Integrity) samt införandet av datastrukturen Maple tree.

I den nya versionen ingĂ„r 15115 patchar frĂ„n 2139 utvecklare, patchens storlek Ă€r 51 MB, vilket Ă€r ungefĂ€r hĂ€lften av storleken pĂ„ patcharna för versionerna 6.0 och 5.19. Ändringarna berör 13165 filer, 716247 rader kod har lagts till och 304560 rader har tagits bort. UngefĂ€r 45% av alla förĂ€ndringar som presenterades i 6.1 Ă€r relaterade till enhetsdrivrutiner, cirka 14% av Ă€ndringarna gĂ€ller uppdatering av kod specifik för hĂ„rdvaruarkitekturer, 14% Ă€r kopplade till nĂ€tverksstacken, 3% med filsystem och 3% med interna delsystem i kĂ€rnan.

Huvudnyheterna i kÀrnan 6.1:

  • Minne och systemtjĂ€nster
    • Möjligheten att anvĂ€nda Rust-sprĂ„ket som ett andra sprĂ„k för utveckling av drivrutiner och moduler i kĂ€rnan har lagts till. Huvudmotivet för att stödja Rust Ă€r att förenkla skapandet av sĂ€kra och kvalitativa enhetsdrivrutiner genom att minska risken för fel vid hantering av minne. Stödet för Rust Ă€r inte aktiverat som standard och gör inte att Rust inkluderas bland obligatoriska byggberoenden för kĂ€rnan. En minimal nedskuren version av patcharna, som har minskats frĂ„n 40 000 till 13 000 rader kod, har hittills antagits i kĂ€rnan och erbjuder bara det nödvĂ€ndiga minimumet som krĂ€vs för att bygga en enkel kĂ€rnmodul skriven i Rust. Planen Ă€r att gradvis öka den befintliga funktionaliteten genom att överföra andra Ă€ndringar frĂ„n Rust-for-Linux-grenen. Samtidigt utvecklas projekt för att anvĂ€nda den föreslagna infrastrukturen för utveckling av drivrutiner för NVMe-lagringsenheter, nĂ€tverksprotokollet 9p och Apple M1 GPU.
    • För system baserade pĂ„ AArch64, RISC-V och LoongArch med EFI har möjligheten att direktladda komprimerade kĂ€rnbilder implementerats. Hanterare för laddning, start och avlastning av kĂ€rnbilder, som kallas direkt frĂ„n EFI zboot, har lagts till. Dessutom har hanterare för installation och avinstallation av protokoll i EFI-protokollsdatabasen lagts till. Tidigare utfördes uppackning av en separat bootloader, men nu kan hanteraren i sjĂ€lva kĂ€rnan göra detta — kĂ€rnbilden skapas som en EFI-applikation.
    • I den nya versionen ingĂ„r en del patchar med implementeringen av en flernivĂ„modell för minneshantering, som möjliggör uppdelning av minnesbanker med olika prestandakarakteristika. Till exempel kan de mest intensivt anvĂ€nda sidorna placeras i det snabbaste minnet, medan sĂ€llan anvĂ€nda sidor kan lagras i relativt lĂ„ngsamt minne. I kĂ€rnan 6.1 har en mekanism införts för att identifiera intensivt anvĂ€nda sidor i lĂ„ngsamt minne för att flytta dem till snabbt minne, samt en gemensam koncept av minnesnivĂ„er och deras relativa prestanda har implementerats.
    • I den nya versionen ingĂ„r mekanismen MGLRU (Multi-Generational LRU), som har ersatt den gamla LRU (Least Recently Used) implementeringen baserat pĂ„ tvĂ„ köer med en flerledad struktur, som bĂ€ttre identifierar vilka minnessidor som verkligen anvĂ€nds, och vilka som kan flyttas till bytesomrĂ„det.
    • Stöd för den databasstruktur "maple tree" föreslagen av ingenjörer frĂ„n Oracle har lagts till, som positioneras som en mer effektiv ersĂ€ttning för strukturen "red-black tree". Maple tree Ă€r en variant av B-tree, som stöder indexering baserat pĂ„ vĂ€rdeintervall och Ă€r utformad för att effektivt anvĂ€nda cachen. moderna processorer. Flera minneshanteringssubsystem har redan översatts till maple tree, vilket har haft en positiv inverkan pĂ„ deras prestanda. I framtiden kan maple tree anvĂ€ndas för att implementera lĂ„s baserade pĂ„ intervall (range locking).
    • I BPF-systemet har möjligheten att skapa "destruktiva" BPF-program lagts till, som Ă€r sĂ€rskilt utformade för att initiera nödstopp genom att anropa crash_kexec(). SĂ„dana BPF-program kan behövas för felsökningsĂ€ndamĂ„l för att initiera skapandet av en crash-dump vid en specifik tidpunkt. För att fĂ„ tillgĂ„ng till destruktiva operationer vid BPF-programladdning krĂ€vs att flaggan BPF_F_DESTRUCTIVE anges, sysctl kernel.destructive_bpf_enabled aktiveras och rĂ€ttigheterna CAP_SYS_BOOT finns.
    • För BPF-program har möjligheten att iterera över cgroup-element och resurser (filer, vma, processer osv.) för en viss trĂ„d eller uppgift lagts till. En ny map-typ har implementerats för att skapa anvĂ€ndarspecifika ringbuffrar (user ring buffer).
    • Ett sĂ€rskilt anrop för minnesallokering i BPF-program har lagts till, vilket ger en sĂ€krare minnesfördelning i BPF:s kontext Ă€n den vanliga kmalloc().
    • Den första delen av förĂ€ndringarna som gör det möjligt att skapa drivrutiner för inmatningsenheter med HID (Human Interface Device) har integrerats, vilket implementeras i form av BPF-program.
    • Koden för att stödja a.out-formatet har helt tagits bort frĂ„n kĂ€rnan, vilket klassificerades som förĂ„ldrat i version 5.1 och stĂ€ngdes av för de huvudsakliga arkitekturerna i versionerna 5.18 och 5.19. a.out-formatet anvĂ€nds sedan lĂ€nge inte pĂ„ system med Linux, och generering av a.out-filer stöds inte av moderna verktyg i standardkonfigurationer för Linux. Bootloader för a.out-filer kan helt implementeras i anvĂ€ndarutrymmet.
    • Stöd för hĂ€ndelsesmĂ€tningar (perf event), kexec, kdump och JIT-kompilering av BPF har implementerats för system baserade pĂ„ LoongArch-instruktionsuppsĂ€ttningen, som anvĂ€nds i Loongson 3 5000-processorerna och implementerar en ny RISC ISA som liknar MIPS och RISC-V.
    • I grĂ€nssnittet för asynkron in-/utmatning io_uring har ett nytt lĂ€ge IORING_SETUP_DEFER_TASKRUN föreslagits, vilket möjliggör att temporĂ€rt skjuta upp utförandet av uppgifter relaterade till ringbufferten tills en begĂ€ran frĂ„n applikationen kommer in, vilket kan anvĂ€ndas för att organisera bearbetningar i paketmode och förhindra förseningar pĂ„ grund av att applikationen avbryts vid ett olĂ€mpligt tillfĂ€lle.
    • Processerna i anvĂ€ndarutrymmet har fĂ„tt möjlighet att initiera omvandlingen av omrĂ„det för vanliga minnessidor till en uppsĂ€ttning stora minnessidor (Transparent Huge-Pages).
    • Implementeringen av enheten /dev/userfaultfd har lagts till, vilket gör det möjligt att fĂ„ Ă„tkomst till funktionaliteten hos syscalls userfaultfd() med hjĂ€lp av behörigheter i filsystemet. Funktionaliteten hos userfaultfd gör det möjligt att skapa hanterare för sidfel (page faults) i anvĂ€ndarutrymmet.
    • Krav pĂ„ versionen av GNU Make-verktyget har höjts - för att kompilera kĂ€rnan krĂ€vs nu minst version 3.82.
  • Disksubsystem, in- och utmatning och filsystem
    • Betydande prestandaoptimeringar har gjorts i filsystemet Btrfs, bland annat har prestandan för ioctl-anropet FIEMAP ökat avsevĂ€rt. Stöd för asynkron buffrad skrivning har lagts till för applikationer som anvĂ€nder io_uring. Stöd för filer skyddade med fs-verity har lagts till i operationen 'send'.
    • I ext4-filsystemet har prestandaoptimeringar lagts till som rör underhĂ„ll av loggen och arbete i skrivskyddat lĂ€ge.
    • I filsystemet EROFS (Enhanced Read-Only File System), avsett för anvĂ€ndning pĂ„ partitioner som Ă€r tillgĂ€ngliga i skrivskyddat lĂ€ge, har möjligheten att dela data som dupliceras i olika filsystem implementerats.
    • I systemanropet statx() har möjligheten att rapportera information om möjligheten till direkt I/O för en fil lagts till.
    • I FUSE (Filesystems in User Space) har stöd för skapande av temporĂ€ra filer med flaggan O_TMPFILE lagts till.
  • Virtualisering och sĂ€kerhet
    • Implementeringen av CFI (Control Flow Integrity)-skyddsmekanismen har Ă€ndrats. Detta lĂ€gger till en kontroll före varje indirekt funktionsanrop för att identifiera vissa former av odefinierat beteende som potentiellt kan leda till störningar i det normala utförandet (control flow) pĂ„ grund av anvĂ€ndning av exploits som Ă€ndrar de funktioner som lagras i minnet. Den standardmĂ€ssiga CFI-implementeringen frĂ„n LLVM-projektet har ersatts med en version som ocksĂ„ bygger pĂ„ Clang, men som Ă€r speciellt anpassad för att skydda lĂ„gnivĂ„system och operativsystemkĂ€rnor. I LLVM kommer den nya implementeringen att föreslĂ„s i Clang 16-utgĂ„van och kommer att inkluderas med alternativet "-fsanitize=kcfi". En nyckelförĂ€ndring i den nya implementeringen Ă€r att den inte Ă€r kopplad till optimeringar vid lĂ€nkning (LTO) och att den inte leder till att funktionspekare ersĂ€tts med referenser i omstigningstabellen.
    • LSM-moduler (Linux Security Module) fĂ„r nu möjlighet att skapa hanterare som fĂ„ngar operationer vid skapande av namnrymder.
    • Möjligheter för verifiering av PKCS#7 digitala signaturer har tillhandahĂ„llits i BPF-program.
    • I /dev/random har möjligheten att öppnas i icke-blockerande lĂ€ge (O_NONBLOCK) Ă„terstĂ€llts, vilket oavsiktligt borttagits i kĂ€rnan 5.6.
    • För x86-system har en varning lagts till vid mappning av minnessidor av kĂ€rnsystem som samtidigt tillĂ„ter exekvering och skrivning. Framtida övervĂ€ganden kan inkludera ett fullstĂ€ndigt förbud mot sĂ„dan minnesmappning.
    • En KMSAN (Kernel Memory Sanitizer) felsökningsmekanism har lagts till för att identifiera anvĂ€ndning av oinitialiserat minne i kĂ€rnan samt lĂ€ckor av oinitialiserat minne mellan anvĂ€ndarutrymme och enheter.
    • FörbĂ€ttringar har genomförts pĂ„ den kryptografisk sĂ€kra pseudorandomtalsgeneratorn CRNG, som anvĂ€nds vid anrop av getrandom. Ändringarna har förberetts av Jason A. Donenfeld, skaparen av WireGuard, och syftar till att öka sĂ€kerheten vid extraktion av pseudorandom hela tal. VPN I TCP-stacken har en möjlighet (inaktiverad som standard) implementerats för separat anvĂ€ndning av hash-tabeller för varje namnrymd, vilket kan öka prestandan hos system med mĂ„nga namnrymder.
  • NĂ€tverkssystemet
    • I TCP-stacken har det implementerats en möjlighet (inaktiverad som standard) för separat anvĂ€ndning av hash-tabeller för varje namnrymd, vilket kan öka prestandan hos system med mĂ„nga namnrymder.
    • Koden för att stödja den förĂ„ldrade DECnet-protokollet har tagits bort. För anvĂ€ndarutrymmet har API-stubbar behĂ„llits för att möjliggöra kompilering av program som anvĂ€nder DECnet, men dessa program kan inte ansluta till nĂ€tverket.
    • Netlink-protokollet Ă€r dokumenterat.
  • Utrustning
    • Stöd för DSC (Display Stream Compression) har lagts till i amdgpu-drivrutinen för att möjliggöra förlustfri komprimering av data vid kommunikation med skĂ€rmar som stöder mycket hög upplösning. Arbetet för att sĂ€kerstĂ€lla stöd för AMD RDNA3 (RX 7000) och CDNA (Instinct) plattformar har fortsatt. Stöd för IP-komponenter DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x och GMC 11.x har lagts till. Stöd för GFX 11.0.3 har implementerats i amdkfd-drivrutinen (för AMD diskreta GPU:er som Polaris).
    • Stöd för GPU Meteor Lake har lagts till i i915-drivrutinen (Intel). För Meteor Lake och nyare GPU:er har stöd för DP 2.0 (DisplayPort) sĂ€kerstĂ€llts. Identifierare för grafikkort baserade pĂ„ mikroarkitekturen Alder Lake S har lagts till.
    • Stöd för ljudsystem implementerade i Apple Silicon-processorer, Intel SkyLake och Intel KabyLake har lagts till. I ljuddrivrutinen CS35L41 HDA har stöd för vilolĂ€ge implementerats. Stöd för ASoC (ALSA System on Chip) har tillkommit för inbyggda ljudchip frĂ„n Apple Silicon, AMD Rembrant DSP, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake och Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP, Qualcomm SC8280XP, SM8250, SM8450 och Texas Instruments SRC4392.
    • Stöd för LCD-panelerna 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 har lagts till.
    • Stöd för AHCI SATA-kontroller som anvĂ€nds i SoC Baikal-T1 har lagts till.
    • Stöd för Bluetooth-chip MediaTek MT7921, Intel Magnetor (CNVi, Integrated Connectivity), Realtek RTL8852C, RTW8852AE och RTL8761BUV (Edimax BT-8500) har lagts till.
    • Stöd för spektral scanning i 160 MHz-bandet har lagts till i ath11k-drivrutinen för Qualcomm trĂ„dlösa moduler, flerskikts NAPI har implementerats och stöden för Wi-Fi-chip Qualcomm WCN6750 har förbĂ€ttrats.
    • Drivrutiner för tangentbord till PinePhone, pekplattor InterTouch (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, kontrollpaneler frĂ„n IBM (IBM Operation Panel), XBOX One Elite fjĂ€rrkontroller och tabletter XP-PEN Deco Pro S och Intuos Pro Small (PTH-460) har lagts till.
    • En drivrutin för kryptografiska acceleratorer Aspeed HACE (Hash and Crypto Engine) har lagts till.
    • Stöd för integrerade Thunderbolt/USB4 kontroller frĂ„n Intel Meteor Lake har lagts till.
    • Stöd för smartphones Sony Xperia 1 IV, Samsung Galaxy E5, E7 och Grand Max, Pine64 Pinephone Pro har lagts till.
    • Stöd för ARM SoC och kort har lagts till: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 och 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. Drivrutiner för SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom och NXP har uppdaterats.

Samtidigt har den latinamerikanska Fria programvarufonden skapat en version av kĂ€rnan 6.1 — Linux-libre 6.1-gnu, som Ă€r rensad frĂ„n firmware- och drivrutinskomponenter som innehĂ„ller icke-fri komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I den nya utgĂ„van har den nya drivrutinen rtw8852b och DTS-filer för olika SoC Qualcomm och MediaTek med processorer baserade pĂ„ AArch64-arkitekturen rensats. Koden för att rensa bort blobs i drivrutiner och subsystem amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI har uppdaterats. Rensningen av förĂ„ldrade drivrutiner för tm6000 TV-kort, cpia2 v4l, sp8870, av7110 har justerats.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster