Последовательная передача USB — это метод, который позволяет передавать последовательное USB-устройство на виртуальную машину (ВМ), работающую на гипервизоре KVM (виртуальная машина на основе ядра). Это позволяет виртуальной машине напрямую получать доступ к последовательному USB-устройству и взаимодействовать с ним, как если бы оно было напрямую подключено к хост-системе. В этой статье мы рассмотрим различные методы реализации последовательного порта USB с помощью KVM, а также приведем примеры кода для каждого метода.
Метод 1: использование графического интерфейса virt-manager
virt-manager — это инструмент с графическим пользовательским интерфейсом, который предоставляет возможности управления виртуализацией на основе KVM. Он позволяет легко настроить сквозное соединение USB для виртуальной машины. Вот как вы можете добиться сквозного последовательного порта USB с помощью virt-manager:
- Запустите virt-manager и выберите нужную виртуальную машину.
- Нажмите «Добавить оборудование» и выберите «USB-хост-устройство» из списка.
- Выберите последовательное USB-устройство, через которое вы хотите подключиться, и нажмите «Готово».
- Запустите виртуальную машину, и последовательное USB-устройство должно быть доступно внутри виртуальной машины.
Метод 2: использование инструмента командной строки virsh
Если вы предпочитаете интерфейс командной строки, инструмент virsh предоставляет удобный способ управления виртуализацией на основе KVM. Вот как можно добиться сквозного USB Serial Passthrough с помощью virsh:
-
Откройте терминал и выполните следующую команду, чтобы получить список доступных USB-устройств:
lsusb -
Определите последовательное USB-устройство, через которое вы хотите подключиться, по его поставщику и идентификатору продукта.
-
Выполните следующую команду, чтобы добавить USB-устройство к виртуальной машине:
virsh attach-device <vm-name> /dev/bus/usb/<bus>/<device>Замените
<vm-name>на имя вашей виртуальной машины, а<bus>и<device>на соответствующие номера шины и устройства для вашего последовательного USB-устройства.. -
Запустите виртуальную машину, и последовательное USB-устройство должно быть доступно внутри виртуальной машины.
Метод 3: использование USBIP
USBIP — это платформа, позволяющая совместно использовать USB-устройства по сети. Используя USBIP, вы можете передать последовательное USB-устройство из хост-системы в виртуальную машину. Вот как можно добиться сквозного последовательного порта USB с помощью USBIP:
-
Установите пакет USBIP как на хост-системе, так и на виртуальной машине.
sudo apt-get install usbip -
В хост-системе выполните следующую команду, чтобы привязать последовательное USB-устройство к драйверу USBIP:
sudo usbip bind --busid=<busid>Замените
<busid>на идентификатор шины вашего последовательного USB-устройства, который можно получить изlsusb. -
На виртуальной машине выполните следующую команду, чтобы подключить устройство USBIP:
sudo usbip attach --remote=<host-ip> --busid=<busid>Замените
<host-ip>на IP-адрес хост-системы, а<busid>на идентификатор шины последовательного USB-устройства. -
Последовательное USB-устройство теперь должно быть доступно на виртуальной машине.
Метод 4: использование XML-конфигурации libvirt
Если вы предпочитаете определять конфигурации виртуальной машины с помощью XML, вы можете использовать XML-конфигурацию libvirt для включения последовательного порта USB. Вот пример настройки последовательного порта USB в XML:
<hostdev mode='subsystem' type='usb'>
<source>
<vendor id='0x1234'/>
<product id='0x5678'/>
</source>
</hostdev>
Замените идентификаторы vendorи productсоответствующими значениями для вашего последовательного USB-устройства.
Последовательный порт USB с KVM обеспечивает плавную интеграцию последовательных USB-устройств в виртуальные машины. В этой статье мы рассмотрели несколько методов достижения последовательной передачи USB, в том числе использование графического интерфейса virt-manager, инструмента командной строки virsh, USBIP и конфигурации XML libvirt. Следуя этим методам, вы можете легко включить USB Serial Passthrough и улучшить функциональность ваших виртуализированных сред.