免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1470 | 回复: 2
打印 上一主题 下一主题

有关kernel和module关系的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-30 20:10 |只看该作者 |倒序浏览
我觉得linux对于高手来说真是无所不能,而且随心所欲!
但对想我这样的新手来说,要想实现某些在windows下根本不用去关心的应用,可能真是很难。

我一直有个很困惑的问题,不知道哪位大虾能给解惑或指点一下。
问题就是module和kernel以及某些发行版如debian的关系。
先说一下我的理解,kernel里有很多很多硬件运行需要的东西。而module是动态加载进kernel以扩展某些kernel中没有的功能的。

以无线网络的ipw2100为例,我原来的2.6.8的kernel中没用包含,所以我可以通过ipw2100的源码来编译一个ipw2100的module,假如一切正常,编译好,并加载到系统中那么我原来不支持无线网络的kernel也就有了这个功能。

而我后来升级的kernel2.6.16好象已经包含了ipw2100的东西,但用这个新的kernel启动,也不会像windows那样简单的支持无线,那么包含ipw2100的kernel又有什么用呢?

再说如debian这样的发行版。是的,我可以很方便的apt到很多软件,甚至用apt升级kde都不会有问题,我也可以找到ipw2100的deb包和源码,但我apt他们下来,他们其实是不能直接工作的,我还是需要手工的处理,甚至这样会更麻烦,因为网上google到的安装说明全部是手工下载源码编译的,没人会用apt先下载再处理,除了像我这样的。那么只能说对于某些类似ipw2100这样涉及硬件的问题由于硬件的多样性,这些发行版根本无法处理。除非他一开始就支持。

而且用apt下来的源码中一般都有功能是由源码生成deb的包,我不明白这又什么用?这个生成的deb的包难道是根据我系统的个性设置的?用这个自己生成的deb的包安装就不用编译源码了?使得硬件的支持傻瓜化了?

还有一个稍微高级一点的问题,好象可以选择用module或是直接将所需的功能编译进kernel,所谓自定义的编译kernel,我倒不奢望能看懂 kernel的代码或是自己写module,只是想搞清楚kernel和module到底是什么关系,module都在哪?是些什么?哪些被调用了?那些没有?什么东西在控制module的加载?因为我接触linux时间不长,被很多东西搞的稀里糊涂的。比如好象新的kernel和旧的,在文件系统上就存在/etc中的配置文件不同的问题,而且除了可以直接编译源码和直接改配置文件外,还有一些如module-assistant这样的前端的工具,虽然有工具扶助好,但他们到底在背后做了什么就不知道了。

谁能给点建议,我该去学点什么或是看点什么,最好能系统一点,因为上各种论坛得到的只能是只言片语,那样零敲碎打的太不系统。谁能给我一个很清晰的linux的kernel和module工作和控制的原理的阐释?哪有介绍这方面应用的资料呀?谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-03-31 06:00 |只看该作者
以无线网络的ipw2100为例,我原来的2.6.8的kernel中没用包含,所以我可以通过ipw2100的源码来编译一个ipw2100的module,假如一切正常,编译好,并加载到系统中那么我原来不支持无线网络的kernel也就有了这个功能。

而我后来升级的kernel2.6.16好像已经包含了ipw2100的东西,但用这个新的kernel启动,也不会像windows那样简单的支持无线,那么包含ipw2100的kernel又有什么用呢?


我感觉你前后文互相矛盾。

原本 kernel soruce 内没有 ipw2100 项目,你要使用当然得抓取 ipw2100 源码来编译使用。而 kernel 2.6.16 若是已经纳入的话,您就不用在自己抓取 ipw2100 源码,里面有现成的可以使用。

简单说,至少若是你要自己 make kernel 的话,这个项目支援已经包含,您可以决定是否要在 make kernel 时使用该项目。再者,大部分的 linux distro 对于周边装置的驱动支援,也都是编译成为 module,需要的 module 只需要使用 modprobe 程式挂入即可使用。

相关需要的项目都 module 化了,需要只是一个指令 modprobe 挂入即可使用,这不是很简单?

还有,要简单驱动配置无线网路环境,通常那是需要另外好的 UI 工具支持。其实很多商业 linux distro 都有完备的 UI 工具,无线网路设定侦测配置其实都不难。

再说如debian这样的发行版。是的,我可以很方便的apt到很多软件,甚至用apt升级kde都不会有问题,我也可以找到ipw2100的deb包和源码,但我apt他们下来,他们其实是不能直接工作的,我还是需要手工的处理,甚至这样会更麻烦,因为网上google到的安装说明全部是手工下载源码编译的,没人会用apt先下载再处理,除了像我这样的。那么只能说对于某些类似ipw2100这样涉及硬件的问题由于硬件的多样性,这些发行版根本无法处理。除非他一开始就支持。


至少 debian linux 下一版本发行时,kernel 已经内建 ipw2100 支援,您也只是需要把 modprobe 挂入使用即可。

而其他 linux distro 每隔一阵子就 release 一个新版本,所以安装过程的配置,就可以侦测并设定好该网路卡使用支持。

而且用apt下来的源码中一般都有功能是由源码生成deb的包,我不明白这又什么用?这个生成的deb的包难道是根据我系统的个性设置的?用这个自己生成的deb的包安装就不用编译源码了?使得硬件的支持傻瓜化了?


当然是需要编译,但是你也只是打个命令,然后系统会依据 deb 相关档案的内容处理所有编译细节,最后并产生一个可以使用安装的 binary package 档案,这在使用者使用与管理上很方便。

再者,使用 package 包,好处是管理方便,包含要查询移除与升级都有其好处。

当然,你需再了解的还有:

1. 任何现成可以使用的 binary package,当然会有一个 package 源码包来产生。

2. 若现成可以使用 binary package 不符合自己环境使用,或者是你要手动调整配置改源码等的话,当然还是需要那个 package 源码包。

还有一个稍微高级一点的问题,好像可以选择用module或是直接将所需的功能编译进kernel,所谓自定义的编译kernel,我倒不奢望能看懂 kernel的代码或是自己写module,只是想搞清楚kernel和module到底是什么关系,module都在哪?是些什么?哪些被调用了?那些没有?什么东西在控制module的加载?因为我接触linux时间不长,被很多东西搞的稀里糊涂的。


先 man modprobe,然后可以顺序找到一堆其他 module 管理工具。像是 insmod/lsmod/rmmod/depmod/insmod 等等项目说明,里面有你要的。

至于 kernel module 档案,都是放在 /lib/modules/ 目录内,不同版本数字就一个目录。

比如好像新的kernel和旧的,在文件系统上就存在/etc中的配置文件不同的问题,而且除了可以直接编译源码和直接改配置文件外,还有一些如module-assistant这样的前端的工具,虽然有工具扶助好,但他们到底在背后做了什么就不知道了。


我不大懂你说的文件是哪些,而若你说的是 modules.conf 与 modprobe.conf 这类档案的话,通常档案名称在 manpage 内都有说明。

linux kernel module 管理工具有改版多次,像是早期 modprobe 会读取的是 conf.modules。后来这个名称废弃了,改用正式的 modules.conf 名称。

而 linux kernel 2.6 因为 kernel module 的格式改了,纳入更多新的机制,其中顺便 module 管理程式也改成另外发展的 module-init-tools。里面提供的程式列表一样,多了顺应新的 kernel module format 的变更等支援。而其中设定档案也是改读取 modprobe.conf。

谁能给点建议,我该去学点什么或是看点什么,最好能系统一点,因为上各种论坛得到的只能是只言片语,那样零敲碎打的太不系统。谁能给我一个很清晰的linux的kernel和module工作和控制的原理的阐释?哪有介绍这方面应用的资料呀?谢谢!


==

[ 本帖最后由 kenduest 于 2006-3-31 08:01 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-03-31 10:54 |只看该作者
因为是新手说的话外行,见笑了!

原帖由 kenduest 于 2006-3-31 06:00 发表


我感觉你前后文互相矛盾。

原本 kernel soruce 内没有 ipw2100 项目,你要使用当然得抓取 ipw2100 源码来编译使用。而 kernel 2.6.16 若是已经纳入的话,您就不用在自己抓取 ipw2100 源码,里面有现成的可 ...


谢谢这位仁兄的回答!使我清楚了很多东西!

是不是说module里带有很多很多各种各样的驱动呀什么的,需要什么就随时modprobe对吧?当然可能对于某些具体问题,如ipw2100,可能光modprobe ipw2100还是不行的,还是需要像hotplug什么的支持的。(其实我还是对让这么一个东西工作起来的流程不太清楚)。
先 man modprobe,然后可以顺序找到一堆其他 module 管理工具。像是 insmod/lsmod/rmmod/depmod/insmod 等等项目说明,里面有你要的。

至于 kernel module 档案,都是放在 /lib/modules/ 目录内,不同版本数字就一个目录。

有时间我一定会看看的,只是觉得在命令行看man特别不爽,有没有Xman之类的东西呀?

我不大懂你说的文件是哪些,而若你说的是 modules.conf 与 modprobe.conf 这类档案的话,通常档案名称在 manpage 内都有说明。

linux kernel module 管理工具有改版多次,像是早期 modprobe 会读取的是 conf.modules。后来这个名称废弃了,改用正式的 modules.conf 名称。

而 linux kernel 2.6 因为 kernel module 的格式改了,纳入更多新的机制,其中顺便 module 管理程式也改成另外发展的 module-init-tools。里面提供的程式列表一样,多了顺应新的 kernel module format 的变更等支援。而其中设定档案也是改读取 modprobe.conf。


这就是我遇到的最大的问题了!如果系统中同时存在新版本和老板本的kernel的话,是不是在/etc中新版本和老板本的配置文件都会存在?那么谁在起作用呢?还是说新版本用新的配置文件?老板本用老的?想想应该是这样吧!

可能光在这瞎想是没用的,我还是应该找时间看看modprobe,module-init-tools的man。

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP