如何自定义和重新编译内核,在FreeBSD 10.1

FreeBSD操作系统使用默认的GENERIC内核。这是用于支持众多的硬件的开箱即用的默认配置。然而,有许多不同的原因为编译定制内核,其中包括安全性,增强的功能性,或更好的性能。 在本教程中,我们将重新编译FreeBSD内核有一个自定义配置。

介绍

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

FreeBSD使用两个代码分支的操作​​系统:稳定和电流。 稳定是当前的代码版本,即生产就绪。 Current是开发团队的最新代码版本,并且具有一些最新的出色的功能,但更容易出错和系统不稳定。 本指南将使用稳定分支。

在本教程中,我们将使用自定义配置重新编译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

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

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

结论

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