Последовательный порт USB с KVM: подробное руководство по методам и примерам кода

Последовательная передача USB — это метод, который позволяет передавать последовательное USB-устройство на виртуальную машину (ВМ), работающую на гипервизоре KVM (виртуальная машина на основе ядра). Это позволяет виртуальной машине напрямую получать доступ к последовательному USB-устройству и взаимодействовать с ним, как если бы оно было напрямую подключено к хост-системе. В этой статье мы рассмотрим различные методы реализации последовательного порта USB с помощью KVM, а также приведем примеры кода для каждого метода.

Метод 1: использование графического интерфейса virt-manager
virt-manager — это инструмент с графическим пользовательским интерфейсом, который предоставляет возможности управления виртуализацией на основе KVM. Он позволяет легко настроить сквозное соединение USB для виртуальной машины. Вот как вы можете добиться сквозного последовательного порта USB с помощью virt-manager:

  1. Запустите virt-manager и выберите нужную виртуальную машину.
  2. Нажмите «Добавить оборудование» и выберите «USB-хост-устройство» из списка.
  3. Выберите последовательное USB-устройство, через которое вы хотите подключиться, и нажмите «Готово».
  4. Запустите виртуальную машину, и последовательное USB-устройство должно быть доступно внутри виртуальной машины.

Метод 2: использование инструмента командной строки virsh
Если вы предпочитаете интерфейс командной строки, инструмент virsh предоставляет удобный способ управления виртуализацией на основе KVM. Вот как можно добиться сквозного USB Serial Passthrough с помощью virsh:

  1. Откройте терминал и выполните следующую команду, чтобы получить список доступных USB-устройств:

    lsusb
  2. Определите последовательное USB-устройство, через которое вы хотите подключиться, по его поставщику и идентификатору продукта.

  3. Выполните следующую команду, чтобы добавить USB-устройство к виртуальной машине:

    virsh attach-device <vm-name> /dev/bus/usb/<bus>/<device>

    Замените <vm-name>на имя вашей виртуальной машины, а <bus>и <device>на соответствующие номера шины и устройства для вашего последовательного USB-устройства..

  4. Запустите виртуальную машину, и последовательное USB-устройство должно быть доступно внутри виртуальной машины.

Метод 3: использование USBIP
USBIP — это платформа, позволяющая совместно использовать USB-устройства по сети. Используя USBIP, вы можете передать последовательное USB-устройство из хост-системы в виртуальную машину. Вот как можно добиться сквозного последовательного порта USB с помощью USBIP:

  1. Установите пакет USBIP как на хост-системе, так и на виртуальной машине.

    sudo apt-get install usbip
  2. В хост-системе выполните следующую команду, чтобы привязать последовательное USB-устройство к драйверу USBIP:

    sudo usbip bind --busid=<busid>

    Замените <busid>на идентификатор шины вашего последовательного USB-устройства, который можно получить из lsusb.

  3. На виртуальной машине выполните следующую команду, чтобы подключить устройство USBIP:

    sudo usbip attach --remote=<host-ip> --busid=<busid>

    Замените <host-ip>на IP-адрес хост-системы, а <busid>на идентификатор шины последовательного USB-устройства.

  4. Последовательное 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 и улучшить функциональность ваших виртуализированных сред.