Использование USB в VirtualBox

Пишу для себя, что б не забыть, но может еще кому-то пригодится.

Для начала расскажу что такое VirtualBox.
VirtualBox - виртуальная машина, имеющая статус Open Source. Работает на системах Windows, MacOS X, Linux.
Из особенностей, отличающих программу от VmWare:

  • Возможность вручную выставлять размер видеопамяти (от 1 до 128 метров. Если они есть конечно :)
  • Работа с устройствами, подключаемыми к USB.

более подробно тут:
http://ru.wikipedia.org/wiki/VirtualBox
http://www.ixbt.com/cm/virtualization-virtualbox.shtml

официальный сайт тут:
http://www.virtualbox.org/

Ну а теперь про наших баранов - поддержке USB.
Пользователи Ubuntu/Debian наверняка заметили, что в VirtualBox "из коробки" не заводится поддержка USB-устройств.
При попытке включить USB выдается сообщение об ошибке:
Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might be not installed on the host computer.

Либо, как вариант, этого сообщения нет, подключенные usb-устройства видны в интерфейсе virtualbox'а, но не активны.

Проблема в отключенной по умолчанию usbfs и правах доступа. Решение, конечно же, есть.
Вероятно, это решение справедливо и для других дистрибутивов в случае возникновения такой проблемы.
Необходимо проделать следующее:

Шаг 1.
Необходимо прописать права группы для USB-устройств, в которую включен тот пользователь, которым логинимся при входе в систему в /etc/udev/rules.d/40-permissions.rules (Для Debian - это файл /etc/udev/rules.d/020_permissions.rules). Лично я использую группу vboxusers, которую мы должны были настроить после установки самой программы VirtualBox. Редактировать файл нужно своим любимым редактором, но с полномочиями суперпользователя:

Ubuntu:

$ sudo joe /etc/udev/rules.d/40-permissions.rules

Debian:

$ sudo joe /etc/udev/rules.d/020_permissions.rules

В этом файле нам необходимо строки

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

изменить на

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

А если точнее, то всего лишь добавить группу, членом которой является наш пользователь.

Шаг 2.
Правим файл /etc/init.d/mountdevsubfs.sh, как всегда с правами root-а

$ sudo joe /etc/init.d/mountdevsubfs.sh

Для Ubuntu:
Найдите строку # Magic to make /proc/bus/usb work и следующие ниже нее строки раскомментировать (убрать значок # в начале сток). В итоге у нас должно получиться, что-то типа этого (фрагмент файла):

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

Для Debian:
В функцию do_start () в самый низ добавьте:

domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev

а потом, для Debian, в файл /etc/fstab добавьте строку:

none /proc/bus/usb usbfs rw,user,devgid=1001,devmode=0666 0 0

Все, после этих нехитрых операций надо просто перезагрузить систему и USB в VirtualBox будет работать.

использованы материалы:
Поддержка USB в VirtualBox
Использование USB в VirtualBox
Debian Etch USB Support and Shared Folder