Какая простейшая настройка компиляции / исполнения QEMU для разрешения гостевого FHD?

РЕДАКТИРОВАТЬ: решение Германа использования QXL является приемлемым.

Я сам компилирую QEMU и запускаю его из командной строки. Это связано с применением патча и с последней версией QEMU.

Цель состоит в том, чтобы запустить гостевую ОС Windows (7+) с разрешением FHD (1920x1080), без использования удаленного рабочего стола (следовательно, непосредственно в окне QEMU), с использованием хоста Ubuntu 16.04 x86/64.

Когда я настраиваю компилятор с:

./configure --target-list=x86_64-softmmu --enable-debug --enable-gtk # and other parameters

и запустить QEMU с:

$QEMU_BINARY \
  -drive if=pflash,format=raw,readonly,file=$OVMF_20160813_BIN \
  -drive if=pflash,format=raw,file=$OVMF_20160813_VARS_TMP \
  -enable-kvm \
  -machine q35,accel=kvm,mem-merge=off \
  -cpu host \
  -vga std \
  # and other parameters

Windows ограничивает разрешение до 800x600.

Как я могу настроить / выполнить QEMU для получения ожидаемого разрешения?

Когда я выполняю, используя -vga vmware, Я получил Guest has not initialized the display (yet)., что я не уверен, если это ошибка, или я не настраиваю свою систему или QEMU должным образом.

Это приемлемо, если решение требует установки драйверов, но я склонен не запускать QEMU из подключения к удаленному рабочему столу. Если нет возможности легко добраться до FHD, даже более низкое в порядке (что угодно, кроме 800x600!).

1 ответ

Решение

Когда-то у меня это работало, но оно перестало работать, когда я перешел с Windows XP на Windows 10. Теперь я столкнулся с той же проблемой. Что касается моих исследований, это просто невозможно из-за неудачного сочетания OVMF EFI и Windows.

Список доступных разрешений генерируется в виртуальной "стандартной" графической карте BIOS. Официальный список разрешений исправлен (см. Ошибка qemu 498421), но его можно изменить, если вы скомпилируете его самостоятельно (см. https://www.tablix.org/~avian/blog/archives/2013/05/custom_display_resolutions_in_qemu/).

Это работает только с устаревшей процедурой загрузки BIOS. Как только я использую стиль загрузки EFI с OVMF, Windows выбирает исключительно EDID, поставляемый с монитором. К сожалению, qemu не эмулирует виртуальный монитор. Windows 10 не получает EDID и, следовательно, возвращается к 800x600. Это поведение жестко запрограммировано и не может быть изменено.

Теоретически, вы можете взломать Microsoft Basic Display Driver, как это сделано на https://github.com/ywjheart/basic_adapter_driver_modification, но это не удастся для Windows 7 или более поздней версии, так как рекомендуется проверять подписи драйверов.

В гостевой системе вы можете вручную установить монитор с нужным разрешением, но Windows все равно будет ждать EDID.

Я прибег к удаленному рабочему столу. С помощью -vga qxl и подходящие гостевые водители являются альтернативой, но - лично - я не нашел никаких преимуществ.

ОБНОВЛЕНИЕ: вышла версия qemu v4.0.0 (замечена у Кракселя). Теперь он генерирует информацию EDID! Я скомпилировал это с

./configure --target-list=x86_64-softmmu --enable-sdl --enable-opengl

, запустить его с

qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -drive if=virtio,format=raw,file=windows10 -display sdl,gl=on -device qemu-xhci,id=usb-bus -device usb-tablet -device VGA,edid=on,xres=1920,yres=1080

и о чудо: полное разрешение в гостевой системе Windows 10! Пользовательский интерфейс SDL очень отзывчив.

Другие вопросы по тегам