Rilascio del kernel Linux 5.2

Dopo due mesi di sviluppo, Linus Torvalds ha presentato rilascio del kernel Linux 5.2. Tra le modifiche più significative: modalità di funzionamento Ext4 che non tiene conto del case sensitive, chiamate di sistema separate per il montaggio del FS, driver per GPU Mali 4xx/6xx/7xx, possibilità di gestione delle modifiche ai valori sysctl nei programmi BPF, modulo device-mapper dm-dust, protezione contro gli attacchi MDS, supporto per Sound Open Firmware per DSP, ottimizzazione delle prestazioni BFQ, realizzazione della sottosistema PSI (Pressure Stall Information) per l'uso in Android.

Nella nuova versione sono stati inclusi 15100 aggiornamenti da 1882 sviluppatori,
la dimensione della patch è di 62 MB (le modifiche hanno coinvolto 30889 file, aggiunte 625094 righe di codice, rimosse 531864 righe). Circa il 45% di tutte le modifiche presentate nella 5.2
è legato ai driver dei dispositivi, circa il 21% delle modifiche ha
a che fare con l'aggiornamento del codice specifico per architetture hardware, il 12%
è correlato allo stack di rete, il 3% ai filesystem e il 3% ai sottosistemi interni
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, 2.7% da Linaro, 2.2% da ARM, 1.6% da Oracle.

Principali novità:

  • Sottosistema di disco, input/output e file system
    • Per Ext4 è stata aggiunta highlightsFromPoint() la modalità di funzionamento case insensitive nei nomi dei file, che viene attivata solo in relazione a singoli cataloghi vuoti utilizzando il nuovo attributo «+F» (EXT4_CASEFOLD_FL). Quando questo attributo viene impostato su una cartella, tutte le operazioni con file e sottocartelle al suo interno verranno eseguite senza considerare il case sensibile, incluso il fatto che il case sarà ignorato nelle operazioni di ricerca e apertura di file (ad esempio, i file Test.txt, test.txt e test.TXT in tali cartelle saranno considerati identici). Di default, il FS continua a essere case sensitive, eccetto per le cartelle con l'attributo «chattr +F»;
    • Sono state unificate le funzioni di gestione dei caratteri UTF-8 nei nomi dei file, che vengono applicate durante le operazioni di confronto e normalizzazione delle stringhe;
    • In XFS è stata aggiunta un'infrastruttura per il monitoraggio dello stato del filesystem e un nuovo ioctl per richiedere lo stato di funzionalità. È stata implementata una funzione sperimentale per la verifica online (online scrub) dei contatori superblock.
    • È stato aggiunto un nuovo modulo device-mapper «dm-dust», che consente di simulare l'insorgere di settori difettosi su un'unità o di errori nella lettura da un disco. Il modulo facilita il debug e il collaudo di applicazioni e vari sistemi di archiviazione in condizioni di possibili guasti;
    • Condotta ottimizzazione significativa delle prestazioni del pianificatore di input/output BFQ. In condizioni di elevato carico di input/output, le ottimizzazioni apportate permettono fino all'80% di riduzione del 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 del montaggio (gestire il superblocco, ottenere informazioni sul FS, montare, allegare a un punto di montaggio), che in precedenza venivano eseguite tramite una chiamata di sistema generale mount(). Le chiamate separate offrono la possibilità di eseguire scenari di montaggio più complessi e di effettuare operazioni distinte 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 stabilire più fonti per file system a strati, 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(), ed è stata implementata la possibilità di registrare eventfd con io_uring e di ricevere notifiche al termine delle operazioni;
    • Per il file system CIFS è stato aggiunto ioctl FIEMAP, che fornisce un mapping efficiente degli extent, così come il supporto per le modalità SEEK_DATA e SEEK_HOLE;
    • Nella sottosistema FUSE è stato proposto API per la gestione della cache dei dati;
    • In Btrfs è stata ottimizzata l'implementazione dei qgroups e aumentata la velocità di esecuzione di fsync per file con più hard link. Migliorato il codice di verifica dell'integrità dei dati, che ora tiene conto di possibili danneggiamenti delle informazioni in RAM prima di scrivere i dati su disco;
    • In CEPH è stata aggiunta la supporto per l'esportazione di snapshot tramite NFS;
    • Migliorata l'implementazione del montaggio NFSv4 in modalità "soft" (in caso di errore di accesso al server in modalità "soft", la chiamata restituisce immediatamente un codice di errore, mentre in modalità "hard" il controllo non viene restituito fino alla ripristino della disponibilità del FS o al timeout). Nella nuova versione è stata garantita una gestione più precisa del timeout, accelerata il ripristino dopo il guasto e aggiunta una nuova opzione di montaggio "softerr", che consente di modificare il codice di errore (ETIMEDOUT) restituito in caso di timeout;
    • Nell'API nfsdcld, progettato per monitorare lo stato dei client NFS, è stata fornita la possibilità di seguire correttamente lo stato del client da parte del server NFS durante il riavvio. Pertanto, il demone nfsdcld può ora fungere da gestore nfsdcltrack;
    • Per AFS è stata aggiunta emulazione dei blocchi di intervalli di byte nei file (Blocco intervallo byte);
  • Virtualizzazione e sicurezza
    • È stato effettuato un lavoro per rimuovere le aree nel kernel che consentono l'esecuzione di codice da aree di memoria mappate come scrivibili, bloccando così potenziali vulnerabilità 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 gestire l'attivazione di determinate tecniche di protezione contro vulnerabilità legate all'esecuzione speculativa delle istruzioni nella CPU. L'impostazione "mitigations=off" disattiva tutti i metodi disponibili, mentre la modalità predefinita "mitigations=auto" attiva la protezione, senza influenzare l'uso di Hyper Threading. La modalità "mitigations=auto,nosmt" disattiva anche Hyper Threading, se richiesto dal metodo di protezione.
    • È stata aggiunta supporto per la firma elettronica secondo GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), sviluppato da Vitaly Chikunov di "Bazalt SPO". Nella realizzazione integrata di TLS è stato aggiunto il supporto per AES128-CCM. Nel modulo crypto_simd è stato aggiunto il supporto per algoritmi AEAD;
    • In Kconfig è stata aggiunta una sezione separata "kernel hardening" con opzioni per rafforzare la protezione del kernel. Attualmente, nella nuova sezione sono raccolte solo impostazioni per attivare i plugin di verifica GCC;
    • Il codice del kernel è quasi è stato rimosso privo di espressioni cascase non terminate in switch (senza return o break dopo ciascun blocco case). Rimangono 32 casi su 2311 di utilizzo simile di switch da correggere, dopodiché, durante la compilazione del kernel, sarà possibile applicare la modalità "-Wimplicit-fallthrough";
    • Per l'architettura PowerPC è stato implementato il supporto per meccanismi hardware che limitano i percorsi di accesso indesiderati del kernel ai dati nell'area utente;
    • È stato aggiunto il codice per il blocco attacchi la classe MDS (Microarchitectural Data Sampling) nei processori Intel. È possibile verificare l'esposizione del sistema alla vulnerabilità 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 guest. Per gestire le modalità di protezione, è stato aggiunto nel kernel il parametro "mds=", che può assumere i valori "full", "full,nosmt" (+ disabilitazione degli Hyper-Threads) e "off";
    • Nei sistemi x86-64 per IRQ, meccanismi di debug e handler delle eccezioni è stata aggiunta la protezione "stack guard-page", la cui essenza è la sostituzione al confine con lo stack delle pagine di memoria, il cui accesso genera un'eccezione (page-fault);
    • Aggiunta la configurazione sysctl vm.unprivileged_userfaultfd, che gestisce la possibilità di utilizzare la chiamata di sistema userfaultfd() da processi non privilegiati;
  • Sottosistema di rete
    • È stata aggiunta supporto per gateway IPv6 per rotte IPv4. Ad esempio, ora è possibile specificare regole di instradamento del tipo "ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0";
    • Per ICMPv6 sono stati implementati le chiamate ioctl icmp_echo_ignore_anycast e icmp_echo_ignore_multicast per ignorare ICMP ECHO per anycast e
      indirizzi multicast. È stata aggiunta possibilità di limitare l'intensità dell'elaborazione 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, è stata aggiunta supporto per la traduzione da multicast a unicast, nonché possibilità di gestione tramite sysfs;
    • In ethtool è stata aggiunta nuovo parametro Fast Link Down, che consente di ridurre il tempo di arrivo delle informazioni sull'evento di disconnessione del link per 1000BaseT (in condizioni normali il ritardo può arrivare a 750ms);
    • È stata introdotta la possibilità binding dei tunnel Foo-Over-UDP a un indirizzo specifico, interfaccia di rete o socket (in precedenza il binding veniva effettuato solo tramite l'indirizzo generale);
    • Nel stack wireless è garantita possibilità di implementare gli handler
      OWE (Opportunistic Wireless Encryption) nello spazio utente;
    • In Netfilter nelle catene nat è stato aggiunto il supporto per la famiglia di indirizzi inet (ad esempio, ora è possibile utilizzare una regola di traduzione per gestire ipv4 e ipv6, senza separare le regole per ipv4 e ipv6);
    • In netlink è stata aggiunta modalità strict per il controllo rigoroso della correttezza di tutti i messaggi e attributi, nel quale non è consentito superare la dimensione prevista degli attributi e vietato aggiungere dati supplementari 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», identificato con il processo figlio creato. Questo descrittore di file, ad esempio, può essere utilizzato per inviare segnali senza temere di incorrere in condizioni di gara (subito dopo l'invio del segnale, il PID di destinazione può essere liberato a causa della conclusione del processo e occupato da un altro processo);
    • Per la seconda versione dei cgroups è stata aggiunta la funzionalità del controller freezer, che consente di sospendere l'attività in un cgroup e liberare temporaneamente alcune risorse (CPU, input/output e potenzialmente anche memoria) per l'esecuzione di altri compiti. La gestione avviene tramite i file di controllo cgroup.freeze e cgroup.events nell'albero dei cgroup. Scrivere 1 in cgroup.freeze congela i processi nell'attuale cgroup e in tutti i gruppi figli. Poiché il congelamento richiede del tempo, è stato inoltre proposto il file cgroup.events tramite il quale è possibile sapere quando l'operazione è completata;
    • Fornito l'esportazione degli attributi di memoria, associati a ciascun nodo in sysfs, il che consente di determinare, dallo spazio utente, la natura dell'elaborazione delle banche di memoria nei sistemi con memoria eterogenea;
    • Raffinato 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 compiti specifici o set di processi in cgroup. Con PSI, i gestori nello spazio utente possono valutare più precisamente il livello di carico del sistema e la natura del rallentamento, rispetto al Load Average. Nella nuova versione è stata assicurata la possibilità di configurare le soglie di sensibilità e di utilizzare la chiamata poll() per ricevere notifiche sul verificarsi dei valori soglia impostati nel determinato intervallo di tempo. Questa possibilità consente di organizzare in Android il monitoraggio della carenza di memoria in una fase iniziale, determinare la fonte dei problemi e terminare applicazioni non importanti, senza arrivare a creare problemi visibili per l'utente. Durante i test di stress, gli strumenti di monitoraggio dell'uso della memoria basati su PSI hanno mostrato 10 volte meno falsi allarmi rispetto alle statistiche di vmpressure;
    • È stata ottimizzata l'implementazione del codice per il controllo dei programmi BPF, riuscendo a eseguire il controllo per programmi di grandi dimensioni fino a 20 volte più velocemente. L'ottimizzazione ha permesso di aumentare il limite della dimensione dei programmi BPF da 4096 a un milione di istruzioni;
    • Per i programmi BPF fornita la possibilità di accedere ai dati globali, consentendo di definire variabili e costanti globali nei programmi;
    • Aggiunto API, che consente di controllare dalle 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 identifica errori nella gestione della memoria;
    • Sui sistemi x86-64 è stato rimosso il limite di 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 al 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 le kprobes;
  • Apparecchiatura
    • È stato incluso il driver Lima per GPU Mali 400/450, utilizzato in molte schede più vecchie basate sull'architettura ARM. Per le GPU Mali più recenti è stato aggiunto il driver Panfrost, che supporta chip basati sulle microarchitetture Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) e Bifrost (Mali G3x, G5x, G7x);
    • È stata aggiunta la supporto per i dispositivi audio che utilizzano firmware aperti Sound Open Firmware (SOF). Nonostante la presenza di driver aperti, il codice dei firmware per i chip audio è rimasto chiuso e fornito in forma binaria. Il progetto Sound Open Firmware è stato sviluppato da Intel per creare firmware aperti per i chip DSP correlati all'elaborazione audio (in seguito al progetto si è unito anche Google). Attualmente, il progetto ha già preparato firmware aperti per chip audio delle piattaforme Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake e IceLake;
    • Nel driver DRM Intel (i915) è stata aggiunta la 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 ulteriori identificatori PCI.
      Abilitato
      modalità di commutazione asincrona tra due buffer nella memoria video (async flip) durante le operazioni di scrittura tramite mmio, che ha notevolmente aumentato le prestazioni di alcune applicazioni 3D (ad esempio, le prestazioni nel test 3DMark Ice Storm sono aumentate del 300-400%). Aggiunta la supporto della tecnologia HDCP2.2 (High-bandwidth Digital Content Protection) per la crittografia del segnale video trasmesso tramite HDMI;
    • Nel driver amdgpu per la GPU Vega20 è stata aggiunta supporto RAS (Reliability, Availability, Serviceability) e supporto sperimentale per la sottosistema SMU 11, che sostituisce la tecnologia Powerplay. Per GPU Vega12 è stata aggiunta supporto per la modalità BACO (Bus Active, Chip Off). Aggiunto il supporto iniziale per XGMI, bus ad alta velocità (PCIe 4.0) per collegare la GPU. Nel driver amdkfd sono stati aggiunti gli identificativi mancanti delle schede basate su GPU Polaris10;
    • Nel driver Nouveau è stato aggiunto il supporto per schede basate sul chipset NVIDIA Turing 117 (TU117, utilizzato in GeForce GTX 1650). In
      kconfig è stata aggiunta impostazione per disattivare funzionalità obsolete che non vengono più utilizzate nelle versioni attuali di libdrm;
    • Nell'API DRM e nel driver amdgpu è stata aggiunta la supporto per oggetti di sincronizzazione «timeline», che consentono di ridurre la necessità di classiche lock.
    • Dalla branch di staging è stato trasferito nel nucleo il driver vboxvideo per GPU virtuale VirtualBox;
    • Aggiunto il driver aspeed per il chip GFX SoC ASPEED;
    • Aggiunto supporto per ARM SoC e 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, Chromebook Veyron-Mighty), 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).

Allo stesso tempo, il Fondo Latinoamericano per il Software Libero ha creato
una versione completamente libero kernel 5.2Linux-libre 5.2-gnu, ripulito da elementi di firmware e driver contenenti componenti non liberi o sezioni di codice il cui utilizzo è limitato dal produttore. Nel nuovo rilascio è inclusa la caricamento dei file
Sound Open Firmware. Disabilitata la caricamento dei blob nei driver
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp e ucsi_ccg. Aggiornato il codice di pulizia dei blob nei driver e sottosistemi ixp4xx, imx-sdma, amdgpu, nouveau e goya, oltre alla documentazione del microcodice. Interrotta la pulizia dei blob nel driver r8822be 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