加载交叉编译的内核模块时出错

时间:2015-11-18 15:10:28

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

我已经交叉编译了一个简单的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

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

尝试运行:

depmod -a
ARM板上的

它可以解决你的问题。

答案 2 :(得分:0)

我建议采取以下步骤。

  1. insmod $ module-name

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

  3.   

    版魔术' 3.14.0-xilinx-13567-g906a2c9-dirty xxxxxxxx'应该   ' 3.14.0-xilinx-13567-g906a2c9-dirty xxxxxxxxxx'

    然后问题是由于对内核所做的更改。

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

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