• 欢迎访问MACD实战投资网站,推荐使用最新版谷歌Chrome浏览器访问本网站,关注公众号 丁火甲木庚金 www.macd11.com/subscriptions

Linux From Scratch(LFS)详解

原创总结 丁火 15年前 (2010-06-12) 10599次浏览 2个评论

什么是LFS

LFS──Linux from Scratch,是一个教科书项目的名称,由 Gerard Beekmans 所发展。这个项目不依赖任何发行版,完全从网上可以下载源代码,定制编译成完整的Linux操作系统。尽管目标是排除对特定发行版的依赖,但项目除了依赖软件组件的源代码外,仍然提供了少量启动脚本用以控制系统的启动。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的Linux,不单单是个性的桌面。目前最新版本为6.6。

LFS 有什么优势呢?现在看来,它可以提供最快和最小的Linux。但是最大的优势就是,安装LFS是菜鸟变成高手的捷径。第一次安装,需要按照LFS文档安装,如果在此期间所有文档内容你都认真的阅读,保证你受益匪浅;然后发现很多地方可以不按照别人的老路操作,这个时候用自己的方式参考第一次安装的经验,再一次建立Linux,完成的时候,你会发现自己已经再也不是Linux菜鸟了。

安装两次LFS,总共要用去你10天左右的业余时间(说不定10天还装不完)。但是这10多天将是你Linux水平进步最快的一个多礼拜。

当然,不是说LFS要装两遍,也没有说,一定要装那么长时间。如果闷头装,什么都不管,大概一共十个小时就有一个高效的完整的Linux系统呈现在你面前。(根据机器速度不同时间上会有差异)

最后,在我们开始之前,你想一下,丰富的 Linux 知识对于你来说比在Mplayer上看片,用KDE作PP桌面等来说是不是更重要。如果是,我们期盼你成功完成LFS系统加入我们LFS爱好者的行列!

LFS详解

LFS存在的一个重要原因是可以帮助人们学习Linux系统的内部是如何工作的。构建一个LFS系统会帮助演示是什么使Linux运转,各种组件如何在一起互相依赖的工作。最好的事情之一,是这种学习的经历给予的是一种能力,能够定制满足您自己需要的Linux。

LFS 的一个关键的好处是它让用户对于系统有更多的控制,而不是依赖于某些人的Linux 实现。在 LFS 的世界里,你是坐在司机的位置,掌控系统的每一个细节,比如目录层次和启动脚本配置。你也能掌控程序在哪里,为何,以及怎样被安装。

LFS 的另一个好处是可以创建一个非常紧凑的 linux 系统。当安装一个常规的发行版时,人们经常要被迫安装一些可能永远不会用到的程序。这些程序浪费宝贵的磁盘空间,或更糟的是占用 CPU资源。要构建一个少于100MB的 LFS 系统不是一件难事,这相比较目前大多数的发行版要小很多。这听起来是不是仍然占许多空间?我们中一些人的工作是创建一个非常小的嵌入式的 LFS 系统。我们成功的构建了一个系统,在只运行 Apache 服务器的情况下,大约占8MB磁盘空间。进一步的缩减能够减至5MB或更少。你用一个常规的分发版本试试?这也只是设计你自己的 linux 所带来的好处之一。

我们可以拿 linux 发行版与快餐店出售的汉堡打比喻,您不能决定您应该吃什么。相反,LFS 没有给您一个汉堡。而是给您一张制作汉堡的配方。用户可以查阅配方,减掉不想要的配料,增加你自己的配料以增强汉堡的口味。当你对配方满意的时候,开始去做准备。您可以采用确定的方式:或烤,或烘,或炸,或焙。

另外一个比方是把 LFS 与建筑房子比较。LFS 提供房子的框架蓝图,但是需要您去建筑它。LFS 包含了在这过程中调整计划的自由,定制满足用户的需要和参考。

用户定制的 linux 系统的另一个好处是安全性。通过从源码编译整个系统,您能够审查任何东西,打上所有的安全补丁,而不需要等待别人去编译好修补了安全漏洞的二进制包。除非是您发现并制作的补丁,否则您得不到任何的保证,新的二进制包是否正确编译或修正了问题。

相关项目
该项目有很多相关子项目:

Beyond Linux From Scratch(BLFS)标准LFS仅仅安装了足够让系统启动的基本软件,以及使新系统能够编译新软件包的开发工具。BLFS包括了更多的软件包,且都有相应指导。

Crosss Linux From Scratch(CLFS)为需要进行交叉编译(即在一个平台上编译另一个平台的代码)的用户提供指导,正式版本为1.0,另有两个变种

CLFS Sysroot 采用Sysroot的方法来进行编译,好处是软件包的编译次数可以减少,坏处是不能支持在编译后对软件进行测试,必须要启动到目标平台上才能测试。
CLFS Embedded 一般用于极小系统以及嵌入式系统。为此,它使用uclibc而不是一般LFS使用的glibc。

Automated Linux From Scratch(ALFS)标准LFS只是一本书,用户需要根据书上的指引下载软件包并手动输入指令进行编译。ALFS子项目提供了把这一切自动化的脚本。

Hardened Linux From Scratch(HLFS)这个子项目致力于打造在安全性上无懈可击的Linux系统。

Hints 收集一些解释性、增强性的文档,以协助用户。

LiveCD 利用LFS的方法生成可以自行启动并安装了足够软件的CD,可以用来在空机器上安装LFS,或者直接在其上运行应用。

Patches 由于软件之间的依赖关系,在升级软件包之后可能会导致LFS的过程出现故障。Patch项目致力于研究最新版本的软件之间的互动,并提供一些补丁修复这些故障。

除此之外,该项目另有一个名为CBLFS(Community Driven BLFS)的项目,该项目实际是一个Wiki网站,依靠网友的自发贡献来提交各种软件包的安装方式。

步骤

尽管目标是安装一个与现有发行版毫无关系的系统,安装LFS仍然不能无中生有,而必须要有一个可以编译软件包的运行中的Linux系统。这个系统一般称为宿主系统。对于新机器,可以选用LFS LiveCD项目提供的光盘操作系统作为宿主。在宿主操作系统上安装LFS,需要的步骤如下:

1. 对硬盘分区,添加用于安装LFS的用户和组(LFS教科书第2章)
2. 下载所有需要的软件包源代码(LFS教科书第3章)
3. 准备开发环境(LFS教科书第4章)
4. 构造一个基本开发环境(称为工具链)(LFS教科书第5章)
5. 构造完整的目标系统(LFS教科书第6章)
6. 配置系统启动脚本(LFS教科书第7章)
7. 启动系统(LFS教科书第8章)

LFS 6.6软件包列表

下载或用别的办法获取下列软件包:

Autoconf (2.65) – 1,301 KB:
主页: http://www.gnu.org/software/autoconf/

下载: http://ftp.gnu.org/gnu/autoconf/autoconf-2.65.tar.bz2

MD5 sum: a6de1cc6434cd64038b0a0ae4e252b33

Automake (1.11.1) – 1,042 KB:
主页: http://www.gnu.org/software/automake/

下载: http://ftp.gnu.org/gnu/automake/automake-1.11.1.tar.bz2

MD5 sum: c2972c4d9b3e29c03d5f2af86249876f

Bash (4.1) – 6,444 KB:
主页: http://www.gnu.org/software/bash/

下载: http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz

MD5 sum: 9800d8724815fd84994d9be65ab5e7b8

Binutils (2.20) – 17,096 KB:
主页: http://sources.redhat.com/binutils/

下载: http://ftp.gnu.org/gnu/binutils/binutils-2.20.tar.bz2

MD5 sum: ee2d3e996e9a2d669808713360fa96f8

Bison (2.4.1) – 1,433 KB:
主页: http://www.gnu.org/software/bison/

下载: http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.bz2

MD5 sum: 84e80a2a192c1a4c02d43fbf2bcc4ca4

Bzip2 (1.0.5) – 822 KB:
主页: http://www.bzip.org/

下载: http://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz

MD5 sum: 3c15a0c8d1d3ee1c46a1634d00617b1a

Coreutils (8.4) – 10,273 KB:
主页: http://www.gnu.org/software/coreutils/

下载: http://ftp.gnu.org/gnu/coreutils/coreutils-8.4.tar.gz

MD5 sum: 56f549854d723d9dcebb77919019df55

DejaGNU (1.4.4) – 1,055 KB:
主页: http://www.gnu.org/software/dejagnu/

下载: http://ftp.gnu.org/gnu/dejagnu/dejagnu-1.4.4.tar.gz

MD5 sum: 053f18fd5d00873de365413cab17a666

Diffutils (2.8.1) – 762 KB:
主页: http://www.gnu.org/software/diffutils/

下载: http://ftp.gnu.org/gnu/diffutils/diffutils-2.8.1.tar.gz

MD5 sum: 71f9c5ae19b60608f6c7f162da86a428

E2fsprogs (1.41.10) – 4,363 KB:
主页: http://e2fsprogs.sourceforge.net/

下载: http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.10.tar.gz

MD5 sum: f9c7bb5c036a119453ce02fa871038da

Expect (5.43.0) – 513 KB:
主页: http://expect.nist.gov/

下载: http://expect.nist.gov/src/expect-5.43.0.tar.gz

MD5 sum: 43e1dc0e0bc9492cf2e1a6f59f276bc3

File (5.04) – 607 KB:
主页: http://www.darwinsys.com/file/

下载: ftp://ftp.astron.com/pub/file/file-5.04.tar.gz

MD5 sum: accade81ff1cc774904b47c72c8aeea0

注意

File (5.04)在所列的位置可能找不到。主下载站点的管理员有时在新版软件发布后, 会删除旧的版本。一个可替代的下载位置是 http://www.linuxfromscratch.org/lfs/download.html#ftp 在这里可以找到所需的版本。

Findutils (4.4.2) – 2,100 KB:
主页: http://www.gnu.org/software/findutils/

下载: http://ftp.gnu.org/gnu/findutils/findutils-4.4.2.tar.gz

MD5 sum: 351cc4adb07d54877fa15f75fb77d39f

Flex (2.5.35) – 1,227 KB:
主页: http://flex.sourceforge.net

下载: http://prdownloads.sourceforge.net/flex/flex-2.5.35.tar.bz2

MD5 sum: 10714e50cea54dc7a227e3eddcd44d57

Gawk (3.1.7) – 2,310 KB:
主页: http://www.gnu.org/software/gawk/

下载: http://ftp.gnu.org/gnu/gawk/gawk-3.1.7.tar.bz2

MD5 sum: 674cc5875714315c490b26293d36dfcf

GCC (4.4.3) – 61,470 KB:
主页: http://gcc.gnu.org/

下载: http://ftp.gnu.org/gnu/gcc/gcc-4.4.3/gcc-4.4.3.tar.bz2

MD5 sum: fe1ca818fc6d2caeffc9051fe67ff103

GDBM (1.8.3) – 223 KB:
主页: http://www.gnu.org/software/gdbm/

下载: http://ftp.gnu.org/gnu/gdbm/gdbm-1.8.3.tar.gz

MD5 sum: 1d1b1d5c0245b1c00aff92da751e9aa1

Gettext (0.17) – 11,368 KB:
主页: http://www.gnu.org/software/gettext/

下载: http://ftp.gnu.org/gnu/gettext/gettext-0.17.tar.gz

MD5 sum: 58a2bc6d39c0ba57823034d55d65d606

Glibc (2.11.1) – 15,302 KB:
主页: http://www.gnu.org/software/libc/

下载: http://ftp.gnu.org/gnu/glibc/glibc-2.11.1.tar.bz2

MD5 sum: 6856d5d8b1239556687f0d1217f3f266

GMP (5.0.0) – 1,907 KB:
主页: http://www.gnu.org/software/gmp/

下载: http://ftp.gnu.org/gnu/gmp/gmp-5.0.0.tar.bz2

MD5 sum: 46fc3a85a3fecc98a4bbd498a83ee459

Grep (2.5.4) – 706 KB:
主页: http://www.gnu.org/software/grep/

下载: http://ftp.gnu.org/gnu/grep/grep-2.5.4.tar.bz2

MD5 sum: 5650ee2ae6ea4b39e9459d7d0585b315

Groff (1.20.1) – 3,510 KB:
主页: http://www.gnu.org/software/groff/

下载: http://ftp.gnu.org/gnu/groff/groff-1.20.1.tar.gz

MD5 sum: 48fa768dd6fdeb7968041dd5ae8e2b02

GRUB (1.97.2) – 1,219 KB:
主页: http://www.gnu.org/software/grub/

下载: ftp://alpha.gnu.org/gnu/grub/grub-1.97.2.tar.gz

MD5 sum: db4d23fb8897523a7e484e974ae3d1c9

Gzip (1.4) – 886 KB:
主页: http://www.gzip.org/

下载: http://ftp.gnu.org/gnu/gzip/gzip-1.4.tar.gz

MD5 sum: e381b8506210c794278f5527cba0e765

Iana-Etc (2.30) – 201 KB:
主页: http://sethwklein.net/iana-etc

下载: http://sethwklein.net/iana-etc-2.30.tar.bz2

MD5 sum: 3ba3afb1d1b261383d247f46cb135ee8

Inetutils (1.7) – 1,861 KB:
主页: http://www.gnu.org/software/inetutils/

下载: http://ftp.gnu.org/gnu/inetutils/inetutils-1.7.tar.gz

MD5 sum: a1d5a01b0ab8a7e596ac4cff0cce7129

IPRoute2 (2.6.31) – 364 KB:
主页: http://linux-net.osdl.org/index.php/Iproute2

下载: http://developer.osdl.org/dev/iproute2/download/iproute2-2.6.31.tar.bz2

MD5 sum: 230f35282a95451622f3e8394f9cd80a

Kbd (1.15.1) – 1,081 KB:
下载: http://ftp.altlinux.com/pub/people/legion/kbd/kbd-1.15.1.tar.gz

MD5 sum: f997c490fe5ede839aacf31da6c4eb06

Less (436) – 297 KB:
主页: http://www.greenwoodsoftware.com/less/

下载: http://www.greenwoodsoftware.com/less/less-436.tar.gz

MD5 sum: 817bf051953ad2dea825a1cdf460caa4

LFS-Bootscripts (20100124) – 42 KB:
下载: http://www.linuxfromscratch.org/lfs/downloads/6.6/lfs-bootscripts-20100124.tar.bz2

MD5 sum: 259968939ae12a0a791acbdc07f5bc52

Libtool (2.2.6b) – 2,292 KB:
主页: http://www.gnu.org/software/libtool/

下载: http://ftp.gnu.org/gnu/libtool/libtool-2.2.6b.tar.gz

MD5 sum: 07da460450490148c6d2df0f21481a25

Linux (2.6.32.8) – 62,864 KB:
主页: http://www.kernel.org/

下载: http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.bz2

MD5 sum: 82023ede52f067fcc55c5e70b02e48ae

注意

由于发现了多次安全漏洞,Linux内核升级相对比较频繁。可找到的最新版 2.6.32.x 版内核应该是可用的,除非在勘误页面说明不可用。

对于有速度限制或带宽比较昂贵的用户,如果想升级Linux 内核, 可以单独下载基线版本软件包和补丁。 对于随后的次要版本升级补丁, 这样可以节约时间和成本。

M4 (1.4.13) – 985 KB:
主页: http://www.gnu.org/software/m4/

下载: http://ftp.gnu.org/gnu/m4/m4-1.4.13.tar.bz2

MD5 sum: 28f9ccd3ac4da45409251008b911d677

Make (3.81) – 1,125 KB:
主页: http://www.gnu.org/software/make/

下载: http://ftp.gnu.org/gnu/make/make-3.81.tar.bz2

MD5 sum: 354853e0b2da90c527e35aabb8d6f1e6

Man-DB (2.5.6) – 2,045 KB:
主页: http://www.nongnu.org/man-db/

下载: http://download.savannah.gnu.org/releases/man-db/man-db-2.5.6.tar.gz

MD5 sum: 69585b19c5600a863f1a0d7b7f283975

Man-pages (3.23) – 1,066 KB:
主页: http://www.kernel.org/doc/man-pages/

下载: http://www.kernel.org/pub/linux/docs/manpages/Archive/man-pages-3.23.tar.bz2

MD5 sum: 153704ffa27160d708e0e8c56c1da58f

Module-Init-Tools (3.11.1) – 196 KB:
主页: http://www.kerneltools.org/KernelTools.org

下载: http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.11.1.tar.bz2

MD5 sum: 28dfcb9e24cdbeb12b99ac1eb8af7dea

MPFR (2.4.2) – 1,053 KB:
主页: http://www.mpfr.org/

下载: http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2

MD5 sum: 89e59fe665e2b3ad44a6789f40b059a0

Ncurses (5.7) – 2,388 KB:
主页: http://www.gnu.org/software/ncurses/

下载: ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.7.tar.gz

MD5 sum: cce05daf61a64501ef6cd8da1f727ec6

Patch (2.6.1) – 248 KB:
主页: http://directory.fsf.org/project/patch/

下载: http://ftp.gnu.org/gnu/patch/patch-2.6.1.tar.bz2

MD5 sum: 0818d1763ae0c4281bcdc63cdac0b2c0

Perl (5.10.1) – 11,336 KB:
主页: http://cpan.org/

下载: http://cpan.org/src/5.0/perl-5.10.1.tar.bz2

MD5 sum: 82400c6d34f7b7b43d0196c76cd2bbb1

Pkg-config (0.23) – 1,009 KB:
主页: http://pkg-config.freedesktop.org/

下载: http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz

MD5 sum: d922a88782b64441d06547632fd85744

Procps (3.2.8) – 279 KB:
主页: http://procps.sourceforge.net/

下载: http://procps.sourceforge.net/procps-3.2.8.tar.gz

MD5 sum: 9532714b6846013ca9898984ba4cd7e0

Psmisc (22.10) – 307 KB:
主页: http://psmisc.sourceforge.net/

下载: http://prdownloads.sourceforge.net/psmisc/psmisc-22.10.tar.gz

MD5 sum: e881383e7f399121cd0ce744f97d91a5

Readline (6.1) – 2,209 KB:
主页: http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html

下载: http://ftp.gnu.org/gnu/readline/readline-6.1.tar.gz

MD5 sum: fc2f7e714fe792db1ce6ddc4c9fb4ef3

Sed (4.2.1) – 878 KB:
主页: http://www.gnu.org/software/sed/

下载: http://ftp.gnu.org/gnu/sed/sed-4.2.1.tar.bz2

MD5 sum: 7d310fbd76e01a01115075c1fd3f455a

Shadow (4.1.4.2) – 1,748 KB:
主页: http://pkg-shadow.alioth.debian.org/

下载: ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow/shadow-4.1.4.2.tar.bz2

MD5 sum: d593a9cab93c48ee0a6ba056db8c1997

Sysklogd (1.5) – 85 KB:
主页: http://www.infodrom.org/projects/sysklogd/

下载: http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.tar.gz

MD5 sum: e053094e8103165f98ddafe828f6ae4b

Sysvinit (2.86) – 97 KB:
下载: ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/sysvinit-2.86.tar.gz

MD5 sum: 7d5d61c026122ab791ac04c8a84db967

Tar (1.22) – 2,046 KB:
主页: http://www.gnu.org/software/tar/

下载: http://ftp.gnu.org/gnu/tar/tar-1.22.tar.bz2

MD5 sum: 07fa517027f426bb80f5f5ff91b63585

Tcl (8.5.8) – 4,348 KB:
主页: http://tcl.sourceforge.net/

下载: http://prdownloads.sourceforge.net/tcl/tcl8.5.8-src.tar.gz

MD5 sum: 7f123e53b3daaaba2478d3af5a0752e3

Texinfo (4.13a) – 2,687 KB:
主页: http://www.gnu.org/software/texinfo/

下载: http://ftp.gnu.org/gnu/texinfo/texinfo-4.13a.tar.gz

MD5 sum: 71ba711519209b5fb583fed2b3d86fcb

Udev (151) – 498 KB:
主页: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html

下载: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-151.tar.bz2

MD5 sum: aeae0e6273dcbec246c3c1b9868ebed1

Udev Configuration Tarball – 7 KB:
下载: http://www.linuxfromscratch.org/lfs/downloads/6.6/udev-config-20100128.tar.bz2

MD5 sum: 523e17e737ca91c2c11a3fa76d887247

Util-linux-ng (2.17) – 3,680 KB:
主页: http://userweb.kernel.org/~kzak/util-linux-ng/

下载: http://www.kernel.org/pub/linux/utils/util-linux-ng/v2.17/util-linux-ng-2.17.tar.bz2

MD5 sum: 11cc8a0138019e7060dd275d47dbc096

Vim (7.2) – 7,035 KB:
主页: http://www.vim.org

下载: ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2

MD5 sum: f0901284b338e448bfd79ccca0041254

Vim (7.2) language files (optional) – 1,365 KB:
主页: http://www.vim.org

下载: ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz

MD5 sum: d8884786979e0e520c112faf2e176f05

Zlib (1.2.3) – 415 KB:
主页: http://www.zlib.net/

下载: http://www.zlib.net/zlib-1.2.3.tar.bz2

MD5 sum: dee233bf288ee795ac96a98cc2e369b6

这些软件包总的大小是:约 260 MB

LFS官方网站:http://www.linuxfromscratch.org/

LFS 6.6中文手册http://www.macd11.com/book/lfs-book-6.6/

LFS QQ群:3139610


macd11.com 和 丁火甲木庚金 公众号版权所有丨如未注明 , 均为原创丨转载请注明原文链接。
喜欢 (0)
[sp91@qq.com]
分享 (0)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 准备学习LFS,很有用,谢谢提供中文LFS资料。
    usa-vps2011-10-19 13:59