CentOS 7 编译安装 nbd 模块

1、nbd 模块未安装 

[root@localhost ~]# modprobe nbd
modprobe: FATAL: Module nbd not found.

2、查看 linux 版本

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)   #查看系统版本

[root@localhost ~]# uname -r         #查看linux的内核信息
3.10.0-957.el7.x86_64

3、安装相关包

yum install kernel-devel kernel-headers elfutils-libelf-devel gcc+ gcc-c++

4、下载内核包

http://vault.centos.org/7.6.1810/os/Source/SPackages/kernel-3.10.0-957.el7.src.rpm

#根据自己的系统版本去下载
#7.6.1810  为redhat-release 系统版本
#3.10.0-957.el7  为uname -r  内核信息

5、编译

rpm -ivh kernel-3.10.0-957.el7.src.rpm

cd rpmbuild/SOURCES/

#解压 -C 指定目录 /usr/src/kernels
tar jxvf linux-3.10.0-957.el7.tar.xz -C /usr/src/kernels/

#解压后生成两个文件
ll /usr/src/kernels/
drwxr-xr-x. 22 root root 4096 9月   6 08:07 3.10.0-957.27.2.el7.x86_64
drwxrwxr-x. 24 root root 4096 9月   6 08:17 linux-3.10.0-957.el7

编译

cd /usr/src/kernels/linux-3.10.0-957.el7

#删除所有编译生成文件,内核配置文件
make mrproper

cp /usr/src/kernels/3.10.0-957.27.2.el7.x86_64/Module.symvers ./

cp /boot/config-3.10.0-957.el7.x86_64 ./.config

#备份当前.config文件为.config.old
make oldconfig

make prepare

make scripts

 

6、编译 

make CONFIG_BLK_DEV_NBD=m M=drivers/block

错误: 

drivers/block/nbd.c: 在函数‘__nbd_ioctl’中:
drivers/block/nbd.c:619:19: 错误:‘REQ_TYPE_SPECIAL’未声明(在此函数内第一次使用)
   sreq.cmd_type = REQ_TYPE_SPECIAL;
                   ^
drivers/block/nbd.c:619:19: 附注:每个未声明的标识符在其出现的函数内只报告一次
make[1]: *** [drivers/block/nbd.o] 错误 1
make: *** [_module_drivers/block] 错误 2

解决:

vi drivers/block/nbd.c

//sreq.cmd_type = REQ_TYPE_SPECIAL;
sreq.cmd_type = 7;  #修改为7

#重新执行一次
make CONFIG_BLK_DEV_NBD=m M=drivers/block

 7、复制文件

cp drivers/block/nbd.ko /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/block/

depmod -a

8、查看模块

[root@localhost linux-3.10.0-957.el7]# modinfo nbd
filename:       /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/block/nbd.ko
license:        GPL
description:    Network Block Device
retpoline:      Y
rhelversion:    7.6
srcversion:     EDE909A294AC5FE08E81957
depends:        
vermagic:       3.10.0 SMP mod_unload modversions 
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 0) (int)
parm:           debugflags:flags for controlling debug output (int)

 

你可能感兴趣的:(CentOS,7)