- Linux kvm проброс usb
- Manually, using qemu-kvm command line
- Managed, using virt-manager
- Динамический проброс USB-устройства в виртуальную машину на базе KVM-гипервизора
- Добавление USB-устройств в QEMU/KVM
- Linux kvm проброс usb
- Проброс USB устройства внутрь гостевой OS, используя KVM
- Находим, на какой шине находится устройство USB:
- Создаем конфиг для устройства, следующего плана (с учетом данных, полученных ранее):
- Подключаем к VPS:
Linux kvm проброс usb
This example is based on qemu-kvm (0.15.0) as installed in Fedora 15. Will first show how to do this manually, and second how to do it using the virt-manager tool. This HOWTO is limited to UHCI devices (no USB2 EHCI).
Here we’ll use a phone attached to the host:
# lsusb . Bus 002 Device 003: ID 18d1:4e11 Google Inc. Nexus One
(Note the Bus and device numbers).
Manually, using qemu-kvm command line
#/usr/bin/qemu-kvm -m 1024 -name f15 -drive file=/images/f15.img,if=virtio -usb -device usb-host,hostbus=2,hostaddr=3
Here we add the -usb to add a host controller, and add -device usb-host,hostbus=2,hostaddr=3 to add the host’s USB device at Bus 2, Device 3. Simple as that.
Now, we can verify this in the guest:
$ lspci . 00:01.2 USB Controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
$ lsusb Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 18d1:4e11 Google Inc. Nexus One Phone
And on the phone enable USB Mass Storage, and the guest should display a dialog seeing a new USB filesystem. Open it and.
$ ls /media/[mountpoint] Android/ data/ DCIM/ .
Managed, using virt-manager
This assumes you already have created a VM using virt-manager. The VM is not running, and you’d like to add a USB host device to the VM. Start virt-manager, and open your VM by double clicking on it. Click the virtual hardware details (lightbulb). Now Click Add Hardware, and Choose USB Host Device. Here, we are choosing the same Phone device.
Start the VM and verify the usb host controller and device show up like above. Now on the phone enable USB Mass Storage, and the guest should display a dialog seeing a new USB filesystem.
Динамический проброс USB-устройства в виртуальную машину на базе KVM-гипервизора
Задача: необходимо выполнить проброс Flash-накопителя в виртуальную машину на базе KVM-гипервизора, чтобы при переподключении одного и тоже же Flash-накопителя гипервизор автоматически выполнял проброс с хост-машины в гостевую.
Проблема: При переподключении Flash-накопителя через GUI virt-manager устройство автоматически не импортируется в виртуальную машину, так как при переподключении изменился индентификатор устройста.
Решение: Чтобы обойти данную проблему необходимо создать файл с описанием параметров idVendor и idProduct для Flash-накопителя.
После того, как мы узнали idVendor и idProduct, создадим файд .xml формата, чтобы импортировать его в конфигурацию виртуальной машины KVM. В файле /etc/libvirt/qemu/usb_device.xml указывает полученные данные в шестнадцатиричном формате. Здесь usb_device.xml любое название файла.
Далее создадим правило в файле /etc/udev/rules.d/90-libvirt-usb.rules для устройства, которое будет подключено к хост-машине.
ACTION=="add", \ SUBSYSTEM=="usb", \ ENV=="ffff", \ ENV=="5678", \ RUN+="/usr/bin/virsh attach-device win2016 /etc/libvirt/qemu/usb_device.xml" ACTION=="remove", \ SUBSYSTEM=="usb", \ ENV=="ffff", \ ENV=="5678", \ RUN+="/usr/bin/virsh detach-device win2016 /etc/libvirt/qemu/usb_device.xml"
Здесь /usr/bin/virsh путь до бинарного файла virsh, win2016 – имя виртуальной машины, на которую выполняем проброс Flash-накопителя, /etc/libvirt/qemu/usb_device.xml – путь до .xml файла с описание устройства. Так же в файле правила указывает идентификаторы Flash-накопителя ID_VENDOR_ID = idVendor и ID_MODEL_ID = idProduct .
Перезагружаем правила udev командой udevadm control —reload-rules && udevadm trigger или перезагружаем хост-машину. После этого переподключаем Flash-накопитель и проверяем работу динамического проброса устройства.
Добавление USB-устройств в QEMU/KVM
Для того,чтобы подключить USB-устройства реального хоста в виртуальную машину QEMU/KVM добавьте в конфигурационный файл в список оборудования USB Disk 2.0 и USB-устройство TM (ТМ-считыватель или TM-Key).
Для добавления в конфигурационный файл виртуальной машины в список оборудования USB Disk 2.0 выполните следующие действия:
1. Подключите USB-носитель с инсталляционным комплектом ФПСУ-IP. Для вывода подключенных USB-устройств введите команду в терминале:
Команда выводит информацию о USB-шинах и подключенных к ним устройствах. Каждое из устройств имеет пару 16-битных идентификаторов: идентификатор производителя (Vendor ID) и идентификатор устройства (Device ID), которые следует использовать для идентификации устройств.
2. Для добавления в конфигурационный файл виртуальной машины USB Disk 2.0, создайте файл /etc/libvirt/qemu/usb1.xml с описанием устройства (укажите параметры Vendor ID, Device ID).
3. Для проброса USB-устройства с хост-машины в гостевую ОС, виртуальную машину vfpsu1, введите команду в терминале:
virsh attach-device vfpsu1 usb1.xml
4. Обновите конфигурационный файл виртуальной машины vfpsu1. Введите команду в терминале:
virsh dumpxml vfpsu1 > vfpsu1.xml
Файл конфигурации виртуальной машины будет выведен в файл формата XML. Затем для виртуальной машины vfpsu1 будет переопределен файл конфигурации.
5. Откройте конфигурационный файл и убедитесь, что USB-устройство успешно вмонтировано в виртуальную машину, выполните команду в терминале:
6. При последующем подключении USB-устройства изменяется его номер в системе (параметры Bus, Device), как правило, выводится ошибка (USB-устройство не найдено). Необходимо сверить параметры устройства в конфигурационном файле vfpsu1.xml, выполнив пункт 10.1.
7. В случае несовпадения, замените в файле vfpsu1.xml параметры Bus, Device на актуальные.
8. Удалите USB-устройство из виртуальной машины для переопределения. Выполните шаги 3 — 5.
Добавление USB-устройства TM
Для добавления в конфигурационный файл виртуальной машины в список оборудования USB-устройства TM (ТМ-считыватель или TM-Key) выполните следующие действия:
1. Для добавления в конфигурационный файл виртуальной машины USB-устройства ТМ, создайте файл /etc/libvirt/qemu/usb2.xml с описанием устройства (укажите параметры Vendor ID, Device ID).
2. При каждом подключении USB-устройства изменяется его номер в системе, поэтому необходимо чтобы USB-устройство автоматически импортировалось в виртуальную машину. Для автоматического проброса USB-устройства с хост-машины в гостевую ОС, виртуальную машину vfpsu1, создайте следующее правило в файле /etc/udev/rules.d/90-libvirt-usb.rules:
RUN+=»/usr/bin/virsh attach-device vfpsu1 /etc/libvirt/qemu/usb2.xml»
RUN+=»/usr/bin/virsh detach-device vfpsu1 /etc/libvirt/qemu/usb2.xml»
где /usr/bin/virsh — путь до бинарного файла virsh,
vfpsu1 – имя виртуальной машины, на которую выполняем проброс ТМ,
/etc/libvirt/qemu/usb2.xml – путь до .xml файла с описание устройства ТМ,
ID_VENDOR_ID, ID_MODEL_ID — идентификаторы ТМ, в списке USB-устройств ТМ определяется как a420:5426.
3. Подключите USB-устройство ТМ, добавьте его в список оборудования виртуальной машины.
4. Выполните перезагрузку хост машины, чтобы перезагрузить правила udev, или выполните команду в терминале:
udevadm control —reload-rules && udevadm trigger
5. Переподключите USB-устройство ТМ, ТМ должна автоматически импортироваться в виртуальную машину.
Linux kvm проброс usb
DirectAdmin — это удобная панель управления хостингом. Легкость в настройке, легкость в использовании!
ДиректАдмин — самая быстрая и нересурсоемкая панель из всех существующих коммерческих панелей управления для хостинга. Бесплатные и регулярные обновления версии панели DirectAdmin на протяжении всего времени ее использования заметно выделяют ее среди других.
Проброс USB устройства внутрь гостевой OS, используя KVM
Появилась задача пробросить USB флешку в гостевую FreeBSD. На сервере используется виртуализация KVM.
После поисков и чтения устаревших постов на форумах, решение таки было найдено в официальной документации по libvirt. Отсюда вывод, начинать надо именно с нее.
USB and PCI devices attached to the host can be passed through to the guest using the hostdev element. since after 0.4.4 for USB and 0.6.0 for PCI (KVM only)
Находим, на какой шине находится устройство USB:
# lsusb
Bus 007 Device 002: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Создаем конфиг для устройства, следующего плана (с учетом данных, полученных ранее):
Подключаем к VPS:
В нашем случае примерно так:
# virsh attach-device vm300 usb.device.xml
Где vm300 — это имя VM (VPS) или домен, как принято называть. А usb.device.xml — это конфиг в формате XML с данными USB устройства.
Таким образом устройство сразу же должно стать доступным внутри гостевой OS. Чтобы закрепить данные, т.е. обновить XML конфиг самой виртуальной машины, делаем:
Что для нашего пример выглядит так:
# virsh dumpxml vm300 > vm300.xml
# virsh define vm300.xml
Полный конфиг может выглядеть так: