0x01 前言
最近因为工作需要接触到一些和windows server系统有关的技术,但我对于windows server系统知之甚少,所以我计划最近一段时间通过KVM学习相关的知识。
安装系统是最基础的,这部分内容很简单。因为是用于测试环境,同时又是windows系统,所以涉及的KVM知识很少。
0x02 准备
首先我的实体服务器运行的是centos 7,所以使用KVM安装运行windows server 2012 R2。KVM 虚拟化环境的准备工作请参考以下链接:
然后是系统镜像,可以通过以下链接下载:
文件名: cn_windows_server_2012_r2_with_update_x64_dvd_6052725.iso SHA1: 82292FA197E6C9DD9AF8F7E68E7A79A5DA1DDA2B 文件大小: 5.16GB 发布时间: 2014-12-15 下载链接: ed2k://|file|cn_windows_server_2012_r2_with_update_x64_dvd_6052725.iso|5545705472|121EC13B53882E501C1438237E70810D|/
也可以通过以下网址寻找你需要的版本下载:
因为安装的是windows系统,而我偏向于使用virtio,所以还需要准备virtio驱动:
#请通过以下命令获取virtio-win [root@server ~]# yum install virtio-win #如果你还没有安装相关源,可以通过以下命令安装 [root@server ~]# wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
virtio-win的相关资料可以在以下链接找到:
0x03 KVM操作
安装命令如下:
virt-install --name 2012-1 \ --memory 8192 \ --vcpus sockets=1,cores=2,threads=2 \ --disk device=cdrom,path=/usr/local/kvm/iso/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso \ --disk device=cdrom,path=/usr/share/virtio-win/virtio-win.iso \ --disk path=/disk_2/kvm/image/2012-1.img,size=100,bus=virtio \ --network bridge=br0,model=virtio \ --noautoconsole \ --accelerate \ --hvm \ --graphics vnc,listen=0.0.0.0,port=20007 \ --cpu host-passthrough \ --video cirrus
安装命令的简单说明:
virt-install \ #通过virt命令安装 --name 2012-1 \ #定义虚拟机名称 --memory 8192 \ #定义内存大小,这里为8GB --vcpus sockets=1,cores=2,threads=2 \ #定义CPU核心数,这里模拟1颗2个核心、2条线程的CPU。 --disk device=cdrom,path=/usr/local/kvm/iso/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso \ #定义系统镜像 --disk device=cdrom,path=/usr/share/virtio-win/virtio-win.iso \ #定义驱动镜像 --disk path=/disk_2/kvm/image/2012-1.img,size=100,bus=virtio \ #定义磁盘路径和大小,这里是100GB --network bridge=br0,model=virtio \ #定义网卡 --noautoconsole \ #不启用console --accelerate \ #启用加速 --hvm \ #使用全虚拟化 --graphics vnc,listen=0.0.0.0,port=20007 \ #指定VNC的端口 --cpu host-passthrough \ #让虚拟机直接获取物理CPU的指令集 --video cirrus #指定显卡
实际命令和反馈:
0x04 VNC操作
因为windows不支持通过console安装,输入命令后只能通过vnc继续安装过程:
这里的server地址是centos 7的IP地址,端口是刚才安装命令所指定的端口。在所有信息都正确无误的情况下,点击connect后即可看到熟悉的安装界面:
0x05 virtio
这里要注意的是:因为windows并没有内置virtio驱动,而网卡和硬盘我是选用virtio进行驱动的。所以在以下界面会显示空白,找不到硬盘:
这里需要手动添加驱动,需要添加如图所示的三个驱动程序。在选择系统版本时请根据实际情况进行选择。在我写这篇文章的时候,virtio-win驱动已经支持windows server 2016了。:
0x06 收尾
在windows安装界面操作完成后,系统会自动安装,安装程序到最后会要求重启。重启后的虚拟机并不会自动开机,而是处于关闭状态,通过以下命令即可查看:
[root@server ~]# virsh list --all
在手动启动之前需要将已经加载的系统和驱动镜像删除。我在这里直接删掉配置文件的相关字段。通过以下命令打开配置文件:
[root@server ~]# virsh edit 2012-1
找到以下内容:
这里需要删掉的字段如下:
<disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/usr/local/kvm/iso/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso'/> <target dev='hda' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/usr/share/virtio-win/virtio-win.iso'/> <target dev='hdb' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk>
保存后即可通过以下命令启动虚拟机:
[root@server ~]# virsh start 2012-1
0x07 结语
成功启动后还需要通过vnc进行管理,首先要做的是启动远程桌面。