如何编译内核源码和单独的内核模块

总论:工作需求用了centos内核中sunrpc的库。因为用了库所以相应的log就没有。所以决定从新编译sunrpc.ko并添加自己的日志。

1、下载对应的内核源码(uname -r   显示 2.6.32-431.el6.x86_64)应为是centos的源码所以要去centos官网下载。不要在内核源码官网下载,因为也没有对应的版本号。centos源码包(这个包含各种命令的源码例如libc库的源码只要解压RPM包就可以了)下载网址Index of /6.5/os/Source/SPackages  进去之后找到对应的包(包含源码的)我需要的是这个内核的源码包kernel-2.6.32-431.el6.src.rpm

2、源码包下载后将其解压(在windos下用解压工具就解压了在linux下用rpm2cpio rpm | cpio -idmv)感觉还是windos解压直观。解压。

到想编译模块的目录下直接执行下面的命令就可编译  命令中写上你自己的内核版本我的是696的

make -C /lib/modules/2.6.32-696.el6.x86_64/build M=`pwd` modules

替换模块

CentOS更新内核模块_liteblue的博客-CSDN博客_ko.xz

到此为止

下面的是全部都编译

3、编译,一般内核裁剪什么的用make menuconfig 配置生成.config文件。咱么这直接将系统的拷贝到咱们的目录下命令(linux-2.6.32-431.el6]# cp /boot/config-2.6.32-431.el6.x86_64  ./.config  )

之后make dep

之后就make 看系统是几核的之后在多核编译选择我是四核和所以make -j 4 编译。我的二十多分钟编译完成。我这里是centos 自己编译的时候也可以指定编译的内核版本号,否则默认的就是一个大的版本号,没有小版本号影响后期的kdump配置也是麻烦事。直接make的时候指定 make -j9 KERNELVERSION=2.6.32-696.el6.x86_64 。好多模块程序用uname-r来检测内核版本如果不改的话也是一堆麻烦事

之后make modules_install

之后 make install

之后重启 如果有多个内核的话建议把 grub.conf 里面的timeout配置长一点否则原始配置是5s。还没有选择呢就给你默认选择了内核了。你都来不及选择。

4、编译的时候报错crypto/signature/ksign-publickey.c: key.h: No such file or directory 用make menuconfig 去掉下面两项。自我感觉不好,编译不过这个模块就不编译了,感觉有点强暴的意思。不过去掉就去掉吧,暂时是没有什么用。

1) Select "Enable loadable module support", then "Module signature verification (EXPERIMENTAL)". Disable it.
2) Then go back to the main menu, select "Cryptographic API" then "In-kernel signature checker (EXPERIMENTAL)" and disable that one too.
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值