为什么我在使用qemu启动虚拟机时会遇到黑屏问题?

当我尝试使用以下命令启动虚拟机时:
qemu-system-x86_64 -m 1024 -cdrom /host/iso/ubuntu-13.10-desktop-amd64.iso -name mac -hda ~/ubuntu

安装开始后(在选择语言之前),我就遇到了黑屏的问题。我尝试在“其他选项”中设置nomodeset,但这并没有解决问题。
然而,使用相同的ISO文件,我可以通过虚拟机管理器启动虚拟机。但是,为了我的一个项目,我需要使用qemu-system-x86_64来启动虚拟机。
请告诉我如何解决这个问题。

虽然这不是对问题的回答,但如果你想调整显示器的分辨率,可以尝试使用标志-vga [std|vmware|cirrus|qxl]进行调整。更多详细信息请参考man qemu-kvm - Nehal J Wani
在这里,我详细描述了迄今为止我在Ubuntu上达到的最佳QEMU KVM设置:https://askubuntu.com/questions/884534/how-to-run-ubuntu-16-04-desktop-on-qemu/1046792#1046792 - Ciro Santilli OurBigBook.com
我来这里是因为在将虚拟机内存更改为2536MB后,在Win10虚拟机中出现了黑屏问题。将其再次更改为2048MB解决了我的问题。(然后我最终选择了3072MB)。 - Marc.2377
1个回答

默认情况下,qemu-system-x86_64 进行的是仿真而不是虚拟化。仿真速度慢且占用CPU资源 - 可以通过运行 top 来查看,它会显示接近 100% 的 CPU 占用率。我刚刚在我的系统上使用 qemu-system-x86_64 启动了 Xubuntu 14.04,需要10分钟才能启动到桌面。Ubuntu通常隐藏引导信息,这就是为什么你会看到一个黑屏(或者由BIOS改变分辨率造成的其他图形问题)。如果您删除 splash quiet 并将 debug 添加到内核参数中,则可以在此期间看到它正在做什么。
您可能想要做的是运行 qemu-system-x86_64 -enable-kvm 来启用对硬件虚拟化的支持。
qemu-system-x86_64 -enable-kvm -m 1024 -cdrom /host/iso/ubuntu-13.10-desktop-amd64.iso -name mac -hda ~/ubuntu

man qemu-system-x86_64 中可以看到:
-enable-kvm
       Enable KVM full virtualization support. This option is only available
       if KVM support is enabled when compiling.

(你可能会看到有人推荐来自软件包qemu-kvm的程序kvm。kvm只是一个包装脚本,它执行exec qemu-system-x86_64 -enable-kvm "$@"命令。)
KVM使用硬件虚拟化而非仿真,因此速度更快。它需要支持硬件虚拟化扩展(Intel的VT-x或AMD的AMD-V)的CPU,大多数现代个人电脑系统都具备这一条件。
通过虚拟化,CPU实际上执行来自客户操作系统的原始可执行二进制代码。虚拟化速度快,但有一个限制,即主机操作系统和客户操作系统必须二进制兼容。通过仿真,客户操作系统的二进制代码被重新编写以在主机CPU上运行。这种方法速度慢,但优点在于可以运行针对不同CPU架构编译的客户操作系统(例如,《Debian armel的QEMU镜像》解释了如何在个人电脑上运行Debian ARM)。
另一个流行的虚拟化选项是VirtualBox

KVM只是qemu-system-x86_64的一个包装器。当说qemu-system-x86_64只是模拟时,你是不是想说KVM是对qemu-system-x86_64提供的模拟进行虚拟化封装的呢? - jobin
@Jobin,谢谢你指出这一点,回答已相应调整。 - bain