在该系统上编译好了一个.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
在新的系统下重新编译模块,再加载该模块
或者 insmod -f my.ko
#3
谢谢li32768兄,我找了./include/linux/vermagic.h此头文件,然后根据此头文件的所包含的一头文件(绝对路径): /usr/src/kernerls目录/include/generated/utsrelease.h,修改这个头文件所设定的版本号即可了。
#4
不是嵌入式设备了。我是使用了我的电脑,在电脑上通过虚拟机安装了一个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
在新的系统下重新编译模块,再加载该模块
或者 insmod -f my.ko
#3
谢谢li32768兄,我找了./include/linux/vermagic.h此头文件,然后根据此头文件的所包含的一头文件(绝对路径): /usr/src/kernerls目录/include/generated/utsrelease.h,修改这个头文件所设定的版本号即可了。
#4
不是嵌入式设备了。我是使用了我的电脑,在电脑上通过虚拟机安装了一个linux系统,安装好后,内核版本显示大致是:2.6.35.6.PAE 这样了,目标机是另外一台电脑,我使用同样的安装光盘,通过usb光驱安装了系统,安装过程比较奇怪的是,竟然自动的只给我进行了最小化的安装,安装后没有图形界面,只有文字界面模式,当然也没有安装开发工具了,然后显示的内核版本是: 2.6.35.6了,少了 PAE 的字样.所以我也不能在新的系统下编译模块. 然后也使用 insmod -f my.ko来加载驱动模块也不成功,还是会进行versiong magic.按道理,使用了 -f 强制加载理应成功的。感觉怪事多多。
#5
谢谢 lanyang123456兄的热心帮忙了.
#6
请问如何把编译好的KO文件下载的目标机(嵌入式设备)中,可不可以下到FLASH里面?