从QEMU到libvirt(virsh) - 添加USB端口

时间:2017-09-26 08:57:09

标签: qemu libvirt virsh

我想将以下行从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端口?

我也尝试过使用virt-manager GUI来添加USB端口,但我无法找到任何这样的存在。

是否可能有一个团体来制作正在运行的qemu机器的快照并立即用libvirt复制它?

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

2 个答案:

答案 0 :(得分:1)

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

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

不幸的是,这里的设备号是/ dev / usb / bus / NNN号,每次插入时它都会改变。但是还没有支持基于hostport选择稳定的设备。

答案 1 :(得分:0)

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

lsusb
$ lsusb
...
Bus 002 Device 018: ID 03f0:4217 Hewlett-Packard EWS CM1015
...

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

但是,如果将多个此类USB设备连接到主机,则此操作将无效。