Versione del kernel Linux 5.13

Dopo due mesi di sviluppo, Linus Torvalds ha presentato il rilascio del kernel Linux 5.13. Tra le modifiche più significative: il file system EROFS, il supporto iniziale per i chip Apple M1, il controller cgroup «misc», la cessazione del supporto per /dev/kmem, il supporto per le nuove GPU Intel e AMD, la possibilità di chiamare direttamente le funzioni del kernel dai programmi BPF, la randomizzazione dello stack del kernel per ogni chiamata di sistema, la possibilità di compilarlo in Clang con protezione CFI (Control Flow Integrity), il modulo LSM Landlock per ulteriori restrizioni sui processi, un dispositivo audio virtuale basato su virtio, e la modalità multi-shot in io_uring.

Nella nuova versione sono stati inclusi 17189 miglioramenti da 2150 sviluppatori (il numero più alto nella storia), la dimensione della patch è di 60 MB (le modifiche hanno interessato 12996 file, sono state aggiunte 794705 righe di codice e rimosse 399590 righe). Circa il 47% di tutte le modifiche presentate in 5.13 riguarda i driver dei dispositivi, circa il 14% delle modifiche è legato all'aggiornamento del codice specifico per le architetture hardware, il 13% è associato allo stack di rete, il 5% ai file system e il 4% ai sottosistemi interni del kernel.

Novità principali:

  • Sottosistema di disco, input/output e file system
    • È stato aggiunto il supporto per il file system EROFS (Enhanced Read-Only File System), proposto da Huawei per l'utilizzo su partizioni disponibili in modalità sola lettura. Il nuovo file system supporta la memorizzazione dei dati in forma compressa e, rispetto ad Ext4, dimostra prestazioni simili nell'esecuzione delle operazioni di lettura sequenziale, ma supera Ext4 di diverse volte nell'accesso casuale ai dati. Ad esempio, con un livello di compressione 4 e testando su server con un disco rigido, il file system EROFS ha superato Ext4 nelle operazioni di lettura casuale di oltre sei volte, e utilizzando uno smartphone Android con Flash quasi tre volte. Come in altri file system sola lettura, la struttura di EROFS è notevolmente semplificata grazie all'eliminazione di alcune aree di metadati durante l'implementazione, come la bitmap dei blocchi liberi.
    • Per il file system SMB3 è stata implementata l'opzione di montaggio «rasize», che consente di definire la dimensione della finestra di lettura anticipata (readahead) per migliorare le prestazioni di alcuni tipi di carico.
    • Nel file system ext4 è stata garantita la riscrittura degli elementi delle directory al momento dell'eliminazione dei file. In ext4 è inoltre consentito l'uso simultaneo della modalità senza considerazione del maiuscolo e della crittografia.
    • Nel file system exFAT è stata aggiunta la possibilità di utilizzare il comando ioctl FITRIM (discard), per informare il dispositivo dei blocchi non utilizzati nel file system.
    • Nel file system XFS è stata introdotta la possibilità di recuperare spazio dall'ultima gruppo di allocazione nel file system, rappresentando il primo passo verso la realizzazione della funzione di riduzione della dimensione delle partizioni esistenti nel file system XFS.
    • È stata aggiunta una nuova chiamata di sistema quotactl_path, che si distingue da quotactl in quanto permette di gestire le quote senza passare attraverso un file di dispositivo speciale, ma specificando il percorso del punto di montaggio del file system.
    • Nell'ambito del meccanismo fanotify è stata ampliata la gamma di possibilità disponibili per gli utenti non privilegiati. Ad esempio, analogamente a quanto avviene con inotify, ora è possibile monitorare gli eventi OPEN, ACCESS, MODIFY e CLOSE per file e directory senza i diritti SYS_CAP_ADMIN.
  • Memoria e servizi di sistema
    • È stato aggiunto un nuovo controller cgroup — "Misc" (CONFIG_CGROUP_MISC), progettato per limitare e monitorare le risorse scalari, che possono essere gestite utilizzando un semplice contatore e limitate impostando valori massimi. Tra gli esempi di utilizzo del nuovo controller cgroup, è menzionata la gestione degli identificatori di spazio degli indirizzi utilizzati nel meccanismo AMD SEV (Secure Encrypted Virtualization).
    • Nell'interfaccia di input/output asincrono io_uring per le richieste POLL è stato implementato un modo "multi-shot", dove POLL non viene rimosso dopo la generazione dell'evento, ma rimane attivo e può generare più eventi.
    • È stato trasferito dal ramo realtime del kernel il codice che gestisce le interruzioni generate da software nei thread del kernel, consentendo loro di essere sostituiti da processi di priorità superiore.
    • È stata aggiunta una libreria interna netfs, in cui sono state estratte le funzioni standard utilizzate nei file system di rete.
    • Per l'architettura PowerPC è stata implementata la supporto per gli spazi dei nomi temporali (time namespaces), che consentono di utilizzare un proprio tempo all'interno di un contenitore.
    • Per l'architettura RISC-V è stato implementato il supporto per kexec, crash dump, kprobe e l'avvio del kernel in loco (execute-in-place, esecuzione dal supporto originale, senza copia in RAM).
    • Negli programmi di tracciamento BPF è stata introdotta la possibilità di utilizzare uno storage locale per il compito (task-local storage), che garantisce prestazioni superiori grazie all'associazione dei dati a un specifico handler BPF.
    • È stato realizzato un nuovo meccanismo per la chiamata diretta delle funzioni del kernel dalle applicazioni BPF, già utilizzato nell'implementazione degli algoritmi di sovraccarico TCP. Per garantire la sicurezza, le funzioni chiamate devono essere esplicitamente definite in una lista bianca.
    • Nel sistema di tracciamento delle funzioni ftrace è stata aggiunta l'opzione func-no-repeats, che consente di riflettere le chiamate funzionali consecutive ripetute sotto forma di contatore.
    • Nella chiamata di sistema userfaultfd(), progettata per gestire i page fault (accesso a pagine di memoria non allocate) nello spazio utente, è stata aggiunta la possibilità di gestire fault parziali, nei quali la pagina di memoria è presente, ma non c'è una registrazione nella tabella delle pagine di memoria.
    • È stato interrotto il supporto per il file speciale /dev/kmem, che consente di accedere a tutto lo spazio indirizzabile del kernel. Questo file è stato considerato obsoleto e causa di problemi di sicurezza.
    • Per i chip Intel è stato realizzato un nuovo driver per la gestione della refrigerazione, che consente di ridurre la frequenza della CPU in caso di rischio di surriscaldamento. A differenza del meccanismo di attivazione TCC (Thermal Control Circuit) esistente, il nuovo driver manipola valori relativi, ovvero può ridurre la frequenza all'inizio di un significativo aumento della temperatura, senza attendere di superare una soglia critica.
  • Virtualizzazione e sicurezza
    • È stato incluso un modulo LSM per l'isolamento delle applicazioni, Landlock, che consente di limitare l'interazione con l'ambiente esterno di un gruppo di processi ed è stato progettato tenendo conto meccanismi di isolamento come XNU Sandbox, FreeBSD Capsicum e OpenBSD Pledge/Unveil. La logica di concessione degli accessi è definita tramite un programma BPF, ma a differenza di seccomp-bpf, Landlock non filtra le chiamate di sistema e i loro argomenti, ma permette di limitare l'uso degli oggetti del kernel, come le gerarchie dei file. Con Landlock, qualsiasi processo, incluso quello non privilegiato, può isolarsi in modo sicuro e prevenire qualsiasi eventuale bypass dell'isolamento in caso di vulnerabilità o modifiche dannose nell'applicazione. Landlock consente a un processo di creare ambienti isolati protetti, implementati come un ulteriore strato sopra i meccanismi esistenti di controllo degli accessi.
    • È stata aggiunta la possibilità di randomizzare gli offset nello stack del kernel durante l'elaborazione delle chiamate di sistema per complicare gli attacchi allo stack. La sostanza della protezione proposta consiste nella selezione di un offset casuale dello stack per ogni chiamata di sistema, il che rende difficile determinare la disposizione dello stack in memoria anche nel caso si ottenessero informazioni sugli indirizzi, poiché al successivo invocamento della chiamata di sistema l'indirizzo base dello stack cambia. Per attivare la randomizzazione sono stati proposti i parametri della riga di comando del kernel "randomize_kstack_offset=on/off" e la configurazione CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. I costi aggiuntivi sono stimati approssimativamente in una perdita di prestazioni dell'1%.
    • È stato aggiunto il supporto per la compilazione del kernel con l'inclusione nel compilatore Clang del meccanismo di protezione CFI (Control Flow Integrity), che aggiunge un controllo prima di ogni chiamata indiretta di funzione per rilevare alcune forme di comportamento indefinito, che potrebbero potenzialmente portare a violazioni dell'ordine normativo di esecuzione (control flow) a causa dell'applicazione di exploit che modificano i puntatori alle funzioni memorizzati in memoria. Per attivare il CFI è stato proposto il parametro CONFIG_CFI_CLANG.
    • Nel servizio di archiviazione delle chiavi di crittografia fornito dal kernel, il meccanismo delle chiavi attendibili (Trusted Keys) ora comprende non solo le chiavi dai moduli TPM, ma anche quelle degli ambienti TEE (Trusted Execution Environment). Per gestire la sorgente delle chiavi attendibili è stato proposto il parametro di avvio "trusted.source". Inoltre, è stata aggiunta la possibilità di elaborare chiavi attendibili nel formato ASN.1.
    • È stato aggiunto un parametro per il caricamento proattivo dell'elenco dei certificati revocati durante l'avvio del kernel. È stato risolto il problema (CVE-2020-26541) relativo all'ignoranza nel blacklistare i certificati UEFI Secure Boot forniti nel formato EFI_CERT_X509_GUID, il che consentiva di avviare il sistema con un certificato revocato.
    • Nel sottosistema crittografico del kernel è stato aggiunto il supporto per la verifica delle firme digitali ECDSA basate su curve ellittiche.
    • È stata implementata la possibilità di verificare le politiche SELinux tramite il sottosistema IMA (Integrity Measurement Architecture), che garantisce il mantenimento di un database di hash per il controllo dell'integrità dei dati.
  • Sottosistema di rete
    • È stata rimossa la supporto per la tecnologia WiMAX, che non è più utilizzata nelle reti pubbliche, mentre nel kernel l'unico driver utilizzabile per WiMAX rimane il vecchio driver Intel 2400m. Nel configuratore di rete NetworkManager il supporto per WiMAX è stato interrotto nel 2015. Attualmente, WiMax è praticamente completamente sostituita da tecnologie come LTE, HSPA+ e Wi-Fi 802.11n.
    • Aggiunto driver per l'adattatore di rete MANA (Microsoft Azure Network Adapter).
    • Nel driver ath11k è stato aggiunto il supporto per i moduli wireless Qualcomm QCN9074 con supporto 802.11ax.
    • Nel driver iwlwifi è stata implementata la possibilità di scansione passiva dei canali nella banda 6GHz. Per l'Ucraina è stato aggiunto il supporto per l'attivazione/disattivazione di IEEE 802.11ax basato su parametri del BIOS.
    • È stata ottimizzata la sottosistema XDP (eXpress Data Path), che permette di manipolare i pacchetti di rete prima che vengano elaborati dallo stack di rete del kernel Linux. I test effettuati mostrano un incremento delle prestazioni di XDP del 4-8%. Per i dispositivi virtio, il guadagno prestazionale dell'elaborazione software AF_XDP può arrivare fino al 33%.
    • In ICMP è stato implementato il supporto per messaggi PROBE estesi, come definito nella RFC 8335.
    • Proseguono le integrazioni nel kernel di MPTCP (MultiPath TCP), l'estensione del protocollo TCP per gestire le connessioni TCP con la consegna dei pacchetti simultaneamente su più percorsi attraverso diversi interfacce di rete, legati a diversi indirizzi IP.. Nella nuova versione è stato aggiunto il supporto per sockopt per impostare opzioni TCP tipiche. È stata implementata la possibilità di resettare singoli sottotrain (subflow).
    • Nel netfilter è stato aggiunto il supporto per la gestione delle risorse tramite una gerarchia unificata di cgroups v2.
    • In ethtool è stata realizzata un'interfaccia per la lettura delle statistiche IEEE MIB con supporto mlx5 e bnxt. Ai driver di rete è consentito estrarre dati arbitrari dalla SFP EEPROM, manipolando non come una combinazione di offset+dimensione, ma a pagine di memoria.
  • Apparecchiatura
    • È stato implementato il supporto iniziale per il chip ARM Apple M1, comprendente il controllore delle interruzioni, il timer, UART, SMP, funzioni per la gestione dell'I/O e MMIO. Il reverse engineering della GPU non è ancora completato, per l'uscita è previsto supporto per il framebuffer e la console via porta seriale.
    • È proseguita la pulizia del kernel da driver obsoleti, rimuovendo i driver 'gasket' (Google ASIC), 'sysace', 'umem' e diversi vecchi driver per porte seriali.
    • Dopo 13 anni nella branch di staging, il driver 'comedi' è stato stabilizzato e trasferito nel set principale per il supporto dei dispositivi di acquisizione dati.
    • Aggiunto il driver GUD (Generic USB Display) con l'implementazione di un driver di base per schermi e adattatori TV collegati tramite interfaccia USB. Il driver fornisce proprietà DRM (Direct Rendering Manager) per la rotazione dell'immagine, la gestione della luminosità, l'accesso all'EDID, la configurazione delle modalità video e il collegamento della TV, che possono essere utilizzate come base per la creazione di driver per dispositivi specifici.
    • Aggiunto il driver audio 'virtio' con l'implementazione di un dispositivo audio virtuale, che può essere utilizzato nei sistemi guest per l'uscita e la registrazione audio senza la necessità di passare l'accesso alla scheda audio e senza emulazione.
    • Nel driver amdgpu è stato aggiunto il supporto iniziale per la GPU Aldebaran (gfx90a). È stato abilitato il supporto iniziale per la tecnologia di sincronizzazione adattiva FreeSync per HDMI (precedentemente disponibile solo per DisplayPort), che permette di regolare la frequenza di aggiornamento delle informazioni sullo schermo. È stato abilitato il supporto per ASSR (Alternate Scrambler Seed Reset). Aggiunto ioctl per richiedere funzionalità relative alla codifica e decodifica video. Aggiunto il modo CONFIG_DRM_AMD_SECURE_DISPLAY per rilevare modifiche nei display che mostrano informazioni critiche. Aggiunto supporto per il meccanismo di risparmio energetico ASPM.
    • Nel driver i915 per schede grafiche Intel è stato incluso il supporto per i chip Intel Alderlake-S. Aggiunto supporto per eDP MSO (Embedded DisplayPort Multi-SST Operation).
    • Aggiunto il supporto per il controller di gioco Luna (Amazon), così come per i touchscreen Hycon HY46XX, ILITEK Lego Series e MStar MSG2638.

Nel frattempo, la Fondazione per il Software Libero dell'America Latina ha creato una versione completamente libera del kernel 5.11 — Linux-libre 5.11-gnu, ripulita da elementi di firmware e driver contenenti componenti non liberi o sezioni di codice la cui applicazione è limitata dal produttore. Nella nuova versione è stata eseguita la pulizia del driver comedi. È stata interrotta la pulizia dei driver cyclades, isicom tty e i2400m wimax, che sono stati rimossi dal kernel. È stato aggiornato il codice per la pulizia dei blob nei driver e nelle sottosistemi amdgpu, i915 csr, r8152 usb, mhi bus, x86 touchscreen 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