【问题标题】:Error when loading cross compiled kernel module加载交叉编译的内核模块时出错
【发布时间】:2016-02-20 09:33:44
【问题描述】:

我已经交叉编译了一个简单的 helloworld 内核模块,主机是 x86 机器,目标是 ARM 板。当我做 modprobe 以在目标中安装模块时,我收到此消息:

FATAL: Could not load /lib/modules/3.14.0-xilinx-13567-g906a2c9-dirty/modules.dep: No such file or directory

我已确保该模块使用与目标相同的版本进行编译。

uname -a : 3.14.0-xilinx-13567-g906a2c9-dirty

modinfo: vermagic:       3.14.0-xilinx-13567-g906a2c9-dirty SMP preempt mod_unload modversions ARMv7 p2v8

可能是什么问题?这个错误是什么意思?

【问题讨论】:

  • 欢迎来到 Stack Overflow!我编辑了您的问题,以便更容易阅读代码。祝你好运!
  • modprobe 加载(或插入)模块到内核中,它不安装模块。你用什么命令install 模块到目标?是cp 命令还是make ... modules_install?顺便说一句,/lib/modules/3.14.0-xilinx-13567-g906a2c9-dirty/modules.dep 应该存在用于加载 any 模块,而不仅仅是您编译的模块。

标签: linux module linux-kernel kernel cross-compiling


【解决方案1】:

显然,您缺少指定模块依赖项的文件(在构建时生成并使用make module_install 安装)。

最简单的解决方案是,如果您的 mdule 没有外部依赖项,则使用 insmod 而不是 modprobe 插入它。

【讨论】:

    【解决方案2】:

    尝试运行:

    depmod -a
    

    在 ARM 板上。

    它应该可以解决您的问题。

    【讨论】:

      【解决方案3】:

      我会建议以下步骤。

      1. 执行 insmod $module-name

      2. 检查 dmesg 命令输出。如果您看到以下消息

      版本魔法“3.14.0-xilinx-13567-g906a2c9-dirty xxxxxxxx”应该是 '3.14.0-xilinx-13567-g906a2c9-dirty xxxxxxxxxx'

      那么问题是由于对内核所做的更改。

      1. 将更改提交到 git 存储库并重新构建内核。

      2. 创建一个新的内核映像,然后使用更新的内核启动目标。

      【讨论】:

        猜你喜欢
        • 2011-03-28
        • 2012-03-10
        • 2014-10-23
        • 2014-01-25
        • 2014-05-01
        • 2014-04-30
        • 2020-08-15
        • 2013-07-19
        • 1970-01-01
        相关资源
        最近更新 更多