Ubuntu 8.10 e Virtualbox: usare periferiche USB nelle macchine virtuali
22 ottobre 2008, scritto da Matteo
Virtualbox ha un sistema di gestione delle periferiche USB piuttosto comodo: le periferiche vengono riconosciute dalla coppia VendorID/ProductID indipendentemente dalla porta a cui sono collegate e possono essere utilizzate nelle macchine virtuali (guest) anche se non configurate/configurabili sull’host.
Il supporto USB, purtroppo, non è compreso nella versione OSE (Open-Source Edition) di Virtualbox. La versione closed è comunque gratuita per prova o uso personale.
Per utilizzare periferiche USB nelle macchine virtuali con host Ubuntu 8.10, è necessario fare qualche piccola modifica a un paio di file di configurazione.
Per prima cosa, bisogna ricavare l’ID del gruppo “vboxusers” dal file /etc/group:
matteo@mercury:~$ grep vbox /etc/group
vboxusers:x:125:matteo
A questo punto, aggiungiamo una riga in fondo a /etc/fstab, facendo attenzione a utilizzare l’ID appena ricavato:
## USB per Virtualbox
none /proc/bus/usb usbfs devgid=125,devmode=664 0 0
Per completare la configurazione, bisogna fare in modo che il filesystem appena indicato venga montato all’avvio del sistema. E’ sufficiente aggiungere un paio di righe al file /etc/init.d/mountkernfs.sh. Non in fondo al file, ma subito dopo questo blocco:
# Mount spufs, if Cell Broadband processor is detected
if [ -d /spu ] && grep -qs ‘^cpu.*Cell’ /proc/cpuinfo; then
domount spufs “” /spu spufs -ogid=spu
fi
Le righe da aggiungere sono queste, facendo sempre attenzione a utilizzare l’ID corretto:
## Mount the usbfs for use with VirtualBox
domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev,devgid=125,devmode=664
A questo punto, dopo aver riavviato il sistema, sarà possibile aggiungere le periferiche USB direttamente alla configurazione delle macchine virtuali, come si può vedere nell’immagine.

Ti è piaciuto l'articolo, eh? OFFRIMI UNA BIRRA! (è sufficiente essere iscritti a Paypal o avere una carta di credito, anche Postepay)














Newsletter
RSS articoli
RSS commenti





sai mica darmi qualche dritta per fedora? il file /etc/init.d/mountkernfs.sh non esiste su questa distro
@Peter:
Non ho mai usato Fedora, mi dispiace.
no problem thx
ciao! ho eseguito alla lettera la tua guida!!! ma non so perche non va!!!
mi permette di inserire le periferiche ma non funzionano…….
a macchina virtuale avviata se provo ad aggiungere una periferica mi da la lista ma sono oscurate!
ciao aspetto una tua risposta……..
@lbe:
Le periferiche vanno associate alla VM a macchina (virtuale) spenta, nelle impostazioni della VM stessa.
si lo fatto ma non vanno comunque!
avevo provato a d usare la guida per 8.04 ma non va azz!!! mi serviva per collegare il palmare!!!
grazie comunque!!!!!
Sei un grande!!
)
Per me tutto ok. Grazie!
Non manca uno spazio fra do e mount in questa riga?
domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev,devgid=125,devmode=664
Ciao e grazie.
Ragazzi, io ho risolto solamente aggiungendo la seguente riga a /etc/fstab:
none /proc/bus/usb usbfs devgid=46,devmode=666 0 0
Ciao.
humm…a me non va
premetto che con 8.04 tutto ok, ma da quando ho installato 8.10 non mi carica le porte USB
ho provato la tua guida, ma non ho avuto nessun risultato…
ti posto i vari file, così se trovi qualche errore mi correggi…
…/etc/fstab:
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/sda1
UUID=c413754d-4c40-485f-bca8-83230e4febac / ext3 relatime,errors=remount-ro 0 1
# /dev/sda5
UUID=6ef02ace-89de-477a-b921-a5403317395a none swap sw 0 0
/dev/scd1 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
## USB per Virtualbox
none /proc/bus/usb usbfs devgid=126,devmode=666 0 0
…/etc/init.d/mountkernfs.sh:
#! /bin/sh
### BEGIN INIT INFO
# Provides: mountkernfs
# Required-Start:
# Required-Stop:
# Should-Start: glibc
# Default-Start: S
# Default-Stop:
# Short-Description: Mount kernel virtual file systems.
# Description: Mount initial set of virtual filesystems the kernel
# provides and that are required by everything.
### END INIT INFO
PATH=/lib/init:/sbin:/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
. /lib/init/mount-functions.sh
[ -f /etc/default/tmpfs ] && . /etc/default/tmpfs
do_start () {
#
# Get some writable area available before the root is checked
# and remounted.
#
RW_OPT=
[ "${RW_SIZE:=$TMPFS_SIZE}" ] && RW_OPT=”,size=$RW_SIZE”
domount tmpfs “” /lib/init/rw tmpfs -omode=0755,nosuid$RW_OPT
touch /lib/init/rw/.ramfs
# Make pidfile omit directory for sendsigs
mkdir /lib/init/rw/sendsigs.omit.d/
#
# Mount proc filesystem on /proc
#
domount proc “” /proc proc -onodev,noexec,nosuid
#
# Mount sysfs on /sys
#
# Only mount sysfs if it is supported (kernel >= 2.6)
if grep -E -qs “sysfs\$” /proc/filesystems
then
domount sysfs “” /sys sysfs -onodev,noexec,nosuid
fi
# Mount /var/run and /var/lock as tmpfs if enabled
if [ yes = "$RAMRUN" ] ; then
RUN_OPT=
[ "${RUN_SIZE:=$TMPFS_SIZE}" ] && RUN_OPT=”,size=$RUN_SIZE”
domount tmpfs “” /var/run varrun -omode=0755,nosuid$RUN_OPT
touch /var/run/.ramfs
fi
if [ yes = "$RAMLOCK" ] ; then
LOCK_OPT=
[ "${LOCK_SIZE:=$TMPFS_SIZE}" ] && LOCK_OPT=”,size=$LOCK_SIZE”
domount tmpfs “” /var/lock varlock -omode=1777,nodev,noexec,nosuid$LOCK_OPT
touch /var/lock/.ramfs
fi
# Mount spufs, if Cell Broadband processor is detected
if [ -d /spu ] && grep -qs ‘^cpu.*Cell’ /proc/cpuinfo; then
domount spufs “” /spu spufs -ogid=spu
fi
## Mount the usbfs for use with VirtualBox
domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev,devgid=126,devmode=664
# Propagate files from the initramfs to our new /var/run.
for file in /dev/.initramfs/varrun/*; do
[ -e "$file" ] || continue
cp -a “$file” “/var/run/${x#/dev/.initramfs/varrun/}”
done
}
case “$1″ in
“”)
echo “Warning: mountkernfs should be called with the ’start’ argument.” >&2
do_start
;;
start)
do_start
;;
restart|reload|force-reload)
echo “Error: argument ‘$1′ not supported” >&2
exit 3
;;
stop)
# No-op
;;
*)
echo “Usage: mountkernfs [start|stop]” >&2
exit 3
;;
esac
scusa se ti ho allungato il post, ma e questione di vita o di morte…
by a presto
provato con 2.0.6 e kubuntu 8.10.
problemi con devmode=664 0 0
se metto devmode=666 0 0 come dice Vincenzo tutto a posto.
grazie a tutti!
Ciao,
bella guida, ha funzionato tutto alla grande, per correttezza ti ho linkato nel mio forum di help ai clienti, se a te va bene lascio cosi’, altrimenti la riscrivo ma la tua è già ben fatta cosi’.
http://omnitech.homelinux.com/phpBB3/viewtopic.php?f=7&t=23
Ciao
Mattia
@Mattia:
Non vedo perché non dovrebbe andarmi bene, grazie
Scusa, ma non si è capito bene. La tua modifica serve per truccare la OSE per usare usb? Perché di solito la PUEL funziona già di suo…
@Lazza:
La seconda che hai detto, perchè non sempre la PUEL funziona di suo.
quando vado a dare il comando
none /proc/bus/usb usbfs devgid=125,devmode=664 0 0
mi dice
bash: none: command not found
come posso rimediare?
@Francesco:
Aggiungendolo in fondo al file /etc/fstab (come specificato nel post) anzichè lanciarlo come comando…
Perfetto anche sulla 9.04!
@maddog:
E’ vero, mi sono dimenticato di aggiornare il post dopo il passaggio a Jaunty
Invece con la 9.10 (ho installato la beta release del 15 Ottobre) non va più.
Tra l’altro ho trovato il file /etc/init.d/mountkernfs.sh completamente vuoto.
Che dire?
Io ho aggiornato dalla 9.04 (a cui avevo precedentemente applicato il mio metodo) alla 9.10 e continua a funzionare.
Io invece ho dovuto formattare per problemi legati alle partizioni ed avendo testato in VB la 9.10 l’ho ritenuta abbastanza matura per utilizzarla.
Ripeto, il problema base è che:
- il file “/etc/fstab” è diverso dalla 9.04 ;
- il file “/etc/init.d/mountkernfs.sh” invece è completamente VUOTO
Quindi suppongo che, a meno di un clamoroso ed improbabile bug della 9.10, il metodo non sia più applicabile… che fare?
Prendere i suddetti files dalla 9.04 e reinserirli nella 9.10 ? Mah…
http://andrealazzarotto.com/2009/01/03/configurazione-dellusb-in-virtualbox-puel-la-via-rapida-e-system-wide/
Prova a lasciar perdere quel file e limitarti al resto… Al limite annulli le modifiche.
grazie ancora per le indicazioni ma… nada de nada.
il file /etc/init.d/mountdevsubfs.sh è anch’esso VUOTO!!!
Ho letto anche la tua guida (ti rispondo da qui per non far perdere il filo) ma se i files di sistema sono vuoti c’è poco da fare.
Ho anche provato ad inserire gli scripts, ma niente da fare.
Scusami ma quale parte di “Prova a lasciar perdere quel file e limitarti al resto” ti è sfuggita?
Nemmeno io ho quel file e funziona tutto perfettamente.
Davvero, sono io che chiedo scusa a te… sinceramente.
Probabilmente non ci ho capito nulla… ti elenco cosa ho fatto:
- ho inserito nel file (originariamente vuoto) “/etc/init.d/mountdevsubfs.sh” le righe che hai indicato (compreso le tabulazioni) ed ho salvato il file:
- ho dato il comando da shell che indichi successivamante ed ho rimontato.
Ho riavviato la VB e, come sempre, vede i dispositivi ma rimangono sempre grigi e non attivabili.
Se ho capito bene le tue indicazioni.
Grazie
Togli le righe dal file… Anzi togli proprio il file, tanto non c’era prima per cui non dev’esserci neanche adesso.
Se il tuo utente non c’è, ti devi aggiungere e poi, dopo aver finito la guida, riavviare prima che funzioni.
Elimina la riga che inizia per “none /proc/bus/usb usbfs” dall’/etc/fstab. A questo punto rifai tutto dall’inizio (tralasciando il file che non c’è, per cui salta via proprio quel passaggio) e ricordati bene quello che forse non si vede moltissimo ma l’ho scritto: “Controllate per prima cosa che il vostro utente appartenga al gruppo vboxusers.”.
ti rispondo sul tuo blog perchè mi sembra più corretto
Grazie