Rilascio del kernel Linux 5.2

Dopo due mesi di sviluppo, Linus Torvalds ha presentato ha rilasciato il kernel Linux 5.2. Tra le modifiche più significative: modalità di operazione di Ext4 senza distinzione tra lettere maiuscole e minuscole, chiamate di sistema separate per il montaggio del file system, driver per GPU Mali 4xx/6xx/7xx, possibilità di gestire le modifiche ai valori sysctl nei programmi BPF, modulo device-mapper dm-dust, protezione contro attacchi MDS, supporto per Sound Open Firmware per DSP, ottimizzazione delle prestazioni BFQ, e completamento della sottosistema PSI (Pressure Stall Information) per l'uso in Android.

Nella nuova versione sono stati integrati 15100 correttivi da 1882 sviluppatori,
la dimensione della patch è di 62 MB (le modifiche hanno interessato 30889 file, aggiungendo 625094 righe di codice e rimuovendo 531864 righe). Circa il 45% di tutte le modifiche presentate in 5.2
sono relative ai driver dei dispositivi, circa il 21% delle modifiche riguardano
aggiornamenti di codice specifici per architetture hardware, 12%
relativo allo stack di rete, 3% — ai file system e 3% ai sottosistemi interni
sottosistemi del kernel. Il 12.4% di tutte le modifiche è stato preparato da Intel, il 6.3% da Red Hat, il 5.4% da Google, il 4.0% da AMD, il 3.1% da SUSE, il 3% da IBM, il 2.7% da Huawei, il 2.7% da Linaro, il 2.2% da ARM, e l'1.6% da Oracle.

Principali novità:

  • Sottosistema disco, I/O e file system
    • Per Ext4 è stata aggiunta supporto È stato introdotto il supporto per il funzionamento senza distinzione di maiuscole e minuscole nei nomi dei file, attivabile solo in associazione a singoli directory vuoti tramite il nuovo attributo «+F» (EXT4_CASEFOLD_FL). Quando questo attributo è impostato su una directory, tutte le operazioni su file e sottodirectory al suo interno verranno eseguite senza tener conto delle maiuscole, incluso il fatto che la distinzione verrà ignorata durante le operazioni di ricerca e apertura dei file (ad esempio, i file Test.txt, test.txt e test.TXT in tali directory saranno considerati uguali). Di default, il FS continua a essere case-sensitive, ad eccezione delle directory con l'attributo «chattr +F»;
    • Sono state uniformate le funzioni di gestione dei caratteri UTF-8 nei nomi dei file, che vengono utilizzate durante le operazioni di confronto e normalizzazione delle stringhe;
    • In XFS è stata aggiunta un'infrastruttura per il monitoraggio dello stato del file system e un nuovo ioctl per richiedere lo stato di funzionalità. È stata implementata una funzionalità sperimentale per la verifica al volo (online scrub) dei contatori del superblock.
    • È stato aggiunto un nuovo modulo device-mapper «dm-dust«, che permette di simulare l'emergere di bad block sui supporti o errori nella lettura del disco. Il modulo facilita il debug e il testing di applicazioni e vari sistemi di archiviazione in condizioni di possibili malfunzionamenti;
    • È stato effettuato significativa ottimizzazione delle prestazioni del pianificatore di input/output BFQ. In condizioni di elevato carico di input/output, le ottimizzazioni apportate consentono di ridurre fino all'80% il tempo di operazioni come l'avvio delle applicazioni;
    • Aggiunta una serie di chiamate di sistema per il montaggio dei file system: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() e move_mount(). Queste chiamate di sistema consentono di gestire separatamente le diverse fasi di montaggio (gestire il superblocco, ottenere informazioni sul file system, montare, attaccare al punto di montaggio), che in precedenza venivano eseguite tramite la chiamata di sistema generale mount(). Le chiamate separate permettono di eseguire scenari di montaggio più complessi e di gestire separatamente operazioni come la riconfigurazione del superblocco, l'attivazione delle opzioni, la modifica del punto di montaggio e il trasferimento in un altro spazio dei nomi. Inoltre, la gestione separata consente di identificare con precisione le cause dei codici di errore e di specificare più fonti per file system stratificati, come overlayfs;
    • Nel’interfaccia per l’input/output asincrono io_uring è stata aggiunta una nuova operazione IORING_OP_SYNC_FILE_RANGE, che esegue azioni equivalenti alla chiamata di sistema sync_file_range(), e inoltre è stata realizzata la possibilità di registrare eventfd con io_uring e ricevere notifiche sul completamento delle operazioni;
    • Per il file system CIFS è stata aggiunta l'ioctl FIEMAP, che offre un mapping efficiente degli extent, e il supporto per le modalità SEEK_DATA e SEEK_HOLE;
    • Nel sottosistema FUSE designato API per la gestione della cache dei dati;
    • In Btrfs, optimizations have been made to the implementation of qgroups, and the speed of fsync execution for files with multiple hard links has been increased. The data integrity check code has been improved, now accounting for possible data corruption in RAM before data is flushed to disk.
    • In CEPH, support for exporting snapshots via NFS has been added.
    • The implementation of NFSv4 mounting in 'soft' mode has been enhanced (when accessing the server fails in 'soft' mode, the call immediately returns an error code, while in 'hard' mode the control is not returned until the FS is available again or a timeout occurs). The new release ensures more accurate timeout handling, faster recovery after a failure, and introduces a new mounting option 'softerr' that allows changing the error code (ETIMEDOUT) returned when a timeout occurs.
    • In the nfsdcld API, which is designed to monitor the state of NFS clients, the ability for the NFS server to correctly track the client's state during reboot has been provided. Thus, the nfsdcld daemon can now act as a handler for nfsdcltrack.
    • For AFS aggiunta byte range locking emulation in files (Byte Range Locking);
  • Virtualizzazione e sicurezza
    • È stata eseguita un'operazione per rimuovere le vulnerabilità nel kernel che permettendo l'esecuzione di codice da aree di memoria scrivibili, bloccando così potenziali falle che potrebbero essere sfruttate durante un attacco.
    • È stato aggiunto un nuovo parametro della riga di comando del kernel "mitigations=", che fornisce un modo semplificato per controllare l'attivazione delle tecniche di protezione contro le vulnerabilità legate all'esecuzione speculativa delle istruzioni nella CPU. L'invio di "mitigations=off" disabilita tutti i metodi esistenti, mentre la modalità predefinita "mitigations=auto" attiva la protezione senza influenzare l'uso dell'Hyper Threading. La modalità "mitigations=auto,nosmt" disabilita ulteriormente l'Hyper Threading, se necessario secondo il metodo di protezione.
    • Aggiunto supporto della firma elettronica secondo GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), sviluppato da Vitalij Chikunov di "Basalt SPO". Nella realizzazione integrata di TLS è stato aggiunto il supporto per AES128-CCM. Nel modulo crypto_simd è stata aggiunta la supporto per gli algoritmi AEAD;
    • In Kconfig aggiunta è stata creata una sezione separata "kernel hardening" con opzioni per aumentare la protezione del kernel. Attualmente, nella nuova sezione sono state raccolte solo impostazioni per attivare i plugin di verifica potenziati di GCC.
    • Codice del kernel quasi esente da espressioni continue case in switch (senza return o break dopo ogni blocco case). Rimangono da correggere 32 su 2311 casi di utilizzo di switch simile, dopodiché durante la compilazione del kernel sarà possibile applicare la modalità «-Wimplicit-fallthrough»;
    • Per l'architettura PowerPC è stata implementata la supporto per meccanismi hardware di limitazione dei percorsi di accesso indesiderati del kernel ai dati nello spazio utente;
    • Aggiunto codice per bloccare attacchi la classe MDS (Microarchitectural Data Sampling) nei processori Intel. È possibile controllare la vulnerabilità del sistema tramite la variabile SysFS «/sys/devices/system/cpu/vulnerabilities/mds». Disponibile due modalità di protezione: completa, che richiede la presenza di un microcodice aggiornato, e bypass, che non garantisce completamente la pulizia dei buffer CPU durante il passaggio di controllo allo spazio utente o al sistema ospite. Per gestire le modalità di protezione è stato aggiunto nel kernel il parametro «mds=», che può assumere i valori «full», «full,nosmt» (+ disabilitazione di Hyper-Threads) e «off»;
    • Nei sistemi x86-64 è stata aggiunta una protezione «stack guard-page» per IRQ, meccanismi di debug e gestori di eccezioni, la cui essenza consiste nella sostituzione al confine con lo stack di pagine di memoria, il cui accesso genera un'eccezione (page-fault);
    • Aggiunta una configurazione sysctl vm.unprivileged_userfaultfd, che regola la possibilità di utilizzare la chiamata di sistema userfaultfd() da processi non privilegiati;
  • Sottosistema di rete
    • Aggiunto Supporto per i gateway IPv6 per le rotte IPv4. Ad esempio, ora è possibile specificare regole di routing del tipo «ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0»;
    • Per ICMPv6 sono state implementate chiamate ioctl icmp_echo_ignore_anycast e icmp_echo_ignore_multicast per ignorare ICMP ECHO per indirizzi anycast e
      indirizzi multicast. Aggiunto Possibilità di limitare l'intensità del trattamento dei pacchetti ICMPv6;
    • Per il protocollo mesh B.A.T.M.A.N. («Better Approach To Mobile Adhoc Networking»), che consente di creare reti decentralizzate, in cui ogni nodo è collegato tramite nodi vicini, aggiunta supporto per la traduzione da multicast a unicast, oltre alla possibilità di gestione tramite sysfs;
    • In ethtool è stato aggiunto è stato aggiunto un nuovo parametro Fast Link Down, che consente di ridurre il tempo per ricevere informazioni sull'evento di disconnessione del link per 1000BaseT (in condizioni normali il ritardo può arrivare fino a 750 ms);
    • È stata aggiunta possibilità binding dei tunnel Foo-Over-UDP a un indirizzo, interfaccia di rete o socket specifici (in precedenza era possibile legare solo tramite una maschera generale);
    • Nel stack wireless è stata garantita la possibilità di implementare gestori
      OWE (Opportunistic Wireless Encryption) nello spazio utente;
    • In Netfilter è stata aggiunta il supporto per la famiglia di indirizzi inet nelle catene nat (adesso è possibile utilizzare una regola di traduzione per gestire sia ipv4 che ipv6, senza separare le regole per ipv4 e ipv6);
    • In netlink è stato aggiunto modalità strict per una rigorosa verifica della correttezza di tutti i messaggi e attributi, in cui non è permesso superare la dimensione attesa degli attributi e è vietato aggiungere dati extra alla fine dei messaggi;
  • Memoria e servizi di sistema
    • Nella chiamata di sistema clone() è stato aggiunto il flag CLONE_PIDFD, il quale, se specificato, restituisce al processo padre un descrittore di file 'pidfd' associato al processo figlio creato. Questo descrittore di file, ad esempio, può essere utilizzato per inviare segnali senza rischiare di incorrere in una condizione di gara (subito dopo l'invio del segnale, il PID target potrebbe essere rilasciato a causa della conclusione del processo e occupato da un altro processo);
    • Per la seconda versione dei cgroups è stata aggiunta la funzionalità del controllore freezer, che consente di arrestare l'operazione in un cgroup e temporaneamente liberare alcune risorse (CPU, input/output e potenzialmente anche memoria) per eseguire altri compiti. La gestione avviene tramite i file di controllo cgroup.freeze e cgroup.events nella gerarchia dei cgroup. Scrivere 1 in cgroup.freeze congela i processi nel cgroup corrente e in tutti i gruppi figli. Poiché il congelamento richiede un certo tempo, è stato inoltre proposto il file cgroup.events tramite il quale è possibile verificare il completamento dell'operazione;
    • Garantito l'esportazione degli attributi della memoria associata a ciascun nodo in sysfs, che consente di determinare dallo spazio utente la natura del trattamento delle banche di memoria nei sistemi con memoria eterogenea;
    • È stato migliorato il sottosistema PSI (Pressure Stall Information), che consente di analizzare le informazioni sui tempi di attesa per ottenere diverse risorse (CPU, memoria, input/output) per specifici compiti o set di processi in cgroup. Con PSI, i gestori nello spazio utente possono valutare più accuratamente il livello di carico del sistema e il tipo di rallentamento rispetto al Load Average. Nella nuova versione è stata garantita la possibilità di configurare i limiti di sensibilità e la possibilità di utilizzare la chiamata poll() per ricevere notifiche quando i valori di soglia impostati vengono attivati in un determinato intervallo di tempo. Questa funzione consente di organizzare in Android il monitoraggio della carenza di memoria in una fase iniziale, identificare la fonte dei problemi e terminare le app non essenziali, evitando l'insorgere di problemi visibili per l'utente. Nei test di stress, gli strumenti di monitoraggio dell'uso della memoria basati su PSI hanno mostrato un tasso di falsi positivi dieci volte inferiore rispetto alle statistiche vmpressure.
    • È stata ottimizzata la verifica del codice per i programmi BPF, che ora eseguono controlli fino a 20 volte più velocemente per programmi di grandi dimensioni. L'ottimizzazione ha consentito di aumentare il limite della dimensione dei programmi BPF da 4096 a un milione di istruzioni;
    • Per i programmi BPF hanno ricevuto la possibilità di accesso ai dati globali, che consente di definire variabili e costanti globali nei programmi;
    • Aggiunto API, consentendo di controllare dai programmi BPF le modifiche ai parametri sysctl;
    • Per l'architettura MIPS32 è stato implementato un compilatore JIT per la macchina virtuale eBPF;
    • Per l'architettura PowerPC a 32 bit è stata aggiunta la supporto per lo strumento di debug KASan (Kernel address sanitizer), che consente di rilevare errori nella gestione della memoria;
    • Sui sistemi x86-64 è stata rimossa la limitazione sul posizionamento dei dump di stato in caso di crash del kernel (crash-dump) in aree di memoria superiori a 896MB;
    • Per l'architettura s390 è stata implementata la supporto per la randomizzazione dello spazio degli indirizzi del kernel (KASLR) e la possibilità di verifica delle firme digitali durante il caricamento del kernel tramite kexec_file_load();
    • Per l'architettura PA-RISC è stata aggiunta la supporto per il debugger del kernel (KGDB), i punti di interruzione e kprobes;
  • Attrezzature
    • È stato incluso il driver Lima per GPU Mali 400/450, utilizzato in molti vecchi chip basati su architettura ARM. Per i GPU Mali più recenti, è stato aggiunto il driver Panfrost, che supporta i chip basati sulle microarchitetture Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) e Bifrost (Mali G3x, G5x, G7x);
    • È stato aggiunto il supporto per i dispositivi audio che utilizzano firmware aperti Sound Open Firmware (SOF). Nonostante la disponibilità di driver aperti, il codice del firmware per i chip audio rimaneva ancora chiuso e fornito in formato binario. Il progetto Sound Open Firmware è stato sviluppato da Intel per creare firmware aperti per chip DSP, legati all'elaborazione audio (in seguito, anche Google si è unito allo sviluppo). Attualmente, nell'ambito del progetto, sono già stati preparati firmware aperti per i chip audio delle piattaforme Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake e IceLake;
    • Nel driver DRM Intel (i915) è stato aggiunto il supporto per i chip
      Elkhartlake (Gen11). Sono stati aggiunti identificatori PCI per i chip Comet Lake (Gen9). È stata stabilizzata la supporto per i chip Icelake, per i quali sono stati aggiunti anche identificatori PCI per i dispositivi.
      Abilitato
      modalità di commutazione asincrona tra due buffer nella memoria video (async flip) durante le operazioni di scrittura tramite mmio, che ha portato a un notevole aumento delle prestazioni di alcune applicazioni 3D (ad esempio, le prestazioni nel test 3DMark Ice Storm sono aumentate del 300-400%). Aggiunta supporto per la tecnologia HDCP2.2 protezione dei contenuti digitali ad alta larghezza di banda (High-bandwidth Digital Content Protection) per la crittografia del segnale video trasmesso tramite HDMI;
    • Nel driver amdgpu per GPU Vega20 aggiunta supporto RAS (Reliability, Availability, Serviceability) e supporto sperimentale per il sottosistema SMU 11, che ha sostituito la tecnologia Powerplay. Per GPU Vega12 aggiunta supporto per la modalità BACO (Bus Active, Chip Off). Aggiunto il supporto iniziale per XGMI, un bus ad alta velocità (PCIe 4.0) per la connessione della GPU. Nel driver amdkfd sono stati aggiunti identificatori mancanti per le schede basate su GPU Polaris10;
    • Nel driver Nouveau è stato aggiunto il supporto per schede basate sul chipset NVIDIA Turing 117 (TU117, utilizzato nella GeForce GTX 1650). In
      kconfig aggiunta impostazione per disattivare le funzionalità obsolete che non sono più utilizzate nelle versioni attuali di libdrm;
    • Nell'API DRM e nel driver amdgpu è stato aggiunto il supporto per oggetti di sincronizzazione "timeline", che consentono di evitare i tradizionali blocchi.
    • Dal ramo staging è stato trasferito il driver vboxvideo per la GPU virtuale VirtualBox nel nucleo principale;
    • Aggiunto il driver aspeed per il chip GFX SoC ASPEED;
    • Supporto aggiunto per i SoC ARM e le schede Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510;
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Contemporaneamente, il Fondo latinoamericano per il software libero ha formato
una variante kernel 5.2 completamente liberoLinux-libre 5.2-gnu, ripulito da elementi di firmware e driver contenenti componenti o porzioni di codice non liberi, la cui area di applicazione è limitata dal produttore. La nuova versione include il caricamento dei file
Sound Open Firmware. Caricamento dei blob disabilitato nei driver
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp e ucsi_ccg. Aggiornato il codice di pulizia dei blob nei driver e nelle sottosistemi ixp4xx, imx-sdma, amdgpu, nouveau e goya, così come nella documentazione per il microcodice. La pulizia dei blob nel driver r8822be è stata interrotta a causa della sua rimozione.

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