CentOS 7 编译安装 nbd 模块
  dIZ4mPo2q5Ch 2023年11月02日 61 0


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)

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Centos sort 命令 下一篇: Centos cat EOF 用法
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  9E2BTpjt8nym   2023年12月06日   35   0   0 WindowsgitCentOS
dIZ4mPo2q5Ch