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 2022 x86_64 x86_64 x86_64 GNU/Linux

yum install kernel-devel kernel-headers

cd /tmp/
去这个网站下载自己内核版本
https://vault.centos.org/
wget https://vault.centos.org/7.9.2009/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模块

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

  1. make scripts

错误:

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

解决:

yum install elfutils-libelf-devel

  1. 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,在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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是 CentOS 7.9 编译安装 Elasticsearch 7 的步骤: 1. 安装 Java Elasticsearch 是基于 Java 开发的,因此需要先安装 Java。可以执行以下命令来安装 OpenJDK: ``` sudo yum install java-1.8.0-openjdk-devel ``` 2. 下载 Elasticsearch 从 Elasticsearch 官网下载最新版本的 Elasticsearch,下载地址为:https://www.elastic.co/downloads/elasticsearch。 可以使用 wget 命令来下载,例如: ``` wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-linux-x86_64.tar.gz ``` 3. 解压 Elasticsearch 将下载的 Elasticsearch 压缩包解压到指定的目录: ``` tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz -C /opt/ ``` 4. 配置 Elasticsearch 进入 Elasticsearch 安装目录,编辑 `config/elasticsearch.yml` 文件,设置以下配置项: ``` cluster.name: my_cluster node.name: my_node network.host: 0.0.0.0 ``` 其中,`cluster.name` 和 `node.name` 可以根据自己的需求修改,`network.host` 设置为 0.0.0.0 表示允许外部访问。 5. 启动 Elasticsearch 在 Elasticsearch 安装目录下执行以下命令启动 Elasticsearch: ``` ./bin/elasticsearch ``` 6. 验证 Elasticsearch 使用 curl 命令验证 Elasticsearch 是否正常运行: ``` curl http://localhost:9200/ ``` 如果返回以下信息,则表示 Elasticsearch 已经正常运行: ``` { "name" : "my_node", "cluster_name" : "my_cluster", "cluster_uuid" : "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx", "version" : { "number" : "7.12.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "xxxxxxx", "build_date" : "2021-04-20T20:56:39.040728659Z", "build_snapshot" : false, "lucene_version" : "8.8.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } ``` 以上就是 CentOS 7.9 编译安装 Elasticsearch 7 的步骤,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值