Centos7 安装编译nbd模块

来源:互联网 发布:多益网络2018校招 编辑:程序博客网 时间:2024/06/06 17:30

Centos7 安装编译nbd模块

未安装nbd模块

图1

查看linux版本

图2

安装

[root@test14 tmp]# yum install kernel-devel kernel-headers

注意: wget的地址需要根据自身的系统版本设定
图3

[root@test14 tmp]# cd /tmp/[root@test14 tmp]# wget http://vault.centos.org/7.3.1611/os/Source/SPackages/kernel-3.10.0-514.el7.src.rpm

安装之后在/root/rpmbuild/SOURCES下生成linux-3.10.0-514.el7.tar.xz文件。
完整的编译安装过程如下:

[root@test14 SOURCES]# rpm -ihv kernel-3.10.0-514.el7.src.rpm[root@test14 SOURCES]# cd ~/rpmbuild/SOURCES[root@test14 SOURCES]# tar Jxvf linux-3.10.0-514.el7.tar.xz[root@test14 SOURCES]# cd linux-3.10.0-514.el7/[root@test14 linux-3.10.0-514.el7]# make mrproper[root@test14 linux-3.10.0-514.el7]# cp /usr/src/kernels/$(uname -r)/Module.symvers ./[root@test14 linux-3.10.0-514.el7]# cp /boot/config-$(uname -r) ./.config[root@test14 linux-3.10.0-514.el7]# make oldconfig[root@test14 linux-3.10.0-514.el7]# make prepare[root@test14 linux-3.10.0-514.el7]# make scripts[root@test14 linux-3.10.0-514.el7]# make CONFIG_BLK_DEV_NBD=m M=drivers/block[root@test14 linux-3.10.0-514.el7]# cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/[root@test14 linux-3.10.0-514.el7]# depmod -a

错误处理

make scripts

错误:

Makefile:901: "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev or elfutils-libelf-devel"

解决办法:

yum install elfutils-libelf-devel

make CONFIG_BLK_DEV_NBD=m M=drivers/block

错误:

make[1]: *** 没有规则可以创建“drivers/block/floppy.o”需要的目标“tools/objtool/objtool”。 停止。

解决办法:

首先查看make scripts时是否出错,解决后,从make prepare命令开始重新执行make prepare

make CONFIG_BLK_DEV_NBD=m M=drivers/block

错误:

图4

解决办法:

经过搜索发现REQ_TYPE_SPECIAL变量是在./include/linux/blkdev.h文件中定义,其结构体定义如下图所示:
图5
由代码可知 REQ_TYPE_SPECIAL = 7:
修改drivers/block/nbd.c,将sreq.cmd_type直接定义为7,如下图所示,即为我修改后的结果:
图6
修改完之后,保存,重新执行 make CONFIG_BLK_DEV_NBD=m M=drivers/block

运行

图7

有很多位置参考这篇文章谢谢!

原创粉丝点击