【问题标题】:How to add SMP and Preempt in Kernel module version magic?如何在内核模块版本魔术中添加 SMP 和 Preempt?
【发布时间】:2019-04-30 17:01:41
【问题描述】:

我正在尝试构建我的自定义内核模块。它编译成功,但是在插入模块时它给了我错误

insmod: init_module 'helloworld.ko' failed (Exec format error)

并且dmesg日志显示:

version magic '3.10.0+ mod_unload ARMv7 p2v8 ' should be '3.10.0 SMP preempt mod_unload ARMv7 p2v8 '

如何在版本魔法中添加“SMP”和“抢占”?

【问题讨论】:

  • "我正在尝试构建我的自定义内核模块" -- 那么您可能没有正确构建它(即您的主机构建环境引用的内核与用于在目标上启动的那个)。您的模块应该自动继承该内核的“神奇版本”。还是您忽略了提供您正在做的事情的全部细节? IOW 你可能需要构建一个启用了 CONFIG_SMP 和 CONFIG_PREEMPT 的内核,尽管你仍然需要处理版本号中的+
  • 你可以强制版本魔法几乎是你想要的任何东西,但是对于比 helloworld 更复杂的模块,“SMP”和“抢占”差异可能是不明智的。
  • 您能否提供有关如何构建模块的更多详细信息,例如您正在输入的命令以及您正在使用的任何 Makefile 或 Kbuild 文件的副本?

标签: linux-kernel kernel-module


【解决方案1】:

检查您用于编译内核模块的内核的内核配置中是否启用了CONFIG_PREEMPTCONFIG_SMP。在你的内核中启用它,然后使用这个配置重新编译你的模块。

【讨论】:

  • 谢谢。它解决了我的问题。我的内核配置中未启用 CONFIG_PREEMPT 和 CONFIG_SMP。
猜你喜欢
  • 2019-01-19
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 2021-10-07
  • 2015-07-14
  • 2014-01-06
相关资源
最近更新 更多