对于客户机 FHD 分辨率来说,哪个是最简单的 QEMU 编译/执行设置?

对于客户机 FHD 分辨率来说,哪个是最简单的 QEMU 编译/执行设置?

编辑:赫尔曼的解决方案使用 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 以获得预期的分辨率?

当我执行使用时-vga vmware,我得到Guest has not initialized the display (yet).,我不确定这是否是一个错误或者我没有正确配置我的系统或 QEMU。

如果解决方案需要安装驱动程序,这是可以接受的,但我倾向于不从远程桌面连接执行 QEMU。如果无法轻松达到 FHD,那么即使是较低的分辨率也可以(除了 800x600 之外的任何分辨率!)。

答案1

我曾经这样做过,但当我从 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出局(见于克拉克塞尔)。它现在生成 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 UI 响应非常灵敏。

相关内容