Rilascio del kernel Linux 5.11

Dopo due mesi di sviluppo, Linus Torvalds ha presentato il rilascio del kernel Linux 5.11. Tra le modifiche più significative: supporto per enclave Intel SGX, un nuovo meccanismo per l'intercettazione delle chiamate di sistema, bus virtuale ausiliario, divieto di costruzione di moduli senza MODULE_LICENSE(), modalità di filtraggio veloce delle chiamate di sistema in seccomp, cessazione del supporto per l'architettura ia64, trasferimento della tecnologia WiMAX nel ramo «staging», possibilità di incapsulamento SCTP in UDP.

Nella nuova versione sono stati inclusi 15480 correttivi da 1991 sviluppatori, la dimensione della patch è di 72 MB (le modifiche hanno interessato 12090 file, aggiunte 868025 righe di codice, rimosse 261456 righe). Circa il 46% delle modifiche presentate in 5.11 riguarda i driver dei dispositivi, circa il 16% è relativo all'aggiornamento del codice specifico per architetture hardware, il 13% è collegato allo stack di rete, il 3% ai file system e il 4% ai sottosistemi interni del kernel.

Novità principali:

  • Sottosistema di disco, input/output e file system
    • In Btrfs sono state aggiunte diverse opzioni di montaggio per l'applicazione nel recupero dei dati da un FS danneggiato: «rescue=ignorebadroots» per il montaggio, nonostante i danni a determinati alberi radice (extent, uuid, data reloc, device, csum, free space), «rescue=ignoredatacsums» per disabilitare il controllo delle somme di controllo per i dati e «rescue=all» per attivare simultaneamente le modalità ‘ignorebadroots’, ‘ignoredatacsums’ e ‘nologreplay’. È cessato il supporto per l'opzione di montaggio «inode_cache», che era stata precedentemente dichiarata obsoleta. È stata effettuata una preparazione del codice per implementare il supporto per blocchi di metadati e dati di dimensioni inferiori alla pagina (PAGE_SIZE), nonché per supportare la modalità di allocazione zonata. Le richieste non bufferizzate (Direct IO) sono state trasferite all'infrastruttura iomap. È stata ottimizzata la performance di diverse operazioni, in alcuni casi l'accelerazione può superare di decine di punti percentuali.
    • In XFS è stato implementato il flag «needsrepair», che segnala la necessità di ripristino. Quando questo flag è impostato, il FS non può essere montato fino a quando il flag non viene ripristinato dall'utilità xfs_repair.
    • In Ext4 sono stati offerti solo correttivi di errori e ottimizzazioni, oltre a una pulizia del codice.
    • È stato autorizzato il riesportazione di file system montati su NFS (cioè, la partizione montata tramite NFS può ora essere riesportata tramite NFS e utilizzata come cache intermedia).
    • Nella chiamata di sistema close_range(), che consente a un processo di chiudere un'intera gamma di descrittori di file aperti, è stata aggiunta l'opzione CLOSE_RANGE_CLOEXEC per chiudere i descrittori in modalità close-on-exec.
    • Nel filesystem F2FS sono state aggiunte nuove chiamate ioctl(), che permettono di gestire dallo spazio utente quali file vengono archiviati in formato compresso. È stata aggiunta l'opzione di montaggio «compress_mode=» per scegliere dove posizionare il gestore di compressione, lato kernel o nello spazio utente.
    • È stata fornita la possibilità di montare Overlayfs da processi non privilegiati, utilizzando uno spazio di identificatori utente separato (user namespace). Per verificare la conformità dell'implementazione del modello di sicurezza è stata effettuata un'audit completa del codice. In Overlayfs è stata anche aggiunta la possibilità di avviarlo utilizzando copie delle immagini del filesystem attraverso un'opzione che disabilita il controllo UUID.
    • Nel filesystem Ceph è stata aggiunta la supporto al protocollo msgr2.1, che consente di applicare l'algoritmo AES-GCM durante la trasmissione dei dati in forma crittografata.
    • Nel modulo dm-multipath è stata implementata la possibilità di considerare la legame con la CPU («IO affinity») nella scelta del percorso per le richieste di input/output.
  • Memoria e servizi di sistema
    • È stato aggiunto un nuovo meccanismo di intercettazione delle chiamate di sistema, basato su prctl(), che consente di generare eccezioni dallo spazio utente quando si accede a determinate chiamate di sistema e di emulare la loro esecuzione. Questa funzionalità è richiesta in Wine e Proton per emulare chiamate di sistema Windows, necessaria per garantire la compatibilità con giochi e programmi che eseguono direttamente chiamate di sistema bypassando l'API di Windows (ad esempio, per proteggersi da utilizzi non autorizzati).
    • Nella chiamata di sistema userfaultfd(), destinata a gestire i page fault (accesso a pagine di memoria non allocate) nello spazio utente, è stata introdotta la possibilità di disabilitare la gestione delle eccezioni che si verificano a livello kernel, per complicare lo sfruttamento di alcune vulnerabilità.
    • Nel sottosistema BPF è stata aggiunta la supporto per lo storage dei dati locale per il task (task-local storage), che consente di legare i dati a uno specifico gestore BPF.
    • La gestione del consumo della memoria da parte dei programmi BPF è stata completamente riprogettata: per controllare l'uso della memoria negli oggetti BPF, invece di memlock rlimit, è stato proposto un controller cgroup.
    • Nel meccanismo BTF (BPF Type Format), che fornisce informazioni per il controllo dei tipi nel pseudocodice BPF, è stata implementata il supporto per i moduli del kernel.
    • Nel'interfaccia di I/O asincrono io_uring è stato aggiunto il supporto per le chiamate di sistema shutdown(), renameat2() e unlinkat(). È stata introdotta la possibilità di specificare un timeout durante la chiamata a io_uring_enter() (è possibile verificare il supporto per l'argomento relativo al timeout utilizando il flag IORING_FEAT_EXT_ARG).
    • L'architettura ia64, utilizzata nei processori Intel Itanium, è stata classificata come 'orfana', il che implica l'interruzione dei test. Hewlett Packard Enterprise ha cessato di accettare ordini per nuove attrezzature Itanium, mentre Intel lo ha fatto già l'anno scorso.
    • È stato interrotto il supporto per i sistemi basati sull'architettura MicroBlaze, privi del blocco di gestione della memoria (MMU). Questi sistemi non sono più comuni.
    • Per l'architettura MIPS è stato introdotto il supporto per il test della copertura del codice (coverage testing) utilizzando lo strumento gcov.
    • È stato aggiunto il supporto per il bus ausiliario virtuale per l'interazione con dispositivi multifunzionali che combinano funzionalità che richiedono driver diversi (ad esempio, schede di rete che supportano Ethernet e RDMA). Il bus può essere utilizzato per assegnare un driver primario e secondario a un dispositivo, nei casi in cui l'uso del sottosistema MFD (Multi-Function Devices) sia problematico.
    • Per l'architettura RISC-V è stato aggiunto il supporto per il sistema di allocazione della memoria CMA (Contiguous Memory Allocator), ottimizzato per l'allocazione di grandi aree contigue di memoria utilizzando la tecnica del page relocation. Sono stati anche implementati strumenti per limitare l'accesso a /dev/mem e per tenere traccia del tempo di elaborazione delle interruzioni.
    • Per i sistemi ARM a 32 bit è stato introdotto il supporto per lo strumento di debug KASan (Kernel Address Sanitizer), che rileva errori nella gestione della memoria. Per gli ARM a 64 bit, l'implementazione di KASan è stata convertita per utilizzare i tag MTE (MemTag).
    • È stata aggiunta la chiamata di sistema epoll_pwait2(), che consente di utilizzare timeout con una precisione al nanosecondo (la chiamata epoll_wait manipola i millisecondi).
    • Nel sistema di compilazione è stata garantita l'emissione di un errore nel tentativo di compilare moduli caricati del kernel, nei quali, mediante il macro MODULE_LICENSE(), non è stata definita la licenza sul codice. Ora, l'errore di compilazione verrà anche generato dall'uso del macro EXPORT_SYMBOL() per le funzioni statiche.
    • È stata aggiunta la supporto per il mapping degli oggetti GEM dalla memoria utilizzata per l'input/output, permettendo di accelerare il funzionamento del framebuffer su alcune architetture.
    • Nel Kconfig è stata interrotta la supporto per Qt4 (è rimasta la supporto per Qt5, GTK e Ncurses).
  • Virtualizzazione e sicurezza
    • Nel system call seccomp() è stata aggiunta la supporto per la modalità di risposta rapida, che consente di determinare molto rapidamente se una particolare system call è consentita o vietata in base a una tabella di autorizzazioni (constant-action bitmap) allegata al processo, senza la necessità di avviare un gestore BPF.
    • Sono stati integrati componenti del kernel per la creazione e gestione di enclave basate sulla tecnologia Intel SGX (Software Guard eXtensions), che consente alle applicazioni di eseguire codice in aree di memoria isolate e crittografate, l'accesso alle quali è limitato al resto del sistema.
    • Nell'ambito dell'iniziativa per limitare l'accesso dallo spazio utente ai registri MSR (model-specific register), è stato vietato la scrittura nel registro MSR_IA32_ENERGY_PERF_BIAS, che consente di modificare la modalità di efficienza energetica del processore ('normal', 'performance', 'powersave').
    • Dalla branch kernel-rt per sistemi in tempo reale è stata trasferita la possibilità di disabilitare la migrazione di compiti ad alta priorità tra CPU.
    • Per i sistemi ARM64 è stata aggiunta la possibilità di applicare tag MTE (MemTag, Memory Tagging Extension) per gli indirizzi di memoria dei gestori dei segnali. L'uso di MTE è attivato specificando l'opzione SA_EXPOSE_TAGBITS in sigaction() e consente di organizzare la verifica della correttezza dell'uso dei puntatori per prevenire l'esploitàzione di vulnerabilità causate da accessi a blocchi di memoria già rilasciati, overflow di buffer, accessi prima dell'inizializzazione e uso al di fuori del contesto attuale.
    • È stato aggiunto il parametro 'DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING', che consente al sottosistema dm-verity di verificare le firme hash dei certificati memorizzati nel keyring secondario. In pratica, questa impostazione consente di verificare non solo i certificati incorporati nel kernel, ma anche i certificati caricati durante l'esecuzione, consentendo così di aggiornare i certificati senza aggiornare l'intero kernel.
    • In User-mode Linux è stata aggiunta la supporto per la modalità suspend-to-idle, che consente di congelare l'ambiente e utilizzare il segnale SIGUSR1 per uscire dalla modalità sospensione.
    • Nel meccanismo virtio-mem, che consente il collegamento e lo scollegamento a caldo della memoria alle macchine virtuali, è stato aggiunto il supporto per la modalità grande blocco (BBM, Big Block Mode), che permette di trasferire o ritirare la memoria in blocchi superiori alla dimensione del blocco di memoria del kernel, necessario per ottimizzare VFIO in QEMU.
    • Nell'implementazione TLS a livello di kernel è stato aggiunto il supporto per il cifrario CHACHA20-POLY1305.
  • Sottosistema di rete
    • Per 802.1Q (VLAN) è stato implementato un meccanismo di gestione dei guasti di connessione (CFM, Connectivity Fault Management), che consente di rilevare, verificare e isolare i guasti nelle reti con ponti virtuali (Virtual Bridged Networks). Ad esempio, il CFM può essere utilizzato per localizzare problemi in reti che coprono più organizzazioni indipendenti, i cui dipendenti hanno accesso solo alla propria attrezzatura.
    • È stato aggiunto il supporto per l'incapsulamento dei pacchetti del protocollo SCTP in pacchetti UDP (RFC 6951), consentendo l'uso di SCTP in reti con traduttori di indirizzi obsoleti che non supportano direttamente SCTP, nonché implementare SCTP su sistemi che non forniscono accesso diretto a livello IP.
    • L'implementazione della tecnologia WiMAX è stata spostata in staging e in futuro è prevista la sua rimozione se non si troveranno utenti che ne hanno bisogno. WiMAX non è più utilizzato nelle reti pubbliche e nell'unico driver nel kernel che può utilizzare WiMAX rimane il driver obsoleto Intel 2400m. Nel configuratore di rete NetworkManager il supporto per WiMAX è stato interrotto nel 2015. Attualmente, WiMax è praticamente completamente sostituito da tecnologie come LTE, HSPA+ e Wi-Fi 802.11n.
    • È stato effettuato un lavoro di ottimizzazione delle prestazioni del trattamento del traffico TCP in ingresso in modalità zerocopy, ovvero senza ulteriori copie in nuovi buffer. Per il traffico di dimensioni medie, che copre decine o centinaia di kilobyte di dati, l'uso di zerocopy invece di recvmsg() è notevolmente più efficiente. Ad esempio, le modifiche implementate hanno permesso di aumentare l'efficienza del trattamento del traffico in stile RPC con messaggi di 32 KB utilizzando zerocopy fino al 60-70%.
    • Aggiunti nuovi chiamate ioctl() per la creazione di ponti di rete che coprono più canali PPP. La funzionalità proposta consente ai frame di spostarsi da un canale all'altro, ad esempio, da PPPoE a una sessione PPPoL2TP.
    • Proseguita l'integrazione nel kernel MPTCP (MultiPath TCP), un'estensione del protocollo TCP per gestire una connessione TCP con la consegna dei pacchetti simultaneamente su più percorsi attraverso diversi interfacce di rete, associate a diversi indirizzi IP. Nel nuovo rilascio è stato implementato il supporto per l'opzione ADD_ADDR per annunciare disponibili indirizzi IP ai quali è possibile connettersi durante l'aggiunta di nuovi flussi a una connessione MPTCP esistente.
    • Aggiunta la possibilità di configurare azioni al superamento del budget di polling delle connessioni (busy-polling). La modalità SO_BUSY_POLL precedentemente disponibile implicava il passaggio a softirq al termine del budget. Per le applicazioni che devono continuare a utilizzare il polling è stata proposta una nuova opzione SO_PREFER_BUSY_POLL.
    • In IPv6 è stata implementata la supporto per le modalità SRv6 End.DT4 e End.DT6, utilizzate per creare L3 IPv4 multitenant VPN e dispositivi VRF (Virtual routing and forwarding).
    • In Netfilter è stata unificata l'implementazione delle espressioni set, il che ha consentito la possibilità di specificare più espressioni per ciascun elemento delle liste set.
    • Nello stack wireless 802.11 sono state aggiunte API per la configurazione dei limiti di potenza SAR, e per i parametri AE PWE e HE MCS. Nel driver Intel iwlwifi è stato aggiunto il supporto per la banda a 6GHz (Ultra High Band). Nel driver Qualcomm Ath11k è stato aggiunto il supporto per la tecnologia di configurazione rapida delle connessioni FILS (Fast Initial Link Setup, standardizzata come IEEE 802.11ai), che consente di eliminare i ritardi durante il roaming durante la migrazione da un punto di accesso all'altro.
  • Apparecchiatura
    • Nel driver amdgpu è stato realizzato il supporto per APU AMD "Green Sardine" (Ryzen 5000) e GPU "Dimgrey Cavefish" (Navi 2), nonché il supporto iniziale per l'APU AMD Van Gogh con core Zen 2 e GPU RDNA 2 (Navi 2). Aggiunto il supporto per i nuovi identificatori APU Renoir (basati su CPU Zen 2 e GPU Vega).
    • Nel driver i915 per schede grafiche Intel è stata implementata la supporto della tecnologia IS (Integer scaling) con un filtro per ingrandire tenendo conto dello stato dei pixel vicini (interpolazione Nearest-neighbor) per determinare il colore dei pixel mancanti. È stato ampliato il supporto per le schede grafiche discrete Intel DG1. È stato implementato il supporto della tecnologia "Big Joiner", presente a partire dai chip Ice Lake / Gen11 e che consente di utilizzare un singolo transcoder per elaborare due flussi, ad esempio, per emettere a uno schermo 8K tramite un DisplayPort. È stata aggiunta una modalità di commutazione asincrona tra due buffer nella memoria video (async flip).
    • Nel driver nouveau è stato aggiunto il supporto iniziale per la GPU NVIDIA basata sull'architettura micro "Ampere" (GA100, GeForce RTX 30xx), al momento limitato agli strumenti per la gestione delle modalità video.
    • È stato aggiunto il supporto per il protocollo 3WIRE, utilizzato nei pannelli LCD. È stato aggiunto il supporto per i pannelli novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 e ABT Y030XX067A 3.0. Si può inoltre sottolineare il supporto per il pannello degli smartphone OnePlus 6 e 6T, che ha permesso di avviare il caricamento sui dispositivi con un kernel non modificato.
    • È stato aggiunto il supporto per il primo controller host USB4 discreto Intel Maple Ridge.
    • È stato aggiunto il supporto per i codec audio Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI e XCVR, Realtek RT715 e Qualcomm SM8250.
    • È stato aggiunto il supporto per le piattaforme ARM, i dispositivi e le piattaforme: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, Mikrotik basato su Marvell Prestera 98DX3236, server con Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, Chromebook "Trogdor", Kobol Helios64, Engicam PX30.Core.
    • È stato integrato il supporto per la console di gioco Ouya basata su NVIDIA Tegra 3.

Contemporaneamente, il Fondo per il software libero latinoamericano ha sviluppato una versione completamente libera del kernel 5.11 — Linux-libre 5.11-gnu, ripulito da elementi di firmware e driver contenenti componenti non liberamente utilizzabili o sezioni di codice il cui utilizzo è limitato dal produttore. In questo nuovo rilascio sono stati ripuliti i driver per qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, nxp audio transceiver e mhi pci controller. È stato aggiornato il codice di pulizia dei blob nei driver e nei sottosistemi amdgpu, btqca, btrtl, btusb, i915 csr. Sono stati disattivati i nuovi blob in m3 rproc, idt82p33 ptp clock e qualcomm arm64.

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