kvm安装centos7_KVM从入门到放弃

安装QEMU

在Ubuntu16上装的,qemu,kvm里装的Ubuntu10,可用。

配置网桥部分没做,Ubuntu10可以运行,网络功能暂时没有尝试。

Linux中国:如何在 Ubuntu 18.04 服务器上安装和配置 KVM​zhuanlan.zhihu.com
cf0ee1f05768f0af3f68ce35690b411c.png

编译安装KVM模块

编译前,需要把系统里的config文件copy过来,命名为.config(系统中config文件的名称可能不一样):

ea4e27afd63136d142b420f6ca39122d.png

【报错】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 error​www.haiyonghao.xyz
00e02fb8c316f31ec547b3553d106321.png

【参考】

单独编译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.net
87fd43aef5bde2d945b2ec5b624a9fd3.png
cd 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

源码结构

KVM内核源码学习之源码组成_huagongzxuezi的专栏-CSDN博客_kvm内核源码​blog.csdn.net
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值