【问题标题】:Building modules with linux kernel for custom flavor使用 linux 内核构建模块以实现自定义风格
【发布时间】:2012-06-17 21:33:29
【问题描述】:

我按照链接中给出的说明进行操作:http://blog.avirtualhome.com/how-to-compile-a-new-ubuntu-11-04-natty-kernel/ 构建自定义内核并启动它。一切正常,除了在构建它时,我使用了选项 skipmodule=true (如此链接中给出),所以我猜模块不是为这个内核构建的。所以我有两个问题:

  1. 既然我已经构建了内核的其余部分,我如何只构建适合我的风格的模块?如果我没记错的话,“制作模块”只会为通用风格构建它。
  2. 还需要我在每次更改我的模块之一时构建整个内核源代码“fakeroot debian/rules binary-i5”(i5 是我的自定义偏好)吗?

谢谢。

【问题讨论】:

  • 1) 不,您不必在每次更改模块时都重新构建内核。 2)您的所有内核模块都无法加载吗?只是其中一些?您是否已经尝试加载 任何 个? “insmod -f”是一个选项吗?
  • 我还没有尝试过 insmod,因为当我在 /lib/modules/2.6.38-11-i5 文件夹中运行“ls -l”时,除了“内核”之外的所有文件/文件夹' 文件夹已更新(顺便说一句,我上次构建它并且运行良好,这是对同一内核源的更新)。因此,我认为有一些我错过的选项/命令也可以导出模块。如果我错了,请纠正我。
  • ^这是在构建源代码然后使用 dpkg 安装映像之后。

标签: operating-system linux-kernel kernel


【解决方案1】:

1) 要从模块源目录为特定内核构建 linux 内核模块,请执行以下操作:
make -C {path-to-kernel-source} M=`pwd` modules

-C 选项 tell 用于指向内核源代码树,它可以在其中找到内核的顶级 Makefile。 M=`pwd` 选项将其指向模块源目录,在该目录中构建“模块”目标。

2) 不,不需要构建源内核。拥有内核源代码树或内核头文件就足够了。

【讨论】:

  • 感谢您的回复。实际上,当我安装新的内核映像时,我的模块已导出到 /lib。猜猜父目录'/lib/modules/2.6.38-11-i5/kernel'的时间戳没有更新。无论如何,它现在工作正常。但是,当我对模块进行任何更改并按照您上面的建议进行构建时,我收到一个错误(如在这篇文章中:stackoverflow.com/questions/9425523/should-i-care-that-the-symbol-version -dump-is-missing-how-do-i-get-one)。那篇文章中的解决方案似乎表明我们必须重建内核。这就是我卡住的地方。
  • 好的,现在可以正常工作了。根本不需要编译内核。只需提供构建目录的路径即可:make -C /lib/modules/2.6.38-11-i5/build M=$(PWD) modules。谢谢。
猜你喜欢
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
相关资源
最近更新 更多