最开始下载的内核源码和机子的kernel不匹配,参照http://blog.csdn.net/hecant/archive/2007/10/31/1859606.aspx:
来源:互联网 发布:mac os x lion 最新版 编辑:程序博客网 时间:2024/04/29 04:31
最开始下载的内核源码和机子的kernel不匹配,参照http://blog.csdn.net/hecant/archive/2007/10/31/1859606.aspx:
检查/usr/src/linux/Makefile,确保下面这些特定的版本信息同你使用的内核完全一致:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 5
EXTRAVERSION = -1.358custom
...
不必完全编译一遍内核,只得到需要的文件即可:
root@pcsenonsrv linux-2.6.x]# make
CHK include/linux/version.h
UPD include/linux/version.h
SYMLINK include/asm -> include/asm-i386
SPLIT include/linux/autoconf.h -> include/config/*
HOSTCC scrīpts/basic/fixdep
HOSTCC scrīpts/basic/split-include
HOSTCC scrīpts/basic/docproc
HOSTCC scrīpts/conmakehash
HOSTCC scrīpts/kallsyms
CC scrīpts/empty.o
...
如果你不是确实想编译一个内核,你可以在SPLIT后通过按下CTRL-C中止编译过程。因为此时你需要的文件 已经就绪了。现在你可以返回你的模块目录然后编译加载它:此时模块将完全针对你的当前内核编译,加载时也不会由任何错误提示。
其中还提到:
我们可以借助选项--force-vermagic解决该问题,但这种方法有潜在的危险,所以在成熟的模块中也是不可接受的。
首先,准备同你目前的内核版本完全一致的内核代码树。然后,找到你的当前内核的编译配置文件。通常它可以在路径 /boot下找到,使用像config-2.6.x的文件名。你可以直接将它拷贝到内核代码树的路径下: cp /boot/config-`uname -r` /usr/src/linux-`uname -r`/.config。
不过用过了,不起作用。
最后:
自编module
$ modinfo memory.ko
filename: memory.ko
license: Dual BSD/GPL
srcversion: BC5712DD3ED953ACB98BF49
depends:
vermagic: 2.6.24-19-386 mod_unload modversions 486
内核
$ uname -a
Linux shlx12 2.6.24-19-386 #1 Wed Jun 18 14:09:56 UTC 2008 i686 GNU/Linux
系统module
$ modinfo /lib/modules/2.6.24-19-386/kernel/sound/soundcore.ko
filename: /lib/modules/2.6.24-19-386/kernel/sound/soundcore.ko
alias: char-major-14-*
license: GPL
author: Alan Cox
description: Core sound module
srcversion: 548AA54AF08207316C104F8
depends:
vermagic: 2.6.24-19-386 mod_unload 486
因为kernel source是一个ubuntu修改版的内核,所有有 modversions的记号,不知道去哪里除掉。最后查Makefile, .config发现了
x Symbol: MODVERSIONS [=n] x
x Prompt: Module versioning support x
x Defined at init/Kconfig:874 x
x Depends on: MODULES x
x Location: x
x -> Enable loadable module support (MODULES [=y])
去掉该选项后,再用上面的步骤,可以编过module。
Rusty Russell提到modversions是为了不使一个没有版本的module插入一个修改版的内核
Don't allow a module built without versions altogether to be inserted into a kernel which expects modversions.
modprobe --force will strip vermagic as well as modversions, so it won't be effected, but this will make sure that a non-CONFIG_MODVERSIONS module won't be accidentally inserted into a CONFIG_MODVERSIONS kernel.
http://lkml.indiana.edu/hypermail/linux/kernel/0805.1/0588.html
还有一个密切相关的地方是include/linux/vermagic.h,里面定义了所有magic的生成
- 最开始下载的内核源码和机子的kernel不匹配,参照http://blog.csdn.net/hecant/archive/2007/10/31/1859606.aspx:
- 【Android内核】下载编译android kernel( 原文地址 http://blog.csdn.net/chizhaolin/archive/2010/07/08/5721539.aspx)
- [转] 最美的十大精典爱情短信 [http://blog.csdn.net/zhaoxiaoyang5156/archive/2007/08/10/1736103.aspx]
- Silverlight的开发工具 转http://blog.csdn.net/dotnetwalker/archive/2007/10/24/1841847.aspx
- .net 中viewstate的原理和使用 转 http://blog.csdn.net/greyls/archive/2007/07/08/1682570.aspx
- 面向对象的程序(http://blog.csdn.net/qi_jianzhou/archive/2006/03/31/646124.aspx)
- 完整的CSS工具列表 http://blog.csdn.net/jaketseng/archive/2007/11/12/1880344.aspx
- 打造CSDN里最有个性的Blog版面(HTML+CSS)http://blog.csdn.net/DL88250/archive/2007/02/06/1503789.aspx
- Delphi中TSearchRec的Attr有效值问题(http://blog.csdn.net/Internetroot/archive/2007/10/07/1813838.aspx)
- http://blog.csdn.net/HuDon/archive/2006/06/28/846043.aspx 很不错的BLOG
- myeclipse6.0.1注册源码(转自:http://blog.csdn.net/brucemiao/archive/2007/10/26/1844446.aspx)
- [转] 一个分组查询的SQL 常用算法(附源码可直接执行) [来自--http://blog.csdn.net/rainbowsoftware/archive/2007/04/26/1585355.aspx]
- ASP.NET缓存:方法和最佳实践 http://blog.csdn.net/eqiang8271/archive/2007/10/24/1841149.aspx
- [转]水晶报表的使用经验和资料总结 [http://blog.csdn.net/coolsummer1980/archive/2006/09/30/1310588.aspx]
- 使用POI读取Word207和Excel2007的例子(来自http://blog.csdn.net/ejbcreate/archive/2009/08/06/4419571.aspx)
- 集合的clone[转自http://blog.csdn.net/dr2tr/archive/2006/03/07/617474.aspx]
- Windows消息产生的时机 http://blog.csdn.net/Free_Sword/archive/2006/05/07/711158.aspx
- CString 的方法(from:http://blog.csdn.net/lijuwen/archive/2006/03/13/623186.aspx)
- jsp为什么得不到servlet传来的参数
- EL表达式中使用三目运算符在Tomcat不同版本中的表现
- 47-超链接按钮
- View的常用方法,以及最重要的三个方法。
- 排序
- 最开始下载的内核源码和机子的kernel不匹配,参照http://blog.csdn.net/hecant/archive/2007/10/31/1859606.aspx:
- ffmpeg 中 swscale 的用法
- OCP-1Z0-053-V12.02-415题
- eclipse svn: ignore 为灰色的处理
- 百度笔试 编程题集锦
- 遍历iPhone上所有已经安装的字体
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- SourceInsight工程添加汇编语言.S
- 48-荧光灯菜单