我为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 也不行
谢谢