grep -E 'svm |vmx' /proc/cpuinfo
如果显示如下:
上面表示已经启动了Intel的虚拟化加速。其中vmx表示Intel CPU的虚拟技术Intel Virtualization Technology, Intel VT-x。svm是AMD CPU的虚拟技术AMD Secure Virtual Machine, AMD SVM

如果你的终端执行后没有输出,你需要重启电脑进入BIOS开启用虚拟化。开机按键进入BIOS:
自攒机看主板:华硕按F8、Intel按F12,其他主板按ESC、F11或F12;
笔记本:联想ThinkPad系列按F1,其他品牌按F2;
品牌台式机按品牌分, Dell按ESC,其他按F12;
进入BIOS后,进入Configuration中设置开启:
AMD CPU:
安装KVM和相关的软件组件
我们所有安装都在Centos字符终端下,不会安装任何图形工具来管理虚拟机。
安装KVM需要安装一下相关软件包:
yum install qemu-kvm qemu-img libvirt virt-install libvirt-client libvirt-python
yum安装时候会自动安装必须的许多依赖项。安装完成后,可以通过以下命令检查:
lsmod | grep kvm
如果安装无误,输入应该显示类似如下:
配置网络
默认情况下,KVM会在虚拟机管理程序上设置名为\"virbr0\"的网络接口。它为为虚拟机创建一个网络,该网络使用NAT(网络地址转换)访问它所驻留的网络之外的资源,在本例中使用的是192.168.122.0/24。
为了虚拟机能有单独的网络,我们需要配置桥接网络:
cd /etc/sysconfig/network-scripts/
cp ifcfg-eno1 ifcfg-bridge0
注意加重部分根据实际情况换成实际的网卡名
修改ifcfg-eno1配置为:
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME= eno1
DEVICE= eno1
ONBOOT=yes
BRIDGE= bridge0
修改ifcfg-bridge0配置为:
TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
NAME= bridge0
DEVICE= bridge0
ONBOOT=yes
IPADDR=10.0.15.240
GATEWAY=10.0.15.254
DNS=114.114.114.114
注意网络按照实际情况修改,网卡ifcfg-eno1中的ip地址信息配置删除,新增加\"BRIDGE= bridge0\",而在ifcfg-bridge0中配置ip地址等信息。
然后重启网络:
systemctl restart network
配置VNC修改监听地址在KVM创建虚拟机时候virt-install添加使用'-vnc'选项时,就会在localhost(127.0.0.1)地址启动一个监听。为了远程访问,我们需要修改vnc的默认配置。我们修改/etc/libvirt/qemu.conf,查找:
# vnc_listen =\"0.0.0.0\"
去掉改语句前面的#注释符号,使得该配置生效,这样就可以远程反问vnc了。
防火墙开放端口相应我们需要在防火墙开放规则,开启vnc的端口。VNC的默认端口范围从TCP 5900开始,往下顺延,一台虚拟机占用一个端口。我们在防火墙上开启TCP 5900 -> 6100段端口就足矣。
firewall-cmd --zone = public --permanent --add-port = 5900-6100/tcp
如果使用iptables:
iptables -A INPUT -p tcp -m state --state NEW --dport 6000:6500 -j ACCEPT
添加后通过运行来验证我们的规则条目
firewall-cmd --zone = public --permanent --list-ports
iptables使用
iptabes iptables -n -L
构建虚拟机准备安装镜像构建虚拟机之前需要先下载好安装ISO镜像,本例子中我们选择国内镜像站,下载kali最新安装包镜像kali-linux-light-2019.2-amd64.iso。
下载完成后,使用
sha1sum kali-linux-light-2019.2- amd64.iso 并比对镜像站提供的哈希值做校对,确保安装包无误。
生成虚拟机OK,万事具备只欠东风,生成虚拟机也很容易只需要用virt-install命令即可:
virt-install --name kali --ram 1024 --file=/var/lib/libvirt/images/kali.img --file-size=10 --vnc --cdrom=kali-linux-2019.2-amd64.iso
在应该看到以下内容:
上面提示机器已经创建成功,需要我们完成具体安装,这时候就需要VNC介入开启安装窗口了。
VNC安装kali linux
可以通过命令行
virsh vncdisplay kali
可以获得该台虚拟机vnc监听端口:
本例中为:
:1
启动安装界面这样我们就可以通过VNC客户端(需要先下载)连接到虚拟机管理程序,比如本例中为10.0.15.240:5900 (或者10.0.15.240:1)
上面已经显示了kali安装界面,我们直接选择图形安装,然后按照正常安装步骤安装即可。
问题解决
安装步骤中在安装引导一步中报错:
需要在安装包设置一步骤,选择网络镜像时候选择否
安装后登陆中界面乱码
通过dpkg-reconfigure locales\"。选择locals选项选中en_US.UTF-8和zh_CN.UTF-8,确定后,将en_US.UTF-8选为默认。
安装中文字库
apt install xfonts-intl-chinese
apt install ttf-wqy-microhei
KVM常见管理命令
KVM的虚拟机都是可以使用命令行管理的,此处我们简单的总结下常见命令。
virsh list:查看启动中的虚拟机
virsh list --all:列出所有虚拟机
irsh start name:启动虚拟机
virsh shutdown name:关闭虚拟机
virsh destroy name:强制关闭虚拟机
virsh suspend name:挂起虚拟机(暂停,保存运行状态)
virsh resume name:恢复挂起的虚拟机
virsh edit name:编辑虚拟机的xml配置文件
virsh undefine name:删除创建的KVM虚拟机
virsh snapshot-create name 创建快照
virsh snapshot-revert name 恢复快照
webvirtcloud管理KVM平台虽然完全可以基于命令工具来管理KVM,但是不够直接方便。为此我们最后介绍一个通过Web管理KVM虚拟平台的系webvirtcloud。关于这个软件目前介绍还比较少,他是WebVirtMgr软件的升级版本,WebVirtMgr网上有很多文档介绍,大家可以参考学习。
安装webvirtcloud直接安装比较费劲,为了便捷直接使用容器化方式安装。
拉取镜像:
docker pull mplx/docker-webvirtcloud:latest
docker启动:
docker run -d \
-p 8080:80 \
-v /srv/webvirtcloud/data:/srv/webvirtcloud/data \
-v /srv/webvirtcloud/ssh:/var/www/.ssh \
--name webvirtcloud \
mplx/docker-webvirtcloud:latest
compose方式启动,配置如下
启动后远程浏览器访问,默认用户密码是admin admin
宿主机SSH证书登陆
为了管理KVM虚拟平台需要在宿主机上创建ssh证书链接配置。首先创建一个KVM实例管理用户webvirtmgr。
adduser webvirtmgr
配置证书登陆
mkdir /home/webvirtmgr/.ssh
cd /srv/webvirtcloud/ssh/
这个/srv/webvirtcloud/ssh目录为我们管理系统容器中映射来的目录
cp id_rsa.pub /home/webvirtmgr/.ssh/authorized_keys
chmod 0600 /home/webvirtmgr/.ssh/authorized_keys
chown -R webvirtmgr:webvirtmgr /home/webvirtmgr/.ssh
将该用户添加到libvirtd管理组
usermod -a -G libvirtd webvirtmgr
为libvirt添加一条polkit策略
vim /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
内容如下:
[libvirt group Management Access]
Identity=unix-group:libvirt
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
重启libvirtd服务
systemctl restarts libvirtd.service
注意上述步奏很重要,如果配置不对,则下一步添加实例时候会报错:
添加实例首选我们需要添加KVM示例,默认支持4种方式,由于我们的管理系统是在容器中,我们使用SSH链接方式:
添加实例名称、IP地址,用户后点击ADD,就会添加了实例
实例管理添加实例成功后就可以对实例进行配置,包括虚拟机(Instances)、存储、网络,网卡、NWFilters和密钥等
添加主机
选择instances标签页,点击右上\"+\"就可添加主机,可以使用默认6中配置,也可以custom自定义配置或者通过模版和XML文件设置配置。
主机管理
创建一个主机后,可以点击主机,进行主机管理界面如下图:
可以进行开关机Power、访问、resize扩容、镜像、设置、统计和销毁主机的操作。注意所有改变主机配置的操作,都必须在关机后才能进行。
实例监控webvirtcloud也提供了从KVM实例到每一台虚拟主机的监控信息。
日志记录
webvirtcloud同样也提供了实例到主机层次的操作日志记录。
总结
KVM是一个非常强大的虚拟化程序,是现代虚拟化解决方案的骨干之一。本文我们通实例详细介绍了KVM的安装配置,最后成功安装了kali linux虚拟机。还介绍了一款基于Web管理强大KVM 虚拟平台管理软件,通过这些我们可以自建和管理个性化虚拟化基础架构。