sabato, 10 novembre 2007

Ubuntu Gutsy e la Virtualbox capricciosa

Il software di virtualizzazione Virtualbox è molto comodo per provare installazioni particolari senza dover toccare il proprio sistema stabile. È utile anche per chi deve usare programmi Windows che proprio non vanno nemmeno con Wine.
Io ho iniziato ad usarlo con Ubuntu Feisty e devo dire con piena soddisfazione. Tuttavia quando è arrivato Gutsy, e ho reinstallato il mio sistema, le cose non sono andate così lisce. Se con Feisty mi era bastato aggiungere il repository specifico per iniziare a lavorare, con Gutsy le macchine virtuali non partivano, e nemmeno il supporto all'interfaccia USB era attivo.
A quanto pare queste "regressioni" sono dovuto a delle scelte sulle impostazioni di default in Gutsy che richiedono degli interventi manuali prima di poter usare appieno Virtualbox. In rete ci sono numerosi link che parlano di questi problemi e di come risolverli, ma molto spesso sono citati singolarmente, e mai riuniti assieme. Per questo mi sono deciso a scrivere questo breve post sull'argomento.

Premessa: io ho usato l'installazione dal repository specifico preso dal sito di Virtualbox e non quella presente nel repository di Gutsy. Per questo non posso garantire che le spiegazioni che seguono siano valide in tutti i casi.

Problema 1: all'avvio di una macchina virtuale esce un messaggio di errore che parla di kernel e accessi impediti al device /dev/vboxdrv. La macchna virtuale poi si spegne e non parte.
Soluzione 1: aprire un terminale (o usare la scorciatoia ALT+F2) ed eseguire il comando seguente: sudo chmod 666 /dev/vboxdrv
adesso la macchina virtuale parte e può funzionare normalmente.

Problema 2: quando si inizia la creazione di una macchina virtuale, o quando si avvia, esce un messaggio di avviso che ci informa che l'interfaccia USB non è disponibile. In questo caso la macchina virtuale funziona bene in tutto ad eccezione dell'interfaccia USB. Non ci è possibile ad esempio leggere dati da una penna o da un disco USB. Insomma niente di ciò che si può connettere via USB potrà essere usato.
Soluzione 2: aprire un terminale (o usare la scorciatoia ALT+F2) ed eseguire il comando seguente: gksudo gedit /etc/init.d/mountdevsubfs.sh
una volta aperto il file cercare il termine "magic" per posizionarsi nel punto interessato alla modifica. Si noterà un paragrafo come questo:

#
# Magic to make /proc/bus/usb work
#
# mkdir -p /dev/bus/usb/.usbfs
# domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
# ln -s .usbfs/devices /dev/bus/usb/devices
# mount --rbind /dev/bus/usb /proc/bus/usb

dobbiamo intervenire sulle righe di comando attualmente sotto commento e attivarle. Dopo le modifiche il paragrafo risulterà così:

#
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount --rbind /dev/bus/usb /proc/bus/usb

salvare il file e riavviare il PC. Adesso le macchine virtuali hanno a disposizione anche l'interfaccia USB.

Problema3: si connette ad esempio una penna USB, ma dalla macchina virtuale non è possibile accedervi. La periferica è bloccata.
Soluzione3: aprire la gestione gruppi e utenti e verificare quale ID è stato assegnato al gruppo vboxusers. Normalmente gli viene assegnato il valore 1001.
Adesso aprire un terminale (o usare la scorciatoia ALT+F2) ed eseguire il comando seguente inserendo l'ID del gruppo vboxusers (nel nostro caso 1001):
sudo mount -t usbfs -o devgid=1001,devmode=664,nodev,noexec,nosuid none /proc/bus/usb
Da questo momento in avanti, fino allo spegnimento della macchina virtuale, la stessa potrà accedere alle periferiche USB. Quando si avvia di nuovo una macchina virtuale il problema può ripresentarsi. Basta allora rieseguire il comando.

Questo è quanto. Ora buon lavoro con Virtualbox!