linux驱动中内核源码树和加载模块的问题

我用virtualbox安装centos,内核版本是2.6.32-358.el6.i686,下载的源码版本是linux-2.6.32,在配置中补全-358.el6.i68... 我用virtualbox安装centos,内核版本是2.6.32-358.el6.i686,下载的源码版本是linux-2.6.32,在配置中补全-358.el6.i686,然后编译,安装在/lib/modules下,由于内核版本一样,我想因该是覆盖了原来的文件夹。然后重起。编译hello.c,执行insmod hello.ko,还是会提示disagrees about version of symbol module_layout错误(log下显示),我有两个问题:
1、和系统版本一样的源码编译完成后运行命令make modules_install安装到/lib/modules下(覆盖了原来的内核文件),这是否代表我的系统已经被内核源码编译生成的这个东东替代了,reboot后进入的系统就是源码编译后的新系统。如果是这样的吧,我在这个新系统下编译的hello.ko应该是可以执行insmod的啊?
2、如果下载了和系统版本不一样的源码编译并安装,/lib/modules下肯定生成一个新的文件,reboot后会不会提示有两个系统可以进入,一个是原来的系统,一个是新生成的系统(这个系统有源码树),如果我想开发驱动就进入新生成的系统中编译,然后就不会遇到一些版本差别的问题?
展开
 我来答
juliantec
2013-05-24 · TA获得超过582个赞
知道小有建树答主
回答量:345
采纳率:0%
帮助的人:309万
展开全部
恩? 理解不全,要重新编译一个内核来使用,要注意两点:
a,安装 LKMs 到 /lib/modules 的子目录下;
b,将新的内核映像拷贝到 /boot 分区中,并配置 grub/lilo;

centos/redhat 发行版中的内核版本有自己很多的补丁修改,不同于主流的
从 kernel.org 中下载下来的内核。你只是简单的修改版本名称那是不行的,
mod version 内部还是会被认为是两个不同的内核(实际上也是不同的)。

在 centos/redhat 上为本机运行着的内核开发驱动,实际上可以不用去下载
任何版本的内核代码树,你只需要安装 相对应的 kernel-devel rpm 包即可。
当然,为了更方便,你可以直接从 centos 官网下载合适的源码包来重新编
译后再开发你的驱动程序。

更多问题,可以上巨立安邮件列表中进行交流。
巨立安技术是你在arm/x86下学习 linux 开发的上佳指导。
更多追问追答
追问
我已经重新编译了一套代码,并修改了/boot和grub,是可以启动新内核的,在新内核上开发驱动也是可以的,还有一个问题是我如果只下kernel-devel,貌似是编不过的啊
追答
你需要下载和你正运行着的内核有一致版本的 kernel-devel ,
同时注意代码树的路径配置
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式