Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Xen: проброс USB устройств внутрь HVM виртуальной машины (Windows) или USB passthrough

Практика



Проброс 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 писал, что девайс есть и он привязан к нужной виртуальной машине, а внутри самой машины ключа видно не было.
создано: 2017-05-10
обновлено: 2021-03-13
133841



Рейтиг 5 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционные системы и системное программировние

Термины: Операционные системы и системное программировние