首先需要检查一下CPU是否支持虚拟化,执行一下命令来检查/proc/cpuinfo
文件中是否又虚拟化相关的字眼,如果有的话表明CPU支持虚拟化技术。
egrep -c '(svm|vmx)' /proc/cpuinfo
上面命令执行结果如果返回0,表示CPU不支持虚拟化技术。
主板BIOS中的虚拟化技术也可能不是默认开启的,如果没有开启需要手动开启一下。
现在使用下面的命令安装 kvm-ok 实用程序,该程序用于确定您的服务器是否能够运行硬件加速的 KVM 虚拟机。
sudo apt install cpu-checker
运行 kvm-ok 命令确认输出结果:
tscon@tscon_54:~$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
KVM 工具集合
运行下面的 apt 命令安装 KVM 及其依赖项:
首先是安装 KVM 相关的包文件,因为我的服务器都是命令行,没有安装 X 桌面,所以我加了 --no-install-recommends 参数。不然的话它会安装 virt-viewer 之类的包,而它们的依赖关系中又有 X11 和很多图形图像库,而这些都用不上。但是如果你开启了桌面系统,那么也可以不加该参数。
sudo apt update
sudo apt-get install --no-install-recommends qemu-kvm qemu-utils libvirt-bin virtinst cpu-checker
只要上图相应的软件包安装成功,那么你的本地用户(对于我来说是 tscon)将被自动添加到 libvirtd 群组。
Libvirt
是用于管理虚拟化平台的开源的API,后台程序和管理工具。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。
我们在 Ubuntu 18.04
服务器上安装 qemu
和 libvirtd
软件包之后,它就会自动启动并启用 libvirtd
服务,
现在使用下面的命令确认 libvirtd 服务的状态,
service libvirtd status
输出结果如下所示:
● libvirtd.service - Virtualization daemon
Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-09-27 01:11:19 UTC; 1min 47s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 10976 (libvirtd)
Tasks: 19 (limit: 32768)
CGroup: /system.slice/libvirtd.service
├─10976 /usr/sbin/libvirtd
├─12028 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
└─12029 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
如果 libvirtd 服务没有开启,则运行以下命令开启,
sudo service libvirtd start
sudo update-rc.d libvirtd enable
只有通过桥接网络,KVM 虚拟机才能访问外部的 KVM 管理程序或主机。在Ubuntu 18.04中,网络由 netplan 实用程序管理
安装一个 Ubuntu 18.04 系统时,会在 /etc/netplan/
创建一个.yaml 文件 其配置了静态 IP 和桥接网络
netplan
实用工具将引用这个文件。
目前,文件的具体内容如下:
# This is the network config written by 'subiquity'
network:
ethernets:
eno1:
dhcp4: true
version: 2
修改文件,添加桥接网络的配置信息,首先备份文件,以便于出现错误更快捷的回复原来的设置.
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
使用DHCP 自动分配Ip的配置
network:
version: 2
ethernets:
eno1:
dhcp4: yes
bridges:
br0:
interfaces: [eno1]
dhcp4: yes
nameservers:
addresses: [192.168.0.1]
固定IP配置
# This is the network config written by 'subiquity'
network:
version: 2
ethernets:
eno1:
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces: [eno1]
dhcp4: no
addresses: [192.168.1.136/24]
gateway4: 192.168.0.1
nameservers:
addresses: [192.168.0.1]
使用下面的 netplan 命令使更改生效,
sudo netplan apply
如果您想查看 debug 日志请使用以下命令,
sudo netplan --debug apply
现在使用以下方法确认网络桥接状态:
sudo networkctl status -a
● 6: br0
Link File: /lib/systemd/network/99-default.link
Network File: /run/systemd/network/10-netplan-br0.network
Type: ether
State: routable (configured)
Driver: bridge
HW Address: ae:86:5e:72:59:0c
Address: 192.168.1.136
fe80::ac86:5eff:fe72:590c
DNS: 192.168.0.1
ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.136 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::ac86:5eff:fe72:590c prefixlen 64 scopeid 0x20<link>
ether ae:86:5e:72:59:0c txqueuelen 1000 (Ethernet)
RX packets 6551 bytes 507975 (507.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8664 bytes 1054668 (1.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
有两种方式创建虚拟机:
virt-manager #(图形化工具)
virt-install #(命令行工具)
准备资源
经过一番搜索和实践,创建一台虚拟机需要的资源清单如下:
安装命令
sudo virt-install \
--name win10 \
--memory 2048 \
--vcpus sockets=1,cores=1,threads=2 \
--cdrom=/home/tscon/win10/cn_windows_10_multiple_editions_x64_dvd_6848463.iso \
--os-variant=win8.1 \
--disk /home/tscon/win10/win10.qcow2,bus=virtio,size=40 \
--disk /home/tscon/win10/virtio-win-0.1.96_amd64.vfd,device=floppy \
--network bridge=br0,model=virtio \
--graphics vnc,password=admin,port=5910 \
--hvm \
--virt-type kvm
基本上配置信息都在上面了,虚拟信息机配置如下:
如果你的命令输入的正确,应该会得到类似的反馈信息:
WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer.
WARNING No console to launch for the guest, defaulting to --wait -1
Starting install...
Domain installation still in progress. Waiting for installation to complete.
未完待续…
参考:
在 Ubuntu 的 KVM 中安装 Windows 系统
https://zhuanlan.zhihu.com/p/24764017
https://blog.csdn.net/geeksoarsky/article/details/86633529
https://linux.cn/article-9707-1.html
对虚拟机的其他操作(管理虚拟机-----后面)
https://www.colabug.com/2018/1016/4915105/