KVM | 我虚拟机的Windows 10比你物理机的还流畅

毕竟我的本子是游戏本

KVM

KVM是什么?WiKi里介绍是Kernel-based Virtual Machine,是Linux内核里的东西。在我的认知里,KVM的虚拟机性能损耗比较低

检查KVM支持情况

检查硬件支持

运行

1
LC_ALL=C lscpu | grep Virtualization

1
grep -E --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo

如果没显示结果,可能需要去BIOS开启CPU的虚拟化支持(目前的很多CPU都支持虚拟化)

检查内核支持

运行

1
zgrep CONFIG_KVM /proc/config.gz

如果看到kvmkvm_amdkvm_intel被设置为ym,表明内核模块可用

然后运行

1
lsmod | grep kvm

如果加载了模块,执行命令后会以下内容

1
2
3
4
5
6
kvm_intel             245760  0
kvmgt 28672 0
mdev 20480 2 kvmgt,vfio_mdev
vfio 32768 3 kvmgt,vfio_mdev,vfio_iommu_type1
kvm 737280 2 kvmgt,kvm_intel
irqbypass 16384 1 kvm

否则就要手动加载模块,详情自行查阅WiKi

QEMU

KVM本身不进行任何虚拟,而QEMU使用KVM能让虚拟机速度达到近乎原生的程度,详情见WiKi

安装

1
sudo pacman -S qemu

libvirt

QEMU并不提供管理虚拟机的图形界面,而libvirt提供了一种管理QEMU虚拟机的便捷方式,详情见WiKi

安装

安装libvirt并启用服务

1
2
3
sudo pacman -S libvirt
sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service

安装前端virt-manager

1
sudo pacman -S virt-manager

打开Virtual Machine Manager会提示输入密码,进入后即通过图形界面管理虚拟机

若想无密码进入,只需要用gpasswd把你的用户加入libvirt组即可

启动虚拟网络

当开始安装虚拟机的时候,要启动网络,但是失败并报错了

Google了一下后找到这个帖子,里面说明了原因,即缺少了ebtablesdnsmasq两个包,解决方法是安装它们然后重启libvirtd服务

1
2
sudo pacman -S ebtables dnsmasq
sudo systemctl restart libvirtd.service

桥接网卡

占位待更新

安装虚拟机

这个和VMware与Virtual Box没什么大的不一样,自行摸索就好了

之前装了个Windows 10,感觉还不错

参见

  1. KVM - ArchWiki
  2. Kernel module - ArchWiki
  3. QEMU - ArchWiki
  4. libvirt - ArchWiki
  5. networking - libvirt: “Failed to initialize a valid firewall backend” - Super User