Proxmox. Проброс usb-устройств в гостевую виртуальную машину. На примере ключей 1С HASP

обновлено 16.05.13

Немного теории о usb:
«Физическое соединение устройств осуществляется по топологии многоярусной звезды. Центром каждой звезды является хаб, каждый кабельный сегмент соединяет две точки — хаб с другим хабом или с функцией. В системе имеется один (и только один) хост-контроллер, расположенный в вершине пирамиды устройств и хабов. Хост-контроллер интегрируется с корневым хабом (Root Hub), обеспечивающим одну или несколько точек подключения — портов.» — источник

Наша задача выяснить, на какой шине (bus) и к какому порту (port) подключены наши usb-устройства. В качестве примера приведён проброс двух ключей HASP 1С Предприятия 8 (серверный и клиентский)

1. Вставляем usb-устройства;

2. Далее есть два способа выяснения связки шина-порт:
а) В консоли proxmox сервера выполняем «lsusb». В результате выясним имя устройств и найдём среди них свои:

Искомое: 2 ключа Aladdin Knowledge Systems HASP v0.06 на шине 6

Теперь выясняем, на каких портах «висят» ключи. Выполняем «lsusb -t», которая нам выдаст древовидную структуру:

Как видим, устройства (Device) 2 и 3 на шине 6 находятся на портах 1 и 2. Соответственно, пробрасывать будем 6-1 и 6-2.

б) Короткий способ.
Выполняем «qm monitor НОМЕР_ВИРТУАЛЬНОЙ_МАШИНЫ»,

Теперь выполняем команду «info usbhost»

Вот они наши HASP-ключи, опять же на шине 6 и портах 1 и 2.
Выходим командной quit либо сочетанием Ctrl+C

3. Редактируем на сервере файл /etc(/pve)/qemu-server/NNN.conf (где NNN-номер виртуальной машины) и добавляем следующие строки:
Для версии proxmox < 2.0

Для версии proxmox > 2.0 

4. Перезагружаем виртуальную машину.

5. Проверить, подцепились ли устройства, можно снова зайдя в qm monitor (как в п. 2б) и выполнив команду «info usb»

P.S. Также usb-устройство можно подключить, добавив в конец NNN.conf такое:

,где 0529:0001 — это device ID, взятый из п. 2а
Плюсы: при перемещении usb-устройства в другой порт не надо ничего перенастраивать;
Минусы: этот способ не годится, если у вас несколько устройств с одинаковыми device ID, как в указанном выше примере