Qemu-kvm/libvirt 가상 머신에서 USB 이더넷 장치가 작동하도록 하는 데 문제가 있습니다.
문제는 게스트 운영체제가 USB 장치를 정상적으로 인식했음에도 불구하고 마운트할 수 없다는 점이다. 게스트의 lsusb에 장치가 표시되지만 게스트 dmesg 로그에는 다음 오류가 표시됩니다.
usb 1-5 can't set config #1, error -32
호스트의 로그를 살펴보면 libvirt가 장치를 강제로 릴리스할 때 호스트의 일부 프로세스가 장치를 다시 획득하는 것으로 보입니다. 다음은 카드가 처음 연결될 때 호스트의 dmesg 로그입니다.
[ 1.353053] usb 1-2: new high-speed USB device number 3 using ehci-pci
[ 1.432153] systemd-udevd[297]: renamed network interface eth0 to enp8s0
[ 1.468455] usb 1-2: config 1 has an invalid interface number: 4 but max is 2
[ 1.468460] usb 1-2: config 1 has an invalid interface number: 5 but max is 2
[ 1.468455] usb 1-2: config 1 has an invalid interface number: 4 but max is 2
[ 1.468460] usb 1-2: config 1 has an invalid interface number: 5 but max is 2
[ 1.468462] usb 1-2: config 1 has an invalid interface number: 5 but max is 2
[ 1.468465] usb 1-2: config 1 has no interface number 1
[ 1.468468] usb 1-2: config 1 has no interface number 2
[ 1.469951] usb 1-2: New USB device found, idVendor=1410, idProduct=b008
[ 1.469955] usb 1-2: New USB device strings: Mfr=4, Product=3, SerialNumber=5
[ 1.469958] usb 1-2: Product: Novatel Wireless 4G
[ 1.469960] usb 1-2: Manufacturer: Novatel Wireless Inc.
[ 1.469963] usb 1-2: SerialNumber: 990000945171911
[ 1.473271] hid-generic 0003:1410:B008.0001: hiddev0,hidraw0: USB HID v1.10 Device [Novatel Wireless Inc. Novatel Wireless 4G] on usb-0000:00:1d.7-2/input0
가상 머신에 장치를 설치하려고 하면(다시 호스트 머신에서 로깅):
[ 92.555534] cdc_ether 1-2:1.4 enp0s29f7u2i4: unregister 'cdc_ether' usb-0000:00:1d.7-2, CDC Ethernet Device
[ 92.673039] usb 1-2: reset high-speed USB device number 3 using ehci-pci
[ 92.789881] cdc_ether 1-2:1.4 eth0: register 'cdc_ether' at usb-0000:00:1d.7-2, CDC Ethernet Device, 00:15:ff:51:71:90
[ 92.814159] systemd-udevd[3480]: renamed network interface eth0 to enp0s29f7u2i4
[ 93.321758] cdc_ether 1-2:1.4 enp0s29f7u2i4: unregister 'cdc_ether' usb-0000:00:1d.7-2, CDC Ethernet Device
[ 93.442035] usb 1-2: reset high-speed USB device number 3 using ehci-pci
[ 93.558723] cdc_ether 1-2:1.4 eth0: register 'cdc_ether' at usb-0000:00:1d.7-2, CDC Ethernet Device, 00:15:ff:51:71:90
[ 93.582179] systemd-udevd[3480]: renamed network interface eth0 to enp0s29f7u2i4
[ 93.673779] cdc_ether 1-2:1.4 enp0s29f7u2i4: unregister 'cdc_ether' usb-0000:00:1d.7-2, CDC Ethernet Device
[ 93.791043] usb 1-2: reset high-speed USB device number 3 using ehci-pci
[ 93.907742] cdc_ether 1-2:1.4 eth0: register 'cdc_ether' at usb-0000:00:1d.7-2, CDC Ethernet Device, 00:15:ff:51:71:90
[ 93.927194] systemd-udevd[3480]: renamed network interface eth0 to enp0s29f7u2i4
[ 94.007311] usb 1-2: usbfs: interface 4 claimed by cdc_ether while 'qemu-kvm' sets config #1
호스트 운영 체제는 CentOS 7이고 가상 머신 운영 체제는 Ubuntu 14.04입니다. 둘 다 해당 패키지 관리자에서 사용할 수 있는 최신 버전의 커널을 가지고 있습니다.
시도한 또 다른 USB 이더넷 카드는 작동했지만 다른 드라이버인 "rndis_host"를 사용했으며 일반적으로 클리너를 설치하는 것처럼 보였습니다.
[ 875.825026] usb 1-2: new high-speed USB device number 5 using ehci-pci
[ 875.940297] usb 1-2: New USB device found, idVendor=1410, idProduct=b009
[ 875.940302] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 875.940305] usb 1-2: Product: MiFi 5792
[ 875.940308] usb 1-2: Manufacturer: Novatel Wireless
[ 875.940310] usb 1-2: SerialNumber: 0123456789ABCDEF
[ 875.987211] rndis_host 1-2:1.0 eth0: register 'rndis_host' at usb-0000:00:1d.7-2, RNDIS device, 00:15:ff:21:57:30
[ 875.987255] usbcore: registered new interface driver rndis_host
[ 876.010204] systemd-udevd[4636]: renamed network interface eth0 to enp0s29f7u2
가상 머신에 장치를 설치하려고 하면(다시 호스트 머신에서 로깅):
[ 2017.809111] rndis_host 1-2:1.0 enp0s29f7u2: unregister 'rndis_host' usb-0000:00:1d.7-2, RNDIS device
[ 2018.095036] usb 1-2: reset high-speed USB device number 5 using ehci-pci
[ 2018.439031] usb 1-2: reset high-speed USB device number 5 using ehci-pci
호스트와 게스트에서 최신 버전의 NetworkManager와 usb_modeswitch를 실행하고 있습니다. sysconfig에서 호스트의 USB 네트워킹을 꺼서 장치를 연결할 때 호스트에서 네트워크 인터페이스가 시작되지 않습니다.
libvirt가 장치를 릴리스한 후 장치를 다시 잠그려는 프로세스를 찾는 데 도움이 되는 디버깅 팁이 있습니까?