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

happyzeng79 2011-06-09 08:34:06
小弟我碰到一郁闷问题,在虚拟机上安装了一个内核版本是 2.6.35.6.PAE的linux系统,
在该系统上编译好了一个.ko的驱动文件,把该ko驱动文件复制到一目标机上,该目标机器上的内核版本是2.6.35.6,
少了一个PAE,奇怪的是这两个系统均是使用同一光盘安装的.所以在目标机上insmod my.ko文件不成功,
报告错误 version magic error ,请问各位有什么好方法解决这问题吗?
...全文
1624 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuhao270 2011-09-23
  • 打赏
  • 举报
回复
请问如何把编译好的KO文件下载的目标机(嵌入式设备)中,可不可以下到FLASH里面?
happyzeng79 2011-06-12
  • 打赏
  • 举报
回复
谢谢 lanyang123456兄的热心帮忙了.
happyzeng79 2011-06-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lanyang123456 的回复:]
目标机?指的是嵌入式设备吗?

在新的系统下重新编译模块,再加载该模块
或者 insmod -f my.ko
[/Quote]
不是嵌入式设备了。我是使用了我的电脑,在电脑上通过虚拟机安装了一个linux系统,安装好后,内核版本显示大致是:2.6.35.6.PAE 这样了,目标机是另外一台电脑,我使用同样的安装光盘,通过usb光驱安装了系统,安装过程比较奇怪的是,竟然自动的只给我进行了最小化的安装,安装后没有图形界面,只有文字界面模式,当然也没有安装开发工具了,然后显示的内核版本是: 2.6.35.6了,少了 PAE 的字样.所以我也不能在新的系统下编译模块. 然后也使用 insmod -f my.ko来加载驱动模块也不成功,还是会进行versiong magic.按道理,使用了 -f 强制加载理应成功的。感觉怪事多多。
happyzeng79 2011-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 li32768 的回复:]
编译驱动时候内核路径指定为目标机的那个内核代码,就是指定交叉编译的内核路径。在Linux内核源码中,有个./include/linux/vermagic.h的文件中有定义幻数
[/Quote]

谢谢li32768兄,我找了./include/linux/vermagic.h此头文件,然后根据此头文件的所包含的一头文件(绝对路径): /usr/src/kernerls目录/include/generated/utsrelease.h,修改这个头文件所设定的版本号即可了。
翔云123456 2011-06-11
  • 打赏
  • 举报
回复
目标机?指的是嵌入式设备吗?

在新的系统下重新编译模块,再加载该模块
或者 insmod -f my.ko
li32768 2011-06-11
  • 打赏
  • 举报
回复
编译驱动时候内核路径指定为目标机的那个内核代码,就是指定交叉编译的内核路径。在Linux内核源码中,有个./include/linux/vermagic.h的文件中有定义幻数

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧