首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为不同的内核版本编译内核模块?

如何为不同的内核版本编译内核模块?
EN

Unix & Linux用户
提问于 2016-04-06 19:26:32
回答 1查看 8.3K关注 0票数 4

我安装了以下内核:

代码语言:javascript
复制
[root@localhost ~]# uname -r
2.6.32-573.el6.x86_64

以及以下内核源代码:

Linux2.6.32-573.1.1.el6.x86_64

我正在尝试为我自己的内核编译一个内核模块。

在内核源代码的Makefile中,我编辑了外向设置:

代码语言:javascript
复制
[root@localhost linux-2.6.32-573.1.1.el6.x86_64]# cat Makefile | grep "EXTRAVERSION ="
EXTRAVERSION = 2.6.32-573.el6.x86_64

并使用以下命令编译模块:

代码语言:javascript
复制
[root@localhost linux-2.6.32-573.1.1.el6.x86_64]# make M=~/hw/
  LD      /root/hw/built-in.o
  CC [M]  /root/hw/hello_world.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/hw/hello_world.mod.o
  LD [M]  /root/hw/hello_world.ko.unsigned
  NO SIGN [M] /root/hw/hello_world.ko

但是,当我试图安装它时,我会收到以下错误:

代码语言:javascript
复制
[root@localhost linux-2.6.32-573.1.1.el6.x86_64]# insmod ~/hw/hello_world.ko
insmod: error inserting '/root/hw/hello_world.ko': -1 Invalid module format

modinfo的输出是:

代码语言:javascript
复制
[root@localhost linux-2.6.32-573.1.1.el6.x86_64]# modinfo ~/hw/hello_world.ko
filename:       /root/hw/hello_world.ko
license:        GPL
srcversion:     A8BB878B88F36D3A046026C
depends:
vermagic:       2.6.32-573.el6.x86_64 SMP mod_unload modversions

我可以在不需要安装内核源代码的情况下编译当前内核的模块吗?

附加信息:

操作系统: CentOS 6.7最小。分布二进制数

遵循本指南:http://wiki.centos.org/HowTos/I_需求_这个_内核_来源

并从这里下载了Linux2.6.32-573.1.1.el6.x86_64的源代码:

http://vault.centos.org/6.7/updates/Source/SPackages

我知道我可以下载特定内核的源代码,但最终我实际上想要为一个无法找到源代码的内核版本构建模块(仍然是2.6.32),所以我想这样做。

EN

回答 1

Unix & Linux用户

发布于 2016-04-08 07:17:23

实际上,这里有两件事值得关注:

正在运行的内核版本与我们使用的源代码相同。由于以前编译的内核可能没有最新版本中可能使用的所有依赖项,而使用最新内核源代码编译外部模块可能依赖于代码的任何部分,这部分代码仅存在于最新版本中。因此,建议使用我们使用外部模块的最新版本内核。

其次,您可以将内核编译的.config文件从文件系统的/boot/config(当前版本)*复制到内核源代码顶部目录中的.config。当前版本,我们可以从uname -r获得它

因此,如果运行版本(使用命令uname -r检查)不等于下载的源代码,则需要编译和使用新内核,或者以其他方式下载与运行内核相同的内核版本。对于内核编译,请使用引导目录中的配置文件,如上面所述复制它。

然后,您可以继续以正常的方式编译外部模块,并以运行中的内核加载它,而不会出现任何问题。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/274774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档