У меня проблемы с тем, чтобы 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
Вещи, которые я пробовал:
Без дополнительных опций
Я добираюсь до шага выбора языка, но ничего не могу ввести. Я проверил, что меня «захватывает» окно qemu при попытке ввода.
Нет графического режима
-nographic
Мне в конечном итоге понадобится графика (которая станет еще одним пакетом червей), но сейчас я попытался ее отключить. Это позволяет мне перейти к шагу выбора языка, но импутация выбора и нажатия Enter ничего не делает. Возможно, это как-то связано с неудачной инициализацией аппаратного драйвера?
Задание клавиатуры на высоком уровне
-device usb-kbd
Что дает мне
No 'usb-bus' bus found for device 'usb-kbd'
Указание хоста и адреса
-device usb-host,hostbus=2,hostaddr=29
Что также дает мне
No 'usb-bus' bus found for device 'usb-host'
Указание поставщика и продукта
-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
, но не знаю, что мне выбрать.
Различные устройства и ОС
Я пытался заставить QEMU принимать данные для этого клиента Solaris в Windows 7, 10 и Ubuntu 18.04.2 LTE на двух разных физических компьютерах.
QEMU Monitor
Я попытался вызвать монитор QEMU, когда виртуальная машина работает и использует sendkey
. Не сработало Однако info
говорит о том, что виртуальная машина работает. usb
не возвращает никаких устройств.
Я перешел по следующим ссылкам: