工作是如何进行的

我们将利用一个已经安装好的Linux发行版如:Debian, SuSe, Slackware, Mandrake, RedHat等等来创建LFS系统。我们将使用这个已有的Linux系统作为开发平台,因为在制作LFS时我们需要编辑器、链接器、文本编辑器等等开发工具。一般的说, 如果在安装你的linux发行版的时候选择了"development"(开发工具), 系统会包含这些工具。

第三章你需要创建一个新的Linux分区和文件系统来安装LFS系统,在这个分区上编译安装LFS系统。到了第四章,你将下载LFS系统所需要的所有软件包和补丁,并把它们放在新的文件系统上。

第五章,将讨论很多软件包的安装,它们将组成了一个用来安装实际的系统的基本开发套件,或者是为了满足循环依赖关系。比如你需要一个编译器来编译新的编译器, 你也需要一个shell来安装新的shell。

第五章里要做的第一件事,是编译工具链的第一遍,这包括 Binutils 和 GCC。这两个软件包里的程序静态连接,为的是独立于主系统使用。第二件事是编译Glibc,C库。Glibc将使用我们新创建的第一遍工具链来编译。第三件事是编译工具链的第二遍。这一次将对工具链使用动态连接,连接到新的Glibc上。第五章余下的软件包,都使用第二遍工具链来编译,并动态连接到新Glibc上,这一步完成以后,LFS的安装就不依赖于主系统了,除了对正在运行的内核有点依赖以外。

你可能有疑问 "做这么多事,就是为了和主系统分离?". 在第五章的一开始,给出了技术上的深入讨论,以及关于静态连接和动态连接程序的区别。

到了第六章,就开始真正创建LFS系统。我们用chroot(改变root)程序来进入一个虚拟环境,这个shell进程的根文件系统就是LFS分区。这非常相似于重启系统,并让内核把LFS分区作为根分区加载。为什么要用chroot而不是重启系统呢?这是因为创建一个能启动的系统还需要做许多额外的工作。另一个原因是,chroot的同时,你还可以继续使用主系统。在编译软件包的时候,你可以通过不同的终端或X桌面,继续正常使用计算机。

为了完成安装,我们在第七章里调整启动脚本,第八章编译内核,第九章告诉你一些完成本书后的事项。最后,你就可以重启并进入LFS系统了。

这是整个过程的一个概貌。详细过程将在本书中一步步展开。如果现在觉得好多事都不理解,没关系,随着你的编译进行,所有内容都会逐渐清晰起来。

细心阅读第 2 章 ,因为该章解释了在正式开始着手之前你需要了解的一些重要问题。