【问题标题】:Kernel Version Error, insmod fails内核版本错误,insmod 失败
【发布时间】:2013-05-31 04:06:21
【问题描述】:

我正在运行内核version-2.6.35

当我点击uname -r 时,它会显示为2.6.35-22-generic

Kernel-2.6.35源代码树编译模块,

但它无法将模块插入到我正在运行的内核中。

我没有任何线索。 谁能帮我解决这个问题!

谢谢。

【问题讨论】:

  • 如果您添加更多信息(例如您如何编译模块)会有所帮助?失败时打印出的日志是什么?
  • 我应用的命令是:make drivers/usb/storage/usb-storage.ko,错误是:无法插入模块,使用error code -1
  • 检查 dmesg 日志是否可能发现类似“验证失败 -1”的内容
  • 你从哪里得到源代码树?

标签: linux-kernel linux-device-driver kernel-module kernel


【解决方案1】:

必须针对正确的内核版本编译 LKM,即 uname -r 的输出。在您的情况下,您已经下载了内核版本 2.6.35 源代码树并针对它编译了 LKM。插入LKM时,检查KERNEL_VERSION,如果匹配则插入模块时不会出错,如果不匹配则插入模块失败。

【讨论】:

    【解决方案2】:

    您要确保在正在运行的内核中启用了 CONFIG_MODVERSIONS,在您的情况下为2.6.35-22-generic。当您从 2.6.35 源构建内核模块时,正在运行的内核将允许加载具有匹配符号的模块,或者如果缺少符号,它将无法加载。

    未启用 CONFIG_MODVERSIONS 意味着您必须匹配内核版本和模块之间的版本。

    【讨论】:

      【解决方案3】:

      我假设您正在使用 official 内核树,但您正试图在您的发行版中加载您的模块。你必须从你的 Linux 发行版中获取内核源代码/头文件。我想这是因为这个版本2.6.35-22-generic-22-generic它不是正式版本名称的一部分。

      【讨论】:

        猜你喜欢
        • 2021-03-20
        • 1970-01-01
        • 2013-03-28
        • 1970-01-01
        • 1970-01-01
        • 2016-06-04
        • 1970-01-01
        • 2018-10-21
        • 2021-09-28
        相关资源
        最近更新 更多