18 Март 2008

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

Использование виртуальной машины под Kubuntu, вещь крайне полезная. Множество ситуаций было решено под VirtualBox. Система очень удобна для использования, однако максимального эффекта от этой системы можно добиться при использовании всех его функций. Настраивать саму программу и поднятие сети на виртуальной машине я уже описывал раньше. Теперь "для полного счастья" остается лишь обеспечить работу виртуальному компьютеру с USB устройствами (по крайней мере для меня).

Момент этот очень важен для нормальной и полноценной работы в Linux-среде. Ведь, помимо обучающих программ, заточенных под ОС Windows, часто возникает потребность использования мобильных устройств через USB именно под Windows. Не секрет, что большинство задач (хоть с Windows-программами, хоть с мобильными девайсами) можно решать прямо в своем любимом Linux-е, но сама возможность работы с USB в виртуальной машине - это очень важный момент для комфортной/важной/ключевой/и_тд работы пользователя. И отказываться от этого - мне не интересно.


Подготовка.
Используя в своей повседневной работе Kubuntu с ее репозиториями, естественно я использовал на первых порах VirtualBox из репозитория операционки. Однако, версия программы с репозитория Kubuntu имеет несколько урезанный функционал - об этом говорит ее индекс OSE. Ниже привожу, то что было у меня доступно в Kubuntu.


В общем, самое верное решение - это взять готовый пакет последней версии с оф.сайта VirtualBox [выбрав ссылку binares (all platforms)], либо настроить репозиторий VirtualBox-a для возможности не только установки самой программы, но и дальнейшего автоматического получения обновления (апдейтов) версий.

На момент написания поста была доступна версия программы 1.5.6. Однако, после установки и запуска VirtualBox сама возможность использования USB у меня, почему-то отсутствовала (это видно на приведенном ниже скриншоте)


После обновления своего VirtualBox до версии 1.5.6, программа мне выдавала следующее сообщение, касательно USB:

Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND).
The service might be not installed on the host computer.
Как я понял, потаенный смысл кроется в том, что по умолчанию, права подсистемы udev не разрешают использовать сменные USB-носители (брелков и прочее). Т.е. остается лишь настроить USB подключение...


Настройка USB для VirtualBox.
Тема эта уже неоднократно обсуждалась в сети. На том же Ubuntu Forums, например. Так же ее довольно мощно "прокачали" многие блоггеры, в том числе и русскоязычные, на пример здесь. За что им всем огромное человеческое спасибо! Я лишь опишу последовательность своих действий, связанных с успешной настройкой системы, после изучения данного вопроса.

Шаг 1.
Необходимо прописать права группы для USB-устройств, в которую включен тот пользователь, которым логинимся при входе в систему в /etc/udev/rules.d/40-permissions.rules. Лично я использую группу vboxusers, которую мы должны были настроить после установки самой программы VirtualBox. Редактировать файл нужно своим любимым редактором, но с полномочиями суперпользователя.
$ sudo nano /etc/udev/rules.d/40-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 nano /etc/init.d/mountdevsubfs.sh
В этом файле мы должны найти строку # 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

Шаг 3.
Теперь для получения эффекта от проделанной работы необходимо, просто-напросто перегрузиться.
Все! Теперь можно запускать программу VirtualBox, и радоваться.
:-)


Примечания.
При изучения данного вопроса, я часто встречал в сети о необходимости править файлы /etc/fstab и еще какие-то. Так вот у себя, на Kubuntu 7.10 я этого не делал. Т.е. обошелся только теми 3-мя шагами, которые описал выше. И не более того.


Настройка VirtualBox.
Провести ее довольно просто. Я перед первым запуском программы VirtualBox, после вышеописанных шагов настройки, вставил USB-флешку в свой комп. Запустил VirtualBox. Выбрал свойства USB виртуальной машины (она должна быть выключена). И нажал кнопку Добавить новый USB-фильтр как на рисунке ниже.


После добавления фильтра, должно получиться что-то типа этого:


Очень важный момент: при подключении флеш-устройства в виртуальный компьютер, убедитесь, что это устройство не подмонтировано в самом Linux-e! Иначе, возможна потеря данных! (предостережение из руководства VirtualBox)

Во время работы виртуальной машины мы можем спокойно включать/выключать USB-устройства (не забываем использовать "Безопасное извлечение").

Надеюсь, что тема работа USB устройств в VirtualBox раскрыта.
:-)

9 коммент.:

Kagahn комментирует...
Это сообщение было удалено администратором блога.
SolarWind комментирует...

Хе, идеи витают в воздухе. Я тоже недавно про это писал:

http://www.solargate.ru/podderzhka-usb-v-virtualbox

SIR комментирует...

2 SolarWind:
:-)
Н-да ужж. Это точно. Мне очень понравился твой пост: Коротко и ясно! Сделаю сцылку в статье на нее.

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

В общем, еще одной проблемой меньше!

SolarWind комментирует...

Ага. Меня вообще VirtualBox безмерно радует. Исключительно грамотно сделанная виртуальная машина. Имхо, лучшая на данный момент.

Немножко оффтопика. Я тут на одном из твоих скриншотов углядел на обоях Спитфайр (или Харрикейн?). Интересуешься этой темой или просто ради красоты поставил? Просто авиация второй мировой - один из моих старых интересов. :-)

Анонимный комментирует...

Столкнулся с проблемой USB в VirtialBox на Debian Etch.
Шаг 1 проходит, а вот со вторым проблема. Нет в /etc/init.d/mountdevsubfs.sh этих строчек и радоваться пока мне не приходится :(

SIR комментирует...

2 Анонимный:
хм.. конечно.
Тут налицо разница в дистрибутивах. Ведь с конца прошлого года я обитаю на Kubuntu. Так вот, для Debian это выглядит несколько иначе (только проверить это нет возможности):
1. VirtualBox должен быть НЕ OSE! (это очень важно для всех дистров)
2. А рецепт настройки USB для Debian здесь.

Надеюсь, помогло..

Анонимный комментирует...

Спасибо, помогло.

Анонимный комментирует...

Freez...
Пост замечательный!
Но вот Я столкнулся с такой проблемой:
Проделал все описанное, после чего получил работающий usb, чему безмерно обрадовался, а на следующий день при включении virtualbox и запуска на нем ЗлоХП, обнаружил такую вещь:
- устройства usb на панели "погашены", а при обращении конкретно к ярлыку на панели, надпись: USB-устройства не подключены, В кнопке "Устройства" так же.
И соответственно устройства не подхватывает в ЗлоХП, кроме мыши конечно, она тоже usb/
В чем может быть проблема???

Анонимный комментирует...

Freez....
Решение проблемы пришло неожиданно: Запустил virtualbox из под root, и все увиделось...Великий и могучий root :)