1.1. 如何构建一个LFS系统

LFS系统将会在一个已安装好的Linux发行版上被构建(比如Debian,Mandriva,Red Hat,或SUSE)。这个已存在的系统(宿主系统)会被用作构建系统的起点,为构建新系统提供必须的程序,包括编译器,连接器,以及shell等。在安装这个发行版的时候,有时会需要选择开发选项,以便能够使用这些工具。

如果不想在你的机器上安装一个独立的发行版,你可以使用商业发行版的Live CD。

这本书的 第 2 章 介绍了如何创建一个Linux分区和文件系统,新的LFS系统将会在这个分区上被编译和安装。第 3 章 解释了构建一个LFS系统需要下载哪些软件包和补丁,以及如何把它们存放在新的文件系统上。第 4 章 讨论了如何建立一个合适的工作环境。请认真阅读 第 4 章,因为它解释了在 第 5 章 和它后面的工作开始前,你需要关注的一些重要问题。

第 5 章 介绍了大量软件的安装,这些软件构成了基本开发套件(或者说是工具链),这会被用于 第 6 章 中真正的系统的安装。其中的一些包需要解决循环依赖问题——比如,要编译一个编译器,你首先需要一个编译器。

第 5 章 也向你展示了如何构建工具链的第一遍,包括编译Binutils和GCC("第一遍"意味着这两个核心部件将会被再一次编译安装) 接下来是编译Glibc,即C语言库。Glibc将会被第一遍中构建的工具链程序所编译。然后,工具链的第二遍将会被构建。此时,工具链会被动态链接到刚构建好的Glibc上。第 5 章 中剩下的包会用第二遍工具链来编译。在这些完成之后,接下来的LFS安装进程,除了运行中的内核外,将不会再依赖宿主系统。

为了让新系统与宿主系统隔离而做的努力,似乎看起来是多余的。第 5.2 节 “工具链技术注解” 中提供了一个为什么要这样做的完整的技术解释。

第 6 章 中,完整的LFS系统将会被构建。用 chroot(change root) 程序进入一个虚拟环境,并启动一个新shell,而这个shell的根目录被设为LFS分区。这和重启电脑并让内核把LFS分区挂载为根分区非常类似。系统不重启而用 chroot 代替,这是因为创建一个可启动的系统还需要做其它的工作,而那些工作目前是不需要的。这样做的主要优点是,chrooting使你在构建LFS的时候能继续使用宿主系统。在等待软件包编译的时候,你可以继续正常地使用你的计算机。

为了完成安装,第 7 章 中设置LFS启动脚本,第 8 章 中设置内核和启动器。第 9 章 中包含了在这本书之外获得进一步的LFS体验的信息。在完成了这本书中的步骤之后,计算机将会准备好重启进入新的LFS系统。

这就是大概的过程,每一个步骤的详细信息会在接下来的章节和软件的描述中被讨论。那些可能看起来比较复杂的地方都会被清楚地解释。当你踏上LFS冒险之旅的时候,每一件事情都会准备就绪。