Handbook:Parts/Installation/Kernel/zh-cn

可选：安装固件
一些驱动需要先在系统上安装附加的固件才能工作. 经常网络接口上会使用，特别是无线网络接口. 此外，来自 AMD 、 NVidia 和 Intel 等供应商的现代视频芯片在使用开源驱动程序时，通常也需要外部固件文件. 大多数固件都打包在 里：

In addition to discrete graphics hardware and network interfaces, CPUs also can require firmware updates. Typically this kind of firmware is referred to as microcode. Newer revisions of microcode are sometimes necessary to patch instability, security concerns, or other bugs in CPU hardware.

Microcode updates for AMD CPUs are typically distributed with the aforementioned linux-firmware package. Microcode for Intel CPUs can be found in the package, which will need to be installed separately. See the Microcode article for more information on how to apply microcode updates.

Kernel configuration and compilation
现在是时候来配置和编译内核源代码了. 有两种方法：


 * 1) 手动配置并生成内核.
 * 2) 一个叫作的工具用来自动化生成并安装Linux内核.

我们在这里解释做为默认选择的手动配置，它是优化环境的最好方式.

Linux内核是所有发行版的核心. 它位于用户程序和系统硬件之间. Gentoo提供给用户一些可选的内核源码. 完整的带描述的列表在内核概述页面.

安装源码
针对基于-系统的Gentoo，建议使用包.

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

这将在中安装Linux内核源码，并有一个符号连接叫作将指向安装的内核源码：

It is conventional for a symlink to be maintained, such that it refers to whichever sources correspond with the currently running kernel. However, this symbolic link will not be created by default. An easy way to create the symbolic link is to utilize eselect's kernel module.

For further information regarding the purpose of the symlink, and how to manage it, please refer to Kernel/Upgrade.

First, list all installed kernels:

In order to create a symbolic link called, use:

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

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

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

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

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

激活必要的选项
When using, it is strongly recommend the Gentoo-specific configuration options be enabled. These ensure that a minimum of kernel features required for proper functioning is available:

Naturally the choice in the last two lines depends on the selected init system (OpenRC vs. systemd). It does not hurt to have support for both init systems enabled.

When using, the additional selections for init systems will be unavailable. Enabling support is possible, but goes beyond the scope of the handbook.

确保引导系统的每一个至关重要的驱动（比如SCSI控制器,等等）是编译进内核而不是作为一个模块，否则系统将无法完全引导.

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

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

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

现在进入File Systems并选择你使用的文件系统. 不要作为模块来编译根文件系统所使用的文件系统，否则Gentoo系统将不能挂载这个分区. 同时选择Virtual memory和/proc file system根据系统的需要选择一个或多个以下选项( CONFIG_EXT2_FS, CONFIG_EXT3_FS , CONFIG_EXT4_FS , CONFIG_MSDOS_FS , CONFIG_VFAT_FS , CONFIG_PROC_FS , and CONFIG_TMPFS ):

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

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

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

大多数系统会有多核心处理，所以激活“Symmetric multi-processing support”是重要的' ( CONFIG_SMP )：

如果使用USB输入设备（比如键盘和鼠标）或其他USB设备，不要忘记启用那些( CONFIG_HID_GENERIC and CONFIG_USB_HID, CONFIG_USB_SUPPORT , CONFIG_USB_XHCI_HCD , CONFIG_USB_EHCI_HCD , CONFIG_USB_OHCI_HCD ):：

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

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

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

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

现在继续到内核模块.

备选：使用genkernel
如果手动配置看起来太恐怖，建议使用. 它将自动配置并编译内核.

配置内核的工作原理几乎和安装CD配置的内核完全一致. 也就是说当使用建立内核，系统通常将在引导时检测全部硬件，就像安装CD所做的. 因为不需要任何手动内核配置，它对于那些不能轻松的编译他们自动内核的用户来说是一个理想的解决方案.

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

接下来，编辑文件来使包含有第二个值为的那条的第一个值指向到正确的设备. 如果是按照本手册的分区示例，则这个设备非常像使用ext2文件系统的. 这将使文件中的这一条目看起来像是：

现在，运行来编译内核源码. 值得注意的是，使用编译一个内核将支持几乎全部的硬件，这将使编译过程需要一阵子来完成！

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

配置模块
在 中各个模块的每一行列出需要自动加载的模块. 如果有必要的话，可以在 文件中，为模块设置添加附加选项.

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

比如，要自动加载模块（3Com网卡家族的特定驱动），编辑文件并在里面输入模块名字. 实际的文件名对 loader 来说无关紧要.

继续到配置系统来安装.