1.1. 如何构建 LFS 系统

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

除了将一个独立发行版安装到你的电脑上之外,你也可以使用商业发行版的 LiveCD。

本书的第二章描述了如何创建一个的新 Linux 本地分区和文件系统,这就是编译和安装新的 LFS 系统的地方。第三章介绍了构建 LFS 系统所需下载的软件包和补丁,以及如何把它们保存在新的文件系统里。 第四章讨论了如何设置恰当的工作环境。因为它阐述了几个需要注意的重要问题,在你按照第五章及之后的内容开始工作前,请仔细阅读第四章

第五章阐述了构成基本开发套件(即工具链)的大量软件包的安装,在第六章中将用这个开发套件构建真正的系统。其中一些包是需要解决循环依赖——比如,你需要一个编译器来编译一个编译器。

第五章还将向你展示如何构建第一遍的工具链,包括 Binutils 和 GCC (第一遍基本上就是重新安装这两个核心软件包)。下一步是构建 Glibc,即 C 语言库。Glibc 将用第一遍构建的工具链编译。然后,第二遍的工具链就被编译好了。这次,工具链将被动态链接到新建成的 Glibc。 第五章中剩余的包将用这个第二遍的工具链编译。当这些工作完成以后,LFS 的安装过程就不会再依赖于宿主发行版了,除了正在运行的内核。

把新系统从宿主发行版中分离出来的工作看起来可能有点多余。5.2 “工具链技术备注”这一节给出了为什么要这么做的完整技术说明。

第六章,会构建完整的 LFS 系统。我们将使用 chroot (change root 改变根目录) 程序来进入一个虚拟环境并启动一个新的 shell,这个 shell 的根目录将被指向到 LFS 分区。这个过程非常像是重启并让内核把 LFS 分区挂载为根分区。系统并没有真正的重启,而是在使用 chroot 实现的,因为创建一个可启动的系统还需要有一些目前尚未完成的额外工作。 使用 “chroot” 的最大好处是,它在运行过程中允许你在构建 LFS 的同时继续使用宿主系统。在等待包的编译过程中,你可以继续正常使用你的电脑。

为了完成安装,还需要第七章中的基本的系统配置方法, 第八章中的内核和启动引导程序的配置方法。 第九章包含了学完本书以后继续使用 LFS 的一些建议。在本书内的步骤完成之后,电脑就可以重启进入新的 LFS 系统了。

流程大概就是这样。每一步的详细信息都会在之后的章节和软件包的描述里讨论。当你踏上这段 LFS 之旅,就会理清这些看起来很复杂的东西,每一个都将对号入座。