将 iPhone 连接到运行 OSX 的 libvirt 虚拟机

Aze*_*hur 5 iphone usb kvm libvirt ios

我创建了一个 OSX Mojave 虚拟机,并试图将 iPhone 传递给它,以便我可以使用 XCode。我已经测试过将键盘传递给来宾,这很好用。但是,iPhone 没有。

当我使用 virt-manager 添加 USB 主机设备时,iPhone 会发出声音表示它已连接,但它似乎没有连接到访客。

我注意到的一些事情可能有助于解决这个问题:

如果我添加 USB 主机设备,然后很快切换到 VM 并运行system_profiler SPUSBDataType,iPhone 将显示为已连接。不过这只会持续几秒钟。system_profiler SPUSBDataType几秒钟后运行显示 iPhone 不再连接。

我已经测试过将 iPhone 传递给 Linux 来宾。将它传递给 Linux 来宾时,它似乎确实保持连接。

人们报告说,通过添加usb.quirks.device0 = "0x05ac:0x12a8 skip-reset, skip-refresh, skip-setconfig"到他们的 VMWare VMX 文件,成功地将 iPhone 传递到 VMWare 虚拟机,我提到这一点是因为我认为在 libvirt 中复制这些设置可能会以某种方式解决问题。

当我添加 USB 主机设备时,我在主机上的 dmesg 中得到了这个:

[178165.281031] audit: type=2501 audit(1540468134.413:1654): pid=604 uid=0 auid=4294967295 ses=4294967295 msg='virt=kvm resrc=cgroup reason=allow vm="macos-high-sierra" uuid=2aca0dd6-cec9-4717-9ab2-0b7b13d111c3 cgroup="/sys/fs/cgroup/devices/machine.slice/machine-qemu\x2d34\x2dmacos\x2dhigh\x2dsierra.scope/" class=path path="/dev/bus/usb/003/050" rdev=BD:131 acl=rw exe="/usr/bin/libvirtd" hostname=? addr=? terminal=? res=success'
[178165.284135] audit: type=2501 audit(1540468134.417:1655): pid=604 uid=0 auid=4294967295 ses=4294967295 msg='virt=kvm resrc=dev reason=attach vm="macos-high-sierra" uuid=2aca0dd6-cec9-4717-9ab2-0b7b13d111c3 bus=usb device="003.050" exe="/usr/bin/libvirtd" hostname=? addr=? terminal=? res=success'
[178165.562355] usb 3-11: reset high-speed USB device number 50 using xhci_hcd
[178165.702290] usb 3-11: device firmware changed
[178165.702489] usb 3-11: USB disconnect, device number 50
[178165.825523] usb 3-11: new high-speed USB device number 51 using xhci_hcd
[178165.966944] usb 3-11: New USB device found, idVendor=05ac, idProduct=12a8, bcdDevice= 6.01
[178165.966946] usb 3-11: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[178165.966948] usb 3-11: Product: iPhone
[178165.966949] usb 3-11: Manufacturer: Apple Inc.
[178165.966950] usb 3-11: SerialNumber: 71e8245949fde7db02fa88199e22c939196f3ec1
Run Code Online (Sandbox Code Playgroud)

看起来 iPhone 正在重新连接(也许它正在改变连接模式?)然后 libvirt 没有将它传回来宾?