2014-02-26 105 views
2

编译linux内核时有没有办法将参数传递给内建内核模块?如果是的话,你能解释一下吗? 我想将max_bonds的值传递给内核中内置模块的bonding驱动程序。在编译时将参数传递给内建内核模块

Linux内核版本 - 2.6

+0

开机时间:https://stackoverflow.com/questions/17659798/how-to-pass-a-value-to-builtin-kernel-module-at-boot-time –

回答

4

,可以使用两个内核的特性来实现:

  • 您可以通过内核命令行为“modulename.param =值”传递模块参数值,以内置模块。所以在你的情况下,你需要在内核命令行中使用类似“bonding.max_bonds = 50”的东西。
  • 从2.6.28左右开始(希望你的内核不会比这更老),内核支持在编译时通过CONFIG_CMDLINE_BOOL(“内置内核命令行”)和CONFIG_CMDLINE设置默认命令行。你设置CONFIG_CMDLINE_BOOL = y,然后在你的内核命令行中设置CONFIG_CMDLINE为你想要的任何值(例如“bonding.max_bonds = 50”)。您的引导加载程序传递给内核的任何其他命令行选项都会附加到您在内核配置中设置的默认命令行。

通过使用这两个功能,我认为你几乎可以得到你想要的东西,而无需修改任何内核源代码,只需调整你的配置文件即可。

+0

伟大的工作。感谢罗兰。这就是我一直在寻找的东西。 – tshah06

0

我认为这是可以通过更改模块源。每个模块参数的默认值都在源代码中进行编码 - 只需修改它即可。

+0

我不打算改变代码越远越好。因此在编译内核时检查传递参数的可能性。 – tshah06