发新话题
打印

如何把一模块编译到内核中去?

如何把一模块编译到内核中去?

我现有的内核中没有包含某一模块,不能在内核里对它进行编译,现在怎么把这个模块编译到内核中去呢?然后通过make menuconfig可以看到这个模块已被加载到内核里呢?      
我是笨鸟,我先飞!

TOP

要达到这个目的至少要懂一些内核编程才行。
首先是这个模块的代码必须用#ifdef包含起来。
其次修改该目录下的Makefile,产生对应规则。
如果缺乏相关知识最好还是不要这样做,很容易出错的。      
1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。

TOP

引用:
原帖由 zltjiangshi 于 2008-7-23 21:09 发表
要达到这个目的至少要懂一些内核编程才行。
首先是这个模块的代码必须用#ifdef包含起来。
其次修改该目录下的Makefile,产生对应规则。
如果缺乏相关知识最好还是不要这样做,很容易出错的。
那我要用这一模块,那该怎么办呢?
!:我看了鸟哥书上写把你要的那块模块编译后,把模块文件放置到内核模块所处的位置(/lib/modules/`uname -r~/kernel/).然后在/etc/modprobe.conf里进行别名设置,那么系统每次启动的时候都会加载该模块.那么/etc/modprobe.conf的作用只是别名设置吗?有没有其他功能?
2:编译到系统内核中的模块,都随系统一起启动还是当有新的硬件添加的时候,系统才会加载相对应的模块呢?还是加了新硬件后,要设置某个文件才可以加载对应的模块呢?      
我是笨鸟,我先飞!

TOP

引用:
原帖由 bobobian 于 2008-7-25 10:07 发表

那我要用这一模块,那该怎么办呢?
!:我看了鸟哥书上写把你要的那块模块编译后,把模块文件放置到内核模块所处的位置(/lib/modules/`uname -r~/kernel/).然后在/etc/modprobe.conf里进行别名设置,那么系统每次启动的 ...
1,用一个模块不一定要集成进内核啊,模块可以单独编译的。/etc/modprobe.conf除了设置别名,主要是给depmod生产modules.dep的。
2,随系统启动,不需要修改文件。      
1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。

TOP

引用:
原帖由 zltjiangshi 于 2008-7-25 15:10 发表


1,用一个模块不一定要集成进内核啊,模块可以单独编译的。/etc/modprobe.conf除了设置别名,主要是给depmod生产modules.dep的。
2,随系统启动,不需要修改文件。
怎么和系统一起启动呢?是有了新硬件后它自己会加载呢还是其它的原因呢?      
我是笨鸟,我先飞!

TOP

引用:
原帖由 bobobian 于 2008-7-25 16:05 发表

怎么和系统一起启动呢?是有了新硬件后它自己会加载呢还是其它的原因呢?
我先前已说过,编进内核的“模块”不再是模块,跟内核构成了一个整体,内核载入它也载入了。
一个设备驱动,说白了就是一些函数代码。这些函数是本来存在的,并不一定要有硬件设备的存在才能存在。只不过当设备不存在时,执行这个函数没有任何作用,而设备存在的时候,执行就驱动了设备。      
1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。

TOP

发新话题