• 欢迎访问极客公园网站,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入极客公园 QQ群
  • Git主题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 最新版Git主题已支持说说碎语功能,可像添加文章一样直接添加说说,新建说说页面即可,最后重新保存固定连接,演示地址
  • 百度口碑求点赞啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊http://koubei.baidu.com/s/gitcafe.net
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏极客公园吧

Linux From Scratch(LFS)详解

原创总结 博客教主 15年前 (2010-06-12) 10587次浏览 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


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Linux From Scratch(LFS)详解
喜欢 (0)

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

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