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 虚拟机上运行。
这是简单的方法
除非您对使用 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)
以下是命令的细分:
我将初始加载的内存占用设置为 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 已经对这些区别做了很好的解释。
有关此过程的更“深入”解释,请阅读本文。
0x1e 异常是KMODE_EXCEPTION_NOT_HANDLED,这通常是与硬件相关或与设备驱动程序相关的故障。我的猜测是,无论出于何种原因,Windows 都不喜欢虚拟机中的模拟硬件。
您尝试过使用VirtualBox吗?他们有一个针对 Karmic Koala 的版本,并且支持 Windows 7(我现在在 Windows XP 机器上运行 Win7)。