+ -
当前位置:首页 → 问答吧 → [翻译]对比直接编译进内核和模块形式

[翻译]对比直接编译进内核和模块形式

时间:2004-05-31

来源:互联网

原文:
http://forums.gentoo.org/viewtopic.php?t=58790


对比直接编译进内核和模块

你有两个方法将功能加载到内核:直接将功能内建在内核使他变成内核的一部分或者以模块形式加入。

内建形式:

将功能内建在内核里可以确保此功能永远都开启。但缺点就是增加你内核的“体积”从而拖慢了你开启引导的时间, 并且这个“变大”的内核需要更多的内存。如果你是打算将内核编译到软盘, 从急救软盘开启引导的话, 空间将成为一个不容忽视的问题。

模块形式:

将功能编成模块可以让此功能在需要的时候加载在内存里而不需要的时候可以卸载,这样, 你的内核可以保持一个比较小的“体积”。 如果你是经常将硬件“交换”(swap in and out)进出的话, 这个方式是很有用的。你可以将很多支持的硬件编成模块形式比如你的声卡, 这样理论上系统会将此驱动正常的在硬件安装的时候挂载上去。

另一个编成模块形式的优点就是当你要在系统出错的时候, 模块形式可以允许你加入你自己的参数, 从而使得出错工作简单化。

当你要编成模块形式的时候几个问题要考虑进去。 首先是考虑到加载和卸载模块的时间, 当然这个问题并不是很严重。有一些功能是需要在开机引导的时候就要的而他们是不可以编成模块形式。当系统被加入在内存后, 这些功能就必须要加载了。比如支持ext2/ext3/reiserfs的功能是需要内建在内核里的这样你的分区才能被系统读到。另外我还有一个例子, 我有一个PCMCIA的网卡, 如果我将PCMCIA编入到内核使他可以在开机引导的时候就正确挂载的话, 我的网路可以启动运作, 但相反如果我用模块形式的话, 网路无法正确启动, 这是因为PCMCIA是需要在刚启动系统的时候就要挂载上去的原因。

一般编译方案:
我判断是否要将功能编成内建形式是判断此功能是否是我一直都需要并且是否我经常在用。如果这个功能我平时用的很多的话, 我会直接讲它编到内核里, 不然就变成模块。再我不断的重新编译内核的时候, 我开始将许多功能转成模块, 老实说, 我没有觉得这样会让系统效率下降。另一方面, 我的硬件功能也不多, 就是一个笔记本电脑, 唯一的硬件选择项目就是我要不要将USB的滑鼠插到系统上。

作者: 小劲鸭   发布时间: 2004-05-31

有些地方翻译错了,总体来说误导人啊,看了遍原文,基本两个意思。

不过赞同楼主的奉献精神,下次翻译要认真哦。

作者: killjin   发布时间: 2008-03-25

欢迎老斑竹的回归!!

谢谢你的文章!

作者: hayse2000   发布时间: 2008-03-25

有回归吗?是挖坟的吧。

作者: alaxie   发布时间: 2008-03-25

热门下载

更多