为什么使用 qemu 启动虚拟机时会出现黑屏?

为什么使用 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我的一个项目启动虚拟机。

请告诉我如何解决这个问题。

答案1

默认情况qemu-system-x86_64仿真,而不是虚拟化。模拟速度慢且占用大量 CPU - 您可以通过运行看到这一点top,它将显示您的 CPU 接近 100%。我刚刚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.

kvm(您可能会看到人们推荐软件包中的程序qemu-kvmkvm只是一个包装脚本exec qemu-system-x86_64 -enable-kvm "$@"

KVM 使用硬件虚拟化而非模拟,因此速度更快。它需要支持硬件虚拟化扩展(Intel 的 VT-x 或 AMD 的 AMD-V)的 CPU,大多数现代 PC 系统都具备这种扩展。

使用虚拟化时,CPU 实际上是在执行来自客户操作系统的原始可执行二进制代码。虚拟化速度很快,但有一个限制,即主机操作系统和客户操作系统必须二进制兼容。使用仿真时,客户操作系统的二进制代码被重写以在主机 CPU 上运行。它很慢,但有一个优点,即您可以运行为不同 CPU 架构编译的客户操作系统(例如Debian armel 的 QEMU 映像解释如何在 PC 上运行 Debian ARM)。

虚拟化的另一个流行选择是虚拟盒

相关内容