600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > CentOS 7.9 编译安装 nbd 模块

CentOS 7.9 编译安装 nbd 模块

时间:2022-07-23 04:36:03

相关推荐

CentOS 7.9 编译安装 nbd 模块

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]# uname -a

Linux app_5_117 3.10.0-1160.53.1.el7.x86_64 #1 SMP Fri Jan 14 13:59:45 UTC x86_64 x86_64 x86_64 GNU/Linux

yum install kernel-devel kernel-headers

cd /tmp/

去这个网站下载自己内核版本

/

wget /7.9./os/Source/SPackages/kernel-3.10.0-1160.el7.src.rpm

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

cd ~/rpmbuild/SOURCES

tar Jxvf linux-3.10.0-1160.el7.tar.xz -C /usr/src/kernels/

cd /usr/src/kernels/

mv $(uname -r) $(uname -r)-old

[root@app_5_117 kernels]# mv linux-3.10.0-1160.el7/ $(uname -r)

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

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]#

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]# make mrproper

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]#

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]# cp …/KaTeX parse error: Double subscript at position 45: … ./ [root@app_5_̲117 3.10.0-1160…(uname -r) ./.config

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]#

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]# make oldconfig

HOSTCC scripts/basic/fixdep

HOSTCC scripts/kconfig/conf.o

SHIPPED scripts/kconfig/zconf.tab.c

SHIPPED scripts/kconfig/zconf.lex.c

SHIPPED scripts/kconfig/zconf.hash.c

HOSTCC scripts/kconfig/zconf.tab.o

HOSTLD scripts/kconfig/conf

scripts/kconfig/conf --oldconfig Kconfig

configuration written to .config

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]#

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]# make prepare

scripts/kconfig/conf --silentoldconfig Kconfig

Makefile:917: “Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev or elfutils-libelf-devel”

SYSHDR arch/x86/syscalls/…/include/generated/uapi/asm/unistd_32.h

SYSHDR arch/x86/syscalls/…/include/generated/uapi/asm/unistd_64.h

SYSHDR arch/x86/syscalls/…/include/generated/uapi/asm/unistd_x32.h

SYSTBL arch/x86/syscalls/…/include/generated/asm/syscalls_32.h

SYSHDR arch/x86/syscalls/…/include/generated/asm/unistd_32_ia32.h

SYSHDR arch/x86/syscalls/…/include/generated/asm/unistd_64_x32.h

SYSTBL arch/x86/syscalls/…/include/generated/asm/syscalls_64.h

HOSTCC scripts/basic/bin2c

HOSTCC arch/x86/tools/relocs_32.o

HOSTCC arch/x86/tools/relocs_64.o

HOSTCC arch/x86/tools/relocs_common.o

HOSTLD arch/x86/tools/relocs

WRAP arch/x86/include/generated/asm/clkdev.h

WRAP arch/x86/include/generated/asm/mm-arch-hooks.h

WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h

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

UPD include/generated/uapi/linux/version.h

CHK include/generated/utsrelease.h

UPD include/generated/utsrelease.h

CC arch/x86/purgatory/purgatory.o

AS arch/x86/purgatory/stack.o

AS arch/x86/purgatory/setup-x86_64.o

CC arch/x86/purgatory/sha256.o

AS arch/x86/purgatory/entry64.o

CC arch/x86/purgatory/string.o

LD arch/x86/purgatory/purgatory.ro

BIN2C arch/x86/purgatory/kexec-purgatory.c

CHK include/generated/qrwlock.h

UPD include/generated/qrwlock.h

CHK include/generated/qrwlock_api_smp.h

UPD include/generated/qrwlock_api_smp.h

CHK include/generated/qrwlock_types.h

UPD include/generated/qrwlock_types.h

CHK kernel/qrwlock_gen.c

UPD kernel/qrwlock_gen.c

CHK lib/qrwlock_debug.c

UPD lib/qrwlock_debug.c

CC kernel/bounds.s

GEN include/generated/bounds.h

CC arch/x86/kernel/asm-offsets.s

GEN include/generated/asm-offsets.h

CALL scripts/checksyscalls.sh

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]#

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]# make scripts

Makefile:917: “Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev or elfutils-libelf-devel”

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

HOSTCC scripts/genksyms/genksyms.o

SHIPPED scripts/genksyms/lex.lex.c

SHIPPED scripts/genksyms/keywords.hash.c

SHIPPED scripts/genksyms/parse.tab.h

HOSTCC scripts/genksyms/lex.lex.o

SHIPPED scripts/genksyms/parse.tab.c

HOSTCC scripts/genksyms/parse.tab.o

HOSTLD scripts/genksyms/genksyms

CC scripts/mod/empty.o

HOSTCC scripts/mod/mk_elfconfig

MKELF scripts/mod/elfconfig.h

CC scripts/mod/devicetable-offsets.s

GEN scripts/mod/devicetable-offsets.h

HOSTCC scripts/mod/file2alias.o

HOSTCC scripts/mod/modpost.o

HOSTCC scripts/mod/sumversion.o

HOSTLD scripts/mod/modpost

HOSTCC scripts/selinux/genheaders/genheaders

HOSTCC scripts/selinux/mdp/mdp

HOSTCC scripts/kallsyms

HOSTCC scripts/pnmtologo

HOSTCC scripts/conmakehash

HOSTCC scripts/recordmcount

HOSTCC scripts/sortextable

HOSTCC scripts/asn1_compiler

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

LD drivers/block/built-in.o make[1]: ***

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

make: *** [_module_drivers/block] 错误 2

vi /usr/src/kernels/3.10.0-1160.53.1.el7.x86_64/include/linux/blkdev.h

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]# vi /usr/src/kernels/3.10.0-1160.53.1.el7.x86_64/drivers/block/nbd.c

618 blk_rq_init(NULL, &sreq);

619 sreq.cmd_type = 7; /#REQ_TYPE_SPECIAL;/

620 nbd_cmd(&sreq) = NBD_CMD_DISC;

make CONFIG_BLK_DEV_NBD=m M=drivers/block

cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/

depmod -a

最后,modprobe nbd 启用nbd模块

期间会遇到错误,问题及解决办法如下:

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

错误:

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/

#ifdefGENKSYMS

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 shoulduse REQ_TYPE_DRV_PRIV and use rq->cmd[0] with the range of driverprivate REQ_LB opcodes to differentiate what type of request this is

*/

REQ_TYPE_ATA_TASKFILE,

REQ_TYPE_ATA_PC,

};

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

//sreq.cmd_type = REQ_TYPE_SPECIAL;

sreq.cmd_type = 7;

-=------------

[root@app_5_117 3.10.0-1160.53.1.el7.x86_64]# vi /usr/src/kernels/3.10.0-1160.53.1.el7.x86_64/drivers/block/nbd.c

618 blk_rq_init(NULL, &sreq);

619 sreq.cmd_type = 7; /#REQ_TYPE_SPECIAL;/

620 nbd_cmd(&sreq) = NBD_CMD_DISC;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。