Linux From Scratch (LFS) 及其后代代表一种新方法,向用户揭示 Linux 操作系统是如何工作的。LFS 基于这样的假设,即一部分一部分地编译完整的操作系统不但能够揭示操作系统是如何工作的,也允许单独的操作人员为速度、内存占用或安全性而构建系统。
许多作家已编写了有关Unix? 风格的书籍,深入研究了调度、内存管理、多进程和线程、文档系统,连同用户和内核之间的交互。写作 Linux 书籍的作家相对于Unix作家来说有一个优势:尽管团体发生了剧变,但是 Linux 内核不可能分成几个相互竞争的分支,由于 GNU Public License (GPL)、集中式研究实验室 Open Source Development Lab (OSDL) 和 Linus Torvalds 不可动摇的地位,使得 Linux 有幸成为一个缓慢移动的目标(slow-moving target)。
为什么Unix内核很重要
除了某些方面具备一定的相似性之外,不同的Unix内核并不怎么相同。各种Unix风格也具备一个 Linux 所缺少的长处:任何Unix风格都被假定是完全的操作系统。Linux 通常被描述为“只是个内核”(假如有这样的定义的话,也是个武断的定义),他给出公共功能和实现的核心,不管内核是运行在不太强大的 Pentium? II 机器上还是 Symmetric Multiprocessing (SMP) 系统上,这些公共功能和实现都不会发生本质上的改变。为了更加简化,有人可能会说,离 Linux 内核越远,就会发现更多的变化,而Unix系统则趋向于是各种Unix/Posix 标准的离散实现。
事情并没有这么简单。检测 Linux 内核和系统级代码可能是一件很费时间的事情,并且在现实世界中会限制使用。LFS 项目旨在解决 Linux 上有限的系统级可理解性问题。关于内核需要大量的库和工具来让 Linux 系统执行最基本的任务这一事实,已做过讨论了,但是假如一个比较熟练的用户具备一个 slim-line Linux 发行版,他不想下载几吉字节不让他优化系统、也不让他抛开任何这些麻烦且不必要的工具的二进制代码,那该怎么办?假如一个很熟练的用户拒绝接受各种社团发行版的 苛刻条件(diktat),而想要运行一个来自 CD 的 Linux/Apache/MySQL/PHP (LAMP) 类型的应用程式堆栈,那该怎么办?LFS 能够解决这些问题。
Linux From Scratch
LFS 项目显然建立于那些对于构成基本的 Linux 系统来说充分而不必要的源文档的基础之上。他已超越了 Linux 内核和设备驱动程式,因为要产生一个可工作的 Linux 系统,您必须添加一个完整的编译器工具链、许多 Linux 汇编程式实用工具、glibc 系统库、系统配置工具和连接到 userland shell 访问的工具。LFS 建立在这样一个假设的基础之上,即 Linux 或 UNIX 允许具备一些脚本编写知识的用户,了解一个完全有用的系统的工作方式,而不用深入研究内核代码本身。
为了了解 Linux 系统的工作方式,LFS 的创建者们确定,通过遵循模块依赖性来编译系统,可能是了解一般操作系统和特定的 Linux 的机制最自然的方式。用户掌控了编译过程之后,就能够开始消除依赖性树的那些连接到和支持操作系统基本目的无关的系统组件的部件。例如,在编译完成之后,消除编译器工具链本身是可行的。在没有全套的命令行实用工具时,能够凑合使用嵌入式 LAMP 堆栈。配置实用工具也能够被丢弃,大多数用户能够凑合着用一个而不是太多 Linux 将会支持的文档系统。
Linux 部件
LFS 系统的一个重要部件是,能够作为 tar ball 得到的大量源文档。文档是另一个重要部件,并且是最重要的。实际上,很有可能利用一个最新的 LFS 书籍文档并创建一个 LFS 发行版,因为 LFS 书籍中周详描述了每个下载位置和每个源文档及其依赖性的特征。用于从内核到编译器到 shell 编译每组源文档的过程都是已写好了的,假如可能,您也能够在描述具备不同特征的系统的 LFS 书籍中找到替代的例程。LFS 系统的另一个不太可能出现在一般用户工具箱中的部件是,在基本 LFS 系统组合在一起之后引导系统所需的引导脚本。
现在对 LFS 发行版的最大警告是:勇敢的发行版构建者所需的是个可工作的 Linux 发行版,包括一个完整的编译器工具链和一套文档系统创建实用工具。自然,任何基于源代码的 Linux 发行版都需要使用各个发行版都完全不同的特定编译器版本来引导。LFS 不是该领域的惟一系统,但他是惟一允许您直接处理单个源文档的系统。大多数其他基于源代码的 Linux 系统,比如 Sourcemage 和 MyGeOS,提供一个完整的下载,建议用户使用。LFS 不作这样的假设,并且鼓励拆开 LFS 框架。
预先假设起作用的 Linux 发行版已安装在非外来的(nonexotic)硬件上,即使 LFS 可能没有配置工具和脚本那么受关注。要编译 LFS,您需要准备一个分区和一个文档系统,还需要编译一个编译器和系统库。假如用手工完成的话,这是个相当伤脑筋的过程,但是也的确能够增加您在处理其余安装方面的自信。整个系统的编译要花一小时到四天的时间,具体时间取决于底层硬件的年代和您的命令行技术熟练程度。
作一个相当大的假设,假如您愿意很大程度上保留书籍安装,并使对 LFS 书籍中提议的安装的更改保持最小,您也能够使用自动化的安装例程来安装基于 LFS 的发行版。安装例程没有在 LFS 书籍中给出,但是能够在名称 Automated Linux from Scratch (ALFS) 之下作为基于 XML 的发行版得到。活动安装能够作为基于 C 的脚本得到,该脚本使用 ncurses 来模拟图像安装。该安装也叫做 nALFS 并给出一个极为灵活的包安装框架。工作需要一个起作用的 Linux 系统,并带有能够工作的 C 编译器和 XML 解析器。一个能够工作的 LFS 系统就足够了。
Automated Linux From Scratch
ALFS 的目的是超越 LFS 本身。LFS 自己指导基于 Linux 的操作系统的内部工作,但是他不具备单个图像用户界面 (GUI)。 LFS 既不允许连接到网络,也不允许连接到 Internet。ALFS 能够简化系统的扩展,例如,通过添加支持 Internet 访问的库,或通过安装图像桌面所需的 X 库。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




