使用 qemu 在 KVM 上安装 Windows 7 失败

Kie*_*ief 8 windows-7 qemu virtual-machine ubuntu kvm-switch

我正在尝试在由我的 64 位 Ubuntu Karmic 机器托管的虚拟机中安装 Windows 7 作为来宾操作系统。我开始选择我的语言设置并单击“立即安装”,但不久之后我出现蓝屏死机。

我尝试了一些变体,包括使用 32 位版本的 Windows 7,但它很快就失败了。virt-install我试过的命令包括:

sudo virt-install --connect qemu:///system -n ksm-win7 -r 2048 \
--disk path=/home/kief/VM-Images/ksm-win7.qcow2,size=50 \
-c /var/Software/Windows7/Full/64bit/SW_DVD5_SA_Win_Ent_7_64BIT_English_Full_MLF_X15-70749.ISO \
--vnc --os-type windows --os-variant vista --hvm
Run Code Online (Sandbox Code Playgroud)

我能找到的有限信息表明“Vista”应该作为 --os-variant 工作,我还没有找到任何特定于 Windows 7 的值。

这是我的蓝屏:

蓝屏死机

我通过谷歌搜索发现的很少,所以我猜这不是 KVM 不支持 Windows 7 的情况。

更新:

我已经能够使用图形化的“虚拟机管理器”应用程序成功创建 Windows 7 VM,尽管我并不真正理解使用virt-install. 比较 /etc/libvirt/qemu 下的配置文件提供了一些线索,尽管我对正确解释它们的了解还不够。两种 VM 配置的有趣区别是:

--- win7-virt-install.xml
+++ win7-vmm.xml
-<domain type='qemu'>
+<domain type='kvm'>
@@ -21 +21 @@
-    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+    <emulator>/usr/bin/kvm</emulator>
@@ -23 +23 @@
-      <source file='/home/kief/VM-Images/ksm-win7.qcow2'/>
+      <source file='/var/lib/libvirt/images/ksm-win7x64.img'/>
Run Code Online (Sandbox Code Playgroud)

我不确定这是否意味着工作 VM 根本没有使用 qemu,或者它与 kvm 的使用方式是否存在其他差异。

更新2:

所以我在下面回答了我自己的问题(主要是)。KVM VM 需要使用 KVM 自己的 CPU 仿真而不是 qemu 的,以便我安装 Windows 7。我不确定是否可以做些什么来让它在 qemu 仿真 CPU 上工作,或者更新的版本是否会支持它。但至少可以让它在 KVM 虚拟机上运行。

Eva*_*ice 7

这是简单的方法

除非您对使用 virt-install 安装 GuestOS 有一些具体的原因,否则这里是不使用 virt-install 的“简单”方法。

我有一个安装了 Windows 7 的工作虚拟机。这是我创建它的方式。

步骤 1:创建虚拟磁盘映像

qemu-img create -f qcow2 vdisk.img 100g
Run Code Online (Sandbox Code Playgroud)

这将创建一个 qcow2 格式的虚拟磁盘。将分区大小设置为 100g(千兆字节)不会分配 100gb 的物理硬盘空间。虚拟分区将只占用与其包含的数据一样多的空间。100g 正好让你(希望)永远不需要增加尺寸。增加 qcow2 图像的默认大小仍然是一个痛苦的事情

步骤 2:安装操作系统

如果您使用实际的物理 cd-rom 加载操作系统,请使用以下命令。

sudo kvm -m 750 -cdrom /dev/sr0 -boot d vdisk.img
Run Code Online (Sandbox Code Playgroud)

如果您使用磁盘映像加载操作系统,请使用此命令。

sudo kvm -m 750 -cd-rom /path/to/image/image.iso -boot d vdisk.img
Run Code Online (Sandbox Code Playgroud)

以下是命令的细分:

  • kvm - 调用内核虚拟机(显而易见)
  • -m 750 - 为虚拟机分配 750mb 内存
  • -cd-rom 设置光盘。对于物理磁盘,请使用与 HostOS 相同的磁盘。对于图像,请提供图像文件的路径。
  • -boot d 从光盘引导虚拟机

我将初始加载的内存占用设置为 750 以保持保守,因此我可以确保安装完成而不会耗尽内存。对于后续加载,我通常将其设置为 512。

注意:AFIAK,kvm 命令仅适用于较新版本的 Debian/Ubuntu 或其衍生版本。如果它不起作用,则等效(且更常见)的命令是 qemu-system-x86_64 或 qemu-kvm 32 位。

在您完成整个安装过程后,VM 应该重新启动到一个可以工作的操作系统。要再次加载 VM,只需启动以下命令:

kvm -m 512 vdisk.img
Run Code Online (Sandbox Code Playgroud)

使用任何命令行开关,您都需要挂载额外的物理磁盘、硬件等。要查找有关命令行开关的信息,请检查 kvm --help。

如果你不明白“半虚拟化”和“原生虚拟化”之间的区别,Matthias 已经对这些区别做了很好的解释

有关此过程的更“深入”解释,请阅读本文


Jar*_*ley 2

0x1e 异常是KMODE_EXCEPTION_NOT_HANDLED,这通常是与硬件相关或与设备驱动程序相关的故障。我的猜测是,无论出于何种原因,Windows 都不喜欢虚拟机中的模拟硬件。

您尝试过使用VirtualBox吗?他们有一个针对 Karmic Koala 的版本,并且支持 Windows 7(我现在在 Windows XP 机器上运行 Win7)。