QEMU трудности с прохождением USB-клавиатуры - PullRequest
1 голос
/ 10 апреля 2019

У меня проблемы с тем, чтобы QEMU распознал мою клавиатуру. Хост-машина - Windows 7. Клиент - Solaris 10 SPARC. Я запускаю команды через Cygwin.

Все запускается, но когда приходит время для ввода чего-либо, никакие штрихи не фиксируются.

Моя клавиатура, мышь и мониторы подключены к моему компьютеру через физический концентратор Dell, который может влиять на вещи. Но поскольку на моем компьютере мало USB-слотов, необходим концентратор.

Тем не менее, я вижу мои usb-клавиатуру и мышь как обычные, используя lsusb:

$ lsusb
Bus 002 Device 022: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
...
Bus 002 Device 029: ID 413c:2107 Dell Computer Corp.
Bus 002 Device 002: ID 413c:9016 Dell Computer Corp.
...

Я дважды проверил с -v и шиной 002, устройство 029 - клавиатура

Bus 002 Device 029: ID 413c:2107 Dell Computer Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x413c Dell Computer Corp.
  idProduct          0x2107
  bcdDevice            1.15
  iManufacturer           1 Dell
  iProduct                2 Dell USB Entry Keyboard

Обычно я могу получить доступ к диалоговому окну выбора языка, но тогда я либо ничего не могу ввести, либо ничего не требуется (в зависимости от параметров):

OpenBIOS for Sparc64
Configuration device id QEMU version 1 machine id 0
kernel cmdline
CPUs: 1 x SUNW,UltraSPARC-IIi
UUID: 00000000-0000-0000-0000-000000000000
Welcome to OpenBIOS v1.1 built on Feb 15 2019 10:05
  Type 'help' for detailed information
[Evaling fcode, entry point...]
SunOS Release 5.10 Version Generic_147147-26 64-bit
Copyright (c) 1983, 2013, Oracle and/or its affiliates. All rights reserved.
could not find debugger-vocabulary-hook>threads:interpret: exception -13 caught
interpret \ Copyright (c) 1995-1999 by Sun Microsystems, Inc.
[Some pragma stuff...]
h# unix-tte:interpret: exception -13 caught
interpret ' unix-tte is va>tte-data failed with error ffffffffffffffed
WARNING: consconfig: cannot find driver for screen device /pci@1fe,0/pci@1,1/QEMU,VGA@2
Configuring devices.
WARNING: ata_controller[0] - Unsupported Controller
        Vendor 0x9510, Device 0x4606, Revision 0x7
WARNING: Out of range register specification from device node <fdthree>
/platform/sun4u/kernel/drv/sparcv9/i8042: undefined symbol 'i_ddi_alloc_ispec'
WARNING: mod_load: cannot load module 'i8042'
WARNING: ata_controller[0] - Unsupported Controller
        Vendor 0x9510, Device 0x4606, Revision 0x7
WARNING: Out of range register specification from device node <fdthree>
/platform/sun4u/kernel/drv/sparcv9/i8042: undefined symbol 'i_ddi_alloc_ispec'
WARNING: mod_load: cannot load module 'i8042'
WARNING: SUNW,hme0 : No transceiver found., SEVERITY_HIGH, XCVR

WARNING: SUNW,hme0 : No transceiver found., SEVERITY_HIGH, XCVR

WARNING: SUNW,hme0 : Failed to initialize hardware/driver, SEVERITY_HIGH, INIT  

Using RPC Bootparams for network configuration information.
svc:/system/filesystem/local:default: WARNING: /usr/sbin/zfs mount -a failed: one or more file systems failed to mount
Serial console, reverting to text install
Beginning system identification...
Searching for configuration file(s)...
Search complete.
Discovering additional network configuration...
Select a Language

   0. English
   1. Brazilian Portuguese
   2. French
   3. German
   4. Italian
   5. Japanese
   6. Korean
   7. Simplified Chinese
   8. Spanish
   9. Swedish
  10. Traditional Chinese

Please make a choice (0 - 10), or press h or ? for help:
[Cannot input, or if can, doesn't take]

Я убежден, что это связано с правильными аргументами для прохождения через usb, но я не уверен, какие именно. Для удобства предположим, что все следующие команды начинаются с

"C:\Program Files\qemu\qemu-system-sparc64" -m 2048 -cdrom "sol-10-u11-ga-sparc-dvd.iso" -k en-us -boot d 

Вещи, которые я пробовал:

  1. Без дополнительных опций

    Я добираюсь до шага выбора языка, но ничего не могу ввести. Я проверил, что меня «захватывает» окно qemu при попытке ввода.

  2. Нет графического режима

     -nographic 
    

    Мне в конечном итоге понадобится графика (которая станет еще одним пакетом червей), но сейчас я попытался ее отключить. Это позволяет мне перейти к шагу выбора языка, но импутация выбора и нажатия Enter ничего не делает. Возможно, это как-то связано с неудачной инициализацией аппаратного драйвера?

  3. Задание клавиатуры на высоком уровне

    -device usb-kbd
    

    Что дает мне

    No 'usb-bus' bus found for device 'usb-kbd'
    
  4. Указание хоста и адреса

    -device usb-host,hostbus=2,hostaddr=29
    

    Что также дает мне

    No 'usb-bus' bus found for device 'usb-host'
    
  5. Указание поставщика и продукта

    -device piix4-usb-uhci,id=usb,bus=pci,addr=0x4 -device usb-host,vendorid=0x413c,productid=0x2107
    

    Не могу найти свободный, незарезервированный слот. Все они уже имеют устройство или возвращают что-то вроде:

    PCI: slot 4 function 0 not available for piix4-usb-uhci, reserved
    

    Я думаю, что uhci - это usb 1.0, должен ли я иметь другой спецификатор в первом аргументе устройства? Я вижу варианты с -device help, но не знаю, что мне выбрать.

  6. Различные устройства и ОС

    Я пытался заставить QEMU принимать данные для этого клиента Solaris в Windows 7, 10 и Ubuntu 18.04.2 LTE на двух разных физических компьютерах.

  7. QEMU Monitor

    Я попытался вызвать монитор QEMU, когда виртуальная машина работает и использует sendkey. Не сработало Однако info говорит о том, что виртуальная машина работает. usb не возвращает никаких устройств.

Я перешел по следующим ссылкам:

...