Проброс USB в виртуальную машину Xen возможен двумя основными путями, в корне отличающимися по своему решению (здесь я буду рассматривать проброс USB только "статический", т.е., например, некий аппаратный ключ защиты, который подцепляется при запуске системы).
Метод 1: устаревшийДанный метод доступен из Xen любых версий, включая подверсии 3.x и 4.x.
Для того, чтобы пробросить USB устройство внутрь HVM домена (например, внутрь Windows) из Xen в файле конфигурации виртуальной машины требуется добавить следующие строчки:
usb = 1
usbdevice = 'host:0a89:0003'
Первой строчкой мы включаем виртуальный USB хаб внутри нашей HVM виртуальной машины.
Вторая строчка показывает Xen - какое именно устройство нужно прокинуть внутрь. Здесь:
- host : так и пишем: host, не меняется
- 0a89 : VendorID
- 0003 : DeviceID
VendorID и DeviceID у необходимого устройства можно посмотреть с помощью команды:
$ lsusb
выполенной на Dom0 Xen.
В вывалевшемся спеске Вы увидите все устройства USB, подключенные к данному серверу. Среди них будут и USB-разветвители (USB Hub), и другие устройства, если они подключены.
Как подключить несколько устройств? К сожалению, информации по данному вопросу в Xen я не нашел, а то, что пытался сам пробывать - ничего не помогает. Без PV прокинуть в HVM машину несколько USB устройств не получается.Метод 2: Xen 3.4+, Xen 4.0+ и паравиртуальные машиныДанный метод заработал только на относительно свежих Xen, и самым ярким применением является в Xen 4. Для его работы требуется, чтобы HVM-машина имела на борту паравиртуальные драйвера (например, GPLPV).
С помощью данного метода создается виртуальный USB-контроллер на стороне HVM домена и уже внутрь данного контроллера пробрасываются указанные устройства.
Для того, чтобы это заработало - надо в файл конфигурации виртуальной машины добавить следующую строчку:
vusb = [ 'usbver=2, numports=8, port_1=1-1, port_2=1-2' ]
здесь:
- usbver=2 : Версия USB. usbver=2 - это USB 2.0, usbver=1 - это USB 1.1
- numports=8 : Количество портов этого виртуального контроллера. От 1 до 16.
- port_1=1-1 : Это описание порта 1 виртуального контроллера. Т.е. здесь указывается - какое USB устройство прокинуть в порт 1 виртуальной машины.
- port_2=1-2 : То же самое, только для второго порта.
Как мы видим, здесь есть настройки под названием port_X, после знака "=" у которых указан какой-то индекс USB устройства, которое нужно прокинуть.
Этот индекс - это ID устройства, воткнутого в физическую машину (будь то флешка или аппаратный ключ защиты). Узнать - какой-же нам ID надо - можно следующей командой:
$ sudo xm usb-list-assignable-devices
Эта команда выведет список всех устройств USB, которые можно "прокинуть" внутрь виртуальной машины, с их ID. Именно эти ID мы и можем использовать для того, чтобы указать прокидываемые устройства в port_X.
При этом, как мы видим, в одну виртуальную машину можно уже прокидывать до 16 USB устройств, что не может не радовать.
Посмотреть текущие прокинутые в определенную машину устройства можно командой:
$ sudo xm usb-list <domain_name>
Где вместо <domain_name> укажите имя домена, по которому Вы хотите вывести листинг.
PS. Личные наблюдения - аппаратный ключ защиты через этот метод (второй) - не пробросился. По первому методу - пробросился, а по второму - нет, при этом во втором методе Xen писал, что девайс есть и он привязан к нужной виртуальной машине, а внутри самой машины ключа видно не было.
Комментарии
Оставить комментарий
Операционные системы и системное программировние
Термины: Операционные системы и системное программировние