kvm 安装 windows 虚拟机
作者:SRE运维博客
博客地址: https://www.cnsre.cn/
安装前准备
验证CPU是否支持KVM
如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。
egrep '(vmx|svm)' /proc/cpuinfo

关闭SELinux
将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled

安装一些最基本的服务
可选项,因为我是刚安装好的CentOS,所以为了下面方便点,先把一些必要的工具安装下
yum install epel-release net-tools vim unzip zip wget ftp -y

安装KVM及其依赖项
yum install qemu-kvm libvirt virt-install bridge-utils -y

验证安装结果
下图说明已经成功安装了
lsmod | grep kvm

开启kvm服务
并且设置其开机自动启动
systemctl start libvirtd systemctl enable libvirtd
查看状态操作结果
如下图所示,说明运行情况良好
systemctl status libvirtd

systemctl is-enabled libvirtd

配置网桥模式
先将 /etc/sysconfig/network-scripts/ 目录下的网卡配置文件备份一份
创建 ifcfg-br0 文件
创建的 br0文件的IP地址要和物理网卡的IP地址一致,命令 ipconfig 查看物理网卡将不会显示IP
内容如下:
[root@bogon ~]*# vim /etc/sysconfig/network-scripts/ifcfg-br0*
DEVICE=br0
BOOTPROTO=none
DEFROUTE=yes
ONBOOT=yes
TYPE=Bridge
IPV4_FAILURE_FATAL=yes
IPADDR=192.168.1.130
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=221.6.4.66
DELAY=0
USERCE=no
修改原网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-eno1s
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="YES"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eno1"
UUID="bb40d726-8d67-4187-90c3-eb61e1b42d61"
DEVICE="eno1"
ONBOOT="yes"
IPADDR="192.168.1.130"
NETAMSK=255.255.255.0
GATEWAY="192.168.1.254"
DNS1="221.6.4.66"
IPV6_PRIVACY="no"
BRIDGE=br0
重启网络服务
systemctl restart network
使用 ifconfig 验证操作结果,多了一块网卡 br0 ,现在访问宿主机 使用 192.168.1.130 就可以了。

安装虚拟机
准备操作系统安装镜像文件
在本文中将使用和宿主环境一样的 CentOS7.2,把该文件放到 /home/iso 目录下
挂载U盘
[root@nkgtsv01 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/sda:2995.0 GB, 2994995200000 字节,5849600000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:gpt
Disk identifier: 434CB2EB-C42E-4B9D-A76B-B759709EC159
# Start End Size Type Name
1 2048 206847 100M EFI System EFI System Partition
2 206848 616447 200M Microsoft basic
3 616448 5849597951 2.7T Linux LVM
磁盘 /dev/mapper/centos-root:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘 /dev/mapper/centos-swap:17.2 GB, 17179869184 字节,33554432 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘 /dev/mapper/centos-home:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘 /dev/mapper/centos-tmp:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘 /dev/mapper/centos-data:2333.2 GB, 2333249372160 字节,4557127680 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘 /dev/sdb:31.0 GB, 31004295168 字节,60555264 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xcad4ebea 需要挂载的硬盘
设备 Boot Start End Blocks Id System
/dev/sdb4 * 256 60555263 30277504 7 HPFS/NTFS/exFAT
[root@nkgtsv01 ~]# mkdir -p /mnt/udisk
[root@nkgtsv01 ~]# ls
anaconda-ks.cfg
[root@nkgtsv01 ~]# ls /mnt/
udisk usb
[root@nkgtsv01 ~]# mount -t ntfs-3g /dev/sdb4 /mnt/udisk/
mount: 未知的文件系统类型“ntfs-3g”
[root@nkgtsv01 ~]# yum list *ntfs*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.sjtu.edu.cn
* epel: mirrors.ustc.edu.cn
* extras: ftp.sjtu.edu.cn
* updates: ftp.sjtu.edu.cn
可安装的软件包
ntfs-3g.x86_64 2:2017.3.23-1.el7 epel
ntfs-3g-devel.x86_64 2:2017.3.23-1.el7 epel
ntfsprogs.x86_64 2:2017.3.23-1.el7 epel
已安装:
ntfs-3g.x86_64 2:2017.3.23-1.el7
完毕!
[root@nkgtsv01 ~]#yum install ntfs-3g.x86_64 -y
[root@nkgtsv01 ~]# mount -t ntfs-3g /dev/sdb4 /mnt/udisk/
The disk contains an unclean file system (0, 0).
The file system wasn't safely closed on Windows. Fixing.
[root@nkgtsv01 ~]#
[root@nkgtsv01 ~]# ls /mnt/
udisk usb
[root@nkgtsv01 ~]# ls /mnt/udisk/
CentOS-7.2-x86_64-DVD-1611.iso CentOS-7-x86_64-DVD-1708.iso maven_storey2.zip
[root@bogon data]# mkdir -p /data/iso
[root@bogon data]# ls
iso kvm-bak network
[root@nkgtsv01 ~]# mount -o loop /mnt/udisk/CentOS-7-x86_64-DVD-1708.iso /data/iso/
mount: /dev/loop0 写保护,将以只读方式挂载

创建虚拟机文件存放的目录
mkdir -p /data/kvm-images
{{< alert theme="warning" dir="ltr" >}}
️ 注意
关于virtio-win驱动
{{< /alert >}}
virtio-win驱动主要用于kvm里的 windows虚拟机。virtio-win提供yum源安装rpm包,virtio驱动默认会安装在/usr/share/virtio-win目录中,可共享于kvm里的windows虚拟机。
sudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
# 添加repo

该repo文件提供两个不同的仓库:
virtio-win-stable
默认,该仓库的版本和RHEL版本关联在一起发布,意味着得到了非常多的测试,很稳定。virtio-win-latest
该仓库提供最新的build版本,这些版本可能有各种问题,用户需自己承担风险。这个仓库默认是disable的。如果你想从稳定版更新到最新版,可以使用如下命令:sudo yum --enablerepo=virtio-win-latest update virtio-win

安装完成后的文件会存放在/user/share,内容如下:
/usr/share/virtio-win/*.iso: ISO镜像,包含所有驱动,详细内容后面会描述
/usr/share/virtio-win/*.vfd: 用于Windows XP下的VFD软驱镜像
/usr/share/virtio-win/drivers: 从VFD软驱镜像中提取的文件
/usr/share/guest-agent/*.msi: QEMU Guest Agent 32bit 和 64bit 安装包
其中ISO镜像内容为:
NetKVM/: Virtio网络驱动
viostor/: Virtio块驱动
vioscsi/: Virtio SCSI驱动
viorng/: Virtio RNG驱动
vioser/: Virtio串口驱动
Balloon/: Virtio 内存气球驱动
qxl/: 用于Windows 7及之前版本的QXL显卡驱动. (virtio-win-0.1.103-1和之后版本会创建)
qxldod/: 用于Windows 8及之后版本的QXL显卡驱动. (virtio-win-0.1.103-2和之后版本会创建)
pvpanic/: QEMU pvpanic 设备驱动 (virtio-win-0.1.103-2和之后版本会创建)
guest-agent/: QEMU Guest Agent 32bit 和 64bit 安装包
qemupciserial/: QEMU PCI 串口设备驱动
或者你也可以通过一下方获取
使用 virt-install 创建虚拟机
[root@bogon data]# virt-install --virt-type kvm --name=njvm2k8 --ram=1024 --vcpus=1 --os-type=windows --accelerate --cdrom=/home/kvm_data/iso/cn_windows_server_2008_r2_617396.iso --disk path=/usr/share/virtio-win/virtio-win.iso,device=cdrom --disk path=/home/kvm_data/img/njvm2k8.qcow2,bus=virtio --network bridge=br0 --graphics vnc,listen=0.0.0.0,password=123456,port=5920 --noautoconsole
WARNING 无法连接到图形控制台:没有安装 virt-viewer。请安装 'virt-viewer' 软件包。
WARNING 没有控制台用于启动客户机,默认为 --wait -1
开始安装......
正在分配 'njvm2k8.img' | 200 GB 00:00:00
正在删除磁盘 'njvm2k8.img' | 0 B 00:00:00
域安装失败,您可以运行下列命令重启您的域:
'virsh start virsh --connect qemu:///system start njvm2k8'
否则请重新开始安装
不要理会里面提示的错误,接着往下走
命令含义
virt-install
--name=客户机名称
--ram 内存(1024)1G
--vcpus= cpu1
--os-type= 客户机系统类型
--os-variant= win2k8
--disk path= 客户机文件存放路径 ,
size=客户机硬盘大小200
--accelerate
--cdrom (镜像文件路径)
--vnc --vncport=vnc远程端口 5910
--network bridge=网卡桥接 br0,model=virtio
--noautoconsole
打开防火墙上的5910端口
因为 VNC 使用的端口默认是 5910 所以需要打开防火墙, 防火墙若关闭请忽略
firewall-cmd --zone=public --add-port=5910/tcp --permanent

查看打开新创建的虚拟机
virsh list --all
virsh start njvm2k8-win
使用VNC链接虚拟机

使用VNC输入宿主机IP地址 加上端口号 输入虚拟机名字然后打开






{{< alert theme="warning" dir="ltr" >}}
️ 注意
安装的时候找不到硬盘
{{< /alert >}}
如果再安装的时候找不到硬盘,请执行一下操作
挂载win镜像
virsh change-media njvm2k8 hdb /usr/share/virtio-win/virtio-win.iso




然后取消挂载的镜像 把系统镜像 从新挂载到系统 进行分区 安装系统
安装完毕重启虚拟机
安装完会重启windows虚拟机
我们查看状态 然后启动虚拟机


等待安装完成
启动之后设置密码 我们就进入了新的windows 操作系统
用vnc链接

{{< alert theme="warning" dir="ltr" >}}
️ 注意
挂载软驱 (硬盘驱动 网卡驱动等)注释:网卡驱动要在系统中装好之后挂载 不然装系统的时候会提示找不到光盘镜像
{{< /alert >}}
在宿主机中执行命令
virsh change-media njvm2k8 hdb /usr/share/virtio-win/virtio-win.iso
VMTools工具安装完成后,使用如下命令卸载掉挂载的VMTools工具:
a.如果是Linux虚拟机,执行如下命令卸载VMTools工具:
virsh change-media 【虚拟机ID】 --eject 【vmtools-linux.iso文件全路径】
b.如果是Windows虚拟机,执行如下命令卸载VMTools工具:
virsh change-media 【虚拟机ID】 --eject 【vmtools-windows.iso文件全路径】
挂载驱镜像文件到njvm2k8主机上
用vnc链接

作者:SRE运维博客
博客地址: https://www.cnsre.cn/
kvm 安装 windows 虚拟机的更多相关文章
- 烂泥:kvm安装windows系统蓝屏
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近一直在学习有关KVM的知识,实验一直是在虚拟机VM中进行的.今天刚好公司有一台空闲的服务器,直接拿来安装centos.kvm等等,然后相关的配置. ...
- KVM下windows虚拟机使用virtio驱动
KVM下windows虚拟机默认disk使用的是Qemu IDE硬盘,网卡默认是rtl8139网卡.为了使kvm主机在相同的配置下,有更好的效率,可以将网卡和磁盘替换成virtio的驱动. windo ...
- ubuntu 18.04下virtualbox安装windows虚拟机+增强功能+secureCRT
先强调一下,我是在Ubuntu里安装windows虚拟机,如果要看如何安装linux虚拟机的话,那么你走错地方了. 我一直使用Linux系统做开发的,选择Ubuntu是因为多数常用软件对Ubuntu支 ...
- kvm虚拟化管理平台WebVirtMgr部署-完整记录(安装Windows虚拟机)-(4)
一.背景说明 在之前的篇章中,提到在webvirtmgr里安装linux系统的vm,下面说下安装windows系统虚拟机的操作记录: 由于KVM管理虚拟机的硬盘和网卡需要virtio驱动,linux ...
- 烂泥:KVM安装Windows Server 2008 R2使用virtio硬盘
本文首发于烂泥行天下. 在上一篇文章中,我们介绍了使用IDE硬盘来安装Windows Server 2008 R2,这篇文章我们来介绍使用virtio硬盘来安装Windows Server 2008 ...
- Centos7利用kvm搭建Windows虚拟机
这几天玩了一下kvm虚拟化,真的很有意思,我把这几天踩的坑,还有收获,都记录下来,作为以后的复习和检查. 首先说一下我的基本逻辑,我有一台win7的笔记本,我的底层虚拟化是使用VMWare构建的Cen ...
- 【原创】linux mint 17.3 kvm 安装windows7虚拟机
一.安装windows7虚拟机 linux mint 17.3是一个不错的桌面发行版本,我下载了 linux mint 17.3 for xfce 桌面版本,运行速度没得说,而且安装设置都挺简单,非常 ...
- Mac安装windows虚拟机攻略
5月初从阿里滚粗,然后失去了公司发的Mac Air.说实话Mac机器确实比windows好用一些,于是怒而买了一个Mac Pro. 结果一个星期后我从学校带出来的联想笔记本又被老师通知要进行固定资产盘 ...
- Linode KVM安装Windows系统的设置方法
以前我们用老的Linode VPS主机的时候是采用的XEN架构的,如今我们新注册账户,以及新开的机器是KVM架构.根据后台的设置,我们看到好多网友有在LINODE中安装WINDOWS系统,理论上是可以 ...
随机推荐
- Shell系列(34) - 多分支case语句简介及实例
多分支case条件语句 概念 case语句和if...elif...else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关 ...
- 怎么通俗的理解Netty呢?
目录 Netty(3.X) 简单体验 Netty的事件驱动机制 Netty的源码阅读 Netty(3.X) 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,W ...
- Postman 如何调试加密接口?
大家好,我是安果! 众所周知,Postman 是一款非常流行且易用的 API 调试工具,在接口调试或测试时经常被使用针对普通 API 接口,我们可以直接在 Postman 中输入 URL.Query ...
- P5319-[BJOI2019]奥术神杖【0/1分数规划,AC自动机,dp】
正题 题目链接:https://www.luogu.com.cn/problem/P5319 题目大意 一个长度为\(n\)的串\(T\),用\(0\sim 9\)填充所有的\(.\). 然后给出\( ...
- oracle数据导入"HIST_GRAM_LIST_ITEM"问题处理
1.问题显示 处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT ORA-39083: 对象类型 REF_CONSTRAINT 创建失败, 出现错 ...
- Git学习笔记01-安装
首先,什么是git? git是开源的分布式系统,能够将团队的项目上传至git,供团队修改demo 第一步:安装好git(推荐淘宝镜像下载,地址https://npm.taobao.org/mirror ...
- CF280C Game on tree(期望dp)
这道题算是真正意义上人生第一道期望的题? 题目大意: 给定一个n个点的,以1号点为根的树,每一次可以将一个点和它的子树全部染黑,求染黑所有点的期望 QwQ说实话,我对期望这种东西,一点也不理解... ...
- SpringBoot入门02-配置类
引入 Spring Boot的底层已经有了Spring MVC Spring Boot习惯优先的思想,很多配置都是可省的 不需要配置web.xml文件 不需要服务层的xml配置 不需要dao层的xml ...
- 随机生成文章的AI(C++)
#include <iostream> #include <cstdlib> #include <ctime> #include <fstream> u ...
- k8s学习笔记(3)- kubectl高可用部署,扩容,升级,回滚springboot应用
前言:上一篇通过rancher管理k8s,部署服务应用扩容,高可用,本篇介绍kubectl命令行部署高可用集群节点,测试升级.扩容等 1.测试环境:3节点k3s,使用其中2节点(ubuntunode1 ...