Я пытаюсь настроить виртуальную машину Mac OS для разработки iPad.Хост-система - Ubuntu 18.04, и я использую стандартные пакеты qemu из репозитория Ubuntu.
У меня установлена и запущена виртуальная машина Mojave с использованием этих инструкций и всценарий для загрузки виртуальной машины, я добавил эту строку:
-device usb-host,vendorid=0x05ac,productid=0x12ab \
Рассматриваемые устройства - это iPad Air 2 и iPad Mini 4, которые, по словам lsusb, имеют одинаковые идентификаторы продукта..
Вот проблема: когда я загружаюсь в виртуальную машину Mojave, когда я подключаю iPad, я вижу, что он появляется в ioreg -p IOUSB
в течение нескольких секунд, а затем исчезает.Другие устройства (я пробовал модем USB LTE и интерфейс USB RS232) не делают этого;Похоже, что это характерно для iDevices.
На стороне хоста я вижу, что устройство подключается и отключается в цикле.Вот что я вижу в dmesg -w
:
[ 483.734771] usb 1-2.4.1: new high-speed USB device number 39 using xhci_hcd
[ 483.849408] usb 1-2.4.1: New USB device found, idVendor=05ac, idProduct=12ab
[ 483.849416] usb 1-2.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 483.849420] usb 1-2.4.1: Product: iPad
[ 483.849425] usb 1-2.4.1: Manufacturer: Apple Inc.
[ 483.849435] usb 1-2.4.1: SerialNumber: <xxx>
[ 484.543671] usb 2-2.1.4.1.3.3: reset SuperSpeed USB device number 9 using xhci_hcd
[ 488.616849] usb 1-2.4.1: reset high-speed USB device number 39 using xhci_hcd
[ 488.732805] usb 1-2.4.1: device firmware changed
[ 488.733301] usb 1-2.4.1: USB disconnect, device number 39
[ 488.824694] usb 1-2.4.1: new high-speed USB device number 40 using xhci_hcd
[ 488.938611] usb 1-2.4.1: New USB device found, idVendor=05ac, idProduct=12ab
[ 488.938613] usb 1-2.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 488.938614] usb 1-2.4.1: Product: iPad
[ 488.938615] usb 1-2.4.1: Manufacturer: Apple Inc.
[ 488.938616] usb 1-2.4.1: SerialNumber: <xxx>
[ 490.961709] usb 1-2.4.1: reset high-speed USB device number 40 using xhci_hcd
[ 491.076908] usb 1-2.4.1: usbfs: process 2557 (gvfs-gphoto2-vo) did not claim interface 0 before use
[ 494.579362] usb 2-2.1.4.1.3.3: reset SuperSpeed USB device number 9 using xhci_hcd
[ 531.110536] usb 1-2.4.1: USB disconnect, device number 40
[ 533.905116] usb 1-2.4.1: new high-speed USB device number 41 using xhci_hcd
[ 534.019231] usb 1-2.4.1: New USB device found, idVendor=05ac, idProduct=12ab
[ 534.019237] usb 1-2.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 534.019241] usb 1-2.4.1: Product: iPad
[ 534.019244] usb 1-2.4.1: Manufacturer: Apple Inc.
[ 534.019247] usb 1-2.4.1: SerialNumber: <xxx>
[ 534.602098] usb 1-2.1.4.4: USB disconnect, device number 17
Обратите внимание, что выше я не физически соединяюсь и не отсоединяюсь - что-то делает это самостоятельно.Также следует отметить, что я не получаю этот цикл подключения / отключения, если моя виртуальная машина не работает (или если я удаляю линию, настраивающую сквозной USB-порт)
То, что я пробовал
Я исходил из предположения, что хост (вероятно, udevd) делает это, что мешает qemu (ну, я полагаю, libusb) удерживать устройство.С этой целью я прошел и отключил все правила udev, которые выглядят так, как будто они замешаны.В частности, я создал символические ссылки на /dev/null
для следующих файлов udev:
- / etc / udev / rules.d / 39-usbmuxd.rules
- / etc / udev/rules.d/60-libgphoto2-6.rules
- / etc / udev / rules.d / 90-libgpod.rules
Я также пытался отключить службу gphoto2, напримеритак:
systemctl --user stop gvfs-gphoto2-volume-monitor.service
Несмотря на все эти вещи, поведение по сути одинаково.Также примечательно: даже после отключения всех этих вещей, ядро все еще каким-то образом обнаруживает iPad, когда я подключаю его, и записывает его серийный номер и т. Д. В системный журнал, и я достиг предела своих знаний о том, как отключить вещи в Linux!
Как я могу заставить свой iPad появляться (и оставаться) в моей виртуальной машине qemu?