编辑:赫尔曼使用 QXL 的解决方案是可以接受的。
我自己编译 QEMU,然后从命令行运行它。这是由于应用了补丁,并且拥有最新的 QEMU 版本。
目标是使用 Ubuntu 16.04 x86/64 主机运行具有 FHD (1920x1080) 分辨率的通用 Windows (7+) 客户机,而不使用远程桌面(因此,直接在 QEMU 窗口中)。
当我配置编译器时:
./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 以获得预期的分辨率?
当我执行 using-vga vmware
时,我得到Guest has not initialized the display (yet).
了,我不确定这是一个错误还是我没有正确配置我的系统或 QEMU。
如果解决方案需要安装驱动程序,这是可以接受的,但我倾向于不从远程桌面连接执行 QEMU。如果无法轻松达到 FHD,即使是较低的也可以(除了 800x600 之外的任何东西!)。
我曾经有过这个工作,但是当我从 Windows XP 切换到 Windows 10 时它崩溃了。现在我也面临同样的问题。就我的研究而言,由于 OVMF EFI 和 Windows 的不幸结合,这根本是不可能的。
可用的分辨率列表在虚拟“std”显卡 BIOS 中生成。官方的分辨率列表是固定的(参见 qemu bug 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。此行为是硬编码的,无法更改。
从理论上讲,您可以像在https://github.com/ywjheart/basic_adapter_driver_modification那样破解微软的“基本显示驱动程序” ,但这对于 Windows 7 或更高版本将失败,因为鼓励进行驱动程序签名检查。
在来宾中,您可以手动安装具有所需分辨率的显示器,但 Windows 仍将等待 EDID。
我求助于远程桌面。使用
-vga qxl
和适当的来宾驱动程序是一种替代方法,但是 - 就我个人而言 - 我没有发现任何优势。更新: qemu v4.0.0已经发布(见kraxel's)。它现在生成 EDID 信息!我用它编译了
,运行它
你瞧:Windows 10 客户机中的全分辨率!SDL UI 反应灵敏。