1.1. 如何构建LFS系统

我们将用一个已安装好的Linux发布版 (比如 Debian, Mandriva, Red Hat, 或 SUSE) 来构建LFS系统。这个现有的Linux系统(宿主系统)将作为起点来提供包括编译器, 链接器和shell,等构建新系统的必要程序。在安装这个发布版时,选择“开发/编程”选项, 以便可以访问这些工具。

另一种选择,你可以使用 Linux From Scratch的 LiveCD 或商业发布版的 LiveCD。LFS LiveCD 是一个很好的宿主系统,它提供了按照本书成功构建LFS系统的所有工具。遗憾的是, 最近没有开发新的 LiveCD,它只包含老版本的资源软件包和补丁(这个版本没有标记“-nosrc” 或 “-min”)和本书。想要更多的关于 LFS LiveCD的信息,或想下载它,请访问: http://www.linuxfromscratch.org/livecd/.

[Note]

备注

LFS LiveCD 在较新的硬件配置中可能无法工作, 不能引导或无法检测某些设备, 如SATA硬盘。

Chapter 2 表述了怎样建立一个新的Linux本地分区和文件系统, 新的LFS系统将在该分区上编译和安装。 Chapter 3 解释构建LFS系统所需下载的软件包和补丁, 以及如何将它们保存到新的文件系统上。 Chapter 4 讨论建立一个适当的工作环境。请仔细阅读 Chapter 4 因为它讨论了在开始 Chapter 5 之前及以后的工作中你应该知道的一些重要问题。

Chapter 5 解释了组成基础开发工具(工具链)所需的一些软件包的安装。该工具链将用来在 Chapter 6 构建一个真实系统。这些软件包中,有些需要解决循环依赖问题--例如, 要编译一个编译器,你首先需要一个编译器。

Chapter 5 也让您看到如何第一遍编译工具链,包括Binutils 和 GCC (第一遍编译的意思就是这两个核心软件包还要重新编译)。下一步是编译 C 的运行库Glibc。 Glibc 会用第一遍编译的工具链编译。然后,将第二遍编译工具链。这时, 工具链将再次动态链接到刚编译的Glibc上。Chapter 5剩下的软件包将用第二遍变异的工具链编译。 完成这些工作后, LFS的安装除了正在运行的内核外, 将不再依靠宿主系统。

为了从宿主系统分离出新系统,看起来要做很多工作。关于为什么要这样做,Section 5.2, “工具链技术说明” 提供了一份完整的技术说明。

Chapter 6 中,将构建一个完整的LFS系统。chroot (改变 root) 程序被用于进入一个虚拟环境, 并启动一个新的shell,其跟目录设置在LFS 分区。这很类似于重新启动,并让内核装载LFS分区作为根分区。系统并没有真的重启, 而是由chroot替代了,因为创建一个可启动的系统需要做但现在还不需要 做的额外工作。主要的有好处是,在创建LFS系统时,“chrooting”允许你继续使用宿主系统。 在等待软件包编译完成的时候,你可以像平常一样,继 续使用你的电脑。

为了完成安装,Chapter 7 设置了启动脚本, Chapter 8 是内核和启动引导程序,Chapter 9包含了本书之外,获得进一步LFS经验的信息。本书的所有步骤被执行以后, 计算机就准备好重启进入新的LFS系统了。

这是概括的过程。在以后的章节和软件包中,讨论了每一步的细节。看似复杂的项目将更清晰, 随着你踏上LFS冒险之旅,一切都会水到渠成