Centos7.5利用kvm远程安装Windows Server
- kvm安装
- 检测cpu是否开始虚拟化支持
- 安装kvm
- 网卡配置
- 远程可视化操作服务搭建
- 安装vnc
- 配置vnc
- 虚拟机安装
- 创建磁盘
- 安装系统
- 端口转发
- 防火墙设置
最近的工作中需要一台WindowServer2016服务器做测试,但公司的服务器都是Centos,于是想到在一台配置比较高的服务器上利用kvm安装一台虚拟机,在安装过程中除了一些问题,以此记录一下过程,供大家参考。
本次安装过程仅是在Centos 7.5中安装WindowServer2016,未测试其他版本系统,服务器为Intel CPU。
文章参考:
CentOS7安装KVM虚拟机(Windows Server2016)详解.
kvm安装
检测cpu是否开始虚拟化支持
执行命令,结果中有vmx即为cpu支持
cat /proc/cpuinfo | grep 'vmx'
安装kvm
- 以yum方式安装
yum -y install kvm libvirt python-virtinst libvirt-python virt-manager libguestfs-tools bridge-utils virt-install
- 安装完毕重启服务器
shutdown -r now
- 查看kvm模块
lsmod | grep kvm
- 开启libvirtd服务
systemctl start libvirtd.service
至此kvm环境安装完毕
网卡配置
网上其他参考文章大都是在宿主机在局域网内,因而选择桥接(BRIDGE)模式,此模式可以使虚拟机和宿主机处于同一局域网内,便于访问。但我是在服务器上安装,并且暂时没有一个新的IP给虚拟机用,所以选择默认的NAT模式,再进行端口转发(后边会写如何设置)即可。
在安装完后应该会增加一块虚拟网卡
通过ip addr 查看,或者ifconfig(centos7需要yum安装后才能使用)
ip addr
如图 virbr0即为新增的网卡
默认设置即可
远程可视化操作服务搭建
为了后续可视化操作安装和设置windows,采用vnc搭建服务。
安装vnc
yum -y install tigervnc tigervnc-server
配置vnc
- 编辑配置文件vncserver@.service
vi lib/systemd/system/vncserver@.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
#将两处<USER>改为需要用来登录vnc服务的用户名
- 设置vnc密码
vncpasswd
- 设置防火墙规则
firewall-cmd --permanent --add-service="vnc-server" --zone="public"
firewall-cmd --reload
至此vnc配置完毕,如何使用客户端链接在后续介绍
虚拟机安装
需要事先将要安装的系统镜像文件放入宿主机内,我的位置是/src/windows server 2016.iso
创建磁盘
- 创建虚拟磁盘,磁盘类型有raw和qcow2
qemu-img create -f raw /vir/server.raw 100G
- 检查磁盘信息
qemu-img info /vir/server.raw
image: /vir/server.raw
file format: raw
virtual size: 100G (107374182400 bytes)
disk size: 13G
安装系统
- virt-install命令安装系统,此为windows系统的命令,centos会有一些不同
virt-install
--virt-type kvm
--name server2016 #虚拟机名称
--ram 8000 #内存
--cdrom=/src/windows server 2016.iso #系统镜像地址
--boot cdrom
--vcpus 4 #cpu数量
--graphics vnc,listen=0.0.0.0,port=5902 #设置vnc可用,及vnc端口
--disk path=/vir/server.raw,bus='ide' # 虚拟磁盘地址
--noautoconsole
--os-type=windows
- 执行命令以后会有提示
开始安装......
域安装仍在进行。您可以重新连接
到控制台(virsh console)以便完成安装进程
- 此时应该通过vnc客户端进行远程链接安装
vnc viewer在此处下载 VNC server位置填写服务器ip地址和端口号,端口号为上一步中--graphics vnc,listen=0.0.0.0,port=5902
设置的端口。
连接成功以后将会进入熟悉的windows安装界面。
端口转发
当安装成功以后需要对宿主机进行端口转发的设置,才能畅通无阻的使用远程桌面等功能。
我采用的是rinetd,因为通过对firewall的设置中发现,用firewall配置端口转发有一些问题,而rinetd安装简单,操作方便。
- 下载并编译安装rinetd
从rinetd官网下载编译安装包,解压缩后进入目录进行编译安装。
tar zxvf rinetd.tar.gz
cd rinetd
cat Makefile
make
make install
- 配置rinetd
安装完成后编辑配置文件,设置端口映射
vi /etc/rinetd.conf
#来源IP 端口 内部IP 端口
#例:转发3389端口至内部机器
0.0.0.0 3389 192.168.122.144 3389
#保存后运行
rinetd -c /etc/rinetd.conf
#查看rinetd运行状态
netstat -tanulp|grep rinetd
tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN 85196/rinetd
防火墙设置
centos7防火墙变为firewall,操作和iptables不太一样。进行端口转发设置以后,还需要添加防火墙规则才能正常访问。
例:添加3389端口
firewall-cmd --zone=public --add-port=3389/tcp --permanent
#重启生效
firewall-cmd --reload