USB设备包括控制器和外设,控制器位于主机上且一个主机可同时拥有多个USB控制器,控制器通过root hub提供接口供其他USB设备连接,而这些USB设备又可以分为hub、存储、智能卡、加密狗、打印机等。目前常用的USB协议有1.1、2.0、3.0、3.1(Type-C)等。在QEMU中,一般可以对USB控制器进行透传,外设进行透传或重定向。
(1)控制器透传
USB控制器也位于PCI总线上,所以将整个控制器及其上面的hub、外设全部透传至虚拟机中,可以参考上一节中的相关域定义,不同的是我们需要找到USB控制器对应的PCI总线地址,如下所示:
然后选择要透传的USB控制器,需要查看主机线路简图或外设简图以确定要透传的USB接口,如果是对主机直接操作,需避免将连有USB键盘鼠标设备的控制器透传至虚拟机,否则会造成后续操作的不便。
参考上一节中的驱动绑定,使用vfio-pci对USB控制器进行透传,假设要透传的控制器为2号控制器,它的总线地址为00:1a.0,设备ID为8086:8d26:
最后在QEMU中添加如下参数:(www.xing528.com)
(2)外设透传
QEMU下USB外设的透传相对比较容易,只需要在域定义中添加对应的USB外设的厂商与设备ID即可,以透传USB-Key为例:
查看设备总线地址与设备ID:
然后在域定义中添加设备ID,也可指定设备的总线地址:
对应到QEMU的参数是“-device usb-host,vendorid=0x04b9,productid=0x8001”或者“-device usb-host,hostbus=1,hostaddr=3,id=hostdev0”,也可是“-usbdevice host:0529:0001”等形式。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。