10.4.配置文件

为了创建定制内核配置文件和编译定制内核,必须首先安装完整的 FreeBSD 源代码。

如果 /usr/src/ 目录不存在或为空,说明没有安装源代码。可以使用 Git 来安装源代码。使用说明:“使用 Git”

源代码安装完毕后,检查 /usr/src/sys 的内容。这个目录包含许多子目录,包括那些表示 FreeBSD 支持的体系结构的子目录。在一个特定架构的目录中的所有内容只涉及该架构,其余的代码是所有平台通用的独立机器代码。每个支持的架构都有一个 conf 子目录,包含该架构的 GENERIC 内核配置文件。

请勿直接编辑 GENERIC。而应将文件复制并重命名为另一个文件名,并对该副本进行编辑。文件名通常使用全大写字母。当维护多台不同硬件的 FreeBSD 机器时,建议用机器的主机名来命名。在这个例子里,为 amd64 架构的 GENERIC 配置文件创建了一个名为 MYKERNEL 的副本:

# cd /usr/src/sys/amd64/conf
# cp GENERIC MYKERNEL

现在可以用任何 ASCII 文本编辑器来编辑 MYKERNEL。默认的编辑器是 vi,不过 FreeBSD 还安装了一个更容易使用的编辑器,名为 ee。

内核配置文件的格式很简单。每一行都包含一个代表设备或子系统的关键字,一个参数,和一个简短的介绍。# 后面的任何文字都被认为是注释并被忽略。要删除内核对某个设备或子系统的支持,在代表该设备或子系统的行的开头加上 #。不要为任何你不理解的行添加或删除 #。关于配置内核文件的更多信息可以在 config(5) 中找到。

警告

移除对某个设备或选项的支持很容易导致内核损坏。例如,如果从内核配置文件中删除驱动 ata(4) ,使用 ATA 磁盘驱动的系统可能无法启动。如果不确定,就在内核中留下对设备的支持。

除了在这个文件中提供的简要介绍之外,在 NOTES 中还有更多的说明,这些说明可以在该架构的 GENERIC 的同一目录中找到。对于独立于架构的选项,请参考 /usr/src/sys/conf/NOTES

技巧

当完成对内核配置文件的定制后,保存一份备份到 /usr/src 以外的位置。另外,在其他地方保留内核配置文件,并创建一个符号链接到该文件:

# cd /usr/src/sys/amd64/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL MYKERNEL

可以在配置文件中使用 include 指令。这允许将另一个配置文件包含在当前的文件中,从而使维护相对于现有文件的小改动变得容易。如果只需要少量的额外选项或驱动,就可以相对于 GENERIC 来说保持一个很小的变化,就像在这个例子中看到的那样:

include GENERIC
ident MYKERNEL

options         IPFIREWALL
options         DUMMYNET
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPDIVERT

使用这种方法,本地配置文件表达了与 GENERIC 内核的局部差异。随着升级的进行,添加到 GENERIC 中的新特性也将被添加到本地内核中,除非使用 nooptionsnodevice 来阻止。

config(5) 中可以找到一份全面的配置指令清单和它们的简介。

注意

要创建一个包含所有可用选项的文件,请以 root 身份运行以下命令:

# cd /usr/src/sys/arch/conf && make LINT