sabato 14 giugno 2008

VirtualBox: -1908 (VERR_VM_DRIVER_NOT_INSTALLED)

Vi ricordate il post "VirtualBox: attenti alle Guest Additions!"? Vi illustravo una peculiarità delle VirtualBox Guest Additions in guest Linux. Quando gli aggiornamenti della distribuzione vanno ad influenzare il kernel, queste nel migliore dei casi smettono semplicemente di funzionare perdendo così la migliore integrazione fra host e guest che esse offrono: il mouse resta intrappolato nel guest, le performance video calano drasticamente e così via.

Nel peggiore dei casi però, illustrato appunto nel post, le Guest Additions non smettono del tutto di funzionare e l'unico sintomo che permette di accorgersi che qualcosa non va, è una diminuzione delle performance. Comunque sia, la cura al problema è unica per entrambi i casi: le VirtualBox Guest Additions vanno reinstallate, procedura di pochi minuti al massimo compresa la ripartenza della macchina virtuale.

E nel caso di host Linux? Cosa succede a Virtualbox su host Linux quando l'host scarica ed installa nuovi aggiornamenti che coinvolgono anche il kernel?

A spiegarcelo sarà Maurizio, che in un commento riportava direttamente la sua esperienza in proposito, prima però, un'avvertenza: quanto state per leggere è valido per tutte le distribuzioni Linux, pertanto anche se la vostra non è una Ubuntu 8.04, proseguite comunque la lettura, la soluzione è identica. Sentiamo Maurizio.

Dopo qualche giorno di tranquillità, la mia VirtualBox era di nuovo in panne. La macchina virtuale con XP dava il seguente messaggio di errore:

VirtualBox kernel driver not installed. The vboxdrv kernel module was either not loaded or /dev/vboxdrv was not created for some reason. Re-setup the kernel module by executing '/etc/init.d/vboxdrv setup' as root.
VBox status code: -1908 (VERR_VM_DRIVER_NOT_INSTALLED).


Da ignorante di linea di comando e consolle ho cercato su Santa Internet che mi ha salvato ancora:

sudo /etc/init.d/vboxdrv setup

E VirtualBox rifunziona automagicamente...
C'era scritto comunque nel messaggio di errore... bastava leggere" .
La soluzione è tratta da una ricerca su Google sul forum di Ubuntu-it

http://forum.ubuntu-it.org/index.php?topic=193958.msg1287261

Ora è tutto di nuovo a posto, mi sono risparmiato la terza reinstallazione di VirtualBox e XP e spero che questo possa servire ad altri che hanno lo stesso problema. Ciao
Maurizio


Ecco, ora conoscete il problema, ed anche la sua soluzione; grazie Maurizio! :)
Bene, vediamo ora un pò più da vicino cosa è successo. Il primo indizio c'è lo fornisce la frase "Dopo qualche giorno di tranquillità, la mia VirtualBox era di nuovo in panne". E' il tempo che probabilmente è servito a rendere disponibile qualche nuovo aggiornamento del kernel di Ubuntu 8.04 (dal periodo in cui è accaduto, direi la versione 2.6.24-18).

VirtualBox usa un apposito modulo del kernel (in parole semplici: una parte di kernel caricata solo quando serve) per fare il suo lavoro: grazie a questo modulo VirtualBox può allocare le quantità di memoria e di risorse di CPU dell'host necessarie per far funzionare il guest. L'aggiornamento del kernel dell'host va inevitabilmente ad influenzare anche il funzionamento dei suoi moduli che possono così smettere di funzionare, ed è proprio quello che accade al modulo VirtualBox.

Il risultato? L'interfaccia grafica di VirtualBox continua a funzionare, si possono configurare tutte le macchine virtuali che vogliamo, ma queste NON partono e ci viene restituito l'errore segnalato da Maurizio che fa anche da titolo al post. E' alla partenza della macchina virtuale infatti che questo modulo viene invocato per allocare memoria e risorse di CPU per il guest, ed è lì che emerge il problema dovuto al suo mancato funzionamento.

La soluzione, lo dico in maniera molto "casereccia",
è di informare anche la nuova versione del kernel della presenza del modulo di VirtualBox, cosa che avviene dando da root, cioè come amministratore del sistema, il comando:

/etc/init.d/vboxdrv setup

Fate attenzione a come si diventa amministratore sul vostro sistema: in quasi tutte le distribuzioni si da il comando su, una volta data la password sarete amministratori e potrete dare il comando appena visto. In Ubuntu è prassi avere l'amministratore disabilitato e premettere sudo al comando da dare, in questo modo:

sudo /etc/init.d/vboxdrv setup

Per comprendere bene la differenza fra su e sudo, leggete il post "VirtualBox: su, sudo e cartelle condivise in guest Linux".

Bene, mi sembra sia tutto; alla prossima! :)
@:\>