目录
1简介
1.1效果图
1.1.1win10虚机
1.1.2Ubuntu虚机
2.安装
2.1安装kvm+libvirt等
2.2安装webvirtmgr
3.配置
3.1Libvirt配置Tcp监听
3.2修改webvirtmgr登陆密码
3.2.1修改用户登陆密码(可选)
3.2.2重新创建用户(删除原来的admin账户,可选)
4安装系统
4.1win10安装
4.2安装Linux
kvm+libvirt+webvirtmgr是一个轻量级web虚拟机,能够在linux上安装windows或者其他的linux虚机。kvm是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,负责虚拟系统。libvirt用于管理虚拟化平台的开源的API,后台程序和管理工具。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术,可以看做一个管家。webvirtmgr能连接libvirt进行web的管理,其中webvirtmgr集成了noVNC能够直接进行界面的操作。相当于轻量的OpenStack。
我们就不从源码安装了,直接apt
apt-get install kvm libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer
web应用我都习惯使用docker安装,不影响宿主机环境
安装docker,并设置自启动,并开启服务
apt-get install docker
systemctl enable docker
service docker start
拉取webvirtmgr镜像,运行为实例并起名为web,映射8080,6080端口到宿主机(8080是web,6080noVNC),非正常关闭(宿主机断电等)自动启动,尝试三次
docker run --name web -p 8080:8080 -p 6080:6080 --restart=on-failure:3 jieshao/web_kvm:onlyweb
第一次构建实例后,快捷键Ctrl+C终止,然后输入以下命令重新启动
docker start web
该docker的dockerfile https://github.com/LY1806620741/web_kvm
由于webvirtmgr运行在docker里,无法直接通过libvirt的默认sock连接方式通过/var/run/libvirt/libvirt-sock进行连接。解决办法有
在这里我用TCP连接
配置libvirt为tcp连接,sed命令作用替换文本
sed -i 's/#listen_tls = 0/listen_tls = 0/g' /etc/libvirt/libvirtd.conf
sed -i 's/#listen_tcp = 1/listen_tcp = 1/g' /etc/libvirt/libvirtd.conf
sed -i 's/#auth_tcp = "sasl"/auth_tcp = "none"/g' /etc/libvirt/libvirtd.conf
配置libvirt-bin服务监听tcp
vi /etc/default/libvirt-bin 修改为libvirt_opts = "-d -l" 增加-l监听tcp
重新启动libvirt-bin服务 (将会监听16509端口)
service libvirt-bin restart
配置桥接模式网桥,增加br0网桥
brctl addbr br0
配置br0网桥桥接网卡(ubuntu16以上还支持/etc/network/interface,但是推荐与时俱进,netplan文件夹下的名字可能不同)
cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
sudo vi /etc/netplan/50-cloud-init.yaml
红框是添加的,br0是之前添加的网桥名,br0网桥接管了ens3网卡,将ens3的配置复制一份到br0网桥就行了
例子二
配置前是固定ip
配置后
然后检查配置并应用(如果没有出错,按回车就应用了,如果网络爆炸了,他会在30s后还原设置)
netplan try --timeout 30
等待一段时间network重启后,使用ip addr就能看到br0网桥启动了
开启webvirtmgr
docker start web
进入容器的命令行
docker exec -it web /bin/bash
修改admin密码
/webvirtmgr/manage.py changepassword admin
Ctrl+P+Q(不关闭容器退出容器,exit会退出且关闭)
进入webvirtmgr的sqllite数据库
/webvirtmgr/manage.py dbshell
查看表
sqlite> .table
sqlite> select * from auth_user;
删除所有用户
Delete from auth_user;
或者根据id删除
Delete from auth_user where id=1;
退出数据库然后创建新用户
sqlite> .exit
[root@67bb95bd5cbf webvirtmgr]# /webvirtmgr/manage.py createsuperuser
输入用户名,邮箱,密码,确认密码,然后Ctrl + P + Q不关闭容器退出
登陆webvirtmgr
浏览器访问宿主机ip:8080(默认验证 admin,admin)
我已经添加了,add connections,填宿主机的ip,根据docker的network设置有关,一般是webvirtmsg的docker的网关。
点进去添加储存池(用于存放虚拟机磁盘映像和安装镜像iso等)
然后点击创建的储存池,并添加虚拟机磁盘映像
上传iso安装包,和virtio驱动包(虚拟化驱动,不然认识不了虚拟化的磁盘网卡等,提供了下载地址,自己找也行)
下载好PE,WIN10镜像,virtio驱动包
并放到ubuntu宿主机的储存池路径下
可以在windows下载好再传到宿主机(小文件可以用lrzsz,大文件4G以上的用scp命令,或者构建一个http文件上传服务器),也可以在ubuntu宿主机上直接下载,这时候八仙过海各显神通拉。
添加网络池
之前配置的桥接网卡可以起到作用了
可以看到我有两个连接方式
新建实例
连接安装光盘
开机
然后就是这个页面,不用说了吧
然后就是没有驱动了
把光盘换成virtio驱动盘
选择光盘->viostor->w10->amd64(我装的是64位win10)
怎么办,把光盘换回win10安装盘然后刷新
我分配的盘太小了。。反正用来测试的
novnc有点卡,桥接网络派上用场, win10开启远程桌面支持,我们用远程桌面去连接
如果无法连接,重启宿主机(有可能连不上网,ssh进不去,只能用显示器和键盘去调试,多试试netplan try,这个命令也不能100%检查正确),很可能是你的网桥配置有问题。还有要注意win10远程连接账户一定要有密码,不然是连不上的。
这个更加简单,完全不用去找驱动,一路装下去就行了,就不演示了