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

安装内核源码
当为基于 的系统安装和编译内核时，Gentoo 推荐使用  软件包.

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

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

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

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

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

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

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

Genkernel 提供了通用的内核配置文件，可以自动生成内核（generates the kernel），initramfs，和相关模块，然后将生成的二进制文件安装到适当的位置. 它提供了系统首次启动时最小的常规硬件支持，并允许将来自定义内核配置以及对内核额外升级.

请注意：虽然使用 维护内核可以让系统管理员对系统内核，initramfs 和其他选项更新时有更多的操作，但当新的源代码发行时，却会投入更多的时间和精力去更新内核. 所以那些希望不手动内核维护的人应该使用 distribution 内核.

更进一步说，认为 genkernel 可以为正在运行的硬件自动生成自定义的内核配置 是一种误解；genkernel 使用了支持大多数通用硬件的预定的内核配置文件，并且可以自动处理 命令来汇编和安装内核、相关模块以及 initramfs 文件.

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

由于 软件包默认启用   USE 标志，所以包管理器还会尝试拉取  软件包. 安装 linux-firmware 之前，需要接受二进制可再分发软件许可证.

通过在 文件为 ACCEPT_LICENSE 变量添加   值，可以接受系统范围任何软件包的许可证组. 通过在 文件添加特定内容，可以单独接受 linux-firmware 软件包的许可证组.

如果有必要，查看手册安装基本系统里的接受软件许可证的方法章节，然后修改一些可接受的软件许可证.

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

安装
说明完以及准备好之后，安装 软件包：

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

genkernel 完成后，将在 目录生成并安装内核和初始化内存文件（initial ram filesystem,initramfs）. 目录将安装相关模块. initramfs 将在内核加载后立即启动，然后进行硬件自动检测（就像在 live 磁盘镜像环境中一样）.

介绍
手动配置内核经常被 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 支持：

也可以启用下列额外的 NVMe 支持：

现在进入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 网卡家族的特定驱动），编辑 文件并在里面输入模块名字.

注意，模块的 文件后缀对加载机制影响不大，所以配置文件中没有文件后缀：

继续到配置系统来安装.