kvm 安装 windows 虚拟机

    • -
      作者:SRE运维博客
      博客地址: https://www.cnsre.cn/
      文章地址:https://www.cnsre.cn/posts/211108848062/
      相关话题:https://www.cnsre.cn/tags/kvm/
    • -
      安装前准备
验证CPU是否支持KVM
如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。
egrep '(vmx|svm)' /proc/cpuinfo

kvm 安装 windows 虚拟机
文章图片

关闭SELinux
/etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled
kvm 安装 windows 虚拟机
文章图片

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

kvm 安装 windows 虚拟机
文章图片

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

kvm 安装 windows 虚拟机
文章图片

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

kvm 安装 windows 虚拟机
文章图片

开启kvm服务
并且设置其开机自动启动
systemctl start libvirtd systemctl enable libvirtd

查看状态操作结果
如下图所示,说明运行情况良好
systemctl status libvirtd

kvm 安装 windows 虚拟机
文章图片

systemctl is-enabled libvirtd

kvm 安装 windows 虚拟机
文章图片

配置网桥模式
先将 /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 就可以了。
kvm 安装 windows 虚拟机
文章图片

安装虚拟机 准备操作系统安装镜像文件
在本文中将使用和宿主环境一样的 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#StartEndSizeTypeName 12048206847100MEFI SystemEFI System Partition 2206848616447200MMicrosoft basic 361644858495979512.7TLinux 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需要挂载的硬盘设备 BootStartEndBlocksIdSystem /dev/sdb4*25660555263302775047HPFS/NTFS/exFAT [root@nkgtsv01 ~]# mkdir -p /mnt/udisk [root@nkgtsv01 ~]# ls anaconda-ks.cfg [root@nkgtsv01 ~]# ls /mnt/ udiskusb [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_642:2017.3.23-1.el7epel ntfs-3g-devel.x86_642:2017.3.23-1.el7epel ntfsprogs.x86_642:2017.3.23-1.el7epel已安装: 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/ udiskusb [root@nkgtsv01 ~]# ls /mnt/udisk/ CentOS-7.2-x86_64-DVD-1611.isoCentOS-7-x86_64-DVD-1708.isomaven_storey2.zip [root@bogon data]# mkdir -p /data/iso [root@bogon data]# ls isokvm-baknetwork [root@nkgtsv01 ~]# mount-o loop /mnt/udisk/CentOS-7-x86_64-DVD-1708.iso /data/iso/ mount: /dev/loop0 写保护,将以只读方式挂载

kvm 安装 windows 虚拟机
文章图片

创建虚拟机文件存放的目录
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

kvm 安装 windows 虚拟机
文章图片

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

kvm 安装 windows 虚拟机
文章图片

安装完成后的文件会存放在/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 串口设备驱动

或者你也可以通过一下方获取
稳定版virtio-win iso
稳定版virtio-win x86 floppy
稳定版virtio-win amd64 floppy
最新版virtio-win iso
最新版virtio-win x86 floppy
最新版virtio-win amd64 floppy
最新版qemu-ga files
全部下载目录
变更日志
使用 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 GB00:00:00 正在删除磁盘 'njvm2k8.img'|0 B00: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端口
【kvm 安装 windows 虚拟机】因为 VNC 使用的端口默认是 5910 所以需要打开防火墙, 防火墙若关闭请忽略
firewall-cmd --zone=public --add-port=5910/tcp --permanent

kvm 安装 windows 虚拟机
文章图片

查看打开新创建的虚拟机
virsh list --all virsh start njvm2k8-win

使用VNC链接虚拟机
vncviewer下载地址
kvm 安装 windows 虚拟机
文章图片

使用VNC输入宿主机IP地址 加上端口号 输入虚拟机名字然后打开
kvm 安装 windows 虚拟机
文章图片

kvm 安装 windows 虚拟机
文章图片

kvm 安装 windows 虚拟机
文章图片

kvm 安装 windows 虚拟机
文章图片

kvm 安装 windows 虚拟机
文章图片

kvm 安装 windows 虚拟机
文章图片

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

kvm 安装 windows 虚拟机
文章图片

kvm 安装 windows 虚拟机
文章图片

kvm 安装 windows 虚拟机
文章图片

kvm 安装 windows 虚拟机
文章图片

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

kvm 安装 windows 虚拟机
文章图片

等待安装完成
启动之后设置密码 我们就进入了新的windows 操作系统
用vnc链接
kvm 安装 windows 虚拟机
文章图片

{{< alert theme="warning" dir="ltr" >}}
?? 注意
挂载软驱 (硬盘驱动 网卡驱动等)注释:网卡驱动要在系统中装好之后挂载 不然装系统的时候会提示找不到光盘镜像
{{< /alert >}}
在宿主机中执行命令
virsh change-media njvm2k8hdb /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链接
kvm 安装 windows 虚拟机
文章图片

    • -
      作者:SRE运维博客
      博客地址: https://www.cnsre.cn/
      文章地址:https://www.cnsre.cn/posts/211108848062/
      相关话题:https://www.cnsre.cn/tags/kvm/
    • -

    推荐阅读