Archlinux下使用KVM代替Vmware

系统环境

宿主机: Archlinux x86_64
虚拟机: Windows7 64bit

一直在Vmware下使用Windows7,无奈每天到下午的时候,电脑会变的比较卡,主要是vmware和firefox占用的资源太多了,5年多的笔记本和系统,没办法,只能替换掉vmware了。

先来试用下 Qemu + KVM

安装使用

KVM(Kernel-based Virtual Machine, 即内核级虚拟机) 是一个开源的系统虚拟化模块。

QEMU是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT), AMD SVM)虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案:KVM + QEMU。

要使用起来,需要硬件支持,并且需要加载相应的模块。按以下的步骤去检测安装即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 检测宿主机cpu是否支持虚拟化,如果flags里有vmx 或者svm就说明支持VT
$ grep -E "(vmx|svm)" --color=always /proc/cpuinfo

# 检查内核的KVM和VirtIO模块是否可用
$ zgrep KVM /proc/config.gz
$ zgrep VIRTIO /proc/config.gz

# 查看内核模块是否装载
$ lsmod | grep kvm
$ lsmod | grep virtio

# 手动加载内核模块
$ sudo modprobe virtio

# 当前用户加入组kvm
$ sudo usermod -a -G kvm lixiang

# 安装qemu以及图形化客户端
$ sudo pacman -S qemu
$ sudo pacman -S libvirt virt-manager

# 要连接网络,还要安装包
$ sudo pacman -S ebtables dnsmasq bridge-utils openbsd-netcat

# 设置授权
$ sudo vim /etc/polkit-1/rules.d/50-libvirt.rules
/* Allow users in kvm group to manage the libvirt daemon without authentication */
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" &&
subject.isInGroup("kvm")) {
return polkit.Result.YES;
}
});

# 启动服务
$ sudo systemctl enable libvirtd
$ sudo systemctl start libvirtd
$ sudo systemctl start virtlogd

对于 virt-manager 的使用比较简单,按图形操作即可。

如无意外,以上步骤执行完之后,就可以开始安装系统了。

参考