1

我想将以下行从 qemu 选项转换为 libvirt xml。

-qemu-system-x86_64
-...
-usb -device usb-host,bus=usb-bus.0,hostbus=<bus>,hostport=<port> 

这会为虚拟机添加一个物理 USB 插头。大多数示例都针对 usb-bus/deviceID 进行了显示和详细记录,而不是针对此解决方案。

编辑: 该工具virsh domxml-from-native qemu-argv MyArgV.sh有以下解决方案:

<qemu:commandline>
  <qemu:arg value='-device'/>
  <qemu:arg value='usb-host,bus=usb-bus.0,hostbus=1,hostport=10'/>
</qemu:commandline>

但这并不是我真正想要的,因为它绕过了 libvirt 系统。那么如果本机工具找不到任何解决方案,是否有通用的libvirt解决方案来传递USB-Ports?

我也尝试过使用 virt-manager GUI 来添加 USB 端口,但我找不到这样做的任何可能性。

是否有可能制作正在运行的 qemu 机器的快照并使用 libvirt 即时复制它?

我找到了这个网页。但这一篇描述了如何在 VM 中组装 usb-port 层次结构,而不是将主机端口转发到 vm。

4

2 回答 2

3

不幸的是,它没有记录,但您可以使用以下语法根据总线 + 设备号分配 USB 设备:

<hostdev mode='subsystem' type='usb' managed='no'>
  <source>
    <address bus='1' device='NNN'/>
  </source>
</hostdev>

不幸的是,这里的设备编号是 /dev/usb/bus/NNN 编号,每次插入时都会更改。目前尚不支持基于稳定的主机端口选择设备。

于 2017-09-26T13:55:48.797 回答
0

您还可以从您的 USB 设备中找到供应商和产品 ID(使用lsusb),然后使用此信息将您的 USB 设备连接到您的 KVM:

$ lsusb
...
Bus 002 Device 018: ID 03f0:4217 Hewlett-Packard EWS CM1015
...
<hostdev mode='subsystem' type='usb'>
  <source>
    <vendor id='0x03f0'/>
    <product id='0x4217'/>
  </source>
</hostdev>

在https://rolandtapken.de/blog/2011-04/how-auto-hotplug-usb-devices-libvirt-vms-update-1上找到。

但是,如果您有多个此类 USB 设备连接到主机,这将不起作用。

于 2020-04-27T13:58:53.040 回答