linux nbd模块,Centos7.3 安装编译nbd模块-Go语言中文社区

article/2025/11/1 12:04:54

未安装nbd模块

[zhaojq@localhost ~]$modprobe nbd

modprobe: FATAL: Module nbd not found.

查看linux版本

[zhaojq@localhost ~]$cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)

[zhaojq@localhost ~]$uname -r

3.10.0-514.26.2.el7.x86_64

安装

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

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

91ec0190a813063902387e5fe3f1b10c.png

[root@localhost tmp]# cd /tmp/

[root@localhost 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@localhost SOURCES]# rpm -ihv kernel-3.10.0-123.el7.src.rpm

[root@localhost SOURCES]# cd ~/rpmbuild/SOURCES

[root@localhost SOURCES]# tar Jxvf linux-3.10.0-123.el7.tar.xz -C /usr/src/kernels/

[root@localhost SOURCES]# cd /usr/src/kernels/

/usr/src/kernels/ 路径下出现 3.10.0-514.26.2.el7.x86_64 和linux-3.10.0-514.el7两个文件夹

[root@localhost kernels]# mv $(uname -r) $(uname -r)-old

[root@localhost kernels]# mv linux-3.10.0-123.el7 $(uname -r)

[root@localhost kernels]# cd $(uname -r)

[root@localhost 3.10.0-514.26.2.el7.x86_64]# make mrproper

[root@localhost 3.10.0-514.26.2.el7.x86_64]# cp ../$(uname -r)-old/Module.symvers ./

[root@localhost 3.10.0-514.26.2.el7.x86_64]# cp /boot/config-$(uname -r) ./.config

[root@localhost 3.10.0-514.26.2.el7.x86_64]# make oldconfig

[root@localhost 3.10.0-514.26.2.el7.x86_64]# make prepare

[root@localhost 3.10.0-514.26.2.el7.x86_64]# make scripts

[root@localhost 3.10.0-514.26.2.el7.x86_64]# make CONFIG_BLK_DEV_NBD=m M=drivers/block

[root@localhost 3.10.0-514.26.2.el7.x86_64]# cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/

[root@localhost 3.10.0-514.26.2.el7.x86_64]# 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命令开始重新执行

[root@localhost 3.10.0-514.26.2.el7.x86_64]# make prepare

scripts/kconfig/conf --silentoldconfig Kconfig

make[1]: 对“all”无需做任何事。

ke[1]: 对“relocs”无需做任何事。

▽ CHK include/generated/uapi/linux/version.h

CHK include/generated/utsrelease.h

make[1]: “arch/x86/purgatory/kexec-purgatory.c”是最新的。

CALL scripts/checksyscalls.sh

DESCEND objtool

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/fixdep.o

LD /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/fixdep-in.o

LINK /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/fixdep

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/exec-cmd.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/help.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/pager.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/parse-options.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/run-command.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/sigchain.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/subcmd-config.o

LD /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/libsubcmd-in.o

AR /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/libsubcmd.a

GEN /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/arch/x86/insn/inat-tables.c

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/arch/x86/decode.o

LD /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/arch/x86/objtool-in.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/builtin-check.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/elf.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/special.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/objtool.o

CC /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/libstring.o

LD /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/objtool-in.o

LINK /usr/src/kernels/3.10.0-514.26.2.el7.x86_64/tools/objtool/objtool

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

1、 REQ_TYPE_SPECIAL变量是在/usr/src/kernels/3.10.0-514.26.2.el7.x86_64/include/linux/blkdev.h文件中定义,由代码可知 REQ_TYPE_SPECIAL = 7:

/*

* request command types

*/

enum rq_cmd_type_bits {

REQ_TYPE_FS = 1, /* fs request */

REQ_TYPE_BLOCK_PC, /* scsi command */

REQ_TYPE_SENSE, /* sense request */

REQ_TYPE_PM_SUSPEND, /* suspend request */

REQ_TYPE_PM_RESUME, /* resume request */

REQ_TYPE_PM_SHUTDOWN, /* shutdown request */

#ifdef __GENKSYMS__

REQ_TYPE_SPECIAL, /* driver defined type */

#else

REQ_TYPE_DRV_PRIV, /* driver defined type */

#endif

/*

* for ATA/ATAPI devices. this really doesn't belong here, ide should

* use REQ_TYPE_DRV_PRIV and use rq->cmd[0] with the range of driver

* private REQ_LB opcodes to differentiate what type of request this is

*/

REQ_TYPE_ATA_TASKFILE,

REQ_TYPE_ATA_PC,

};

2、修改drivers/block/nbd.c,将sreq.cmd_type直接定义为7

//sreq.cmd_type = REQ_TYPE_SPECIAL;

sreq.cmd_type = 7;

3、重新执行 make CONFIG_BLK_DEV_NBD=m M=drivers/block

运行

[zhaojq@localhost ~]$ modinfo nbd

filename: /lib/modules/3.10.0-514.26.2.el7.x86_64/kernel/drivers/block/nbd.ko

license: GPL

description: Network Block Device

rhelversion: 7.3

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)


http://chatgpt.dhexx.cn/article/EVR2O6nB.shtml

相关文章

linux nbd模块,Centos7.3 安装编译nbd模块

未安装nbd模块 [[email protected] ~]$ modprobe nbd modprobe: FATAL: Module nbd not found. [[email protected] ~]$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [[email protected] ~]$ uname -r 3.10.0-514.26.2.el7.x86_64 安装 [[email protected] …

NBD(Network Block Device)简介及基本使用

NBD指的是Network Block Device,正如其名字的意思,NBD让用户可以通过网络访问到某个块设备,或者设备镜像。 你可能会想NFS(Network File System)不是已经可以实现通过网络挂载各种文件系统并进行访问了吗,…

微信开放平台开发者认证

1.邮箱注册,激活账号 2.企业认证 3.登陆微信开放平台,进行开发者认证 4.填写认证信息 5.发票选择,可以选择不开发票 6. 支付费用300 备注:如有疑问,请联系作者!

微信开放平台开发(3) 移动应用微信登录

在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现移动应用微信登录的功能。 移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号&#x…

微信开放平台之第三方平台开发,模板小程序如何提交?

大家好,我是悟空码字 12月25日,天气晴朗,阳光普照,今天是圣诞节。因为疫情影响,小羊人的增多,街上放眼望去,人烟稀少。楼下除了几个十一二岁的小男孩在玩耍,也没有像往日老人悠闲打…

微信开放平台第三方开发,注册试用小程序,一整套流程

大家好,我是小悟 对服务商来说,试用小程序的好处不言而喻,主打一个先创建后认证的流程。只需要提供小程序名称和openid便可快速注册一个试用小程序,在认证之前,有效期14天,大致流程如下。 注册试用小程序 …

微信开放平台开发第三方授权登陆(五):微信小程序

微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三)&a…

微信开放平台开发-授权、全网发布(PHP)

这两天做了微信开发平台的开发,梳理下。。。 先看看授权的流程: 第一步:接收component_verify_ticket: 1、微信服务器每隔10分钟会向第三方的消息接收地址推送一次component_verify_ticket,拿到后需要在本地做好存储&…

微信开放平台开发——网页微信扫码登录(OAuth2.0)

转自 http://www.cnblogs.com/0201zcr/p/5133062.html 1、OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表)&am…

微信开放平台-第三方平台开发配置及常见的问题

目录 概述 参考文档 开源项目&工具 第三方平台设置 问题及解决方法 概述 本实例:第三方平台微信公众号(服务号) 微信开放平台-第三方平台,为广大公众号和小程序提供运营服务和行业解决方案。分两种类型,定制…

微信第三方平台开发(一)

个人感觉微信在第三方平台开发者这块的开发文档写的很不友好,很隐晦,我在开发的过程总结的一些东西,写出来给大家分享一下。恩,就这样吧。 一、注册第三方平台账号 打开https://open.weixin.qq.com/cgi-bin/index?thome/index&…

微信开放平台开发第三方授权登陆(三):Android客户端

微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三)&a…

微信开放平台开发第三方授权登陆(二):PC网页端

微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三)&a…

.md文件用什么软件打开

记事本-------体验感差 效果: Notepad 毫无疑问的完胜记事本 官网下载地址:https://notepad-plus.en.softonic.com/download (下载速度比较慢) 这是百度网盘:(会快一点点) 链接:ht…

md文件打开方式推荐

MD文件介绍 以下介绍来自于百度: md文件是Markdown语法编写的文件,Markdown是一款轻量级的标记语言,可以使用语法来代替排版,插入公式和图片等都非常的容易,目前很多博客都可以使用该语法去编辑。使用Markdown的好处…

md文件如何打开?

阅读md文件时 常常会手足无措 今天教大家如何打开md文件 当在阅览md文件时,一般系统默认是记事本: 阅览效果极其不佳且编辑体验极差! 今天推荐一款软件:Typora 直接上链接:下载地址(官网) …

Windows下右键新建.md文件教程(转)

Windows下右键新建.md文件教程 转载自Keavnn’Blog,并有些许修正 原本创建.md文件需要首先打开markdown文本编辑器,如Typora,或者新建.txt文件然后修改后缀名,本文介绍了如何在Windows操作系统中添加右键创建.md文件的方法。 环…

md文件使用

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

如何编写md格式的文档、vscode中写.md文件的插件推荐

目录 1. 标题 2. 字体 3. 引用 4. 分割线 5. 图片 6. 超链接 7. 无序列表 8. 有序列表 9. 列表嵌套 10. 表格 11.代码 12. vscode中写.md文件的插件推荐 .md格式的文章可以用编辑器Markdown打开,Markdown是一种纯文本格式的标记语言。通过简单的标记语法…

md文件转换成word文档

md文件转成word文档 Typora导出word文件时需要先下载pandoc Typora导出word文件时因为文档里面有表格,导出失败,所以先使用使用pandoc命令导出无边框表格的word 1.在xxx.md所在文件夹打开命令提示符 2.在命令提示符输入:pandoc -s xxxx.md …