Una schermata blu in Windows, comunemente nota come “Blue Screen of Death” (BSOD), compare quando si verifica un errore critico di sistema che impedisce al sistema operativo di funzionare correttamente. La schermata blu avvisa l’utente dell’errore e previene eventuali ulteriori danni.
Di solito, quando il sistema Windows in uso presenta una schermata blu, per un qualsiasi motivo, ciò che succede è che la macchina si riavvia in automatico. Come spiegato nell’articolo, si può evitare che ciò avvenga (ad esempio per avere il tempo di leggere i messaggi d’errore) modificando una semplice impostazione (premere Windows+R
, digitare sysdm.cpl ,3
, cliccare sul pulsante Impostazioni nel riquadro Avvio e ripristino, infine disattivare la casella Riavvia automaticamente).
Uno sviluppatore indipendente ha presentato il progetto BugCheck2Linux che riesce in qualcosa che fino a qualche tempo fa sembrava impensabile: avviare un compatto emulatore RISC-V basato su kernel Linux. Guardate il video: al momento della schermata blu, il sistema non “muore” e si attiva il caricamento di Linux.
Come funziona il caricamento di Linux dopo la presentazione di una schermata blu
Non è cosa nota che dopo una schermata blu sia ancora possibile avviare un eseguibile con Windows. Eppure è possibile farlo ricorrendo a una funzione di sistema chiamata bug check callback: essa consente agli sviluppatori di avviare un’operazione successivamente al verificarsi di un errore BSOD.
Durante il bug check, il sistema operativo registra informazioni sullo stato del sistema e sulle cause dell’errore in un file dump, che può essere utilizzato per analizzare e risolvere il problema. La funzione di callback consente però agli sviluppatori e ai tecnici di aggiungere codice personalizzato per eseguire azioni specifiche. È qui la chiave utilizzata dal ricercatore su GitHub: BugCheck2Linux è caricato come driver al presentarsi della schermata blu e da qui disposto il caricamento dell’emulatore RISC V costruito su Linux.
Cos’è la funzione di callback BugCheck
BugCheck è una funzione di callback propria di Windows ed è parte integrante del sistema di gestione degli errori a livello kernel. Essa è progettata per essere un punto di estensione (hook) nel kernel di Windows. Gli sviluppatori di driver e di altri componenti software possono registrare le proprie funzioni di callback BugCheck per eseguire operazioni specifiche quando si verifica un errore critico. Queste funzioni di callback possono essere utilizzate per raccogliere informazioni di debug, eseguire azioni personalizzate o disporre la cancellazione di alcune risorse prima del riavvio della machina.
Limitazioni imposte dalla funzione BugCheck di Windows
Ci sono alcuni limiti piuttosto severi sulla versione di Linux che può essere eseguita dopo la comparsa di un BSOD in ambiente Windows. Ad esempio, la risoluzione è ridotta a 640 x 480 pixel e 16 colori, il meccanismo funziona solo su sistemi basati su BIOS legacy (non UEFI) e le prestazioni lasciano alquanto a desiderare. In altre parole, non è certo possibile avviare un’installazione completa di Ubuntu o di altre distribuzioni Linux.
Come caricare Linux dopo la schermata blu
Ad ogni modo, le istruzioni per disporre il caricamento di Linux dopo un BSOD di Windows sono pubblicate su GitHub al paragrafo How to run it? La procedura consiste nell’attivare il caricamento di driver non firmati digitalmente con bcdedit
quindi nell’impostazione della bug check callback con il comando sc
, che in Windows permette di configurare i servizi di sistema.
Il comando bcdedit /set testsigning on
è utilizzato per abilitare la modalità di test dei driver in un sistema Windows. Quando questa modalità è attiva, il sistema operativo consente l’installazione e l’esecuzione di driver non firmati digitalmente da Microsoft. La funzionalità è spesso utilizzata dagli sviluppatori di driver o da utenti avanzati per provare e utilizzare driver non ancora certificati.
Tuttavia, è importante notare che abilitare la modalità di test dei driver rende il sistema meno sicuro: i driver non firmati digitalmente potrebbero rappresentare un potenziale rischio per la stabilità e la sicurezza del sistema.
La procedura descritta va quindi considerata come una mera curiosità: non siamo dinanzi a un tool da utilizzare abitualmente sui propri sistemi.
Per provare il funzionamento della bug check callback configurata, è possibile generare una schermata blu in Windows. Lo stesso effetto si ottiene digitando taskkill /im svchost.exe /f
da un prompt dei comandi aperto con i diritti di amministratore. Potete fare qualche test ma procedete solo e soltanto dopo aver chiuso tutti i programmi in esecuzione e salvato i file eventualmente aperti.