La comunità open source si mette spesso in evidenza per l’impegno e la caparbietà nel risolvere i problemi. Ciò è particolarmente evidente a livello del kernel Linux, il cuore del sistema operativo, responsabile della gestione delle risorse hardware e dell’esecuzione dei processi. È un progetto di collaborazione aperta che coinvolge migliaia di sviluppatori provenienti da tutto il mondo. E se Linux si blocca in avvio per via di un bug nel kernel è un problema.
Lo è perché Linux è utilizzato in miliardi di dispositivi in tutto il mondo: forse non sapete che Linux viene utilizzato in questi posti. Si calcola che, in un modo o nell’altro, il kernel Linux sia presente su almeno 3-3,5 miliardi di dispositivi.
Bug nel kernel: Linux si blocca in avvio
Succede di rado, però succede. Con il kernel Linux 6.4, l’ultima versione in corso di rilascio, la procedura di avvio di Linux può saltuariamente arrestarsi in modo inatteso.
Lo sviluppatore e ricercatore che ha scoperto il problema si chiama Richard W.M. Jones: è uno degli esperti di Red Hat. Egli non soltanto si è limitato a segnalare l’anomalia ma ha anche provato a riprodurla con successo.
Innanzi tutto Jones ha rilevato che Linux può bloccarsi in avvio quando eseguito all’interno di Qemu, software open source che fornisce una piattaforma di virtualizzazione ed emulazione. Qemu è ampiamente utilizzato per creare e gestire macchine virtuali su un gran numero di sistemi operativi host.
Linux riavviato oltre 290.000 volte in 21 ore per scoprire la causa di un bug nel kernel
Secondo il ricercatore, il bug si manifesta solo in 1 avvio su 1.000 e ancora meno frequentemente quando si utilizza hardware Intel. Per identificare il problema, quindi, Jones ha eseguito il software guestfish in loop fino a rilevare eventuali blocchi in fase di boot.
Guestfish è uno strumento basato su riga di comando che consente di accedere e manipolare file system all’interno delle immagini di macchine virtuali semplificandone le operazioni di manutenzione e gestione.
Jones ha programmato singoli loop da 10.000 avvii della macchina Linux utilizzando fino a 8 thread per analizzare l’output e rilevare l’eventuale blocco in fase di boot.
Il ricercatore ha così potuto identificare la causa del problema tra la versione v6.0 e v6.4-rc6 del kernel Linux. Per dimostrarla, Jones ha eseguito ben 292.612 riavvii del sistema Linux (in sole 21 ore) per confermare le motivazioni tecniche del bug e la frequenza con cui si presenta.