怎么使ko文件的version magic通过?

时间:2022-01-16 06:01:16
小弟我碰到一郁闷问题,在虚拟机上安装了一个内核版本是 2.6.35.6.PAE的linux系统,
在该系统上编译好了一个.ko的驱动文件,把该ko驱动文件复制到一目标机上,该目标机器上的内核版本是2.6.35.6,
少了一个PAE,奇怪的是这两个系统均是使用同一光盘安装的.所以在目标机上insmod my.ko文件不成功,
报告错误 version magic error ,请问各位有什么好方法解决这问题吗?

6 个解决方案

#1


编译驱动时候内核路径指定为目标机的那个内核代码,就是指定交叉编译的内核路径。在Linux内核源码中,有个./include/linux/vermagic.h的文件中有定义幻数

#2


目标机?指的是嵌入式设备吗?

在新的系统下重新编译模块,再加载该模块
或者 insmod  -f  my.ko

#3


引用 1 楼 li32768 的回复:
编译驱动时候内核路径指定为目标机的那个内核代码,就是指定交叉编译的内核路径。在Linux内核源码中,有个./include/linux/vermagic.h的文件中有定义幻数


谢谢li32768兄,我找了./include/linux/vermagic.h此头文件,然后根据此头文件的所包含的一头文件(绝对路径): /usr/src/kernerls目录/include/generated/utsrelease.h,修改这个头文件所设定的版本号即可了。

#4


引用 2 楼 lanyang123456 的回复:
目标机?指的是嵌入式设备吗?

在新的系统下重新编译模块,再加载该模块
或者 insmod -f my.ko

不是嵌入式设备了。我是使用了我的电脑,在电脑上通过虚拟机安装了一个linux系统,安装好后,内核版本显示大致是:2.6.35.6.PAE 这样了,目标机是另外一台电脑,我使用同样的安装光盘,通过usb光驱安装了系统,安装过程比较奇怪的是,竟然自动的只给我进行了最小化的安装,安装后没有图形界面,只有文字界面模式,当然也没有安装开发工具了,然后显示的内核版本是: 2.6.35.6了,少了 PAE 的字样.所以我也不能在新的系统下编译模块. 然后也使用 insmod -f my.ko来加载驱动模块也不成功,还是会进行versiong magic.按道理,使用了 -f 强制加载理应成功的。感觉怪事多多。

#5


谢谢 lanyang123456兄的热心帮忙了.

#6


请问如何把编译好的KO文件下载的目标机(嵌入式设备)中,可不可以下到FLASH里面?

#1


编译驱动时候内核路径指定为目标机的那个内核代码,就是指定交叉编译的内核路径。在Linux内核源码中,有个./include/linux/vermagic.h的文件中有定义幻数

#2


目标机?指的是嵌入式设备吗?

在新的系统下重新编译模块,再加载该模块
或者 insmod  -f  my.ko

#3


引用 1 楼 li32768 的回复:
编译驱动时候内核路径指定为目标机的那个内核代码,就是指定交叉编译的内核路径。在Linux内核源码中,有个./include/linux/vermagic.h的文件中有定义幻数


谢谢li32768兄,我找了./include/linux/vermagic.h此头文件,然后根据此头文件的所包含的一头文件(绝对路径): /usr/src/kernerls目录/include/generated/utsrelease.h,修改这个头文件所设定的版本号即可了。

#4


引用 2 楼 lanyang123456 的回复:
目标机?指的是嵌入式设备吗?

在新的系统下重新编译模块,再加载该模块
或者 insmod -f my.ko

不是嵌入式设备了。我是使用了我的电脑,在电脑上通过虚拟机安装了一个linux系统,安装好后,内核版本显示大致是:2.6.35.6.PAE 这样了,目标机是另外一台电脑,我使用同样的安装光盘,通过usb光驱安装了系统,安装过程比较奇怪的是,竟然自动的只给我进行了最小化的安装,安装后没有图形界面,只有文字界面模式,当然也没有安装开发工具了,然后显示的内核版本是: 2.6.35.6了,少了 PAE 的字样.所以我也不能在新的系统下编译模块. 然后也使用 insmod -f my.ko来加载驱动模块也不成功,还是会进行versiong magic.按道理,使用了 -f 强制加载理应成功的。感觉怪事多多。

#5


谢谢 lanyang123456兄的热心帮忙了.

#6


请问如何把编译好的KO文件下载的目标机(嵌入式设备)中,可不可以下到FLASH里面?