Linux 下面编译内核模块的 方法

(1) 选择好你的内核版本,内核模块经常是和内核版本紧密相关的,建议尽量选择高内核的版本,否则有可能会遇到很大的问题。

(2) 下载内核代码到/usr/src/kernel/目录。如果有了,则不用下载。

(3) mkdir -p /lib/modules/3.10.102-1.el6.elrepo.x86_64  #其中3.10.102-1.el6.elrepo.x86_64  是uname -r 的结果。

     ln -s /usr/src/kernels/linux-3.10.102/    /lib/modules/3.10.102-1.el6.elrepo.x86_64/build #源代码的目录要和build的内核版本匹配

(4) #cd /usr/src/kernels/linux-3.10.102/

    这一步可能需要进行一些内核参数的配置 

    #make oldconfig

     #make prepare

     #make script ###如果不执行这个会导致下面的错误:

  error linux/scripts/recordmcount: No such file or directory

    # make

    #make bzImage (bzimage可以代替zImage)#主要用于编译内核的文件。

   #make modules  #将内核选项中的M选项的配置编译为了*.ko文件。

  #make modules_install #将生成的*.ko文件复制到/lib/modules/<内核版本号>/下面,并运行depmod生成modules.dep内核模块的依赖文件,insmod和modprobe需要这些依赖去自动加载依赖的ko文件,否则需要手动添加依赖模块后,才能将内核模块inster进内核中去。 或者用modprobe,modprobe会读取文件

 /lib/modules/3.10.0-229.el7.x86_64/modules.dep .此文件文件 可以由工具depmod 根据当前加载的ko模块生成或者收到编译。这个文件主要指明了内核版本需要加载哪些内核模块以及内核模块的依赖模块。modules.dep假设ko文件位于目录/lib/modules/version/目录下面。

以行为单位

#modulea.ko 依赖depend1.ko和depned2.ko

MODULEA.ko:  DEPEND1.ko  DEPEND2.ko 

更准确的描述如下:

/lib/modules/2.6.29/kernel/a.ko: /lib/modules/2.6.29/kernel/c.ko /lib/modules/2.6.29/kernel/b.ko
/lib/modules/2.6.29/kernel/b.ko:
/lib/modules/2.6.29/kernel/c.ko: /lib/modules/2.6.29/kernel/b.ko
modproe a.ko的时候,他会按照顺序(从右向左)加载b.ko和c.ko.



(5) 开始编译自己的内核模块

 
   如果在编译的时候遇到这个错误:
   error: inlining failed in call to `kzalloc.clone.0`--param max-inline-insns-single limit reach
建议将kzalloc 改成kmalloc试试 ,我再编译dpdk的时候遇到这个问题。

附加 centos 编译内核及内核模块的官方链接:
https://wiki.centos.org/HowTos/BuildingKernelModules


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HehuaTang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值