安装QEMU
在Ubuntu16上装的,qemu,kvm里装的Ubuntu10,可用。
配置网桥部分没做,Ubuntu10可以运行,网络功能暂时没有尝试。
Linux中国:如何在 Ubuntu 18.04 服务器上安装和配置 KVMzhuanlan.zhihu.com编译安装KVM模块
编译前,需要把系统里的config文件copy过来,命名为.config(系统中config文件的名称可能不一样):
【报错】include/generated/autoconf.h or include/config/auto.conf are missing.
编译Linux驱动程序 遇到的问题 - 飞奔的猪 - 博客园www.cnblogs.com编译过程中可能还会遇到其他报错,基本都是apt install xxx可以解决的
【报错】could not insert 'kvm':Exec format error
modprobe: ERROR: could not insert 'kvm': Exec format errorwww.haiyonghao.xyz【参考】
单独编译kvm模块 - pojowsh - 博客园www.cnblogs.com【Ubuntu18+kernel4.18.0-15 最终版bash】
#this is amd version
path="/linux-4.18" #put in your own path
echo "1.rmmod kvm_amd kvmn"
rmmod kvm_amd
rmmod kvm
echo "2.rm kvm-amd.ko kvm.kon"
rm /lib/modules/$(uname -r)/kernel/arch/x86/kvm/kvm.ko
rm /lib/modules/$(uname -r)/kernel/arch/x86/kvm/kvm-amd.ko
echo "3.make clean kvm modulen"
make clean CONFIG_KVM=m CONFIG_AMD_KVM=m -C ${path} M=${path}/arch/x86/kvm
echo "4.make kvm module"
make oldconfig
make prepare
make scripts
make CONFIG_KVM=m CONFIG_AMD_KVM=m -C ${path} M=${path}/arch/x86/kvm
echo "5.insmod kvm-amd.ko kvm.kon"
cp ${path}/arch/x86/kvm/kvm-amd.ko /lib/modules/$(uname -r)/kernel/arch/x86/kvm/
cp ${path}/arch/x86/kvm/kvm.ko /lib/modules/$(uname -r)/kernel/arch/x86/kvm/
echo "6.modprobe kvm_amd kvm"
depmod -a
modprobe kvm_amd
modprobe kvm
lsmod|grep kvm
ls -l /dev/kvm
前期安装准备:
sudo apt-get install libssl-dev libelf-dev
这个bash要放在源码文件夹里执行
运行前要复制.config文件和Module.symvers文件到源码文件夹
Windows复制到Linux的bash还需要用dos2unix(dos2unix xxx.sh)工具转换一下格式
还要改一下Makefile文件里的版本信息
记得以root权限运行
本菜鸡真的被这个折磨了好久啊(sigh)……
然后发现这样装完之后新建不了虚拟机了???creating domain这一步会卡住……(是不是要make clean 一下?还没试过)
【CentOS7.4安装】
centos7下用内核源码单独编译安装KVM模块_wang1791499553的博客-CSDN博客_centos7 自带kvm模块blog.csdn.net KVM虚拟化系统安装_wcs_sdu的博客-CSDN博客_kvm虚拟化安装blog.csdn.netcd linux-3.10.0-693.el7/
make clean
make menuconfig
#保持默认选项 exit退出
make modules_prepare
make modules SUBDIRS=arch/x86/kvm/
#删除原kvm模块:
rmmod kvm-intel.ko
rmmod kvm.ko
#插入修改后的kvm模块:
insmod arch/x86/kvm/kvm.ko
insmod arch/x86/kvm/kvm-intel.ko
yum install kernel-devel 可以获得源码,里面有编译内核的配置文件,路径为/usr/src/kernels
【师兄的踩坑笔记】
从/usr/src/kernels/3.10.0.x86_64/
或/lib/modules/3.10.0.x86_64/source
获取到.config,复制到源码中
make modules_prepare
make -j8 modules
此时已经生成ko文件,但是执行insmod会出现格式错误
复制Module.symvers到源码文件夹
make modules SUBDIRS=arch/x86/kvm
insmod arch/x86/kvm/kvm.ko
insmod arch/x86/kvm/kvm-amd.ko
测试KVM模块
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kvm.h>
#define KVM_FILE "/dev/kvm"
int main(int argc, char *argv[]) {
int dev;
int ret;
dev = open(KVM_FILE, O_RDWR|O_CLOEXEC);
if (dev == -1) {
perror("Open /dev/kvm");
return -1;
}
/* 查看KVM版本 */
ret = ioctl(dev, KVM_GET_API_VERSION, 0);
fprintf(stdout, "KVM api version:%dn", ret);
/* 查看推荐的最大vcpu数 */
ret = ioctl(dev, KVM_CHECK_EXTENSION, KVM_CAP_NR_VCPUS);
if (ret==-1) {
perror("KVM KVM_CAP_NR_VCPUS");
} else {
fprintf(stdout, "KVM recommended max_vcpus:%dn", ret);
}
/* 查看最大支持的最大vcpu数 */
ret = ioctl(dev, KVM_CHECK_EXTENSION, KVM_CAP_MAX_VCPUS);
if (ret==-1) {
perror("KVM KVM_CAP_MAX_VCPUS");
} else {
fprintf(stdout, "KVM maximum possible value of max_vcpus:%dn", ret);
}
close(dev);
return 0;
}
【参考】
KVM学习1--安装编译测试kvm模块_zhang_syi的博客-CSDN博客blog.csdn.net