FreeBSD 6.0架设管理与应用(八)

2009-05-13 06:11:08来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


第八章 编译核心
核心 (kernel) 顾名思义是整个操作系统的核心,系统一开机即加载核心,它控制了整个系统的运作,包含和硬件沟通、系统资源配置、内存管理、档案系统管理等等。
本章将介绍如何客制化一个核心,它可以缩小您的系统、增加支持的软硬件、更改系统限制等。读完本章后,您将了解下列主题:

  • FreeBSD 核心的功用。
  • 如何修改核心。
  • 核心中每一个项目的用途。
  • 如何处理核心错误无法开机的情形。

8.1 为什么要重新编译核心
传统上,我们将所有支持的硬件、档案系统等全部放到核心中,每次有新增的硬件或功能都必须重新编译核心,并重新启动计算机。但随着支持的功能越来越多,系统核心变得越来越肥大,而重新开机以加载新加入的功能也不符合现代操作系统的需求。
目前 FreeBSD 许多可以独立出来的功能都能做成所谓的核心模块 (kernel module),当系统有需要使用该模块时,才将它加载核心中。这么做的好处就是可以让我们更快加入硬件驱动程序,更方便地加入我们想要的功能。所有可以独立出来的模块都可以编译放入核心中,然而,使用动态加载的方式和直接编入核心中各有优缺,直接编入核心中可以减少加载的时间,而动态加载可以让我们在不需要用到该功能时立即从系统中移除其所占用的资源。以 DVD 所使用的档案系统格式为例,我们平常可能很少用到 DVD,所以并未将它加入核心中。但当需要时,我们可以 kldload 这支程序来动态加载该模块,使用完毕后,也可以立即使用 kldunload 将它从核心中移除,在使用上方便许多。
我们刚安装完 FreeBSD 时,所使用的核心是一般性的核心,称之为 GENERIC kernel。为了要支持常见的软硬件,因此 GENERIC 核心中可能包含了许多我们用不到的驱动程序,也可能不支持一些特殊的硬件。例如,单单网络卡驱动程序就有数十种被加入 GERERIC 核心中,其实我们只需要使用其中一种。在硬件方面,核心中包含了太多的东西不仅会占去内存的空间,不同程序间也有可能造成冲突。
在软件方面,如果要启动 FreeBSD 的防火墙功能,或是使用 ADSL 联机 (4.4 以前的版本),都需要重新将支持这些功能的参数加到核心中。另外,如果要改变系统的效率,你必须修改核心中的参数,例如增加同时上线的人数、或最大同时开启的档案数等。当然,有的功能在 FreeBSD 中可以经由 sysctl 这个指令来修改,而毋需修改核心,但大部份的功能是一定要修改核心的。过于肥大的核心,开机需要的时间较长,所以我们可以将不必要的设定移除,以加速开机速度。
除此之外,我们常看到 FreeBSD 总部发布安全性漏洞修补程序,在完成原始码的修补之后,大多数的修补都必须重新编译核心。所以我们还是要来了解一下如何为自己量身订做一个新的核心。
请放心,编译核心并不难,其实只有几个步骤,只要依下列的方法去做,相信您对于系统核心将有更深入的了解。
8.2 修改核心
首先,您必须确认在安装 FreeBSD 时,有将所有 FreeBSD 的原始码 src 装进来。请先检查 /usr/src/sys/i386/conf/ 目录存在,您可以在这个目录中看到一个名为 GENERIC 的文字文件,GENERIC 就是安装时用的一般核心。在 FreeBSD 4.x 的版本中,这个目录下还有一个 LINT 的档案,这个档案中包含了所有可用的核心参数,您可以参考这个档以取出所需的设定加入自己的核心中。如果您使用的是 FreeBSD 5.x 以后的版本,请参考 NOTES 这个档。
如果系统中没有 /usr/src/sys 这个目录,表示您在安装时并未安装 FreeBSD 的原始码,您可以使用 sysinstall 这个指令来执行安装的选单工具,并安装原始码。执行了 sysinstall 后,请选择 [Configure] -> [Distribution] -> [src] -> [sys],即可安装核心的原始码。除了使用 sysinstall 外,您也可以先将本书所附第一张光盘放入光驱中,并使用下列指令来安装:

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD 6.0架设管理与应用(七)

下一篇:FreeBSD 6.0架设管理与应用(九)