В XenServer 6.2 пробросить USB порт в виртуальную машину нельзя. Можно пробросить целиком контроллер USB, а вместе с ним в «виртуалку» попадут и все порты связанные с этим контроллером. По такому же принципу можно пробросить практически любое устройство из хостовой системы. Как правило, на сервере от 2 USB контроллеров. Узнать это можно командой хостовой системе:
[root@xen ~]# lspci | grep USB
00:1a.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 05)
00:1d.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 05)
Нас интересуют идентификаторы контроллеров 00:1a.0 и 00:1d.0 именно их мы и будем использовать в дальнейшем. Наверняка, угадать к какому контроллеру подключено устройство будет сложно. Для этого есть команда lsusb из пакета usbutils, но в XenServer этот пакет не установлен. Установить можно на лету командой:
yum install --enablerepo=base usbutils
Также можно попытаться использовать dmesg. Или данные из файла /proc/bus/usb/devices
Просмотреть можно при помощи команды cat
Например информация о аппаратном USB ключе защиты Лига:Закон в этом файле выглядит таким образом:
T: Bus=02 Lev=02 Prnt=02 Port=04 Cnt=02 Dev#= 4 Spd=1.5 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0a89 ProdID=0003 Rev= 2.00
S: Manufacturer=Aktiv Co.
S: Product=Guardant Stealth/Net II
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 56mA
I:* If#= 0 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
Видно, что используется Bus=02, значит контроллер будет 00:1d.0
Далее необходимо узнать UUID ВМ, в которую будет проводиться проброс.
Например так:
[root@xen ~]# xe vm-list name-label=test
uuid ( RO) : cd9c4655-dc8a-c086-103c-c1716293449d
name-label ( RW): test
power-state ( RO): running
Зная идентификатор контроллера в консоли XenServer нужно выполнить команду:
[root@xen ~]# xe vm-param-set other-config:pci=0/000:00:1d.0 uuid=cd9c4655-dc8a-c086-103c-c1716293449d
Где 0/000: — обязательная часть, далее идет сам идентификатор контроллера.
Проверить правильность настроек можно командой:
xe vm-param-list uuid=cd9c4655-dc8a-c086-103c-c1716293449d | grep other-config
Должно присутствовать: pci: 0/000:00:1d.0
После перезапуска ВМ, в диспетчере задач, в случае если установлен Windows, появится хостовый USB контроллер с подключенным к нему устройством.
Для того чтобы отключить проброс контроллера, в консоли XenServer необходимо выполнить команду:
xe vm-param-remove param-name=other-config param-key=pci uuid=cd9c4655-dc8a-c086-103c-c1716293449d