Linux,每天我们都可以目睹新的发行版诞生,它的情势如同人口增长爆炸一般,险些有些“失控”,之所以选择Linux,每个选择它的人都可以按自己方式提出种种选择的理由。Linux相对于计算机操作系统诞生及发展史,可以说还很年轻,但来自社区的庞大的技术力量,如今Linux已经遍布几乎所有的领域,在尝试与体验不同的Linux发行版之后,对一些商业发行版开始嗤之以鼻,大们大多是出自已个人因素,但更重要的是,“自由”是对选择使用Linux的也是一贯的,且可以是唯一的重要理由。哪是一种富有创造性且不加任何条件无所拘束的自由。
Linux From Scratch简称LFS,它将会是自Debian、Slackware、Gentoo之后,多数Linuxfans终极发烧爱好者的首先,Scratch撕裂分解,即有撕裂分解所有的技术代码之意,正如菜单一样,所有的事情都由自己作出决定,我们不需要多余的代码及不可靠的程序。
Linux Form Scratch由LFS、ALFS、BLFS、CLFS、HLFS、Hints及patches组成的家族。它们分别代表:
LFS:是用源代码自己编译出一个完全属于自己的linux系统,包括(Binutils 等29个工具链在内的原系统),它他们是一个操作系统的基础,它们通常处于操作系统的底层,这里包括了连接器、汇编、链等工具。一般是在一个安装好的linux发行版上建立的,但是如果从LiveCD开始则不需要从一个已建立好的系统开始它们。
BLFS:是LFS拓展,BLFS将进一步完成并建立一个系统的上层应用,通常可以把它看作为一个操作系统的"应用层"如APACHE、MySQL,甚至KDE等。
CLFS:是各种体系结构的交叉编译方法,将实现在以一个X86的物理平台上做编译一个可以用来运行在MIPS架构上的程序。
HLFS:是基于系统安全方面的策略应用。
ALFS:则是自动管理和编译LFS的工具。
Hints:是提高系统性能的相关文档,它包含了LFS及BLFS以外的内容,如kerberos等。
patches:是构建LFS时可能用到的补丁,因为要把各种源码组织到一起,针对不不同的硬件平台以及软件环境,常会遇到一些关联性的问题,另外,许多程序以源代码的方式提供,并且很有可能在数小时的时间里出现许多新的patch版本,如果你总是希望尝试最新的程序。为了更好的解决它们之间的关系,这会对你非常有用.
最后就是liveCD了,这张光盘里面包括了所有LFS所需要的源程序和文档。通常在没有其它以Linux系统为基础的平台上建立一个完整的LFS,使用它是明智的选择,光盘包括400M可用的全部代码,但它是一个宿主系统,其中并不包括BLFS所涵盖的内容。
解释:
Binutils:二进制处理工具,包括了连接器、汇编及目标处理等工具(as、ld)等,建立一个完整的LFS一切将从这理开始。
Glibc:是应用程序编译所需的函数库,用来生成程序的静态和动态链接库(它通常是系统函数库,或内部函数)有过程序开发经验的人大概都能理解,函数的重要性。同样编译一个完整的GCC需要glibc的支持,通常gcc的第一次编译并不包括glibc的全部内容。
GCC:是关系到所有的源代码编译的基础,gcc是由GNU提供的以C为基础的高级语言环境支持体系。当然也会包括其它开发语言的内容,之后我们可以从中找到它们,这也是构建一个LFS不可或缺的部分,大部分情况就是如此,如;Python、Perl、等。但在这里GCC的第一次编译通常只建立了一个临时的环境,它并不是真实存在系统当中。当系统进入chroot状态时GCC才能真正寄生于系统之中。
一般,由LiveCD启动的第一个状态,称之为宿主,通过宿主产生一个新的GCC环境,生成完整的Glibc库之后,才开始构建一个全新的gcc编译环境,通常这是编译后的结果,所以将会出现两次gcc和binutils的编译过程,而最终的编译结果称之为工具“链”因此在随后LFS的编译全部过程将由工具链产生。
Binutils源-->编译环境-->生成Binutils工具链-->Chroot--调整工具链及其关连性-->第二次编译-->安装必要的工具。