我有一台 HP 绘图仪,通过 USB 电缆通过 USB 集线器连接到 Debian 服务器。服务器上有一个虚拟化的 Windows XP。每次我重新启动绘图仪时,udev 都会为绘图仪分配一个不同的设备编号,这会改变 Windows 为绘图仪分配的虚拟打印机端口。
似乎无法强制 udev 使用相同的设备号,所以我应该强制 libvirth 传递一个固定的总线地址。
我目前正在使用以下代码libvirt attach-device
:
<hostdev mode='subsystem' type='usb' managed='yes'>
<source>
<vendor id='0x0123'/>
<product id='0x0456'/>
</source>
</hostdev>
我可以为 udev 编写一条规则来创建具有固定名称的设备。如果以这种方式,从客户机上可以看到设备始终连接到同一个 USB 端口,那就太好了。你知道这是否可行吗?
编辑:
我正在尝试遵循 André 的建议。我不确定在设备 #8 的主机总线和主机端口参数上应该填什么。
# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
|__ Port 2: Dev 3, If 0, Class=HID, Driver=usbfs, 1.5M
|__ Port 3: Dev 4, If 0, Class=hub, Driver=hub/4p, 480M
|__ Port 1: Dev 8, If 0, Class=print, Driver=usbfs, 12M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
这是我的第一次尝试:
<qemu:commandline>
<qemu:arg value='-device'/>
<qemu:arg value='ich9-usb-ehci1,id=passthroughehci'/>
<qemu:arg value='-device'/>
<qemu:arg value='usb-host,hostbus=002,hostport=001,bus=passthroughehci.0'/>
</qemu:commandline>
但它没有起作用。