Versione di u kernel Linux 6.1

Dopu dui mesi di sviluppu, Linus Torvalds hà presentatu a liberazione di u kernel Linux 6.1. Trà i cambiamenti più notevuli: supportu per u sviluppu di drivers è moduli in a lingua Rust, mudernizazione di u mecanismu per a determinazione di e pagine di memoria usate, un gestore di memoria speciale per i prugrammi BPF, un sistema per diagnosticà i prublemi di memoria KMSAN, u KCFI (Kernelk Control). -Flow Integrity) mecanismu di prutezzione, l'intruduzioni di l'arburu struttura Maple.

A nova versione include 15115 correzioni da 2139 sviluppatori, a dimensione di u patch hè 51 MB, chì hè circa 2 volte più chjuca cà a dimensione di patch da i kernels 6.0 è 5.19. I cambiamenti anu affettatu 13165 file, 716247 linee di codice sò state aghjunte, è 304560 linee sò state eliminate. Circa u 45% di tutti i cambiamenti introdotti in 6.1 sò ligati à i driver di u dispositivu, circa 14% di i cambiamenti sò ligati à l'aghjurnamentu di u codice specificu à l'architetture hardware, u 14% sò ligati à a pila di rete, u 3% sò ligati à i sistemi di fugliali è u 3% sò ligati à i sottosistemi interni di u kernel.

Innuvazioni principali in u kernel 6.1:

  • Memoria è servizii di sistema
    • Aggiunta a capacità di utilizà Rust cum'è una seconda lingua per u sviluppu di drivers è moduli di kernel. U mutivu principale di u sustegnu Rust hè di fà più faciule per scrive un driver di dispositivi sicuru è d'alta qualità, riducendu a probabilità di fà errori quandu travaglia cù memoria. U supportu di Rust hè disattivatu di manera predeterminata è ùn hà micca risultatu chì Rust sia inclusu cum'è una dipendenza necessaria di creazione di u kernel. U kernel hà aduttatu finu à avà una versione minima di i patches, chì hè stata ridutta da 40 à 13 mila linee di codice è furnisce solu u minimu necessariu, abbastanza per custruisce un modulu di kernel simplice scrittu in a lingua Rust. In u futuru, hè previstu di aumentà gradualmente a funziunalità esistenti, trasferendu altre cambiamenti da a filiera Rust-for-Linux. In parallelu, i prughjetti sò sviluppati per utilizà l'infrastruttura pruposta per sviluppà i drivers per l'unità NVMe, u protocolu di rete 9p è a GPU Apple M1 in a lingua Rust.
    • Per i sistemi basati in l'architetture AArch64, RISC-V è LoongArch cù EFI, a capacità di carica direttamente l'imaghjini di kernel compressi hè stata implementata. Added handlers for loading, running and unloading images kernel, chjamati direttamente da EFI zboot. I gestori per installà è sguassà protokolli da a basa di dati di protokollu EFI sò stati ancu aghjuntu. Nanzu, u dispacking era realizatu da un bootloader separatu, ma avà questu pò esse fattu da un handler in u kernel stessu - l'imaghjini di u kernel hè furmatu cum'è una applicazione EFI.
    • A cumpusizioni include una parte di i patches cù l'implementazione di un mudellu di gestione di memoria multi-livellu, chì permette di separà i banche di memoria cù e diverse caratteristiche di rendiment. Per esempiu, e pagine più usate ponu esse guardate in a memoria più veloce, mentre chì e pagine più raramente usate ponu esse guardate in memoria relativamente lenta. Kernel 6.1 introduce un mecanismu per determinà induve e pagine assai usate sò situate in memoria lenta per pudè esse promossi à memoria veloce, è ancu introduce un cuncettu generale di i livelli di memoria è u so rendimentu relative.
    • Include u mecanismu MGLRU (Multi-Generational LRU), chì rimpiazza l'antica implementazione LRU (Least Recently Used) basata nantu à duie file cù una struttura multi-stadi chì determina megliu quali pagine di memoria sò in realtà in usu è chì ponu esse spinte fora à. a partizione swap.
    • Aghjunghje supportu per a struttura di dati "arburu" pruposta da l'ingegneri Oracle, chì hè posizionata cum'è un sustitutu più efficau per a struttura di "arbulu rossu-negru". Maple Tree hè una variante di B-tree chì sustene l'indexazione di intervalli è hè pensatu per fà un usu efficace di a cache di i processori muderni. Certi sottosistemi di gestione di memoria sò digià stati trasferiti à l'arburu, chì hà avutu un effettu pusitivu in u so rendiment. In u futuru, l'arburu pò esse usatu per implementà u bloccu di gamma.
    • L'abilità di creà prugrammi BPF "distruttivi" apposta per inizià un arrestu d'emergenza via a chjama crash_kexec () hè stata aghjunta à u sottusistema BPF. Tali prugrammi BPF ponu esse richiesti per scopi di debugging per inizià a creazione di un crash dump in un certu puntu in u tempu. Per accede à l'operazioni distruttive quandu si carica un prugramma BPF, deve specificà a bandiera BPF_F_DESTRUCTIVE, attivà sysctl kernel.destructive_bpf_enabled, è avè diritti CAP_SYS_BOOT.
    • Per i prugrammi BPF, hè pussibule enumerà elementi di cgroup, è ancu enumerate risorse (fichi, vma, prucessi, etc.) di un filu specificu o compitu. Un novu tipu di mappa hè statu implementatu per creà buffer di ring d'utilizatori.
    • Aggiunta una chjama speciale per l'allocazione di memoria in i prugrammi BPF (allocatore di memoria), chì furnisce una assignazione di memoria più sicura in u cuntestu BPF cà u standard kmalloc().
    • A prima parte di i cambiamenti hè stata integrata, chì furnisce a capacità di creà drivers per i dispositi di input cù una interfaccia HID (Human Interface Device), implementata in forma di prugrammi BPF.
    • U kernel hà sguassatu cumplettamente u codice per sustene u formatu di file executable a.out, chì era obsoletu in a versione 5.1 è hè stata disattivata per l'architetture maiò da e versioni 5.18 è 5.19. U formatu a.out hè statu longu deprecated in i sistemi Linux, è a generazione di i schedari a.out ùn hè micca supportatu da l'arnesi muderni in cunfigurazioni Linux predeterminate. U caricatore per i schedari a.out pò esse implementatu interamente in u spaziu di l'utilizatori.
    • Per i sistemi basati nantu à l'architettura di set di istruzioni LoongArch utilizata in i processori Loongson 3 5000 è implementendu u novu RISC ISA, simile à MIPS è RISC-V, hè implementatu u supportu per l'avvenimenti di misurazione di prestazioni (eventi perf), kexec, kdump è compilazione BPF JIT. .
    • L'interfaccia d'I/O asincrona io_uring offre un novu modu, IORING_SETUP_DEFER_TASKRUN, chì permette à u travagliu in relazione à u buffer di l'anellu differisce temporaneamente finu à chì una dumanda di applicazione hè fatta, chì pò esse usata per u travagliu in batch è evità prublemi di latenza per via di preemption. tempu sbagliatu.
    • I prucessi in u spaziu di l'utilizatori sò datu l'abilità di inizià a cunversione di una gamma di pagine di memoria normale in un settore di pagine di memoria grandi (Transparent Huge-Pages).
    • Aggiunta implementazione di u dispositivu /dev/userfaultfd, chì permette l'accessu à a funziunalità di a chjama di u sistema userfaultfd() utilizendu i diritti d'accessu in u FS. A funziunalità userfaultfd vi permette di creà handlers per accede à e pagine di memoria non allocate (pagine faults) in u spaziu di l'utilizatori.
    • I requisiti per a versione di l'utilità GNU Make sò stati aumentati - almenu a versione 3.82 hè avà necessaria per custruisce u kernel.
  • Sottosistema di discu, I / O è sistemi di fugliale
    • Ottimisazioni di rendiment significativu sò state fatte à u sistema di fugliale Btrfs; frà altre cose, u rendiment di a chiamata FIEMAP ioctl hè stata aumentata da ordini di grandezza. Aggiuntu supportu per scrittura buffered asincrona per l'applicazioni chì utilizanu io_uring. Aghjunghje supportu per i schedarii prutetti cù fs-verity à l'operazione "invia".
    • U sistema di schedari ext4 hà aghjustatu ottimisazioni di rendiment in relazione à u mantenimentu di u ghjurnale è l'operazione di sola lettura.
    • U sistema di file EROFS (Enhanced Read-Only File System), cuncepitu per l'usu in partizioni accessibili in modu di sola lettura, implementa a capacità di sparta dati duplicati in diversi sistemi di fugliale.
    • A chjama di u sistema statx () hè stata aghjunta per vede infurmazione nantu à se l'I / O direttu pò esse applicatu à un schedariu.
    • U supportu per a creazione di fugliali tempurane cù a bandiera O_TMPFILE hè stata aghjuntu à u sottusistema FUSE (Filesystems in User Space).
  • Virtualizazione è Sicurezza
    • L'implementazione di u mecanismu di prutezzione CFI (Control Flow Integrity) hè stata rimpiazzata, aghjustendu cuntrolli prima di ogni chjama indiretta per detectà alcune forme di cumportamentu indefinitu chì puderia purtà à una violazione di l'ordine di esecuzione normale (flussu di cuntrollu) per via di u usu di sfruttamenti chì cambianu l'indicatori à e funzioni almacenate in memoria. L'implementazione standard di CFI da u prughjettu LLVM hè stata rimpiazzata da una opzione ancu basatu annantu à l'usu di Clang, ma adattatu apposta per prutege i sottosistemi di livellu bassu è i kernels di u sistema operatore. In LLVM, una nova implementazione serà offerta in a versione Clang 16 è serà attivata cù l'opzione "-fsanitize=kcfi". A diferenza chjave cù a nova implementazione hè chì ùn hè micca ligata à l'optimizazione di u tempu di ligame (LTO) è ùn hà micca risultatu in i punti di funzione chì sò rimpiazzati da i ligami in a tavola di salto.
    • Per i moduli LSM (Modulu di Sicurezza Linux), hè pussibule di creà handlers chì intercepte l'operazioni per creà spazii di nomi.
    • Strumenti sò furniti per verificà e firme digitali PKCS#7 in i prugrammi BPF.
    • L'abilità di apre in u modu senza bloccu (O_NONBLOCK), chì hè stata sguassata inavvertitamente in u kernel 5.6, hè stata tornata à /dev/random.
    • Nant'à i sistemi cù l'architettura x86, un avvisu hè statu aghjuntu in casu di mapping di pagine di memoria da i sottosistemi di kernel chì permettenu simultaneamente l'esekzione è a scrittura. In u futuru, a pussibilità di pruibisce cumplettamente tali mapping di memoria hè stata cunsiderata.
    • Hè aghjuntu un mecanismu di debugging KMSAN (Kernel Memory Sanitizer) per detectà l'usu di memoria non inizializzata in u kernel, è ancu perdite di memoria non inizializzata trà u spaziu di l'utilizatori è i dispositi.
    • Migliuramenti sò stati fatti à u generatore di numeri pseudo-aleatoriu CRNG cripto-secure utilizatu in a chjama getrandom. I cambiamenti sò stati preparati da Jason A. Donenfeld, autore di VPN WireGuard, è sò destinati à migliurà a sicurità di l'estrazione integer pseudo-aleatoriu.
  • Sottusistema di rete
    • U stack TCP furnisce l'abilità (disabilitatu per difettu) di utilizà e socket hash tables separatamente per ogni namespace, chì migliurà u rendiment in sistemi cù un gran numaru di namespaces.
    • U codice eliminatu per sustene u protokollu DECnet legatu. I stubs di l'API di u spaziu di l'utilizatori sò lasciati in u locu per permettà l'applicazioni chì utilizanu DECnet per esse compilate, ma queste applicazioni ùn puderanu micca cunnette à a reta.
    • U protocolu netlink hè documentatu.
  • Equipment
    • U driver amdgpu hà aghjustatu u supportu per l'invio di DSC (Display Stream Compression) per a cumpressione di dati senza perdita quandu si scambia l'infurmazioni cù schermi chì supportanu risoluzioni assai alte. U travagliu cuntinueghja à furnisce supportu per e plataforme AMD RDNA3 (RX 7000) è CDNA (Instinct). Aghjunghje supportu per i cumpunenti DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x è GMC 11.x IP. U driver amdkfd (per GPU AMD discrete cum'è Polaris) furnisce supportu per GFX 11.0.3.
    • U driver i915 (Intel) include supportu per a GPU Meteor Lake. Meteor Lake è e GPU più recenti supportanu l'interfaccia DP 2.0 (DisplayPort). Aghjunghje identificatori per carte video basati nantu à a microarchitettura Alder Lake S.
    • Supportu aghjuntu per i sottosistemi audio implementati in i processori Apple Silicon, Intel SkyLake è Intel KabyLake. U driver audio CS35L41 HDA supporta u modu di sonnu. Aggiuntu supportu ASoC (ALSA System on Chip) per chip audio integrati Apple Silicon, AMD Rembrant DSP, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake è Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP, Qualcomm SC8280XP, SM8250 SM8450 è Texas Instruments SRC4392
    • Aggiuntu supportu per i pannelli LCD Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-WHEA1X M116NW01.6J-R116, Innolux N21ACA-WH116. N2, INX N116BCA- EA1, INX N0800BCN-EA9, Multi-Inno Technology MIXNUMXFT-XNUMX.
    • Aghjunghje supportu per i controller AHCI SATA utilizati in u Baikal-T1 SoC.
    • Supportu aghjuntu per i chip Bluetooth MediaTek MT7921, Intel Magnetor (CNVi, Connettività Integrata), Realtek RTL8852C, RTW8852AE è RTL8761BUV (Edimax BT-8500).
    • U driver ath11k per i moduli wireless Qualcomm hà aghjustatu supportu per a scansione spettrale in a gamma 160 MHz, implementatu NAPI multi-threaded, è un supportu migliuratu per i chips Wi-Fi Qualcomm WCN6750.
    • Aggiunti driver per tastiera PinePhone, touchpads InterTouch (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, telecomandi XBOX One Elite, tablette XP-PEN Deco Pro S è Intuos Pro Small (PTH-460).
    • Un driver aghjuntu per l'acceleratori criptografici Aspeed HACE (Hash and Crypto Engine).
    • Supportu aghjuntu per i controller integrati Thunderbolt / USB4 Intel Meteor Lake.
    • Supportu aghjuntu per Sony Xperia 1 IV, Samsung Galaxy E5, E7 è Grand Max, Pine64 Pinephone Pro smartphones.
    • Supportu aghjuntu per ARM SoC è schede: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 è RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, IPQ8 BL i.MX8195MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 4C+, NanoPi R1S Enterprise Edition, JetHome JetHub DXNUMXp. Drivers aghjurnati per SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom è NXP.

À u listessu tempu, a Fundazione di Software Liberu Latino-Americana hà furmatu una versione di u kernel completamente liberu 6.1 - Linux-libre 6.1-gnu, sguassatu di elementi di firmware è drivers chì cuntenenu cumpunenti non liberi o sezzioni di codice, u scopu di quale hè. limitatu da u fabricatore. A nova versione pulisce u novu driver rtw8852b è i fugliali DTS per diversi SoC Qualcomm è MediaTek cù processori basati nantu à l'architettura AArch64. Codice di pulizia blob aghjurnatu in i driver è i sottosistemi amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. A pulizia di i driver obsoleti tm6000 TV cards, cpia2 v4l, sp8870, av7110 hè stata corretta.

Source: opennet.ru

Add a comment