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 viene visualizzata per avvisare l’utente dell’errore e per prevenire eventuali ulteriori danni. In un altro articolo abbiamo visto cos’è la schermata blu e a cosa può essere dovuta.
Uno sviluppatore indipendente ha pubblicato su GitHub il suo progetto BugCheck2Linux, un meccanismo che permette di avviare Linux quando Windows va in crash e presenta improvvisamente una schermata blu. In questo caso, quindi, il sistema non “muore”, anzi, viene data vita a un’implementazione leggera di un emulatore RISC V basata su Linux.
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 viene caricato come driver al presentarsi della schermata blu e da qui disposto il caricamento dell’emulatore RISC V costruito su Linux.
Ci sono alcuni limiti piuttosto severi sulla versione di Linux che può essere eseguita dopo il BSOD di 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.
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.
Ovviamente, la procedura presentata va considerata come una curiosità, non alla stregua di 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.