1

При попытке запустить arch linux через usb, используя qemu на моем macbook pro retina 2015, запустив osx Yosemite 10.10., Используя команду:

sudo qemu-system-i386 -cpu core2duo -cdrom archlinux-2015.11.01-dual.iso -boot order = d -m 1G -usbdevice host:0x13fe:0x5500

Я продолжаю получать ошибку:

qemu: не удалось добавить USB-устройство 'host: 0x13fe: 0x5500'

В то время как в системной информации устройство USB имеет идентификатор производителя "0x13fe" и идентификатор продукта "0x5500".

Я получаю тот же идентификатор поставщика и продукта, используя кодовый блок (в bash)

`system_profiler SPUSBDataType     | awk '
      /Product ID:/{p=$3}
      /Vendor ID:/{v=$3}
      /Manufacturer:/{sub(/.*: /,""); m=$0}
      /Location ID:/{sub(/.*: /,""); printf("%s:%s %s (%s)\n", v, p, $0, m);}
    '
`

В документации qemu говорится, что правильная форма для передачи через USB

хост: VENDOR_ID: product_id

Поэтому я считаю, что я делаю это правильно.

Я использую QEMU 2.4.0.1

Я что-то здесь не так делаю?

3 ответа3

4

Я не уверен, почему вы получаете эту ошибку, но вы все равно вряд ли захотите использовать -usbdevice так как он может подключать устройство только в «полноскоростном» режиме (12M), даже если это «высокая скорость». скорость "(480M) на стороне хоста:

Это может даже не работать вообще, если вы подключаете "сверхскоростное" (5000M) устройство (xHCI включен на стороне хоста):

Поэтому вместо этого вам нужен более современный и универсальный подход -device usb-host с эмулируемым хост-контроллером по вашему выбору (например, -device nec-usb-xhci):

Он также должен работать для «высокоскоростных» (480М) устройств:

а также «полноскоростные» (12М) устройства:

Возможные варианты эмулируемого хост-контроллера:

[tom@localhost ~]$ qemu-system-x86_64 -device help |& grep usb.*hci
name "ich9-usb-ehci1", bus PCI
name "ich9-usb-ehci2", bus PCI
name "ich9-usb-uhci1", bus PCI
name "ich9-usb-uhci2", bus PCI
name "ich9-usb-uhci3", bus PCI
name "ich9-usb-uhci4", bus PCI
name "ich9-usb-uhci5", bus PCI
name "ich9-usb-uhci6", bus PCI
name "nec-usb-xhci", bus PCI
name "piix3-usb-uhci", bus PCI
name "piix4-usb-uhci", bus PCI
name "usb-ehci", bus PCI
name "vt82c686b-usb-uhci", bus PCI

[tom@localhost ~]$ qemu-system-x86_64 -device help |& grep ohci
name "pci-ohci", bus PCI, desc "Apple USB Controller"
name "sysbus-ohci", bus System, desc "OHCI USB Controller"

nec-usb-xhci должен работать лучше и лучше в большинстве случаев.

Между прочим, кроме vendorid+productid , есть и другие способы указать, какое устройство вы хотите подключить с помощью -device usb-host . Например, hostbus+hostaddr:

Или, hostbus+hostport:

Это удобно, когда в системе несколько устройств одной модели.

Ссылка: http://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/usb2.txt;hb=HEAD

1

Скорее всего, это потому, что '-usbdevice host' предназначен только для Linux и не может использоваться на osx.

https://people.cs.clemson.edu/~ccorsi/kyouko/qemu-doc.html#index-g_t_002dusbdevice-38

host:bus.addr
  Pass through the host device identified by bus.addr (Linux only). 
host:vendor_id:product_id
  Pass through the host device identified by vendor_id:product_id (Linux only). 
0

У меня была такая же проблема на моем ноутбуке. Вы можете использовать -hdb /dev/sdb вместо -usb -usbdevice ... следующим образом:

sudo qemu-system-i386 ubuntu16.img --enable-kvm -monitor stdio -m 2048 -hdb /dev/sdb -vga cirrus -vnc :0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .