在 KVM 上安装 Win7 虚拟机
之前都是在用Linux 虚机,现在有需要用到Win7 虚机,才发现在 KVM 上安装 Win7 的过程远比想象中的复杂。本文就把其过程做个简单总结。
1. 在 Virtual Machine Manager 里面安装
首先尝试在 Virtual Machine Manager 里面安装。遇到的问题如下:
(1)一直停留在 starting windows 界面。
解决方法:修改 video model 为 Cirrus,问题解决。

(2)开始安装后,对鼠标和键盘无响应。
google,发现需要使用 <input type=’tablet’ bus=’usb’/>。添加一个:

但是键盘还是不好使。。算了,还是转到使用 qemu-system-x86_64 命令启动虚机吧。
2. 使用 qemu-system-x86_64 启动 Win 7 虚机
2.1 环境准备
(1)下载 Windows virtio driver iso:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.102/,因为要将磁盘挂接为 virtio 磁盘。
(2)创建系统盘 qemu-img create -f raw win7.img 30G,这将作为Win7的操作系统盘。
(3)创建启动脚本
#!/bin/sh
DISKIMG=/home/s1/win7.img
WIN7IMG=/home/s1/en_windows_7_enterprise_x64_dvd_x15-.iso
VIRTIMG=/home/s1/virtio-win-0.1..iso
qemu-system-x86_64 --enable-kvm -drive file=${DISKIMG},if=virtio -m \
-net nic,model=virtio -net user -cdrom ${WIN7IMG} \
-drive file=${VIRTIMG},index=,media=cdrom \
-rtc base=localtime,clock=host -smp cores=,threads= \
-usbdevice tablet -cpu host -name win7 -vnc : -device cirrus-vga,id=video0,bus=pci.,addr=0x4
(4)可以运行脚本了,然后通过 VNC 进入界面,进入下面部分。
2.2 安装 Win 7
(1)选择 Custom(advanced)

(2)选择 virtio 磁盘

(3)选择 virtio disk driver

(4)安装 Win7 Virtio SCSI Driver

(5)安装好以后,就可以看到安装的目标磁盘了

(6)进入常规的 Win7 安装流程

3. 安装其它 Virtio 驱动
(1)网络驱动

但是安装失败:

尝试 device manager:

但是还是失败:

(2)Baloon driver
Device manager, 右键 root device, add legacy hardware, next, install manually (advanced), next, have disk, browse, select inf, install.

改成此方法安装 network 驱动成功。注意将虚机重启从而使得安装生效。
(3)诡异的问题
通过上面方法得到的 Win7 raw 格式的镜像文件可以直接使用来创建新的虚机,这些新的虚机会使用 virtio network driver。
但是,在 OpenStack 环境和中,Nova 首先将 qcow2 格式的镜像从glance 中下载到计算节点上,然后将它转化为 raw 格式作为 backfing file,再创建一个 qcow2 文件,它使用 raw 文件作为 backing file。如下图所示:
root@linuxkvm1:/home/s1# qemu-img info /var/lib/nova/instances/1d157798-848d-4dc0--7343083ec943/disk
image: /var/lib/nova/instances/1d157798-848d-4dc0--7343083ec943/disk
file format: qcow2
virtual size: 30G ( bytes)
disk size: .3G
cluster_size:
backing file: /var/lib/nova/instances/_base/d074d3233a25bf3d10fdc4915e2c7913aebf39ee
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits:
corrupt: false
root@linuxkvm1:/home/s1# qemu-img info /var/lib/nova/instances/_base/d074d3233a25bf3d10fdc4915e2c7913aebf39ee
image: /var/lib/nova/instances/_base/d074d3233a25bf3d10fdc4915e2c7913aebf39ee
file format: raw
virtual size: 30G ( bytes)
disk size: .1G
诡异的是,OpenStack 中新建的虚机不能使用 virtio network driver:

但是,
- 如果使用backing file 直接启动虚机,则没有这个问题。
- 使用同样的 backing file 创建一个新的 qcow2 文件,则没有这个问题
具体原因应该和 Nova 的具体逻辑有关,将来再查,现在暂时使用 SCSI network driver。
参考文档:
在 KVM 上安装 Win7 虚拟机的更多相关文章
- 如何在VirtualBox虚拟机软件上安装Win7虚拟系统
在Windows系统中安装VirtualBox 双击从官网上下载的VirtualBox-4.3.12-93733-Win.exe安装程序,默认下一步,下一步完成基础安装. 在VirtualBox虚拟机 ...
- kvm上的Linux虚拟机使用virtio磁盘
kvm上的Linux虚拟机使用virtio磁盘 系统:centos6.6 64位 网上的文章比较少,怎麽将Linux虚拟机的磁盘改为使用virtio磁盘 因为centos6或以上系统已经包含了vir ...
- KVM | centos 安装 window 虚拟机
KVM | centos 安装 window 虚拟机 环境: CENTOS 7.3 1. 准备 1.1 检查是否支持虚拟化 cat /proc/cpuinfo | egrep 'vmx|svm' 要求 ...
- GPT分区基础知识及如何在GPT分区上安装WIN7
大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘,更快速的启动win8,预装系统都采取了GPT分区 ...
- 如何在GPT分区上安装WIN7
大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘,更快速的启动win8,预装系统都采取了GPT分区 ...
- 手把手教windows上安装linux虚拟机及环境配置
目录 版本说明 安装虚拟机 典型方式安装(推荐小白,带有图形界面,助于学习,但占用空间大) 自定义方式安装(推荐老司机) 创建快照 克隆虚拟机 windows上安装linux虚拟机不管是对于新人还是老 ...
- windows下安装win7虚拟机并安装oracle
一.win7虚拟机 与安装linux虚拟机没有什么不同,不同的是选择客户机操作系统.内存.磁盘容量,以及映像文件. 创建win7虚拟机步骤简化: 新建虚拟机-->>自定义-->> ...
- 最新的裸机联想笔记本装win7系统/SSD(固态硬盘)上安装win7系统/联想K4450A i7装win7系统
老师让我帮他装个操作系统,由于是新电脑,并且老师的电脑上另安有固态硬盘,老师要我把系统安装在固态硬盘上,BIOS是2014年7月份的,所以BIOS设置项可能会有所变化. 下面是遇到的一些问题,及解决方 ...
- 怎么在一台电脑上安装win7与centos7双系统
对于用习惯windows系统的小伙伴们来说,好像Linux系统的命令操作感觉会比较神秘,进而有部分小伙伴就想说也学一学LInux操作系统.但是苦于资源的问题--就一台计算机,一块硬盘,担心说如果安装了 ...
随机推荐
- C#入门经典Lambda
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lamb ...
- C# 删除字符串中的中文
/// <summary> /// 删除字符串中的中文 /// </summary> public static string Delete中文(string str) { s ...
- LINUX最大线程数及最大进程数
查看最大线程数: cat /proc/sys/kernel/threads-max ulimit User limits - limit the use of system-wide resource ...
- Z.ExtensionMethods 一个强大的开源扩展库
今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提到而已,没有专门介绍,才引起我写这篇文档 ...
- [示例] Firemonkey 不规则按钮实做
利用 Firemonkey 控件的组合及可塑性,可以做出千变万化的效果及功能,下面展示一个不规则按钮的实做: 效果图: 实做方法: 开一个新工程 Multi-Device Application 放一 ...
- 转载:《TypeScript 中文入门教程》 4、类
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 传统的JavaScript程序使用函数和基于原型的继承来创建可重用的组件,但这对 ...
- 第 31 章 项目实战-PC 端固定布局[5]
学习要点: 1.底部区域 2.说明区域 3.版权及证件区 主讲教师:李炎恢 本章主要开始使用学习用 HTML5 和 CSS3 来构建 Web 页面,第一个项目采用 PC 端固定布局来实现. 一.底部区 ...
- IT基础架构规划方案三(IT基础软件和系统规划)
IT基础软件和系统规划 操作系统选型规划方案 根据对某集团的实际调研,获取了企业业务应用系统的建设情况,随着企业信息化建设的推进,需要对各种信息化管理系统和应用系统的服务器选型进行选型规划,根据不同的 ...
- ios页面过渡效果插件Kontext
效果体验:http://keleyi.com/keleyi/phtml/html5/28.htm 以下是代码: <!doctype html> <html> <head& ...
- SharePoint 2013 Excel Services ECMAScript 示例之明日限行
前言:最近遇到一个“明日限行”的功能,北京的交通啊,这个不在今天讨论范围内,暂不吐槽,想想代码开发,还要写WebPart部署,很麻烦,而且部署服务器,需要领导审批,想绕过这个麻烦事儿,就想到客户端了, ...