个人工具

UbuntuHelp:VirtualBox/USB

来自Ubuntu中文

跳转至: 导航, 搜索

<<Include(Tag/ContentCleanup)>>

Set up USB for Virtualbox

Note: Only the non-free version has USB support at present.

For Lucid

Do not follow these intructions for Lucid. It will render your system unbootable. From initial tests, it seems that virtualbox has built in USB support and no longer needs the instructions below anyway (editing fstab to mount usbfs). usbfs is deprecated and (it seems that) VirtualBox PUEL changed direct handling of usb devices.

For Karmic

From a terminal run the following command:

  1. Add yourself to the vboxusers group if not already there: -
 if [ "`grep vboxusers /etc/group|grep $USER`" == "" ] ; then sudo usermod -G vboxusers -a $USER ; fi
 

This works for Karmic 9.10 Host and Windows XP Guest

From a terminal run the following command:

  1. This will check for your vbox user id which you'll need for the next steps.

This will display a line that looks a bit like this: vboxusers:x:123:myself 123 is the user id of your machine you're looking for

 grep vbox /etc/group 
 
  1. This will edit your FSTAB File
 sudo gedit /etc/fstab
 
  1. Add the following line to the bottom of the fstab file: Replace userid with the number displayed from step 1.
 none /proc/bus/usb usbfs devgid=userid,devmode=664 0 0 
 

Example: none /proc/bus/usb usbfs devig=123,devmod=664 0 0

  1. Reboot Ubuntu 9.10
  2. Once logged into Ubuntu 9.10 start VirtualBox (Don't power on a guest OS yet)
  3. Click Settings from the VirtualBox main page for the Windows XP Guest OS
  4. Click the System tab on the left side of screen
    1. Enable IO APIC is needs to be selected
  5. Click the USB tab on the left side of screen
    1. Enable USB Controller and Enable USB 2.0 (EHCI) Controller need to be selected
    2. Your USB device should be recognized and ticked in the lower screen. If not, press the 'add' button (to the far right, 2nd one with the green cross) and add it.

    10. Power on your Guest OS and USB Should work

    For Jaunty

    From a terminal run these commands:

    1. Add yourself to the vboxusers group if not already there: -
     if [ "`grep vboxusers /etc/group|grep $USER`" == "" ] ; then sudo usermod -G vboxusers -a $USER ; fi
     
    1. Enter a root shell, eg
     sudo -i
     
    1. In that shell, set up /etc/fstab
     vGid="`grep vboxusers /etc/group|cut -d\: -f3`" # Determine the devgid for the vboxusers group
     if [ "$vGid" ] && [ "`grep usbfs /etc/fstab`" == "" ] ; then
    	echo "none /proc/bus/usb usbfs devgid=${vGid},devmode=664 0 0" >>/etc/fstab
    	mount -a
     fi
     

    Pre-Jaunty

    To get USB support, you need the PUEL (non-free) version. Via the GUI, there is an option to enable USB. Since Gutsy, /proc/bus/usb is not mounted by default. For Gutsy and Hardy you just need to edit /etc/init.d/mountdevsubfs.sh and uncomment the following lines:

            #
            # 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
    

    In Intrepid the lines required to mount usbfs have been removed entirely, so you need to add the following lines to /etc/init.d/mountdevsubfs.sh at the end of the do_start() function. Note that this is subtly different than the lines required for Gutsy/Hardy. the arguments for the domount function are slightly different from previous versions.

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

    Then run the script that you just edited:

    sudo /etc/init.d/mountdevsubfs.sh start
    

    In order to give users in the vboxusers group write permissions to the devices in /proc/bus/usb, you'll need to edit some rules in /etc/udev/rules.d. Under Gutsy, edit /etc/udev/rules.d/40-permissions.rules to say the following:

    # USB devices (usbfs replacement)
    SUBSYSTEM=="usb_device",                MODE="0664", GROUP="vboxusers"
    

    Under Hardy and Intrepid, edit /etc/udev/rules.d/40-basic-permissions.rules to say the following:

    # USB devices (usbfs replacement)
    SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="vboxusers"
    SUBSYSTEM=="usb_device",                MODE="0664", GROUP="vboxusers"
    

    Then, restart the udev service:

    sudo /etc/init.d/udev restart
    

    Now, if you haven't done it already, make sure your user is part of the group vboxusers using the following command:

    sudo usermod -G vboxusers -a `whoami`
    

    Finally, log out and login again to apply these changes.

    See also: [1]