8.4.配置文件

为了创建自定义的内核配置文件和构建自定义的内核,必须首先安装完整的 FreeBSD 源代码树。

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

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

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

  1. # cd /usr/src/sys/amd64/conf
  2. # cp GENERIC MYKERNEL

现在可以用任何 ASCII 文本编辑器来编辑MYKERNEL。默认的编辑器是 vi,尽管 FreeBSD 也安装了一个为初学者准备的更简单的编辑器,叫做 ee

内核配置文件的格式很简单。每一行都包含一个代表设备或子系统的关键字,一个参数,和一个简短的描述。#后面的任何文字都被认为是注释并被忽略。要删除内核对某个设备或子系统的支持,在代表该设备或子系统的行的开头加上#。不要为任何你不理解的行添加或删除#

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

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

提示: 当完成对内核配置文件的定制后,保存一份备份到/usr/src以外的位置。

另外,在其他地方保留内核配置文件,并创建一个符号链接到该文件:

  1. # cd /usr/src/sys/amd64/conf
  2. # mkdir /root/kernels
  3. # cp GENERIC /root/kernels/MYKERNEL
  4. # ln -s /root/kernels/MYKERNEL

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

options IPFIREWALL options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVERT

  1. 使用这种方法,本地配置文件表达了与**GENERIC**内核的局部差异。随着升级的进行,添加到**GENERIC**中的新特性也将被添加到本地内核中,除非使用**nooptions**或**nodevice**来阻止。在[config(5)](https://www.freebsd.org/cgi/man.cgi?query=config&sektion=5&format=html)中可以找到一份全面的配置指令清单和它们的描述。
  2. ># 注意
  3. >要建立一个包含所有可用选项的文件,以 root 身份运行以下命令:
  4. >

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

```