Come risolvere l’errore Driver del kernel di VirtualBox non installato (rc=-1908)
Funzionalità di sicurezza come Secure Boot esistono per un motivo, ma a volte causano veri e propri grattacapi con moduli kernel di terze parti, come vboxdrv di VirtualBox. In pratica, se Secure Boot blocca il caricamento di estensioni kernel non firmate o incompatibili, VirtualBox non avvierà correttamente le VM. Questo è un problema comune su Mac e alcune distribuzioni Linux, soprattutto dopo importanti aggiornamenti del sistema operativo o se si sta lavorando con kernel personalizzati. Sapere come gestirlo può far risparmiare tempo e frustrazione.
Come risolvere questo errore su macOS e Linux
Consenti il modulo Kernel su macOS
Se esegui VirtualBox su un Mac con una versione più recente di macOS (ad esempio 10.13 o successiva), probabilmente visualizzerai un messaggio o dovrai autorizzare manualmente l’estensione. Linux ha le sue peculiarità, ma le impostazioni di sicurezza di macOS sono abbastanza semplici da modificare. Questo è utile perché macOS blocca il caricamento di moduli nuovi o non firmati, causando errori nel driver del kernel della VM.
- Apri Preferenze di Sistema, quindi vai su Sicurezza e Privacy.
- Nella scheda Generale, se vedi un messaggio relativo al software bloccato, fai clic su Consenti accanto ad esso.
Riavvia il servizio kernel di VirtualBox
A volte, un buon vecchio riavvio dello script di avvio di VirtualBox può aiutare a recuperare correttamente l’estensione del kernel firmata. Apri il terminale ed esegui:
sudo /Library/Application\ Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart
Questo comando arresta e riavvia il processo di caricamento dell’estensione del kernel di VirtualBox. Sul mio Mac, ho notato che questo metodo, abbinato al prompt di sicurezza, fa sì che VirtualBox riconosca correttamente il driver dopo un riavvio.
Registra l’estensione del kernel vboxdrv
Un altro trucco è registrare manualmente il driver VirtualBox con
sudo kmutil load -p '/Library/Application Support/VirtualBox/VBoxDrv.kext'
Questo forza il sistema operativo a caricare l’estensione, una sorta di “forzatura di attenzione”.Dopo aver eseguito questa operazione, riavviate e verificate se VirtualBox riesce a eseguire la VM. A volte, il sistema non carica il driver per impostazione predefinita a causa del protocollo SIP (System Integrity Protection).
Approva l’ID sviluppatore di Oracle
Se quanto sopra non funziona ancora, macOS potrebbe bloccare il driver perché non si fida dello sviluppatore. Dovrai aggiungere manualmente l’ID sviluppatore di Oracle all’elenco di valutazione della sicurezza del sistema. In questo modo, è un po’ come dire a macOS: “Sì, mi fido di questo tizio”.
Apri il terminale ed esegui:
spctl kext-consent add VB5E2TV963
Questo aggiunge Oracle all’elenco dei server attendibili. Per essere più precisi, vale la pena ripetere questo passaggio dalla modalità di ripristino, nel caso in cui SIP impedisca le modifiche:
- Riavvia il Mac e tieni premuti i tasti Comando + R per accedere alla modalità di ripristino.
- Apri Utilità > Terminale.
- Digitare lo stesso comando:
- Riavvia normalmente e controlla se VirtualBox riesce ora a caricare il suo driver senza problemi.
spctl kext-consent add VB5E2TV963
Installa VirtualBox Extension Pack
Se il driver continua a non caricarsi, installare l’ultimo VirtualBox Extension Pack potrebbe essere d’aiuto, soprattutto perché alcune funzionalità richiedono moduli kernel aggiuntivi. Scaricalo dalla pagina dei download di VirtualBox. Dopo aver installato VirtualBox, vai su Strumenti > Estensioni in VirtualBox e installa il pacchetto di estensioni. A volte, questo include i driver firmati necessari affinché il tuo sistema operativo accetti i moduli kernel.
Cancella la cache dell’estensione del kernel
macOS memorizza nella cache le estensioni del kernel e a volte si blocca. Esegui nel terminale:
sudo kextcache --clear-staging
Questo cancella la cache. Riavvia e verifica se il problema persiste. In caso contrario, riprova il comando dopo un riavvio.
Prova una versione diversa di VirtualBox
A volte, le versioni più recenti interrompono la compatibilità con la configurazione del sistema operativo o con le impostazioni di sicurezza correnti. Disinstallare completamente VirtualBox:
- Eseguire lo script di disinstallazione, solitamente
/Library/Application Support/VirtualBox/Uninstall.toolo uno simile. - Riavvia e scarica una versione precedente o quella più recente dal sito. A volte, una versione diversa si adatta meglio al tuo sistema.
Correggi i flag di estensione del kernel per SIP
Componenti shader come SIP possono bloccare il caricamento di determinati driver se un flag non è impostato correttamente. Avviare in modalità di ripristino ( Comando + R durante l’avvio), quindi nel Terminale, eseguire:
chflags restricted /Volumes/Macintosh\ HD/private/var/db/KernelExtensionManagement
Sostituisci Macintosh\ HDcon il nome effettivo del tuo disco, se diverso. Riavvia, reinstalla VirtualBox e prova.
Disabilitare l’avvio protetto come ultima risorsa
Se sei disperato, disattivare Secure Boot è un’opzione, ma tieni presente che indebolisce la sicurezza del sistema. Per farlo:
- Riavviare in modalità di ripristino ( Comando + R ), quindi andare su Utilità > Utilità di sicurezza all’avvio.
- Impostare Avvio protetto su Nessuna sicurezza.
- Riavviare; questo dovrebbe consentire il caricamento normale delle estensioni del kernel non firmate o non attendibili.
Dopo questa modifica, se necessario, sarà necessario riattivare manualmente Secure Boot, ma per il debug si tratta di una soluzione rapida.
Come risolvere questo errore su Linux
Linux può essere un vero grattacapo perché i moduli del kernel dipendono fortemente dalla versione, dagli header e dal processo di firma. Quando VirtualBox genera errori relativi al mancato caricamento di vboxdrv, ecco cosa probabilmente non va.
Riavvia prima
Gli aggiornamenti del kernel Linux spesso richiedono un riavvio prima che il modulo vboxdrv torni a funzionare correttamente.È un inizio semplice, a volte è tutto ciò che serve perché gli aggiornamenti del kernel non sempre vengono implementati immediatamente.
Kernel e intestazioni corrispondenti
Se il kernel è appena stato aggiornato, il modulo vboxdrv potrebbe essere incompatibile. Per risolvere il problema, reinstalla gli stessi header del kernel attuale. Su Debian/Ubuntu:
sudo apt purge virtualbox dkms linux-headers-$(uname -r) sudo apt install linux-headers-$(uname -r) sudo apt install virtualbox
Su altre distribuzioni, passa aptal gestore di pacchetti che preferisci, come dnfo yum. Quindi, riapplica il modulo del kernel:
sudo /etc/init.d/vboxdrv setup
oppure, per sistemi con DKMS:
sudo dkms autoinstall
Ripristino di un kernel precedente
Se il tuo kernel attuale non è realmente supportato o non funziona, potresti prendere in considerazione l’idea di tornare a una versione sicuramente funzionante. Scarica i kernel più vecchi dall’archivio principale della tua distribuzione, installali e riavvia il sistema con quel kernel. Con la versione corretta, l’errore tende a scomparire.
Regola la versione GCC
A volte, il modulo è stato compilato con una versione specifica del compilatore. Se il tuo GCC è diverso, potrebbero verificarsi problemi. Per risolvere il problema:
- Elimina VirtualBox:
sudo apt purge virtualbox - Installa GCC 8 (o la versione di destinazione):
sudo apt install gcc-8 g++-8 - Impostalo come predefinito:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8
Successivamente reinstalla VirtualBox e, molto probabilmente, il modulo verrà caricato correttamente.
Firma i moduli per l’avvio sicuro
Se si utilizza Secure Boot e si verificano errori di firma, potrebbe essere necessario firmare manualmente i moduli del kernel. Strumenti come gli script di firma su GitHub possono aiutare in questo processo. Ma, onestamente, disattivare Secure Boot è spesso più rapido per i test.
Disabilitare l’avvio protetto (per Linux)
Come ultima misura, disattiva l’avvio protetto accedendo alle impostazioni del firmware del sistema (spesso tramite il menu di avvio durante l’avvio), quindi cerca “Avvio protetto” e disattivalo. Ricorda, questo riduce il livello di sicurezza, ma può fare la differenza tra l’esecuzione o meno della tua VM.
Spero che questa guida aiuti qualcuno a evitare di sbattere la testa contro il computer. Perché, ovviamente, Secure Boot è un passaggio aggiuntivo che rende le cose più complicate del necessario.
Riepilogo
- Consenti le estensioni del kernel nelle impostazioni di sicurezza e privacy di macOS
- Reimposta o registra manualmente i moduli del kernel di VirtualBox
- Aggiungere l’ID sviluppatore di Oracle alla policy di sistema
- Installa o aggiorna il pacchetto di estensione VirtualBox
- Cancella la cache dell’estensione del kernel
- Reinstallare diverse versioni di VirtualBox
- Disabilitare l’avvio protetto se tutto il resto fallisce
- Su Linux, abbina le intestazioni del kernel, considera il rollback del kernel o modifica le versioni di GCC
- Disabilitare Secure Boot è spesso la soluzione alternativa più semplice: ricordati solo di riabilitarlo in seguito, se necessario
Incartare
Onestamente, gestire Secure Boot e i driver delle macchine virtuali è un po’ una seccatura, ma si tratta soprattutto di far sì che il sistema si fidi del software. Una volta presa la mano con l’abilitazione dei moduli o la disattivazione temporanea di Secure Boot, le cose tendono a semplificarsi. Ricorda solo che ogni configurazione è leggermente diversa, quindi potrebbe essere necessario procedere per tentativi. Speriamo che questo faccia risparmiare qualche ora a qualcuno.