Uscita del kernel Linux 5.17

Dopo due mesi di sviluppo, Linus Torvalds ha presentato il rilascio del kernel Linux 5.17. Tra le modifiche più evidenti ci sono: un nuovo sistema di gestione delle prestazioni per i processori AMD, la possibilità di mapping ricorsivo degli identificatori utente nei file system, supporto per programmi BPF compilati portabili, la migrazione del generatore di numeri pseudo-casuali all'algoritmo BLAKE2s, l'utility RTLA per l'analisi dell'esecuzione in tempo reale, un nuovo backend fscache per la memorizzazione nella cache dei file system di rete, e la possibilità di associare nomi a operazioni mmap anonime.

La nuova versione include 14203 correzioni da 1995 sviluppatori, la dimensione della patch è di 37 MB (le modifiche hanno interessato 11366 file, sono state aggiunte 506043 righe di codice e sono state rimosse 250954 righe). Circa il 44% di tutte le modifiche presentate in 5.17 riguardano i driver dei dispositivi, circa il 16% delle modifiche riguarda l'aggiornamento del codice specifico per le architetture hardware, il 15% è legato allo stack di rete, il 4% ai file system e il 4% ai sottosistemi interni del kernel.

Le principali novità nel kernel 5.17:

  • Sottosistema di disco, input/output e file system
    • È stata implementata la possibilità di mapping annidato degli identificatori utente dei file system montati, utilizzato per associare i file di un determinato utente su una partizione montata da un altro utente nel sistema corrente. La nuova funzionalità consente di utilizzare ricorsivamente il mapping su file system per i quali è già attivo il mapping.
    • Il sottosistema fscache è stato completamente riscritto e viene utilizzato per organizzare la memorizzazione nella cache del filesystem locale dei dati trasferiti tramite file system di rete. La nuova implementazione si distingue per la semplificazione significativa del codice e la sostituzione delle operazioni di pianificazione e monitoraggio degli stati degli oggetti complesse con meccanismi più semplici. Il supporto per il nuovo fscache è stato implementato nel file system CIFS.
    • Nel sottosistema di tracciamento degli eventi nel file system fanotify è stato implementato un nuovo tipo di evento FAN_RENAME, che consente di intercettare contemporaneamente l'operazione di rinominazione di file o cataloghi (in precedenza, per gestire le rinominazioni si utilizzavano due eventi separati, FAN_MOVED_FROM e FAN_MOVED_TO).
    • Nel file system Btrfs è stata ottimizzata l'operazione di logging e fsync per le grandi directory, realizzata tramite la copia solo delle chiavi dell'indice e la riduzione del volume dei metadati registrati. È stato garantito il supporto per l'indicizzazione e la ricerca per dimensione delle registrazioni dello spazio libero, il che ha permesso di ridurre i ritardi di circa il 30% e di accorciare i tempi di ricerca. È stata concessa la possibilità di interrompere le operazioni di deframmentazione. È stata inserita la funzione di aggiungere dispositivi disattivando il bilanciamento tra i dispositivi, ovvero durante il montaggio del file system con l'opzione skip_balance.
    • È stata proposta una nuova sintassi per il montaggio del file system Ceph, che risolve i problemi relativi al binding agli indirizzi IP. Inoltre indirizzi IP per la definizione del server ora è possibile utilizzare l'identificatore del cluster (FSID): mount -t ceph user@fsid.fs_name=\/[subdir] mnt -o mon_addr=monip1[:port][\monip2[:port]]
    • Il file system Ext4 è stato migrato a una nuova API per il montaggio, che separa le fasi di parsing delle opzioni di montaggio e di configurazione del superblock. È stata interrotta la supporto per le opzioni di montaggio lazytime e nolazytime, aggiunte come modifica temporanea per semplificare la migrazione di util-linux all'uso del flag MS_LAZYTIME. È stato aggiunto il supporto per impostare e leggere etichette nel file system (ioctl FS_IOC_GETFSLABEL e FS_IOC_SETFSLABEL).
    • In NFSv4 è stato aggiunto il supporto all'operatività nei file system senza distinzione tra maiuscole e minuscole nei nomi di file e directory. In NFSv4.1+ è stata aggiunta la supporto per la definizione di sessioni aggregate (trunking).
  • Memoria e servizi di sistema
    • È stato aggiunto il driver amd-pstate, che fornisce la gestione dinamica della frequenza per ottimizzare le prestazioni. Il driver supporta CPU e APU AMD a partire dalla generazione Zen 2, sviluppato con la collaborazione di Valve e mirato a migliorare l'efficienza della gestione del consumo energetico. Per la modifica adattativa della frequenza viene utilizzato il meccanismo CPPC (Collaborative Processor Performance Control), che consente di modificare in modo più preciso i valori (non limitato a tre livelli di prestazioni) e di rispondere più rapidamente ai cambiamenti di stato, rispetto ai precedenti driver P-state basati su ACPI (CPUFreq).
    • Nel sottosistema eBPF è stata proposta la funzione bpf_loop(), che fornisce un modo alternativo per organizzare i cicli nei programmi eBPF, più veloce e più semplice da verificare per il validatore.
    • A livello del kernel è stato implementato un meccanismo CO-RE (Compile Once — Run Everywhere), che consente di compilare il codice dei programmi eBPF una sola volta e utilizzare un caricatore universale speciale che adatta il programma caricato al kernel corrente e ai tipi BTF (BPF Type Format).
    • È stata data la possibilità di assegnare nomi alle aree di memoria anonima privata (allocata tramite malloc), il che può semplificare il debugging e l'ottimizzazione del consumo di memoria nelle applicazioni. I nomi vengono assegnati tramite prctl con il flag PR_SET_VMA_ANON_NAME e vengono visualizzati in /proc/pid/maps e /proc/pid/smaps nella forma «[anon:<name>]».
    • Nello scheduler dei task è stato assicurato il tracciamento e la visualizzazione in /proc/PID/sched del tempo trascorso dai processi in stato di inattività forzata (forced-idle), utilizzato ad esempio per ridurre il carico in caso di surriscaldamento della CPU.
    • È stato aggiunto il modulo gpio-sim, destinato alla simulazione dei chip GPIO per eseguire test.
    • È stata aggiunta alla comando «perf ftrace» la sottocommand «latency» per generare istogrammi con informazioni sui ritardi.
    • È stato aggiunto un insieme di utility «RTLA» per analizzare il funzionamento in tempo reale. Include utility come osnoise (che determina l'impatto del sistema operativo sull'esecuzione di un compito) e timerlat (che modifica i ritardi associati al timer).
    • È stata integrata una seconda serie di patch con l'implementazione del concetto di folio della pagina di memoria (page folios), che ricorda le pagine di memoria aggregate (compound pages), ma si distingue per una semantica migliorata e un'organizzazione del lavoro più chiara. L'uso dei folios consente di accelerare la gestione della memoria in alcune sottosistemi del kernel. Nelle patch proposte è stata completata la transizione della cache delle pagine all'uso dei folios ed è stato aggiunto un supporto iniziale ai folios nel filesystem XFS.
    • È stato aggiunto il metodo di compilazione «make mod2noconfig», che genera una configurazione che compila tutti i sottosistemi disattivati sotto forma di moduli del kernel.
    • Sono stati elevati i requisiti per la versione di LLVM/Clang che può essere utilizzata per compilare il kernel. Per la compilazione ora è richiesto almeno LLVM versione 11.
  • Virtualizzazione e sicurezza
    • È stata proposta un'implementazione aggiornata del generatore di numeri pseudo-casuali RDRAND, responsabile del funzionamento dei dispositivi /dev/random e /dev/urandom, notevole per il passaggio all'uso della funzione hash BLAKE2s invece di SHA1 per le operazioni di mescolamento dell'entropia. Questa modifica ha permesso di aumentare la sicurezza del generatore di numeri pseudo-casuali, eliminando l'algoritmo problematico SHA1 e rimuovendo la riscrittura del vettore di inizializzazione RNG. Poiché l'algoritmo BLAKE2s supera SHA1 in termini di prestazioni, il suo utilizzo si è anche riflesso positivamente sulle prestazioni.
    • È stata aggiunta una protezione contro le vulnerabilità nei processori causate dall'esecuzione speculativa delle istruzioni dopo le operazioni di salto incondizionato. Il problema si verifica a causa dell'elaborazione anticipata delle istruzioni che seguono nella memoria immediatamente dopo il comando di salto (SLS, Straight Line Speculation). Per abilitare la protezione è necessaria una build con GCC 12, attualmente in fase di test.
    • È stato aggiunto un meccanismo di tracciamento del conteggio dei riferimenti (refcount, reference-count), mirato a ridurre il numero di errori nel conteggio dei riferimenti che portano a un accesso alla memoria dopo che è stata liberata. Attualmente, il meccanismo è limitato al sottosistema di rete, ma in futuro potrebbe essere adattato anche per altre parti del kernel.
    • Sono state implementate verifiche estese per i nuovi record nella tabella delle pagine di memoria del processo, che consentono di rilevare alcuni tipi di danneggiamenti e fermare il sistema, bloccando gli attacchi in una fase iniziale.
    • È stata aggiunta la possibilità di estrarre moduli del kernel direttamente dal kernel stesso, piuttosto che da un gestore nello spazio utente, il che consente, tramite il modulo LSM LoadPin, di garantire che i moduli del kernel siano caricati in memoria da un dispositivo di archiviazione verificato.
    • È stato garantito il build con il flag «-Wcast-function-type», che abilita la visualizzazione di avvisi relativi alla conversione di puntatori a funzioni in tipi incompatibili.
    • È stato aggiunto un driver di host virtuale pvUSB per l'ipervisore Xen, che fornisce accesso a dispositivi USB passati nelle guest (consente alle guest di accedere ai dispositivi USB fisici assegnati alla guest).
    • È stato aggiunto un modulo che consente l'interazione tramite Wi-Fi con il sottosistema IME (Intel Management Engine), fornito nella maggior parte delle moderne schede madri con processori Intel e realizzato sotto forma di un microprocessore separato che opera indipendentemente dalla CPU.
    • Per l'architettura ARM64 è stato implementato il supporto per lo strumento di debug KCSAN (Kernel Concurrency Sanitizer), progettato per rilevare dinamicamente le condizioni di gara all'interno del kernel.
    • Per i sistemi ARM a 32 bit è stata aggiunta la possibilità di utilizzare il meccanismo KFENCE per la rilevazione degli errori nella gestione della memoria.
    • Nel hypervisor KVM è stato aggiunto il supporto per le istruzioni AMX (Advanced Matrix Extensions), implementate nei futuri processori server Intel Xeon Scalable.
  • Sottosistema di rete
    • È stato aggiunto il supporto per l'offloading delle operazioni di gestione del traffico sui dispositivi di rete.
    • È stata aggiunta la possibilità di utilizzare il protocollo MCTP (Management Component Transport Protocol) sopra dispositivi con interfaccia seriale. MCTP può essere utilizzato per la comunicazione tra controller di gestione e dispositivi ad essi associati (processori host, dispositivi periferici, ecc.).
    • È stata ottimizzata la pila TCP, ad esempio per migliorare le prestazioni delle chiamate recvmsg con il rilascio ritardato dei buffer dei socket.
    • A livello di autorizzazioni CAP_NET_RAW è consentita la configurazione tramite la funzione setsockopt delle modalità SO_PRIORITY e SO_MARK.
    • Per IPv4 è consentito l'attacco di socket raw a indirizzi IP non locali, utilizzando le opzioni IP_FREEBIND e IP_TRANSPARENT.
    • È stato aggiunto sysctl arp_missed_max per configurare il numero soglia di fallimenti nella verifica da parte del monitor ARP, dopo il quale l'interfaccia di rete viene disabilitata.
    • È stata fornita la possibilità di configurare valori sysctl distinti per min_pmtu e mtu_expires per gli spazi di nomi di rete.
    • Nell'API ethtool è stata aggiunta la possibilità di impostare e determinare la dimensione dei buffer per i pacchetti in entrata e in uscita.
    • In Netfilter è stato aggiunto il supporto per il filtro del traffico PPPoE di transito nel ponte di rete.
    • Nel modulo ksmbd con implementazione del file system server, che utilizza il protocollo SMB3, è stato aggiunto il supporto per lo scambio di chiavi, è stata attivata la porta di rete 445 per smbdirect ed è stato aggiunto il supporto per il parametro "smb2 max credit."
  • Apparecchiatura
    • Nel sottosistema drm (Direct Rendering Manager) e nel driver i915 è stata aggiunta la supporto per gli schermi destinati a visualizzare informazioni riservate. Ad esempio, alcuni laptop sono dotati di schermi con una modalità di visualizzazione riservata integrata, che rende difficile la visualizzazione da parte di terzi. Le modifiche apportate consentono di collegare driver specializzati per tali schermi e di gestire le modalità di visualizzazione riservata tramite l'impostazione di proprietà nei normali driver KMS.
    • Nel driver amdgpu è stata attivata la supporto per la tecnologia di debug STB (Smart Trace Buffer) per tutte le GPU AMD che la supportano. STB semplifica l'analisi dei guasti e l'individuazione delle fonti dei problemi mediante la registrazione in un buffer speciale delle informazioni sulle funzioni eseguite prima dell'ultimo guasto.
    • Nel driver i915 è stata aggiunta la supporto per i chip Intel Raptor Lake S ed è stata attivata per impostazione predefinita la supporto per la sottosistema grafico dei chip Intel Alder Lake P. È stata fornita la possibilità di gestire la retroilluminazione dello schermo tramite l'interfaccia DPCD VESA.
    • Nei driver fbcon/fbdev è stata ripristinata la supporto per l'accelerazione hardware dello scroll nella console.
    • È proseguita l'integrazione delle modifiche per il supporto dei chip Apple M1. È stata implementata la possibilità di utilizzare il driver simpledrm su sistemi con chip Apple M1 per l'output tramite framebuffer fornito dal firmware.
    • È stata aggiunta la supporto per SoC ARM, dispositivi e schede Snapdragon 7c, 845 e 888 (Sony Xperia XZ2/XZ2C/XZ3, Xperia 1 III/5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (utilizzato nei router Wi-Fi), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
    • È stata aggiunta la supporto per i processori ARM Cortex-M55 e Cortex-M33.
    • È stata aggiunta la supporto per dispositivi basati su CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • È stata aggiunta la supporto per SoC StarFive JH7100 basato sull'architettura RISC-V.
    • È stato aggiunto il driver lenovo-yogabook-wmi per la gestione della retroilluminazione della tastiera e l'accesso a vari sensori nel Lenovo Yoga Book.
    • È stato aggiunto il driver asus_wmi_sensors per l'accesso ai sensori utilizzati nelle schede madri Asus X370, X470, B450, B550 e X399 basate su processori AMD Ryzen.
    • È stato aggiunto il driver x86-android-tablets per i tablet basati su architettura x86 forniti con la piattaforma Android.
    • Aggiunta la supporto per schermi tattile TrekStor SurfTab duo W1 e penna elettronica per tablet Chuwi Hi10 Plus e Pro.
    • Nei driver per SoC Tegra 20/30 è stata aggiunta la supporto per la gestione dell'alimentazione e della tensione. È stata garantita la possibilità di avvio su vecchi dispositivi a 32 bit basati su SoC Tegra, come ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 e Pad TF300TG.
    • Aggiunti i driver per computer industriali Siemens.
    • Aggiunta la supporto per pannelli LCD Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA e Team Source Display TST043015CMHX.
    • Aggiunta la supporto per sistemi audio e codec AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, sistemi Intel utilizzando NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Risolti problemi con Tegra194 HD-audio. Aggiunta la supporto HDA per i codec CS35L41. Migliorata la supporto per i sistemi audio per laptop Lenovo e HP, così come per le schede madri Gigabyte.

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