荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: worldhero (一生,求索.), 信区: Linux
标  题: Linux编译内核详解
发信站: BBS 荔园晨风站 (Sat Nov  4 13:05:27 2000), 转信

内核简介
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序
、文件和网络系统,决定着系统的性能和稳定性。
Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在
/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取
相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入
到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技
术的利用。而Linux的内核则是这些特点的最直接的代表。
想象一下,拥有了内核的源程序对你来说意味着什么?首先,我们可以了解系
统是如何工作的。通过通读源代码,我们就可以了解系统的工作原理,这在
Windows下简直是天方夜谭。其次,我们可以针对自己的情况,量体裁衣,定制适
合自己的系统,这样就需要重新编译内核。在Windows下是什么情况呢?相信很多
人都被越来越庞大的Windows整得莫名其妙过。再次,我们可以对内核进行修改,
以符合自己的需要。这意味着什么?没错,相当于自己开发了一个操作系统,但是
大部分的工作已经做好了,你所要做的就是要增加并实现自己需要的功能。在
Windows下,除非你是微软的核心技术人员,否则就不用痴心妄想了。

内核版本号

由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修
改并发布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral--教
堂模型--对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双
树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable
tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在
开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中
经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开
发树就会成为新的稳定树。开发数就体现在源程序的版本号中;源程序版本号的形
式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一
(因此,是奇数)。到目前为止,稳定树的最高版本是2.2.16,最新发布的
Redhat7.0所采用的就是2.2.16的内核;开发树的最新版本是2.3.99。也许你已经
发现和多网站上都有2.4.0-test9-pre7之类的内核,但是这并不是正式版本。内核
版本的更新可以访问http://www.kernel.org。

为什么重新编译内核

Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的
内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性
,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核

通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更
快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更
由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修
改并发布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral--教
堂模型--对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双
树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable
tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在
开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中
经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开
发树就会成为新的稳定树。开发数就体现在源程序的版本号中;源程序版本号的形
式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一
(因此,是奇数)。到目前为止,稳定树的最高版本是2.2.16,最新发布的
Redhat7.0所采用的就是2.2.16的内核;开发树的最新版本是2.3.99。也许你已经
发现和多网站上都有2.4.0-test9-pre7之类的内核,但是这并不是正式版本。内核
版本的更新可以访问http://www.kernel.org。

为什么重新编译内核

Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的
内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性
,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核

通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更
快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更
新的系统内核是Linux使用者的必要操作内容。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码
,一般主要有下面四个考虑:
l 自己定制编译的内核运行更快(具有更少的代码)
l 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
l 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
l 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些

内核编译模式

要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(
build-in),也可以把该部分编译成模块(module),动态调用。如果编译到内核
中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,
机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你
是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的
部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的.o文件,在
使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这
些模块。

--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.36.85]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店