1.1. 如何构建 LFS 系统

LFS 系统必须在一个已经安装好的 Linux 发行版 (如 Debian、 OpenMandriva、Fedora 或者 openSUSE) 中构建。这个安装好的 Linux 系统 (称为宿主) 提供包括编译器、链接器和 shell 在内的必要程序, 作为构建新系统的起点。 请在安装发行版的过程中选择development (开发) 选项,以使用这些工具。

您也可以选择不安装一个单独的发行版,而是使用某个商业发行版的 LiveCD 。

本书的第 2 章描述了如何创建一个新的 Linux 本地分区和文件系统,新的 LFS 系统将在该文件系统中被编译和安装。 第 3 章 列举了在构建 LFS 系统的过程中必须下载的软件包和补丁, 并解释了在新文件系统中存储它们的方法。 第 4 章讨论工作环境的正确配置。 请仔细阅读第 4 章,因为它解释了您在开始 第 5 章 及后续章节的工作前必须了解的一些重要问题。

第 5 章 解释了安装大量软件包以形成基本开发套件 (或称为工具链) 的过程, 之后在 第 6 章 中将用工具链构建真正的系统。其中一些包需要解决循环依赖问题 ——例如,为了编译一个编译器,您首先需要一个编译器。

另外, 第 5 章 也展示了构建第一轮工具链的过程,包括 Binutils 和 GCC (第一轮表示这两个核心软件包会被重新安装一次)。 下一步是构建 Glibc ,即 C 运行库。我们将用第一轮工具链中的程序编译 Glibc 。之后,我们构建第二轮工具链, 第二轮工具链将会动态链接到新编译的 Glibc 上。 我们将使用第二轮工具链构建 第 5 章 中的其余软件包。 在这些工作完成后,除正在运行的内核外, LFS 的安装过程将不再依赖于作为宿主的发行版。

我们努力将新构造的系统从宿主发行版分离出来。这个过程看上去很繁琐, 我们将会在 第 5.2 节 “工具链技术说明” 完整地从技术上解释这样做的必要性。

第 6 章中, 我们将构建完整的 LFS 系统。我们使用 chroot (改变根目录) 命令进入一个虚拟化环境,其中根目录被设置为 LFS 文件系统。 这与重启计算机并指示内核将 LFS 文件系统挂载为根文件系统很相似, 然而由于创建一个可引导的系统需要一些尚未完成的额外工作, 我们选择使用 chroot换根 的最大好处是,我们在构建 LFS 的过程中,可以继续使用宿主系统。 在等待软件包编译的过程中,您可以继续正常使用计算机。

为了完成安装,我们在 第 7 章 中进行系统的基本设置,在 第 8 章 中配置内核和引导加载器。最后,第 9 章 包含在阅读完本书后继续体验 LFS 的相关信息。在完成本书的所有流程后, 重启计算机即可进入新的 LFS 系统。

以上是 LFS 构建过程的简要介绍, 针对特定步骤的详细信息将在之后章节以及软件包的简介中讨论。 在您踏上 LFS 的构建之旅后,就能逐步理清这些看上去很复杂的步骤, 每一步都将变得非常清晰。