Linux 7.1

Dopo due mesi di sviluppo, Linus Torvalds ha presentato ha rilasciato il kernel Linux 7.1. Tra i cambiamenti più significativi: nuovo driver ntfsplus, prima fase della dismissione del supporto per CPU i486, rimozione di vecchi adattatori Ethernet, rimozione dei protocolli ISDN e AX.25, attivazione predefinita del meccanismo Intel FRED, supporto per gestori BPF in io_uring, ottimizzazione del sottosistema di swapping, supporto per sub-scheduler in sched_ext, input/output in modalità zero-copy nel driver ublk, operazione ioctl shutdown in Btrfs, commutazione dinamica della modalità di prestazione nel driver amd-pstate, supporto xattr per i socket Unix.

Nella nuova versione sono stati accettati 17275 correttivi da 2589 sviluppatori, la dimensione della patch è di 57 MB (le modifiche hanno interessato 13528 file, aggiunte 751785 righe di codice, rimosse 405916 righe). Nella scorsa release c'erano 15624 correttivi da 2477 sviluppatori, la dimensione della patch era di 56 MB. Circa il 41% di tutte le modifiche inserite in 7.1 riguardano i driver di dispositivo, circa il 12% riguardano l'aggiornamento di codice specifico per architetture hardware, il 14% è correlato allo stack di rete, il 5% ai file system e il 3% ai sottosistemi interni del kernel.

Le principali novità nel kernel 7.1 (kernelnewbies.org, lwn.net, opennet):

Sottosistema disco, I/O e file system
  • È stata inclusa una nuova implementazione Il filesystem NTFS — ntfsplus, basato sul codice del driver NTFS classico, ristrutturato e potenziato con la possibilità di scrivere dati, adattato per supportare funzionalità moderne come l'uso di folio di memoria (folios) invece della struttura buffer_head. Il nuovo driver implementa l'allocazione ritardata dei blocchi, ottenendo alte prestazioni nelle operazioni di scrittura e riducendo la frammentazione. Per le operazioni di scrittura/lettura bufferizzate, input/output diretto, mapping degli extents e operazioni di scrittura/lettura a pagina viene utilizzata la libreria iomap. Nei test iozone, il driver ntfsplus è risultato più veloce del 3-5% rispetto a ntfs3 nella scrittura in modalità monothread e dal 35% al 110% con 4 thread. La velocità di lettura di ntfsplus e ntfs3 è simile. Il driver ntfs3 rimane parte del kernel e include sono stati apportati correzioni e piccoli miglioramenti.
  • È stata aggiunta la supporto per la generazione e la verifica dei dati di controllo dell'integrità T10 (deepwiki.com) a livello di filesystem, non di dispositivo a blocchi, consentendo un aumento delle prestazioni nelle operazioni di lettura.
  • Nel driver dei dispositivi a blocchi ublk, permettendo di spostare la logica specifica sul lato del processo nello spazio utente, aggiunta supporto per input/output attraverso la memoria condivisa senza copia dei dati tra i buffer (modalità zero-copy).
  • Per i dispositivi a blocchi auto-crittografanti SED-OPAL sono stati aggiunti ioctl per la gestione della modalità Single User e implementato il comando STACK_RESET.
  • In Btrfs è stata dichiarata stabile la supporto per l'operazione ioctl di shutdown, che consente di portare il FS in uno stato in cui vengono tentate di completare le operazioni già avviate, ma vengono bloccate tutte le nuove operazioni.
  • In exfat è stata implementata la possibilità di riservare aree vuote attraverso la chiamata fallocate().
  • Nel FS CIFS è stato aggiunto il supporto per la creazione di file temporanei con il flag O_TMPFILE.
  • Nella chiamata di sistema fsmount() è stata aggiunta l'opzione FSMOUNT_NAMESPACE, che crea un nuovo spazio dei nomi per i punti di montaggio del file system in fase di montaggio. Nelle chiamate di sistema clone3() e unshare() sono stati aggiunti flag per restituire un nuovo spazio di nome dei punti di montaggio, contenente solo un FS vuoto di segnaposto basato su nullfs, driver fs-dax con interfaccia FS per i dispositivi DAX (Direct Access).
  • Nel server NFS aggiunta protezione dagli attacchi tramite la gestione dei file descriptor, implementata tramite la verifica dei descriptor con la firma crittografica. La protezione è attivata tramite l'opzione di montaggio sign_fh.
  • Aggiunto driver carattere fs-dax, che fornisce un'interfaccia per interagire con i dispositivi DAX (kernel.org) (Direct Access), che supporta l'operatività bypassando il caching delle pagine. L'interfaccia specificata è necessaria per l'integrazione nel kernel del file system famfs, memorizzato nella memoria principale.
  • Nel file system Ceph implementato raccolta di metriche sull'input/output in relazione alle sezioni.
Memoria e servizi di sistema
  • Accettato La prima serie di modifiche per interrompere il supporto ai processori i486. Le opzioni per la compilazione del kernel con supporto per i processori 486DX, 486SX e AMD ELAN (CONFIG_M486, CONFIG_M486SX e CONFIG_MELAN) sono state rimosse da Kconfig, e le opzioni di compilazione per i sistemi i486 (-march=i486) sono state escluse dal Makefile. Il codice per il supporto effettivo dei processori i486 è ancora presente nel kernel, ma la compilazione per tali sistemi richiederà ora l'applicazione di patch ai file di build. Le ragioni della rimozione del supporto per i processori i486 derivano dal desiderio di semplificare il kernel eliminando il codice complesso che emula alcune operazioni hardware, come CX8 (compare e scambia 8 byte) e TSC (contatore di cicli CPU utilizzato nel pianificatore di attività).
  • Nel driver amd-pstate, utilizzato per gestire il consumo energetico sui sistemi con processori AMD, implementato c'è un attivazione dinamica delle impostazioni delle prestazioni e una modifica del comportamento della gestione dell'alimentazione in base all'uso della corrente da rete o della batteria. Quando è connesso alla rete, ora viene attivata la modalità performance, mentre quando funziona a batteria entra in modalità balance_performance.
  • Il meccanismo è abilitato per impostazione predefinita Intel FRED (Flexible Return and Event Delivery), che permette di aumentare l'efficienza e l'affidabilità nella consegna delle informazioni sugli eventi a basso livello. Le prestazioni migliorate e la riduzione delle latenze sono garantite dal ritorno degli eventi tramite l'istruzione del processore IRET, invece della trasmissione degli eventi attraverso la tabella IDT (Interrupt Descriptor Table). L'affidabilità è aumentata grazie al trattamento separato dell'arrivo dell'evento nel contesto del kernel e nel contesto dell'utente, proteggendo da esecuzioni nidificate NMI e salvando nel frame dello stack esteso tutti i registri CPU associati all'eccezione.
  • Nel sottosistema perf aggiunta supporto alle unità di monitoraggio delle prestazioni della memoria (PMU — Performance Monitoring Unit), utilizzate nel SoC NVIDIA Tegra410.
  • Accelerata l'esecuzione delle operazioni futex sui sistemi ARM, grazie all'uso delle istruzioni Arm 9.6 LSUI, che consentono al kernel di accedere alla memoria dello spazio utente senza dover prima disattivare la modalità di protezione. PAN (arm.com) (Privileged Access Never).
  • Nei sistemi con processori ARM, migliorato il supporto per l'estensione dell'architettura del set di istruzioni. MPAM (Memory System Resource Partitioning and Monitoring) e aggiunta la possibilità di utilizzarlo nello spazio utente per la gestione delle risorse tramite il meccanismo resctrl. MPAM consente di contrassegnare ogni accesso alla memoria con un identificatore di sezione (PARTID, Partition ID) e un identificatore di gruppo di monitoraggio (PMG, Monitoring Group ID). In relazione a PARTID, è possibile limitare il consumo di risorse, come la larghezza di banda della memoria o la dimensione della cache, affinché un certo gruppo di attività non occupi tutte le risorse. Nel contesto del monitoraggio, la combinazione di PMG e PARTID può essere utilizzata per tracciare il consumo delle risorse di memoria sotto determinate tipologie di carico.
  • Aggiunto la possibilità di utilizzare la modalità in tempo reale (PREEMPT_RT) su processori ARM a 32 bit. In precedenza, il supporto per PREEMPT_RT era garantito per architetture x86 e x86-64, ARM64, RISC-V e LoongArch.
  • Nella chiamata di sistema clone3() aggiunti nuovi flag: CLONE_NNP — divieto ottenimento di nuove privilegi nel processo creato; CLONE_AUTOREAP — terminazione automatica del processo invece di convertirlo in un processo zombie fino all'esecuzione della funzione wait() dal processo genitore; CLONE_PIDFD_AUTOKILL — terminazione del processo figlio in caso di chiusura del relativo descrittore pidfd (ad esempio, alla chiusura del processo genitore).
  • Per ogni modulo del kernel nella directory /sys/module è stato aggiunto un file import_ns, contenente l'elenco degli spazi dei nomi simbolici importati (spazio dei nomi simbolo).
  • Nel sistema di input/output asincrono io_uring è stata aggiunta la supporto per l'uso del sottosistema BPF per la creazione di gestori. Ad esempio, è possibile sostituire il ciclo principale di dispatching con un programma BPF.
  • Nel sottosistema BPF modernizzato l'analisi dell'uso dello stack, che ha notevolmente accelerato la verifica di molti programmi BPF.
  • Al fine di ottimizzare le prestazioni riscritta il sottosistema hrtimer (high resolution timer). Ora il pianificatore dei compiti può utilizzare timer ad alta risoluzione senza perdere prestazioni invece di timer meno precisi.
  • Continuato trasferimento delle modifiche dal ramo Rust-for-Linux, relative all'uso del linguaggio Rust come secondo linguaggio per lo sviluppo di driver e moduli del kernel (il supporto per Rust non è attivo per impostazione predefinita e non comporta l'inclusione di Rust tra le dipendenze di build obbligatorie del kernel). Fino alla versione 1.85 (disponibile in Debian 13) sono state aumentate le richieste di versione di Rust necessaria per la compilazione dei componenti del kernel. Aggiunta l'opzione Kconfig sperimentale CONFIG_RUST_INLINE_HELPERS per incorporare le istruzioni C nel codice Rust durante la compilazione (l'ottimizzazione ha accelerato le prestazioni del driver null di blocco del 2%). Aggiunto il macro 'const_assert!'. Ampliate le funzionalità dei moduli sizes, clk, ptr, sync, error.
  • al meccanismo SCHED_EXT, che consente di utilizzare BPF per creare pianificatori CPU, aggiunta iniziale possibilità di creare pianificatori nidificati (sub-scheduler), tramite i quali per ogni cgroup è possibile attivare un proprio pianificatore di attività.
  • Proseguita l'ottimizzazione del sottosistema di swap. Rimosse la vecchia struttura swap_map, sostituita con il meccanismo 'Tabella Swap'. La modifica ha consentito di migliorare le prestazioni e ridurre il consumo di memoria nel sottosistema di swap.
  • Nel sottosistema DAMON (Data Access MONitor), che consente di monitorare l'accesso del processo ai dati nella memoria operativa (ad esempio, è possibile scoprire a quali aree di memoria il processo ha avuto accesso e quali aree di memoria sono rimaste non utilizzate), aggiunta supporto per diversi algoritmi di ottimizzazione quote.
  • Nella sottosistema di tracciamento è stata realizzata il concetto di buffer circolari esterni, che consente di ottenere dati di tracciamento dalle macchine virtuali. Questa possibilità è attivata nei hypervisor KVM e nVHE per la trasmissione dei dati di tracciamento dal sistema ospite al lato host.
  • Nel sottosistema RV (kernel.org) (Runtime Verification), destinato a verificare la correttezza del funzionamento di sistemi ad alta affidabilità, sono stati aggiunti componenti di monitoraggio "stall" per monitorare i compiti, la cui esecuzione è temporaneamente sospesa o bloccata, e "deadline" per analizzare il comportamento dello scheduler.
Virtualizzazione e sicurezza
  • Per impostazione predefinita è impostato il flag PROC_MEM_FORCE_PTRACE, che consente di aggirare i diritti di accesso alla memoria del processo tramite il file /proc/PID/mem solo per i processi che utilizzano la chiamata di sistema ptrace() per il debug.
  • Aggiunto nuovo set di hook per i moduli LSM (Linux Security Module), che semplifica l'implementazione delle politiche per i file system a stack, come overlayfs. In LSM anche è stato aggiunto hook per gestire l'accesso ai socket Unix che utilizzato nel modulo LSM Landlock per l'assegnazione di politiche di accesso ai socket Unix.
  • Nella libreria crittografica integrata lib/crypto, che offre funzioni più semplici e rapide rispetto all'API crittografica tradizionale, aggiunta supporto per algoritmi AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH e SM3. Aggiunto documentazione da lib/crypto.
  • Implementato il modo pKVM (Protected KVM) per un'isolamento rigoroso della memoria anonima utilizzando estensioni di virtualizzazione per l'architettura AArch64. In questa modalità, le pagine di memoria degli ospiti vengono escluse dalla tabella degli indirizzi virtuali del sistema host.
  • Nel hypervisor KVM è stato aggiunto il supporto per la quinta versione del controllore delle interruzioni virtuali ARM (VGICv5 - ARM Virtual Generic Interrupt Controller v5).
Sottosistema di rete
  • Per i socket Unix creati dalla funzione socket(), è stata realizzata supporto per attributi file estesi (xattr) user.*. Tra gli utilizzi si segnala l'assegnazione di etichette tramite attributi estesi ai socket Unix utilizzati per IPC Varlink, al fine di isolarli per ispezione e debugging del funzionamento dell'IPC tramite programmi BPF. In systemd-journald, gli attributi estesi sono destinati a definire il formato del log in relazione al socket /dev/log.
  • Rimosso supporto del protocollo UDP-Lite (RFC 3828), che consente la consegna di pacchetti con checksum errato, con l'idea che, ad esempio, dati audio e video parzialmente danneggiati possano essere recuperati a livello di codec. Il protocollo è stato rimosso poiché non è più utilizzato.
  • Rimossa la possibilità di comporre uno stack IPv6 come modulo del kernel, che non è stato utilizzato nella pratica (l'IPv6 viene integrato nel kernel oppure completamente disabilitato), ma complicava la manutenzione poiché, quando si componeva IPv6 come modulo del kernel (CONFIG_IPV6=m), molti sottosistemi erano costretti ad aggiungere gestori inutili nel caso in cui il modulo IPv6 venisse scaricato.
Attrezzature
  • Nel driver AMDGPU incluso nuovo motore di visualizzazione (DC) per APU AMD della serie HD 7000 (Sea Islands, GCN 1.1).
  • Nel driver Nouveau aggiunta supporto iniziale per GPU NVIDIA GA100 basata sull'architettura Ampere.
  • Continua il lavoro sul driver drm (Direct Rendering Manager) Xe per GPU basate sull'architettura Intel Xe, utilizzate nelle schede grafiche Intel della famiglia Arc e nella grafica integrata, a partire dai processori Tiger Lake. Aggiunta la supporto per il sottosistema grafico dei processori Intel Nova Lake-P. Implementati oggetti buffer purgabili (Purgeable Buffer Objects).
  • Integrazione continua dei componenti del driver Nova per GPU NVIDIA con le firmware GSP, utilizzate a partire dalla serie NVIDIA GeForce RTX 2000 basata sull'architettura micro Turing. Il driver è scritto in Rust. È stata aggiunta una supporto iniziale per le GPU basate sull'architettura Turing.
  • Aggiunto Driver DRM corebootdrm per l'output grafico tramite framebuffer delle firmware basate su CoreBoot.
  • Aggiunto supporto per i dispositivi audio ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP e WM8962. Migliorato il supporto per i dispositivi audio USB: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow, PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
  • Aggiunto driver yogafan per il monitoraggio della velocità della ventola nei laptop Lenovo Yoga, Legion e IdeaPad.
  • Aggiunto supporto per piattaforme ARM, SoC e dispositivi: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 e ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
  • Rimosso supporto per i controller AHCI SATA e PCIe impiegati nelle SoC Baikal-T1, così come per i driver del timer, memoria, physmap, bus, hwmon, dwc e bt1-rom. La rimozione è giustificata dall'assenza di supporto e dall'integrazione incompleta nei componenti del kernel della piattaforma Baikal, la cui produzione in RF è stata interrotta a novembre 2025.
  • Rimossi 12 driver per dispositivi Ethernet con interfacce ISA e PCMCIA, prodotti prima del 2002, per i quali non si sono trovati utenti che li utilizzano in sistemi operativi attivi. Inoltre, è stata esclusa dal kernel la sottosistema ISDN, implementazione dei protocolli AX.25, CAIF e Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), driver yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Radioamatori), inport e logibm (busmouse). Il motivo della rimozione è stata l'assenza di manutentori attivi, mentre cresceva il numero di errori identificati tramite syzbot e strumenti AI, i quali nessuno si prende la responsabilità di correggere, e l'intero carico per risolvere problemi gravi ricade sui manutentori delle sottosistemi di rete principali del kernel. In totale, sono state rimosse oltre 140.000 righe di codice.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster