我在家庭服务器 conway 上有一个 DS2490 USB 1-wire 接口,它连接到其中一个虚拟机,以便该虚拟机可以读取 1-wire 网络上的传感器。此连接在机器启动时起作用,DS2490 USB 1-wire 可以正常显示在虚拟机中。当我在附近的业余无线电上传输时,这个 DS2490 USB 1-wire 接口有时会出现混乱,因此解决方案是将其从虚拟机上断开,从服务器上拔下,重新插入并再次连接到虚拟机。今天必须这样做,当我再次尝试连接时,我收到了一条意外的错误消息:
root@conway:~# virsh attach-device --live gosper /etc/onewire-for-gosper.xml
error: Failed to attach device from /etc/onewire-for-gosper.xml
error: internal error: unable to execute QEMU command 'device_add': failed to find host usb device 2:8
在日志文件 /var/log/libvirt/libvirtd.log 中:
2022-09-24 21:16:38.655+0000: 10923: error : qemuMonitorJSONCheckError:395 : internal error: unable to execute QEMU command 'device_add': failed to find host usb device 2:8
根据 lsusb,usb 设备 2:8 是正确的,自从我将家庭服务器升级到 Devuan beowulf 以来,这似乎是新的。之前所有功能都运行良好的版本是 Devuan ascii。libvirt 的当前版本:
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Descripti
+++-=====================================-===============-============-=========
ii libvirt-clients 5.0.0-4+deb10u1 amd64 Programs
ii libvirt-daemon 5.0.0-4+deb10u1 amd64 Virtualiz
un libvirt-daemon-driver-storage-gluster (no descr
un libvirt-daemon-driver-storage-rbd (no descr
un libvirt-daemon-driver-storage-zfs (no descr
ii libvirt-daemon-system 5.0.0-4+deb10u1 amd64 Libvirt d
ii libvirt-glib-1.0-0:amd64 1.0.0-1 amd64 libvirt G
ii libvirt0:amd64 5.0.0-4+deb10u1 amd64 library f
我已经尝试过的事情:
- 暂时禁用 AppArmor,基于https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1552241
- 使用 udev 规则更改 usb 设备的组,基于https://unix.stackexchange.com/questions/498451/qemu-usb-passthrough-broken-after-ubuntu-18-04-upgrade
两种解决方案都未能解决问题。
我确实注意到我可以将设备连接到另一台主机,在那里使用它可以,然后再次将其从该主机上分离而不会出现问题!