8.3.1. 安装内核
构建内核涉及几个步骤——配置、编译和安装。 阅读 读我 内核源代码树中的文件,以获取本书配置内核方式的替代方法。
通过运行以下命令准备编译:
使先生正确
使先生正确
这确保内核树是绝对干净的。 内核团队建议在每次内核编译之前发出此命令。 不要依赖解压后的源代码树是干净的。
通过菜单驱动的界面配置内核。 有关内核配置的一般信息,请参阅 http://www. linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt。 BLFS 在 http://www.linuxfromscratch.org/blfs/view/9.0/longindex.html#kernel-config-index 上有一些关于 LFS 之外的包的特定内核配置要求的信息。 有关配置和构建内核的更多信息,请访问 http://www.kroah.com/lkn/
备注
设置内核配置的一个很好的起点是运行 进行定义. 这会将基本配置设置为考虑您当前系统架构的良好状态。
请务必启用/禁用/设置以下功能,否则系统可能无法正常工作或根本无法启动:
设备驱动程序 --->
通用驱动程序选项 --->
[ ] 支持 uevent 助手 [CONFIG_UEVENT_HELPER]
[*] 维护一个 devtmpfs 文件系统以挂载在 /dev [CONFIG_DEVTMPFS]
内核黑客 --->
选择内核展开器(帧指针展开器)---> [CONFIG_UNWINDE
根据系统的要求,可能需要其他几个选项。 有关 BLFS 包所需选项的列表,请参阅内核设置的 BLFS 索引 (http://www.linuxfromscratch.org/blfs/view/9.0/longindex.html#kernel-config-index)。
备注
如果您的主机硬件使用 UEFI,那么上面的“make defconfig”应该会自动添加一些与 EFI 相关的内核选项。
为了允许从主机的 UEFI 引导环境中引导 LFS 内核,您的内核必须选择此选项:
处理器类型和特性
[*]
->
[CONFIG_EFI_STUB]
处理器类型和特性
[*]
EFI 存根支持
EFI 存根支持
在 LFS 中管理 UEFI 环境的更完整描述包含在 lfs-uefi.txt 提示中
http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt.
以上配置项的原理:
支持 uevent 助手
使用 Udev/Eudev 时,设置此选项可能会干扰设备管理。
维护一个 devtmpfs
这将创建由内核填充的自动化设备节点,即使没有运行 Udev。 然后 Udev 在此之上运行,管理权限并添加符号链接。 Udev/Eudev 的所有用户都需要此配置项。
制作menuconfig
制作menuconfig
可选的make环境变量的含义:
朗= LC_ALL=
这会将区域设置设置为主机上使用的区域设置。 这可能需要在 UTF-8 linux 文本控制台上正确的 menuconfig ncurses 界面线图。
如果使用,请务必更换 根据价值 $朗 来自您的主机的变量。 您也可以改为使用主机的值 $LC_ALL or $LC_CTYPE.
或者, 制作旧配置 在某些情况下可能更合适。 见 读我 文件以获取更多信息。
如果需要,通过复制内核配置文件跳过内核配置, 的.config, 从主机系统(假设它可用)到解压的 linux-5.2.8 目录。 但是,我们不推荐此选项。 浏览所有配置菜单并从头开始创建内核配置通常会更好。
编译内核镜像和模块:
使
使
如果使用内核模块,模块配置在 /etc/modprobe.d 可能需要。 有关模块和内核配置的信息位于第 7.3 节“设备和模块处理概述”以及内核文档中 linux-5.2.8/文档 目录。 还, 调制探头.d(5) 可能很有趣。
安装模块,如果内核配置使用它们:
制作modules_install
制作modules_install
内核编译完成后,还需要额外的步骤来完成安装。 有些文件需要复制到 /启动 目录。
注意:
如果主机系统有一个单独的 /boot 分区,下面复制的文件应该放在那里。 最简单的方法是在继续之前将主机上的 /boot(在 chroot 之外)绑定到 /mnt/lfs/boot。 作为 root 用户在 主机系统:
注意:
如果主机系统有一个单独的 /boot 分区,下面复制的文件应该放在那里。 最简单的方法是在继续之前将主机上的 /boot(在 chroot 之外)绑定到 /mnt/lfs/boot。 作为 root 用户在 主机系统:
挂载 --bind /boot /mnt/lfs/boot
挂载 --bind /boot /mnt/lfs/boot
内核映像的路径可能因所使用的平台而异。 下面的文件名可以更改以适合您的口味,但文件名的词干应该是 虚拟机 与下一节中描述的引导过程的自动设置兼容。 以下命令假定为 x86 架构:
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.2.8-lfs-9.0
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.2.8-lfs-9.0
System.map 是内核的符号文件。 它映射内核 API 中每个函数的函数入口点,以及运行内核的内核数据结构的地址。 它在调查内核问题时用作资源。 发出以下命令以安装映射文件:
cp -iv System.map /boot/System.map-5.2.8
cp -iv System.map /boot/System.map-5.2.8
内核配置文件 的.config 制作的 制作menuconfig 上面的步骤包含刚刚编译的内核的所有配置选择。 保留此文件以供将来参考是个好主意:
cp -iv .config /boot/config-5.2.8
cp -iv .config /boot/config-5.2.8
安装 Linux 内核的文档:
安装 -d /usr/share/doc/linux-5.2.8
cp -r 文档/* /usr/share/doc/linux-5.2.8
安装 -d /usr/share/doc/linux-5.2.8
cp -r 文档/* /usr/share/doc/linux-5.2.8
需要注意的是,内核源目录中的文件不属于 根. 每当一个包以用户身份被解包时 根 (就像我们在 chroot 中所做的那样),这些文件具有它们在打包者计算机上的任何用户和组 ID。 对于要安装的任何其他软件包,这通常不是问题,因为安装后会删除源树。 但是,Linux 源代码树往往会保留很长时间。 因此,打包者使用的任何用户 ID 都有可能被分配给机器上的某个人。 然后,该人将拥有对内核源代码的写访问权限。
备注
在许多情况下,需要更新内核配置以用于稍后将在 BLFS 中安装的软件包。 与其他软件包不同的是,在安装新构建的内核后,无需删除内核源代码树。
如果要保留内核源代码树,请运行 chown -R 0:0 在 linux-5.2.8 目录以确保所有文件都归用户所有 根.
备注
在许多情况下,需要更新内核配置以用于稍后将在 BLFS 中安装的软件包。 与其他软件包不同的是,在安装新构建的内核后,无需删除内核源代码树。
如果要保留内核源代码树,请运行 chown -R 0:0 在 linux-5.2.8 目录以确保所有文件都归用户所有 根.
警告
一些内核文档建议从 /usr/src/linux 指向内核源目录。 这是特定于 2.6 系列之前的内核和 不得 在 LFS 系统上创建,因为它可能会导致基础 LFS 系统完成后您可能希望构建的包出现问题。
警告
一些内核文档建议从 /usr/src/linux 指向内核源目录。 这是特定于 2.6 系列之前的内核和 不得 在 LFS 系统上创建,因为它可能会导致基础 LFS 系统完成后您可能希望构建的包出现问题。
警告
系统中的标题 包括 目录(/ usr / include) 应该 时刻 是编译 Glibc 所针对的头文件,即第 6.7 节“Linux-5.2.8 API 头文件”中安装的清理头文件。 因此,他们应该 决不要 被原始内核头文件或任何其他内核清理的头文件替换。
警告
系统中的标题 包括 目录(/ usr / include) 应该 时刻 是编译 Glibc 所针对的头文件,即第 6.7 节“Linux-5.2.8 API 头文件”中安装的清理头文件。 因此,他们应该 决不要 被原始内核头文件或任何其他内核清理的头文件替换。