如何在FreeBSD10.1上自定义和重新编译内核

来自菜鸟教程
跳转至:导航、​搜索

介绍

FreeBSD 操作系统默认使用 GENERIC 内核。 这是一个默认配置,用于支持各种开箱即用的硬件。 但是,编译自定义内核有很多不同的原因,包括安全性、增强的功能或更好的性能。

FreeBSD 为其操作系统使用了两个代码分支:稳定的和最新的。 稳定是当前的代码版本,即生产就绪。 Current 是开发团队的最新代码版本,具有一些最新的前沿特性,但更容易出现错误和系统不稳定。 本指南将使用 stable 分支。

在本教程中,我们将使用自定义配置重新编译 FreeBSD 内核。

先决条件

要学习本教程,您只需要:

  • 一个 FreeBSD 10.1 Droplet。

如果您是 FreeBSD 新手,可以查看 FreeBSD 入门 系列教程。

第 1 步 — 获取源代码

在这一步中,我们将拉取操作系统源代码。

FreeBSD 与许多其他风格的 UNIX 一样,提供其操作系统的源代码供公众下载和修改。 为了重新编译内核,首先您需要从 FreeBSD 的版本控制系统中提取此源代码。

FreeBSD 基金会将 Subversion 用于其代码存储库,因此让我们首先安装 Subversion 的二进制端口。

sudo pkg install subversion  

FreeBSD 的默认 shell 是 tcsh,它为 $PATH 中的命令使用内部哈希表。 安装 subversion 后,您应该重新散列目录表。

rehash

最后,将最新稳定分支的副本检出到 /usr/src 目录。

sudo svn co https://svn0.us-east.FreeBSD.org/base/stable/10 /usr/src

系统可能会提示您接受服务器证书。 确认指纹与本页底部的指纹匹配后,输入p接受。

第 2 步 — 创建您的自定义配置

在这一步中,我们将自定义我们的新内核配置。

内核配置文件的标准命名约定是所有大写的内核名称。 本教程的配置将称为 EXAMPLE。 内核配置文件位于 /usr/src/sys/architecture/conf 目录中; DigitalOcean 使用的架构是 AMD64。

切换到配置目录。

cd /usr/src/sys/amd64/conf

使用 ee 或您喜欢的文本编辑器创建并打开 EXAMPLE 文件进行编辑。

sudo ee EXAMPLE

您可以在 此处 找到示例配置。 将内容复制并粘贴到EXAMPLE中,然后保存并关闭文件。

此示例内核配置适用于为 DigitalOcean Droplet 量身定制的最小内核构建。 具体来说,GENERIC 内核配置支持许多不同的硬件; EXAMPLE 已删除所有旧设备和不需要的设备,只留下运行 Droplet 所需的设备驱动程序。 还支持数据包过滤防火墙 (pf)、流量整形 (altq)、文件系统加密 (geom_eli) 和 IP 安全 (IPsec)。

但是,您可以在 FreeBSD 文档 中阅读有关配置选项的更多信息并自己进行实验!

第 3 步 — 构建和安装新内核

在这一步中,我们将开始内核重新编译。

切换回 /usr/src 目录并使用您的新配置文件发出 make buildkernel

cd /usr/src
sudo make buildkernel KERNCONF=EXAMPLE

这可能需要一些时间,具体取决于您用于 Droplet 的资源量。 1 GB Droplet 的平均时间约为 90 分钟。

内核重新编译完成后,就可以开始安装了。

sudo make installkernel KERNCONF=EXAMPLE

完成后,重新启动系统。

sudo shutdown -r now

您的服务器现在应该开始关闭其当前运行的服务,同步其磁盘,并重新启动到您的新内核。 您可以登录到 Droplet 的控制台以观看启动过程。

服务器重新启动后,重新登录。 您可以使用以下命令检查您的新内核配置是否正在使用:

sysctl kern.conftxt | grep ident

输出应该是:

ident    EXAMPLE

结论

恭喜! 您已经成功地重新配置并重新编译了您的内核。