Ubuntu 8.10 e Virtualbox: usare periferiche USB nelle macchine virtuali

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.

This entry was posted in tuxfeed and tagged , , , , , . Bookmark the permalink.

36 Responses to Ubuntu 8.10 e Virtualbox: usare periferiche USB nelle macchine virtuali

  1. Pingback: diggita.it

  2. Pingback: Plim.it - Vota questo articolo!

  3. Peter says:

    sai mica darmi qualche dritta per fedora? il file /etc/init.d/mountkernfs.sh non esiste su questa distro

  4. Matteo says:

    @Peter:
    Non ho mai usato Fedora, mi dispiace. :-P

  5. Peter says:

    no problem thx

  6. @lbe says:

    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……..

  7. Matteo says:

    @lbe:
    Le periferiche vanno associate alla VM a macchina (virtuale) spenta, nelle impostazioni della VM stessa.

  8. @lbe says:

    si lo fatto ma non vanno comunque!

  9. @lbe says:

    avevo provato a d usare la guida per 8.04 ma non va azz!!! mi serviva per collegare il palmare!!!

  10. @lbe says:

    grazie comunque!!!!!

  11. maddog says:

    Sei un grande!! :-) )
    Per me tutto ok. Grazie!

  12. Vincenzo says:

    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.

  13. Vincenzo says:

    Ragazzi, io ho risolto solamente aggiungendo la seguente riga a /etc/fstab:

    none /proc/bus/usb usbfs devgid=46,devmode=666 0 0

    Ciao.

  14. valerix says:

    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

  15. rodolfo says:

    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!

  16. Mattia says:

    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

  17. Matteo says:

    @Mattia:
    Non vedo perché non dovrebbe andarmi bene, grazie :)

  18. Lazza says:

    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…

  19. Matteo says:

    @Lazza:
    La seconda che hai detto, perchè non sempre la PUEL funziona di suo.

  20. Pingback: Configurazione dell’usb in Virtualbox PUEL: la via rapida e system-wide « Il blog di Andrea Lazzarotto

  21. Francecso says:

    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?

  22. Matteo says:

    @Francesco:
    Aggiungendolo in fondo al file /etc/fstab (come specificato nel post) anzichè lanciarlo come comando… ;)

  23. maddog says:

    Perfetto anche sulla 9.04!

  24. Matteo says:

    @maddog:
    E’ vero, mi sono dimenticato di aggiornare il post dopo il passaggio a Jaunty :)

  25. Pingback: Analizzare le statistiche del blog: dati di aprile 2009 - Matteo Moro

  26. Felix says:

    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?

  27. Lazza says:

    Io ho aggiornato dalla 9.04 (a cui avevo precedentemente applicato il mio metodo) alla 9.10 e continua a funzionare. :)

  28. Felix says:

    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…

  29. Lazza says:

    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.

  30. Felix says:

    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.

  31. Lazza says:

    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.

  32. Felix says:

    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

  33. Lazza says:

    Togli le righe dal file… Anzi togli proprio il file, tanto non c’era prima per cui non dev’esserci neanche adesso. :)
    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.”. ;) Se il tuo utente non c’è, ti devi aggiungere e poi, dopo aver finito la guida, riavviare prima che funzioni.

  34. Felix says:

    ti rispondo sul tuo blog perchè mi sembra più corretto
    Grazie

  35. Pingback: Virtualbox, PcAnywhere, modem seriale su porta USB e disconnessioni continue - Matteo Moro

  36. Pingback: Ubuntu note varie « HackFil

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ricevi un avviso se ci sono nuovi commenti. Oppure iscriviti senza commentare.