Какая простейшая настройка компиляции / исполнения 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 очень отзывчив.