使用 insmode get 加载驱动程序:不同意符号 module_layout 的版本

使用 insmode get 加载驱动程序:不同意符号 module_layout 的版本

我为ARM系统的Linux内核编译了简单的驱动:

$ uname -a

Linux CR5 4.4.171-cr5 #2 Tue Mar 10 11:49:00 CET 2020 armv7l GNU/Linux

为了编译,我使用了位于以下位置的 up 破坏系统的配置文件:

/proc/config.gz

我下载了一个vanilla内核,签出到标签4.4.5,替换配置文件,编译内核,然后使用arm工具chine编译驱动

gcc-linaro-7.2.1-2017.11-i686_arm-linux-gnueabi 该驱动包含简单代码

    #include <linux/module.h>
    #include <linux/kernel.h>

    int init_module(void) {
        printk(KERN_INFO "Hello world.\n");
        return 0;
    }

    void cleanup_module(void) {
        printk(KERN_INFO "Goodbye world.\n");
    }

我用了插入模块加载驱动程序,但终端的错误消息是:

insmod:错误:无法插入模块 test_module.ko:模块格式无效

消息我收到这条消息

test_module:不同意符号 module_layout 的版本

但是,当我在系统中运行模块与我的模块之间进行比较时readelf-a

ELF 头是相同的并且文件属性是相同的。

我还可以检查什么?也许模块加载被内核阻止了?我该如何检查?有人是我接下来可以做什么的领导者?

附注

  • 简单的c程序毁了很好,所以我想工具机很好
  • insmod-f 也不行

谢谢

答案1

问题出在布局上,即使所有相同的布局都改变了

在这里找到答案

这里

相关内容