- 论坛徽章:
- 0
|
下面是我的LFS全过程,本人开始也只是会一点点基础就开始进行LFS,想通过这个整个过程对Linux来个更全面的了解。
我是根据Linux From Scratch
Version 6.4来做的,也可以说是对它的翻译,相信很多人看到英语都很难看下去,这也是一个学习英语的过程。中间要进行很多东西的学习,所以难免会常一点,写出来大家可以学习一下。
Ps:本文是根据金步国老师的Linux From Scratch中文版来进行的,并在里面添加了一些资料,可以说是一个翻版
序言i. 前言
我在 linux
上的冒险始于1998年,那时我下载并安装了我的第一个发行版。在用它工作了一段时间之后,我发现了很多我认为需要改进的问题。例如,我不喜欢启动脚本的排列顺序、某些程序的默认设置。我尝试过许多不同的发行版来解决这些问题,但是每个发行版都有各自的优点和缺点。最终,我意识到如果我想对我的
Linux 系统完全满意,我必须从头构建我自己的系统。
这是什么意思呢?我决心不用任何预先编译好的软件包,也不用可以安装基本系统的CD-ROM 或启动盘。我将使用现有的 Linux 系统来开发自己定制的系统。这个"完美的" Linux
系统将拥有各种发行版的优点而没有它们的缺点。开始的时候,这个想法看起来是困难到令人感到畏惧的,但是我仍坚持这个想法,一个符合我特定需求的系统是可以构建起来的,并且不会建立一个标准却不符合我需求的系统。
在处理好诸如循环依赖和编译错误等各种问题之后,我创建了一
个定制的 Linux 系统,这个系统功能完整并且适合我个人的需求。这个过程也使得我可以建立精简而紧凑的 Linux
系统,这样的系统比传统的发行版速度更快而且占用的空间更少。我称之为 Linux From Scratch 系统,或简称为 LFS 系统。
当
我把我的目标和经验与 Linux 社区的其他成员分享的时候,很显然别人也有同样的想法。这样定制的 LFS
系统不仅可以满足用户的规范和需求,而且也给程序员和系统管理员们提供一了个理想的提高他们 Linux
技能的机会。由于有这样广泛的兴趣和需求,Linux From Scratch 项目诞生了。
这本 Linux From Scratch
指导书给读者提供了设计并构建自定义的 Linux 系统的背景知识和过程指导。本书的重点是 Linux From Scratch
这个项目以及使用 LFS
系统带来的好处。用户可以控制系统的所有特征,包括目录布局、脚本设置和安全设置等等。最终的系统将从源代码直接编译生成,用户可以指定在哪里安装、为什
么安装以及怎样安装每一个程序。本书使得读者可以完全按照自己的需求定制他们的 Linux 系统,而且使用户对他们的系统有更多的控制权。
希望您在自己的 LFS 系统上工作愉快,享受真正属于你自己的系统所带来的各种好处。
[译者注] "From Scratch"是一个词组,它的意思是"从零做起,白手起家,从无到有"的意思,因此"Linux From Scratch"本质上不应当理解为一个发行版名称。它最贴切的含义应当是一种"方法/思想":一切从源代码开始的方法/思想。
--
Gerard Beekmans
gerard@linuxfromscratch.org
ii. 目标读者
为什么要读这本书呢?有许多原因,最主要的原因是可以学习如何直接从源代码安装一个 linux
系统。许多人也许会问:"当你可以下载和安装一个现成的 linux 系统时,为什么要如此麻烦地从源代码开始手动构建一个 linux
系统呢?"这是一个好问题,也是本书存在本节的原因。
LFS 存在的一个重要原因是可以帮助人们学习 linux 系统内部是如何工作的。构建一个 LFS 系统会帮助演示是什么使 linux 运转,各种组件如何在一起互相依赖的工作。最好的事情之一通过这种学习可以获得完全根据自己的需求定制 linux 系统的能力。
LFS 的一个关键的好处是它让用户对于系统有更多的控制,而不是依赖于他人的 linux 实现。在 LFS 的世界里,你自己坐在司机的位置,掌控系统的每一个细节,比如目录布局和启动脚本配置等等。你也能掌控在哪里、为何、以及怎样安装每一个程序。
LFS
的另一个好处是可以创建一个非常小巧的 linux
系统。当安装一个常规的发行版时,人们经常要被迫安装一些可能永远不会用到的程序。这些程序浪费宝贵的磁盘空间,或更糟的是占用 CPU
资源。要构建一个少于100兆(MB)的 LFS
系统并不困难,这比目前大多数的发行版要小很多。这听起来是不是仍然占用太多空间?我们中的一些人专注于创建非常小的嵌入式 LFS
系统。我们成功的构建了一个只运行 Apache 服务器的系统,大约占 8MB 磁盘空间。进一步的缩减能够减至 5MB
或更少。你用一个常规的发行版试试?!这也只是设计你自己的 linux 所带来的好处之一。[译者注]关于如何构建这样的 Apache
服务器系统的详情,请参见 youbest 兄的两篇大作"
做一个功能单一,体积小巧的LFS
[5M]"和"
我们可以做的更小!《功能单一,体积小巧的LFS》续篇
[600K]"。此外,本文译者金步国也有一篇文章
《DIY一个实用的 mini-LAPP 服务器》[15MB]
,详细讲述了如果从源代码编译一个既实用又小巧的 Linux + Apache + PHP + PostgreSQL + OpenSSH + Iptables 服务器,如果你对服务器情有独钟,也很值得参考。
我
们可以拿 linux 发行版与快餐店出售的汉堡打比喻,你不能决定自己正在吃的是什么。相反,LFS
没有给您一个汉堡。而是给您一张制作汉堡的配方。用户可以查阅配方,减掉不想要的配料,增加你自己的配料以增强汉堡的口味。当你对配方满意时,开始去制作
它,您可以采用任何你喜欢的方式:或烤、或烘、或炸、或焙。
另外一个比方是把 LFS 与建筑房子比较。LFS 提供房子的框架蓝图,但是需要您自己去建筑它。LFS 包含了在这过程中调整计划的自由以及定制满足用户需求的参考。
自己定制 linux 系统的另一个好处是安全性。通过从源码编译整个系统,您能够审查任何东西,打上所有的安全补丁,而不需要等待别人编译好修补安全漏洞的二进制包。除非是您发现并制作的补丁,否则您无法确保新的二进制包一定被正确编译并修正了问题。
Linux
From Scratch 的目标是构建一个完整的、可以使用的基础系统。不想构建自己的 linux
系统的读者,不会从本书中获益[译者不太赞同这句话,借用 d00m3d 的一句忠告:"對任何想深入了解的 Linux
愛好者,不論你現用哪個發行版,最少都應該做一次 LFS ,一定會終身受用的。"]。如果您仅仅想了解计算机启动的时候做了什么,我们推荐您查看 "From Power Up To Bash Prompt" HOWTO 文档,中文版位于
从按下电源开关到bash提示符
,英文原版位于
http://axiom.anu.edu.au/~okeefe/p2b/
或者 linux 文档工程(TLDP)网站
http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html
。那个 HOWTO 构建了一个类似本书的系统,但是它的焦点仅仅限制在创建一个能够启动并进入到 BASH 提示符的系统。 想想您的目标,如果您想构建一个实用的 linux 系统并通过这种方式进行学习,那么本书是您的最佳选择。
构建您自己的 LFS 系统的若干原因以上都列出来了。本节只是冰山一角。随着您 LFS 经验的增长,您将会发现 LFS 真正带给您的信息和知识的力量。
iii. 先决条件
创建 LFS 系统并不是一项非常简单的任务。它需要有一定的 Linux
系统管理知识,以便能够解决问题和正确执行命令。作为最低要求,读者必须具备使用命令行(shell)来运行 cp, mv, ls, cd
等命令的能力。我们还希望读者具备使用和安装 Linux 软件的基本知识[非必须]。这里有一篇
《深入理解软件包的配置、编译与安装》
,可以帮助你理解下面的"Software-Building-HOWTO"。
因为本书假定读者至少具备了上述技能,各个 LFS 论坛也不太可能涉及上述基础知识,你可能会发现关于上述基础知识的问题在这些论坛中无人理睬,或者仅仅得到一个指向下述 LFS 预备知识的连接。
在构建一个 LFS 系统之前,我们推荐您先阅读下列 HOWTO [看英文吃力的读者不看也没关系]:
iv. 对宿主系统的要求
你的宿主系统应当安装了下列软件,并且不低于指定的版本号。这些要求对于大部分现在的 Linux 发行版来说不成问题。另外要注意的是许多发行版会将软件的头文件额外单独打包存放,常见的名称为"-devel"或"-dev"。如果你的发行版提供了这些包请务必确保已经安装了它们。
Bash-2.05a
Binutils-2.12
(不推荐使用大于 2.16.1 的版本,因为尚未经过测试)
Bzip2-1.0.2
Coreutils-5.0
(或者 Sh-Utils-2.0, Textutils-2.0, 和 Fileutils-4.1)
Diffutils-2.8
Findutils-4.1.20
Gawk-3.0
Gcc-2.95.3
(不推荐使用大于 4.0.3 的版本,因为尚未经过测试)
Glibc-2.2.5
(不推荐使用大于 2.3.6 的版本,因为尚未经过测试)
Grep-2.5
Gzip-1.2.4
Linux Kernel-2.6.x
(必须是 GCC-3.0 以上版本编译的)
对
内核版本的这两个要求是因为:如果宿主系统的内核版本低于 2.6.2 或者不是用 GCC-3.0 以上版本编译的,那么 Binutils
将不能支持线程本地存储(thread-local storage),同时 NPTL(本地 POSIX 线程库)的测试程序也会出现段错误。
如
果宿主系统的内核版本低于 2.6.2 或者不是用 GCC-3.0
以上版本编译的,您需要安装一个符合上述条件的新内核,然后用该新内核启动宿主系统。有两种方法可以解决这个问题。第一,如果你的 Linux
供应商提供这样的内核,你可以直接安装它;第二,如果你的 Linux
供应商不提供这样的内核或者你不想安装他们提供的内核,你可以自己编译一个内核。关于编译内核和配置引导管理器(假定宿主系统使用
GRUB)的指导,请查看
第八章
。
Make-3.79.1
Patch-2.5.4
Sed-3.0.2
Tar-1.14
为了确定宿主系统是否满足上述要求,运行下面的命令进行查看:
cat > version-check.sh #!/bin/bash
# Simple script to list version numbers of critical development tools
bash --version | head -n1 | cut -d" " -f2-4
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-4
bzip2 --version 2>&1
EOF
bash version-check.sh
Ps:如果你将上面的链接都去仔细看了的话,上面的这个shell脚本应该阅读起来不是太困难的。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85268/showart_1739156.html |
|