Handbook:Parts/Installation/Kernel/zh-cn

固件
在开始配置内核部分之前，最好了解下，一些硬件设备需要先在系统上安装附加的固件，有时是非自由及开放源代码软件（FOSS）才能正常运行. 我们经常网络接口上会使用附加的固件，特别是无线网络接口，常用于台式电脑和笔记本电脑. 此外，来自 AMD，Nvidia 和 Intel 等供应商的现代视频芯片，要想使用完整的功能，通常也需要外部固件文件. 现代硬件设备的大多数固件都可以在 软件包中找到.

为了在必要时提供固件，首次重启系统之前推荐安装 软件包：

注意，当内核以模块（M）加载内核符号时，将从文件系统中加载其相关的固件文件. 对于以模块加载的符号，没有必要把设备固件文件加入内核二进制镜像中.

微码
除了独立显卡硬件和网络接口之外，CPU 可能也需要固件更新. 通常这种固件被称为微码（microcode）. 有时需要更新版本的微码来修补 CPU 硬件中的不稳定性、安全问题或其他复杂的错误.

AMD CPU 的微码更新在前面提到的 软件包内分发. Intel CPU 的微码可以在 包中找到，并且需要单独安装. 更多有关如何更新微码的细节，请查看微码文章.

内核配置和编译
现在是时候来配置和编译内核源代码了. 将介绍三种用内核管理安装的方法，但是安装后，任何时候都可以采用新的方法.

由操作最少到操作最多排序：


 * 全自动方法：Distribution 内核: Distribution 内核用来配置、自动构建安装 Linux 内核、相关模块和 initramfs 文件（可选，但是默认启用）. 将来内核就像其他的系统软件包一样，通过使用包管理器全自动升级. 如果需要定制内核，它可以提供自定义内核配置文件. 这种过程操作最少，并且非常适合新 Gentoo 用户，因为它开箱即用，并且系统管理员最少参与.
 * 混合方法：Genkernel: 通过系统包管理器安装新内核源代码. 系统管理员使用 Gentoo 的 工具的通用配置文件，自动构建和安装 Linux 内核、相关模块和 initramfs 文件（可选，但默认不 启用）. 如果要自定义内核，它可以提供自定义内核配置文件. 将来每次更新内核配置、编译和安装都需要系统管理员运行 ，和其他可能的命令.
 * 全手动方法: 通过系统包管理器安装新的内核源代码. 使用 和一大堆  命令手动配置、构建和安装内核. 将来内核升级需要重复手动配置、构建和安装内核文件的过程. 这是操作做多的过程，但是在内核更新过程提供最大程度控制.

Linux内核是所有发行版的核心. 它位于用户程序和系统硬件之间. 尽管手册提供给用户一些可选的内核源码，但是在内核概述页面有更全面的列表，上面有着更多的细节描述.

安装内核源码
When installing and compiling the kernel for -based systems, Gentoo recommends the package.

选择一个合适的内核并使用 来安装它.

这将在 中安装路径中特定版本的 Linux 内核源码. 如果没有在所选内核源码包内启用 ，它将不会自行创建符号链接.

我们习惯性的维护 符号链接. 这样，它指向与当前运行的内核相对应的源代码. 然而，默认情况下不会创建这个符号链接. 有一个简单创建符号链接的方法是利用 eselect 的内核模块.

更多有关符号链接的信息以及如何管理符号链接，请参考升级内核.

首先，列出所有已安装的内核：

要创建一个名为 的符号链接，使用：

备选：genkernel
如果全手动配置看起来太恐怖，系统管理员应该考虑使用 混合方法来维护内核.

Genkernel provides a generic kernel configuration file, automatically generates the kernel, initramfs, and associated modules, and then installs the resulting binaries to the appropriate locations. This results in minimal and generic hardware support for the system's first boot, and allows for additional update control and customization of the kernel's configuration in the future.

Be informed: while using to maintain the kernel provides system administrators with more update control over the system's kernel, initramfs, and other options, it will require a time and effort commitment to perform future kernel updates as new sources are released. Those looking for a hands-off approach to kernel maintenance should use a distribution kernel.

For additional clarity, it is a misconception to believe genkernel automatically generates a custom kernel configuration for the hardware on which it is run; it uses a predetermined kernel configuration that supports most generic hardware and automatically handles the commands necessary to assemble and install the kernel, the associate modules, and the initramfs file.

二进制可再分发软件许可证组
如果已经预先安装了 linux-firmware 软件包，那么跳转到安装部分.

As a prerequisite, due to the  USE flag being enabled by default for the  package, the package manager will also attempt to pull in the  package. The binary redistributable software licenses are required to be accepted before the linux-firmware will install.

This license group can be accepted system-wide for any package by adding the  as an ACCEPT_LICENSE value in the  file. It can be exclusively accepted for the linux-firmware package by adding a specific inclusion via a file.

If necessary, review the methods of accepting software licenses available in the Installing the base system chapter of the handbook, then make some changes for acceptable software licenses.

If in analysis paralysis, the following will do the trick:

安装
现在，我们来看看如何使用genkernel. 首先emerge 这个ebuild：

常规
运行来编译内核源码. 值得注意的是，使用 编译的内核适用于不同计算机体系结构的各种硬件，这可能使编译过程需要一阵子来完成.

一旦genkernel完成，将创建一个内核、全部的模块和初始化内存文件（initramfs）. 我们将在文档后面配置引导器的时候使用这个内核和initrd. 记下内核和initrd名字作为编辑引导器配置文件的信息. initrd将在后执行硬件检测之后、“真实”系统启动之前立即启动.

介绍
手动配置内核经常被 Linux 用户认为是最困难的步骤. 但是事实并非如此──当您手动配置几次内核之后，你就不会再觉得它有多么难了！

无论如何，有一件事是真实的：当手动配置内核时，了解（硬件）系统是至关重要的. 大多数信息可以通过安装包含命令的来收集：

另一个系统信息来源是运行来查看安装CD使用什么内核模块，它可能对启用什么提供了一个好的暗示.

现在进入内核源码目录并执行. 这将启动一个菜单驱动的配置屏幕.

Linux内核配置有很多很多的章节. 我们先列出一些必须激活的选项（否则Gentoo将无法工作，或者离开附加的调整将无法正常工作）. 我们同时在Gentoo维基上有一个Gentoo内核配置指南可能会在将来有帮助.

启用必要的选项
当使用 时，强烈推荐启用 Gentoo 特有的配置选项. 这些确保了系统可以正常运行所需的最少内核特性：

当然，最后两行的选择取决于所选择的 init 系统 (OpenRC 对比 systemd). 但是两种 init 系统都启用也并没有害处.

当使用 时，不能使用额外的 init 系统. 可以使用已启用的 init 系统，但这超出了手册的范围.

启用典型的系统组件支持
确保引导系统的每一个至关重要的驱动（比如 SATA 控制器，NVMe 块设备支持，文件系统支持，等等）是编译进内核而不是作为一个模块，否则系统将无法完全引导.

接下来选择最正确的CPU类型. 同时建议启用MCE功能（如果可用）能在硬件出现问题时通知用户. 在一些架构（比如x86_64），这些错误不会打印到 ，但是会到. 这需要包.

同时选择Maintain a devtmpfs file system to mount at /dev来让重要的设备文件在引导过程的早期就已就绪( CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT ):

验证 SCSI 磁盘支持是否已激活( CONFIG_BLK_DEV_SD ):

验证已经启用基础 NVMe 支持：

It does not hurt to enable the following additional NVMe support:

现在进入File Systems并选择系统将使用的文件系统. 不要作为模块来编译根文件系统所使用的文件系统，否则系统可能不挂载这个分区. 同时选择Virtual memory和/proc file system根据系统的需要选择一个或多个以下选项：

如果使用PPPoE连接到互联网，或者是拨号调制解调器，则启用下面的选项( CONFIG_PPP, CONFIG_PPP_ASYNC , and CONFIG_PPP_SYNC_TTY )：

这两个压缩选项将是无害的，但是它们一定是不需要的，包括基于以太网的PPP选项也是一样，只有在配置内核模式PPPoE时才会需要.

不要忘记在内核中包括网（以太网或无线）卡.

大多数系统会有多核心处理，所以激活 Symmetric multi-processing support（对称多处理） 很重要 ( CONFIG_SMP )：

如果使用USB输入设备（比如键盘和鼠标）或其他USB设备，不要忘记启用那些：

可选：生成 initramfs
在某些情况中需要建立一个 initramfs──基于内存的初始化文件系统（initial ram-based file system）. 最常见的原因是当重要的文件系统位置（如 或  ）在分离的分区时. 通过initramfs，可以使用 initramfs 里面的工具来挂载这些分区.

如果没有 initramfs，会存在着系统将无法正常启动的风险，因为这是负责安装的文件系统工具需要驻留在未挂载文件系统的信息. initramfs 中的一个将在必要的文件拉进它的内核启动之后使用的档案，但控制被移交前转移到初始化工具. 在 initramfs 的脚本，然后将确保分区正确地安装在系统继续启动之前.

要安装 initramfs，首先安装，然后用它生成 initramfs：

initramfs将存储在. 结果文件可以简单的通过列出以initramfs开头的文件来找到：

现在继续到内核模块.

列出可用的内核模块
可以在 文件中添加需要在每次启动时加载的模块，格式为每行一个模块. 如果模块需要附加选项，可以在 文件内设置.

要查看所有可用模块，运行下面的命令. 不要忘记替换“ ”为刚刚编译的内核版本：

强制加载特定内核模块
要强制加载内核 模块（3Com 网卡家族的特定驱动），编辑 文件并在里面输入模块名字.

Note that the module's file suffix is insignificant to the loading mechanism and left out of the configuration file:

继续到配置系统来安装.