centos7安装内核源码树-编译加载nvme-ko驱动

参考:CentOS7编译自己的内核模块 - 简书

一、安装内核源码树步骤

1、按照上述帖子操作之前,如果你的OS不是安装的开发版本,需要先安装kernel-devel

(1)可以使用命令sudo yum install kernel-devel安装;

(2)或者到如下网站下载对应的rpm包安装http://vault.centos.org/7.3.1611/updates/Source/SPackages/kernel-3.10.0-514.26.2.el7.src.rpm

rpm -ivh xxx.rpm  --nodeps --force

2、官方强烈建议不要以root身份编译内核源码,其实关系不大,不需要去新创建用户

3、查看OS的版本

[root@localhost host]#  rpm -q centos-release
centos-release-7-9.2009.1.el7.centos.x86_64

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

二、安装过程中遇到的问题

/// 错误1:直接使用rpm安装的话,会提示一个错误:
#rpm -i kernel-3.10.0-862.el7.src.rpm
Warning: user mockbuild does not exist. using root
...
这时需要安装一个mock,并新建一个mockbuild用户:
#yum install mock
#useradd -s /sbin/nologin mockbuild
https://blog.csdn.net/weixin_50886514/article/details/115468624
https://vault.centos.org/7.9.2009/os/Source/SPackages/


/// 错误2:安装源码需要依赖的包
[root@localhost SPECS]# rpmbuild -bp --target=$(uname -m) kernel.spec
构建目标平台:x86_64
为目标x86_64构建

错误:构建依赖失败:
    net-tools 被 kernel-3.10.0-1160.el7.x86_64 需要
    bison 被 kernel-3.10.0-1160.el7.x86_64 需要
    java-devel 被 kernel-3.10.0-1160.el7.x86_64 需要
    python-docutils 被 kernel-3.10.0-1160.el7.x86_64 需要

[root@localhost SPECS]# yum install java-devel
[root@localhost SPECS]# yum install python-docutils

[root@localhost linux-3.10.0-1160.el7.x86_64]# pwd
/root/rpmbuild/BUILD/kernel-3.10.0-1160.el7/linux-3.10.0-1160.el7.x86_64

/// 错误3:执行编译命令后,insmod nvme-core.ko报错:
[root@localhost host]# make -C /usr/src/kernels/3.10.0-1160.83.1.el7.x86_64/ M=/root/rpmbuild/BUILD/kernel-3.10.0-1160.el7/linux-3.10.0-1160.el7.x86_64/drivers/nvme/host modules

[ 6241.247315] nvme_core: loading out-of-tree module taints kernel.
[ 6241.248204] nvme_core: module verification failed: signature and/or required key missing - tainting kernel

//按下面帖子应该可以解决上面2个错误,不过报这两个错误貌似也不影响KO加载
https://blog.csdn.net/u011050845/article/details/125699924        再自己的Makefile中加CONFIG_MODULE_SIG=n
https://blog.csdn.net/gzxb1995/article/details/105407014/        MODULE_INFO(intree, "Y");

///下面这个错误没有解决掉,是比较老的内核代码retpoline.S中的一个汇编符号
[ 6241.248558] nvme_core: Unknown symbol __x86_return_thunk (err 0)

重新安装一个比较新的OS镜像,按上面的步骤再执行一遍后,编译出来的KO可以加载:

make -C /root/rpmbuild/BUILD/kernel-3.10.0-1127.el7/linux-3.10.0-1127.el7.x86_64/ M=/root/rpmbuild/BUILD/kernel-3.10.0-1127.el7/linux-3.10.0-1127.el7.x86_64/drivers/nvme/host/

[root@localhost host]# insmod nvme-core.ko
[root@localhost host]# insmod nvme.ko
[root@localhost host]# lsmod |grep nvme
nvme                   32382  0 
nvme_core              63547  1 nvme

补充:

在qemu上装的centos8的虚拟机,安装python-devel时报错:

 需要换一个安装包:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7.9版本(CentOS-7-aarch64-Everything-2009)适用于ARM64 (aarch64),必须集齐9个文件才能一起解压缩使用,9个文件下载地址: CentOS-7-aarch64-Everything-2009.part09.rar https://download.csdn.net/download/weixin_43800734/20419195 CentOS-7-aarch64-Everything-2009.part08.rar https://download.csdn.net/download/weixin_43800734/20419107 CentOS-7-aarch64-Everything-2009.part07.rar https://download.csdn.net/download/weixin_43800734/20419029 CentOS-7-aarch64-Everything-2009.part06.rar https://download.csdn.net/download/weixin_43800734/20418995 CentOS-7-aarch64-Everything-2009.part05.rar https://download.csdn.net/download/weixin_43800734/20418492 CentOS-7-aarch64-Everything-2009.part04.rar https://download.csdn.net/download/weixin_43800734/20418455 CentOS-7-aarch64-Everything-2009.part03.rar https://download.csdn.net/download/weixin_43800734/20418366 CentOS-7-aarch64-Everything-2009.part02.rar https://download.csdn.net/download/weixin_43800734/20418341 CentOS-7-aarch64-Everything-2009.part01.rar https://download.csdn.net/download/weixin_43800734/20418267 CentOS是免费的、开源的、可以重新分发的开源操作系统,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一。 CentOS Linux发行版是一个稳定的,可预测的,可管理的和可复现的平台,源于Red Hat Enterprise Linux(RHEL)依照开放源代码(大部分是GPL开源协议 )规定释出的源码编译而成。自2004年3月以来,CentOS Linux一直是社区驱动的开源项目,旨在与RHEL在功能上兼容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值