FreeBSD
Prev 建立与安装 Next

建立并安装一个定制的核心

首先,让我们快速的浏览一下 kernel build directiry。所有我们提到的目录都在 /usr/src/sys 这个主目录之下,你也可以透过 /sys 这个 link 来存取。在这个目录下,有不少的子目录,其中放置了核心各部分的程式码。/sys/[arch]/conf 你将在这个目录下编辑你的核心设定档,以及 compile 你编译核心的地方。[arch] 可以是 i386、alpha、或者是 pc98(日本 NEC 设计的 PC9801 系统,可算是 IBM PC 的一个分支)。每个特定架构(arch)的目录底下只存放跟该系统架构有关的程式码;而其他目录所存放的程式码则是其他 FreeBSD 可能会移植过去的平台可以共用到的部分。注意一下这个目录的逻辑结构,所有支援的硬体装置驱动程式、档案系统、叁数选项,都放在各自的目录。

Note: 如果你的系统内 没有 /usr/src/sys 这个目录,那表示你没有安装好核心的原始程式码,最简单的安装方式,就是以 root 身分执行 /stand/sysinstall,选择 Configure,选择 Distributions ,选择 src,最后选择 sys 选项。
接下来,切换到 i386/conf 这个目录,并且将 GENERIC 复制一份,并给这个档案一个易於辨认名称, 这个名称就是你的核心名称。例如:
    # cd /usr/src/sys/i386/conf
    # cp GENERIC MYKERNEL
依照惯例,核心名称最好全用大写字母。此外,如果你要管理很多部硬体配备不同的机器,在核心名称后加上各个主机名称是个不错的做法。
Note: 在做接下来的动作,请确定你是以 root 身分执行,不然你将会看到 permission denied 这个错误讯息。
现在,用你最上手的编辑器编辑 MYKERNEL。 如果你才刚装好你的系统,那麽系统里面唯一可用的编辑器大概是 vi 了,vi 是个颇复杂的编辑器,在这里我们不加以赘述。此外,FreeBSD 还提供了一个叫 "ee" 的简单编辑器,如果你是新手,ee 是个不错的选择。你可以随心所欲的修改你的核心设定档最上面的注解,反映出你做过的设定或修改,有别於 GENERIC。

如果你曾经在 SunOS 或是其他 BSD 作业系统下建立过核心,你对这个档案的不少内容会有种似曾相似的感觉。如果你才刚从其他作业系统像是 DOS,转移过来,你可能会被 GENERIC 的内容给吓到,所以请慢慢并仔细地阅读设定档。

Note: 如果你曾经与 FreeBSD project 同步最新的原始码 sync your source-tree,记得先看看 /usr/src/UPDATING 这个档的内容,再做任何更新动的动作。这个档案里写了所有关於升级 FreeBSD 的要点。 /usr/src/UPDATING 必定符合你的 FreeBSD 原始码的版本,也就是说里头的讯息会比此文章来的正确。
如果你使用 FreeBSD 4.0 之前的版本,而且不想升级到 FreeBSD 4.0 或者之后的版本,或者你正使用某个 RELEASE 版本的 FreeBSD,而且你的 /usr/src/ 里头只有 sys/ 这个子目录,那麽在你编辑完核心设定档之后,输入以下指令来编译、安装你的新核心。
Note: 如果你想把你的旧版核心更新成新版的,你最好从你抓取核心原始程式码 的地方顺便抓取新版的 config(8) ,相关的原始程式码会被放置在 /usr/src/usr.sbin,所以在做接下来的动作前,你必须先下载这些程式码,编译,然后安装到你的系统里头。
    # config -r MYKERNEL
    # cd ../../compile/MYKERNEL
    # make depend
    # make
    # make install

config 的叁数 "-r" 表示清除前一次所 config 的的档案!

如果你刚升级到新的 4.X 或更高的版本(如从 3.X 升级到 4.X,甚至从旧 4-STABLE 升级到较新的 4-STABLE),确定你看过 built the world,并且执行以下指令:

    # cd /usr/src
    # make buildkernel KERNCONF=MYKERNEL
    # make installkernel KERNCONF=MYKERNEL
Note: 如果你用的是 FreeBSD 4.2 与之前的版本,你必须把 KERCONF= 换成 KERNEL=。2001 年 二月二号之后抓取的 4.2-STABLE 则可以认出 KERNCONF= 这叁数。
如果你没有更新过你的原始码(你没执行过 CVSup、CTM 或 anoncvs),那麽按照 config,make depend, make,make install 的顺序来编译 并安装新的核心。
Warning: 如果你在最近一次编译核心后又更新了原始码,那麽你一定要用 make buildkernel 这指令来编译你的核心,不然系统会使用旧的程式来建立核心,而这可能导致编译失败。如果你更新了原始码,切记不要用 config/make 的步骤来编译核心!
新的核心将被复制到根目录,叫做 kernel,而旧的将被更名成 /kernel.old。现在关闭你的系统并重开机以便系统能载入新的核心。如果您遇到任何困难,请叁考本文章最后的疑难排解指示。无论是否能开机成功,你最好仔细的阅读无法开机这文章。
Note: 如果你加装了任何新硬体装置(像是音效卡),你可能要到 /dev 目录下增加一些装置节点,这样你才能够使用这些 硬体装置。

Prev Home Next
为何要编译核心 UP 核心设定档