
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后会不会提示有两个系统可以进入,一个是原来的系统,一个是新生成的系统(这个系统有源码树),如果我想开发驱动就进入新生成的系统中编译,然后就不会遇到一些版本差别的问题? 展开
1、和系统版本一样的源码编译完成后运行命令make modules_install安装到/lib/modules下(覆盖了原来的内核文件),这是否代表我的系统已经被内核源码编译生成的这个东东替代了,reboot后进入的系统就是源码编译后的新系统。如果是这样的吧,我在这个新系统下编译的hello.ko应该是可以执行insmod的啊?
2、如果下载了和系统版本不一样的源码编译并安装,/lib/modules下肯定生成一个新的文件,reboot后会不会提示有两个系统可以进入,一个是原来的系统,一个是新生成的系统(这个系统有源码树),如果我想开发驱动就进入新生成的系统中编译,然后就不会遇到一些版本差别的问题? 展开
1个回答
展开全部
恩? 理解不全,要重新编译一个内核来使用,要注意两点:
a,安装 LKMs 到 /lib/modules 的子目录下;
b,将新的内核映像拷贝到 /boot 分区中,并配置 grub/lilo;
centos/redhat 发行版中的内核版本有自己很多的补丁修改,不同于主流的
从 kernel.org 中下载下来的内核。你只是简单的修改版本名称那是不行的,
mod version 内部还是会被认为是两个不同的内核(实际上也是不同的)。
在 centos/redhat 上为本机运行着的内核开发驱动,实际上可以不用去下载
任何版本的内核代码树,你只需要安装 相对应的 kernel-devel rpm 包即可。
当然,为了更方便,你可以直接从 centos 官网下载合适的源码包来重新编
译后再开发你的驱动程序。
更多问题,可以上巨立安邮件列表中进行交流。
巨立安技术是你在arm/x86下学习 linux 开发的上佳指导。
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 ,
同时注意代码树的路径配置
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |