Rilascio del kernel Linux 7.1

Dopo due mesi di sviluppo, Linus Torvalds ha presentato il rilascio del kernel Linux 7.1. Tra le novità più significative: un nuovo driver ntfsplus, la prima fase di interruzione del supporto per la CPU i486, rimozione dei vecchi adattatori Ethernet, rimozione dei protocolli ISDN e AX.25, attivazione predefinita del meccanismo Intel FRED, supporto per i gestori BPF in io_uring, ottimizzazione del sottomodulo di paging, supporto per sottoplanificatori 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 state accettate 17275 correzioni da 2589 sviluppatori,
la dimensione della patch è di 57 MB (le modifiche hanno interessato 13528 file, sono state aggiunte 751785 righe di codice e ne sono state rimosse 405916). Nel rilascio precedente ci sono state 15624 correzioni da 2477 sviluppatori, la dimensione della patch era di 56 MB. Circa il 41% di tutte le modifiche presentate in 7.1 riguarda i driver di dispositivo, circa il 12% delle modifiche ha a che fare con l'aggiornamento di codice specifico per le architetture hardware, il 14% riguarda lo stack di rete, il 5% con i file system e il 3% con i sotto-sistemi interni del kernel.

Le principali novità nel kernel 7.1 (1, 2, 3):

  • Sottosistema di disco, input/output e file system
    • È stata accettata una nuova implementazione del file system NTFS — ntfsplus, basata sul codice rimosso dal kernel del classico driver ntfs. Il vecchio driver è stato riprogettato, ampliato con la possibilità di scrivere dati e adattato per supportare le moderne funzionalità, come l'uso di folii di pagine di memoria (folios) invece della struttura buffer_head. Nel nuovo driver è stata implementata l'allocazione ritardata dei blocchi, consentendo di raggiungere elevate prestazioni nelle operazioni di scrittura e riducendo la frammentazione. Per le operazioni di scrittura/lettura bufferizzate, input/output diretto, mapping degli extent e operazioni di scrittura/lettura a pagina è stata utilizzata la libreria iomap. Nei test di iozone, il driver ntfsplus è risultato essere dal 3% al 5% più veloce di ntfs3 nella scrittura in modalità single-threaded e dal 35% al 110% utilizzando 4 thread. La velocità di lettura di ntfsplus e ntfs3 è di circa lo stesso livello. Il driver ntfs3 rimane nel kernel ed è stato aggiornato con correzioni e piccoli miglioramenti.
    • È stata aggiunta la supporto alla generazione e verifica dei dati di controllo integrità T10 a livello del file system, invece che del dispositivo a blocchi, consentendo un aumento delle performance delle operazioni di lettura.
    • Nel driver dei dispositivi a blocchi ublk, che permette di spostare la logica specifica nel processo nello spazio utente, è stata aggiunta la supporto per l'input/output tramite 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 gestire la modalità Single User e implementato il comando STACK_RESET.
    • In Btrfs è stata dichiarata stabile la supporto per l'operazione ioctl "shutdown", che consente di mettere il file system in uno stato in cui si tenta di completare le operazioni già in corso, ma tutte le nuove operazioni vengono bloccate.
    • In exfat è stata implementata la possibilità di riservare aree vuote tramite la chiamata fallocate().
    • Nel file system CIFS è stata aggiunta la 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 da montare. Nelle chiamate di sistema clone3() e unshare() sono stati aggiunti flag per restituire un nuovo spazio dei nomi per i punti di montaggio, contenente solo un file system fittizio montato vuoto basato su nullfs, driver fs-dax con interfaccia del file system ai dispositivi DAX (Direct Access).
    • Nel server NFS è stata aggiunta protezione contro attacchi di brute force sui file descriptor, implementata tramite la firma crittografica dei descriptor. La protezione viene attivata tramite l'opzione di montaggio sign_fh.
    • È stato aggiunto il driver simbolico fs-dax, che fornisce un'interfaccia per interagire con i dispositivi DAX (Direct Access), supportando il funzionamento al di fuori della cache delle pagine. Questa interfaccia è necessaria per l'integrazione nel kernel del file system famfs, che risiede nella memoria volatile.
    • Nel file system Ceph è stata implementata la raccolta di metriche per l'input/output legate ai sottodivisioni.
  • Memoria e servizi di sistema
    • È stata accettata la prima serie di modifiche per terminare 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 dell'esecuzione sui processori i486 è ancora presente nel kernel, ma la compilazione per tali sistemi richiederà ora l'applicazione di patch ai file di build. Le ragioni per la rimozione del supporto ai processori i486 sono dovute al desiderio di semplificare il kernel, eliminando codice complesso che emula alcune operazioni hardware, come CX8 (confronta e scambia 8 byte) e TSC (contatore cicli CPU, utilizzato nello scheduler di attività).
    • Nel driver amd-pstate, utilizzato per gestire il consumo energetico sui sistemi con processori AMD, è stata implementata la commutazione dinamica delle impostazioni delle prestazioni e la modifica del comportamento di gestione dell'alimentazione a seconda che si stia utilizzando l'alimentazione da rete o la batteria. Con l'alimentazione collegata, ora si attiva la modalità "performance", mentre con la batteria è attivata la modalità "balance_performance".
    • È stato attivato per impostazione predefinita il meccanismo Intel FRED (Flexible Return and Event Delivery), che consente di aumentare l'efficienza e l'affidabilità della consegna di informazioni su eventi a basso livello. Il miglioramento delle prestazioni e la riduzione delle latenze sono garantiti grazie al ritorno degli eventi tramite l'istruzione di processo IRET invece di trasferire gli eventi tramite la tabella IDT (Interrupt Descriptor Table). L'affidabilità viene migliorata grazie al trattamento separato della ricezione dell'evento nel contesto del kernel e nel contesto dell'utente, alla protezione da esecuzioni nidificate NMI e al salvataggio nel frame di stack esteso di tutti i registri CPU associati all'eccezione.
    • Nel sottosistema perf è stato aggiunto il supporto per le unità di monitoraggio delle prestazioni della memoria (PMU - Performance Monitoring Unit), utilizzate nei SoC NVIDIA Tegra410.
    • È stata 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 disattivare in anticipo la modalità di protezione PAN (Privileged Access Never).
    • Nei sistemi con processori ARM è stata migliorata la supporto all'estensione dell'architettura del set di istruzioni MPAM (Memory System Resource Partitioning and Monitoring) ed è stata aggiunta la possibilità di utilizzarla 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 al PARTID, è possibile limitare il consumo delle risorse, come la larghezza di banda della memoria o le dimensioni della cache, in modo che 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 determinati carichi.
    • È stata aggiunta 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 fornito per le architetture x86 e x86-64, ARM64, RISC-V e LoongArch.
    • Sono stati aggiunti nuovi flag alla chiamata di sistema clone3(): CLONE_NNP — divieto di acquisire nuovi privilegi nel processo creato; CLONE_AUTOREAP — termine automatico del processo invece di trasformarlo in un processo zombie fino all'esecuzione della funzione wait() da parte del processo padre;
      CLONE_PIDFD_AUTOKILL — termine del processo figlio in caso di chiusura del descritore pidfd ad esso associato (ad esempio, quando il processo padre viene terminato).
    • Per ogni modulo del kernel è stato aggiunto un file import_ns nella directory /sys/module, contenente l'elenco degli spazi dei nomi dei simboli importati (symbol namespace).
    • Nel sistema di input/output asincrono io_uring è stata aggiunta la supporto per l'uso del sottosistema BPF per creare gestori. Ad esempio, è possibile sostituire il ciclo di dispatch principale con un programma BPF.
    • Nel sottosistema BPF è stata modernizzata l'analisi dell'uso dello stack, il che ha notevolmente accelerato la verifica di molti programmi BPF da parte del verificatore.
    • Al fine di ottimizzare le prestazioni, è stato riscritto il sottosistema hrtimer (timer ad alta risoluzione). Ora il pianificatore di attività può utilizzare timer ad alta risoluzione senza perdita di prestazioni rispetto a timer meno precisi.
    • Continuato il porting 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 è attivato di default e non comporta l'inclusione di Rust tra le dipendenze di build obbligatorie del kernel). Fino alla versione 1.85 (distribuita in Debian 13) sono aumentati i requisiti di versione di Rust necessari per la compilazione dei componenti del kernel. È stata aggiunta un'opzione Kconfig sperimentale CONFIG_RUST_INLINE_HELPERS per l'integrazione di i wrapper C nel codice Rust durante la compilazione (l'ottimizzazione ha velocizzato l'esecuzione del driver di blocco null del 2%). È stato aggiunto il macro ‘const_assert!’. Sono state ampliate le funzionalità dei moduli ‘sizes’, ‘clk’, ‘ptr’, ‘sync’, ‘error’.
    • Nel meccanismo SCHED_EXT, che consente di utilizzare BPF per creare scheduler CPU, è stata aggiunta una funzionalità iniziale per la creazione di scheduler annidati (sub-scheduler), che consente a ciascuna cgroup di avere il proprio scheduler di task.
    • Continuata l'ottimizzazione del sottosistema di swap. Rimosso il vecchio swap_map, sostituito dal meccanismo «Swap Table». Questa modifica ha permesso 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 dei processi ai dati nella memoria RAM (ad esempio, è possibile scoprire a quali aree di memoria accede il processo e quali aree di memoria rimangono inutilizzate), è stato aggiunto il supporto per diversi algoritmi di autotuning delle quote.
    • Nel sottosistema di tracciamento è stata implementata la concettualizzazione di buffer circolari esterni, che consente di ottenere dati di tracciamento da macchine virtuali. Questa funzionalità è attivata negli ipervisori KVM e nVHE per inviare dati di tracciamento dal sistema ospite a quello host.
    • Nel sottosistema RV (Runtime Verification), progettato per verificare la correttezza del funzionamento di sistemi ad alta affidabilità, sono stati aggiunti componenti di monitoraggio «stall» per tracciare i task la cui esecuzione è temporaneamente sospesa o bloccata, e «deadline» per analizzare il comportamento dello scheduler di task.
  • Virtualizzazione e sicurezza
    • Di default, è stato impostato il flag PROC_MEM_FORCE_PTRACE, che consente di bypassare 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 debugging.
    • È stato aggiunto un 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. È stato inoltre aggiunto un hook in LSM per la gestione dell'accesso ai socket Unix, utilizzato nel modulo LSM Landlock per l'assegnazione delle politiche di accesso ai socket Unix.
    • Nella libreria crittografica integrata lib/crypto, che offre funzioni più semplici e veloci rispetto all'API crittografica tradizionale, è stato aggiunto il supporto per gli algoritmi AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH e SM3. È stata aggiunta documentazione per lib/crypto.
    • È stata implementata la modalità 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 dell'ospite vengono escluse dalla tabella degli indirizzi virtuali del sistema host.
    • Nel hypervisor KVM è stato aggiunto il supporto per la quinta versione del controller virtuale delle interruzioni ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5).
  • Sottosistema di rete
    • Per i socket Unix creati dalla funzione socket(), è stato implementato il supporto per gli attributi di file estesi (xattr) «user.*». Tra le applicazioni si segnala l'assegnazione di etichette tramite attributi estesi ai socket Unix utilizzati per IPC Varlink, al fine di distinguerli dalla massa per l'ispezione e il debug delle operazioni IPC tramite programmi BPF. In systemd-journald, si prevede di utilizzare gli attributi estesi per determinare il formato del log associato al socket /dev/log.
    • È stato rimosso il supporto per il protocollo UDP-Lite (RFC 3828), che consente la consegna di pacchetti con checksum errati nella speranza che, ad esempio, i dati audio e video parzialmente danneggiati possano essere recuperati a livello di codec. Il protocollo è stato rimosso poiché non viene utilizzato da nessuno.
    • È stata rimossa la possibilità di compilare lo stack IPv6 come modulo del kernel, che non era stata utilizzata nella pratica (IPv6 viene integrato nel kernel o completamente disabilitato), ma complicava la manutenzione poiché la compilazione di IPv6 come modulo del kernel (CONFIG_IPV6=m) costringeva molte sottosistemi ad aggiungere gestori inutili nel caso di scarico del modulo IPv6.
  • Apparecchiatura
    • Nel driver AMDGPU è stato incluso un nuovo motore di visualizzazione (DC) per APU AMD serie HD 7000 (Sea Islands, GCN 1.1).
    • Nel driver Nouveau è stato aggiunto il supporto iniziale per la GPU NVIDIA GA100 basata sull'architettura microarchitettura Ampere.
    • È proseguito il lavoro sul driver drm (Direct Rendering Manager) Xe per GPU basate sull'architettura Intel Xe, utilizzata nelle schede grafiche Intel della famiglia Arc e nella grafica integrata, a partire dai processori Tiger Lake. È stato aggiunto il supporto per il sottosistema grafico dei processori Intel Nova Lake-P. Sono stati implementati gli oggetti buffer purgabili (Purgeable Buffer Objects).
    • Continuata l'integrazione dei componenti del driver Nova per GPU NVIDIA, dotate di firmware GSP, utilizzati a partire dalla serie NVIDIA GeForce RTX 2000 basata su architettura Turing. Il driver è scritto in linguaggio Rust. Aggiunto supporto iniziale per GPU basate su architettura Turing.
    • Aggiunto il driver DRM corebootdrm per l'output grafico tramite framebuffer per firmware basati su CoreBoot.
    • Aggiunto il supporto per i dispositivi audio ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP e WM8962. Migliorato il supporto per i dispositivi audio con interfaccia USB: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow,
      PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
    • Aggiunto il driver yogafan per il monitoraggio della velocità di rotazione della ventola nei laptop Lenovo Yoga, Legion e IdeaPad.
    • Aggiunto il supporto per le 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.
    • Rimossa la supporto per i controller AHCI SATA e PCIe utilizzati nei SoC Baikal-T1, così come i driver del timer, memoria, physmap, bus, hwmon, dwc e bt1-rom. Il motivo della rimozione è stato l'assenza di supporto e l'integrazione incompleta nei componenti del kernel della piattaforma Baikal, la produzione della quale in RF è stata interrotta nel novembre 2025.
    • Rimossi 12 driver per dispositivi Ethernet con interfacce ISA e PCMCIA, prodotti prima del 2002, per i quali non sono stati trovati utenti che li utilizzassero nei sistemi operativi. Inoltre, dal kernel sono state escluse
      il sottosistema ISDN, le implementazioni dei protocolli AX.25, CAIF e Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), i driver yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Radio), inport e logibm (busmouse). Il motivo della rimozione è stata l'assenza di accompagnatori attivi a fronte dell'aumento degli errori rilevati tramite syzbot e strumenti AI, per i quali nessuno si è occupato di correggerli e l'intero carico per risolvere problemi seri ricade sui responsabili dei principali sottosistemi di rete del kernel. In totale sono stati rimossi oltre 140.000 righe di codice.

Fonte: opennet.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