从 QEMU 到 libvirt(virsh) - 添加 USB 端口
from QEMU to libvirt(virsh) - add USB-port
我想将以下行从 qemu optiones 翻译成 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 网页。但是这个描述的是如何 assemble 虚拟机中的 USB 端口层次结构,而不是将主机端口转发到虚拟机。
不幸的是,它没有记录在案,但您可以使用以下语法根据总线 + 设备编号分配 USB 设备:
<hostdev mode='subsystem' type='usb' managed='no'>
<source>
<address bus='1' device='NNN'/>
</source>
</hostdev>
不幸的是,这里的设备号是/dev/usb/bus/NNN号,每次插入时都会改变。目前还不支持基于稳定的主机端口选择设备。
您还可以从您的 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 设备连接到主机,这将不起作用。
我想将以下行从 qemu optiones 翻译成 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 网页。但是这个描述的是如何 assemble 虚拟机中的 USB 端口层次结构,而不是将主机端口转发到虚拟机。
不幸的是,它没有记录在案,但您可以使用以下语法根据总线 + 设备编号分配 USB 设备:
<hostdev mode='subsystem' type='usb' managed='no'>
<source>
<address bus='1' device='NNN'/>
</source>
</hostdev>
不幸的是,这里的设备号是/dev/usb/bus/NNN号,每次插入时都会改变。目前还不支持基于稳定的主机端口选择设备。
您还可以从您的 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 设备连接到主机,这将不起作用。