1、宿主机前期配置
- 宿主机BIOS设置,开启CPU虚拟化。处理器要在硬件上支持VT技术,还要在BIOS中将其功能打开,KVM才能使用。一般在BIOS中,VT的标识通常为“Intel(R) Virtualization Technology”或“Intel VT”等类似的文字说明。
- 在虚拟机上安装宿主机Linux操作系统,本实验以Ubuntu16.04为例,宿主机操作系统的具体安装步骤见实验一。
- 判断宿主机CPU是否支持虚拟化。Intel系列CPU支持虚拟化的标志为“vmx”,AMD系列CPU的标志为“svm”。使用命令“grep -E "vmx|svm" /proc/cpuinfo”,如图所示,如果显示内容中能找到“vmx”或者“svm”字符,说明该CPU支持虚拟化。
- 判断宿主机操作系统内核是否支持KVM,利用命令“uname -r”查看内核的版本号,2.6以上的内核都支持。
- 使用命令“lsmod|grep kvm”查看内核是否已安装KVM模块。如果能看到“kvm_intel”和“kvm”两个模块,说明kvm已经是linux的一个module了,不必再安装,否则需要下载编译安装KVM,如图所示。(目前大部分主流Linux操作系统中都包含KVM模块,不需要编译安装。但作为初学者,如果想了解KVM的编译安装步骤可接着下面第2步的步骤做,否则直接跳到第3步骤。)
2、KVM的源码下载和安装(选做)
1. 如已有KVM则先进行卸载,没有则跳过。卸载方法如下:
(1)查看相关正在运行的mod
lsmod | grep kvm
(2)停止模块运行
如果cpu是AMD:sudo rmmod kvm-amd
如果cpu是Intel:sudo rmmod kvm
(3)卸载模块:
如果cpu是AMD:sudo modprobe -r kvm-amd
如果cpu是Intel:sudo modprobe -r kvm-intel
sudo modprobe -r kvm
(4)完全卸载
sudo aptitude purge kvm qemu-kvm
sudo apt-get remove kvm qemu-kvm
(如遇到E: Could not get lock /var/lib/dpkg/lock-frontend…问题,参考下面链接的方法解决:
https://blog.csdn.net/KingoKing/article/details/115416744)
2. KVM源码下载及安装
- 下载KVM源码。使用命令“git clone git://git.kernel.org/pub/scm/virt/kvm/kvm.git”下载KVM到本地“/home/kvm”目录,如图所示。下载完毕后会在“/home/kvm”目录生成一个新的“kvm”目录,显示了kvm源码的目录结构。
- KVM下载完成后,在“/home/kvm/kvm”目录下使用命令“make menuconfig”进行对KVM的配置。在配置时如果出现如图所示的错误,只需按照图所示下载“libncurses5-dev”包即可。
再次运行“make menuconfig”若出现错误,则缺少依赖库,执行下面两个命令进行依赖库安装,如图所示。
sudo apt-get install flex
sudo apt-get install bison
- 执行“make menuconfig”命令,在最后的“Virtualization”选项中,选中前两项“Kernel-based Virtual Machine(KVM) support”和“KVM for Intel processors support”(如果是AMD处理器,需选定“KVM for AMD processors support”选项)为<M>后保存退出即可,如图所示。
- 接下来使用命令“make –j 20”编译KVM,编译过程较慢,需耐心等待,测试在4核CPU的普通PC上编译了1个小时左右。如果在编译过程中出现如图1-9所示错误,只需按照图所示安装“libssl-dev”包即可。
- KVM的安装可分为module的安装,kernel与initramfs的安装两步。进入到KVM下载目录,在“/home/kvm/kvm”目录下使用命令“make modules_install”安装module(需要4-5分钟时间)。安装成功后在“/lib/modules/$kernel_version/kernel/arch/x86/kvm”目录下,可以看到kvm的内核驱动文件kvm.ko和分别支持Intel和AMD类型CPU的内核驱动文件kvm_intel.ko和kvm_amd.ko,如图所示。
- 接下来使用“make install”命令安装KVM的kernel和initramfs。安装成功后,可以通过“lsmod|grep kvm”命令查看KVM模块是否加载。如果没有,重新启动系统后,再次使用命令“lsmod|grep kvm”查看已经安装的KVM模块,这时能看到“kvm_intel”和“kvm”两个模块,如图所示。如果还不能看到,可以使用“modprobe kvm”命令和“modprobe kvm_intel”命令手动加载后查看。
- KVM模块加载成功后,可以在“/dev”目录看到一个名字为“kvm”的设备文件,如图所示。至此,KVM安装结束。
3、QEMU的源码下载和安装
- QEMU官网地址为http://www.qemu.org/,QEMU可以以多种方式下载安装,在Ubuntu操作系统中使用命令“apt-get install qemu”。实验优先使用源码下载编译安装,请按以下步骤操作。
- 下载QEMU源码。使用命令
“wget --no-check-certificate https://download.qemu.org/qemu-2.5.0.tar.xz”下载QEMU到本地“/home/kvm”目录(创建目录命令:mkdir /home/kvm),并采用命令“tar xvJf qemu-2.5.0.tar.xz”进行解压,如图所示。下载解压完毕后会在该目录下生成“qemu-2.5.0”目录。
- 配置QEMU,到QEMU下载目录“/home/kvm/qemu-2.5.0”,执行命令“./configure --enable-sdl”进行配置。
在该步骤如果由于缺少相应的包导致配置失败,如图1-15所示,使用“apt-cache search 包名”进行搜索,然后使用“apt-get install”命令逐一下载安装即可。(可能会出现的错误为缺少zlib包,使用命令“apt-get install zlib zlib1g zlib1g-dev”命令安装。没有c++编译器时,使用命令“apt-get install gcc”命令安装。缺少glib时,使用“apt-get install libglib2.0-dev”命令安装。其他错误可以逐一排查。)
如果由于某些包版本不对,如图所示,可以根据提示使用相应的命令更新即可。
出现如下提示则qemu的configure配置过程正常进行。
- 配置成功后,使用“make -j 20”命令编译QEMU,过程稍慢需耐心等待,在4核CPU的普通PC上编译了15分钟左右,时间大概15-30分钟。
- 编译成功后,使用“make install”安装QEMU。
- 安装完毕后,使用命令“qemu-system-x86_64”查看QEMU是否安装(按两次Tab键可以给出以qemu-system-开头的命令),使用“which qemu-system-x86_64”命令可以查看安装的QEMU所存放的目录,如图所示。
使用qemu-system-x86_64 -version查看qemu版本号