scratch怎么读存档

我scratch下了一个存档能混过老师吗_百度知道小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
本章,我们将准备一个LFS系统的分区。 我们要建立一个新的分区, 并在这个分区上创建文件系统, 然后挂载它。
LFS Part II
构建前的准备
2. 准备一个新分区
创建一个新的分区
在这个分区上创建文件系统
挂载这个新分区
3. 软件包和补丁
全部软件包
需要的补丁
4. 最后的准备工作
关于环境变量 $LFS
创建 $LFS/tools 目录
添加 LFS 用户
设置环境变量
关于软件包测试套件
5. 构建临时系统
工具链技术说明
常用编译器用法说明
Binutils-2.22 - 第一遍
GCC-4.6.2 - 第一遍
Linux-3.2.6 API Headers
Glibc-2.14.1
调整工具链
Binutils-2.22 - 第二遍
GCC-4.6.2 - 第二遍
Tcl-8.5.11
Expect-5.45
DejaGNU-1.5
Check-0.9.8
Ncurses-5.9
Bzip2-1.0.6
Coreutils-8.15
Diffutils-3.2
Findutils-4.4.2
Gawk-4.0.0
Gettext-0.18.1.1
Patch-2.6.1
Perl-5.14.2
Texinfo-4.13a
改变所有者
在书中遇到任何困难和问题,请查看FAQ页 。 你的问题,在那里经常已经被回答了。如果FAQ没有找到您的***,试着查找问题的根源。 下面的链接提供了故障诊断的一些指导 :。&如果你在FAQ中无法找到你的问题列表,请搜索邮件列表: 。&我们还有一个出色的LFS社区,通过邮件列表和IRC (请参考本书的
) 提供帮助。 然而, 我们每天都会收到一些问题, 其中很多都可以通过访问FAQ和搜索邮件列表轻易的找到***。 因此, 为了让我们能够为真正不寻常的问题提供帮助,请您自己先搜索一下。 如果你不能找到结果,请在你的帮助请求中包括所有的相关信息(下面提到)。&1.5.1. 需要提及的内容除了一份您所遇到的问题的简短描述外,在任何帮助请求中您还需要附加一些必需的信息:
所用的LFS book的版本 (本书的版本是 7.1)
用来创建 LFS 的宿主系统发行版的名称和版本
&对宿主系统的要求& 的输出
遇到问题的软件包以及所在的章节
确切的错误信息或故障现象描述
您是否完全是按本书所说的在做
& 注意不按本书说的做,并不意味着我们不会为你提供 帮助。 毕竟, LFS系统那个是个性化的。 提供你在建立过程中所做的任何更改, 将有助于帮助我们估计和确定导致你的问题的可能性。
1.5.2. 配置脚本的问题
如果运行 configure 脚本时,出现了某些错误,请检查config.log 文件。 这个文件可能包含了 configure 过程中,没有输出到屏幕的错误。如果你需要帮助,请把这些相关的行也包 含进去。
1.5.3. 编译问题
屏幕输出和生成的各种文件的内容,对确定引起编译问题的原因都是很有用的。运行 configure 脚本和 make 时所产生的屏幕输出,也是有帮助的。不是一定要包含全部的输出,但一定要包含足够的相关信息。 下面是一个从 make 的屏幕输出中包含所需信息的例子:
gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
-DLIBDIR=\"/mnt/lfs/usr/lib\"
-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DH***E_CONFIG_H -I. -I.
-g -O2 -c getopt1.c
gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
expand.o file.o function.o getopt.o implicit.o job.o main.o
misc.o read.o remake.o rule.o signame.o variable.o vpath.o
default.o remote-stub.o version.o opt1.o
-lutil job.o: In function `load_too_high':
/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
to `getloadavg'
collect2: ld returned 1 exit status
make[2]: *** [make] Error 1
make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
make: *** [all-recursive-am] Error 2
在这种时候,很多人仅仅会包含下面的一段:
make [2]: *** [make] Error 1
这对于正确分析问题是不够的,因为它只是提示出错了,而没有说去是什么出 错了。 在上面例子中,全部内容都应该保存下来,因为它包括了所运行的命令和相关的错误信息。
在 中可以找到一篇好文文章, 讲述如何在 Internet上寻求帮助,请阅读并遵照文章中的提示,将有助于您得到您所需要的***。
1.4.1. FAQ如果在创建LFS系统过程中,你遇到错误,有什么问题或者认为书中有错别字,请首先查看在
上的系统热门问题选集(FAQ)&
上的邮件列表。
要了解不同列表的信息,如何订阅列表,存档位置和其他问题,请访问 .
1.4.5. 联系信息
请直接将您的问题和意见发送到LFS邮件列表(参照上面)。&
1.3. 更新记录
本书是 Linux From Scratch 指导书7.1版,发布日期是日。 如果本书版本已经超过了六个月,就可能有更新、更好的版本可供下载了。为了查找更新版本, 可访问 :
&以下是本书自上一版本以来的更新列表。&
更新日志入口:
& & [bdubbs] - LFS-7.1 released.
& & [bdubbs] - Minor changes to ifup boot script.
& & [bdubbs] - Add a patch for glibc that fixes a problem (segfault) for dlopen() in some cases.
& & [bdubbs] - Add a note in section about partitioning using advanced techniques (e.g. RAID and LVM).
& & [bdubbs] - LFS-7.1-rc1 released.
& & [bdubbs] - Add sed to the m4 package to fix a false test error. Fixes #3022.& [bdubbs] - Update mountfs script to support LVM volumes when stopping.
& & [matthew] - Upgrade to Man-DB-2.6.1. Fixes #3020.& [bdubbs] - Activate any possible LVM partitions in checkfs script. Thanks ot Qrux for pointing out the issue.
& & [matthew] - Upgrade to Shadow-4.1.5. Fixes #3019.& [matthew] - Upgrade to Linux-3.2.6. Fixes #3018.
& & [matthew] - Correct some markup for a couple of installation commands. This helps with jhalfs' packagemanagement feature. Thanks to Pierre Labastie for the patch.& [matthew] - Create /usr/lib/libstdc++.la early in chapter 6 to fix an ICA issue. Thanks to Pierre Labastie for thepatch.& [matthew] - Upgrade to GMP-5.0.4. Fixes #3017.
& & [matthew] - Remove a fixup for GMP's testsuite which was added upstream in GMP-5.0.3. Fixes #3016.
& & [matthew] - Upgrade to Udev-181. Fixes #3015.& [matthew] - Upgrade to Kmod-5. Fixes #3014.& [matthew] - Upgrade to Linux-3.2.5. Fixes #3013.
& & [matthew] - Upgrade to Linux-3.2.4. Fixes #3012.& [matthew] - Upgrade to Automake-1.11.3. Fixes #3011.Linux From Scratch - Version 7.15& [matthew] - Remove last remaining mentions of Module-Init-Tools.& [matthew] - Install Kmod's and Xz's pkgconfig files in the standard location. Thanks to John Burrell andBryan for the original reports and Ken for the suggested fix.
& & [bdubbs] - Fixes to bootscripts:& Remove unneeded function literals.& Fix pidlist logic in statusproc.& Fix statusproc usage statement.& Add nodevtmpfs in mountfs stop.& [bdubbs] Add nodump to xml so command to print out 70-persistent-net.rules will not be used in jhalfs. Fixesa problem in kvm.& [bryan] - Fix up text in section 7.4 ("device and module handling"), and change the recommendation forwrapper modules to use kmod's support for soft post-dependencies instead. Fixes #3010.
& & [bdubbs] - Remove oblolete references to consolelog.& [bdubbs] - Reformat udev configure command.& & [bdubbs] - Clarify (again) the extraction order in GCC Pass 1.& [bdubbs] - Reformat Kmod configure command.
& & [matthew] - Upgrade to Zlib-1.2.6. Fixes #3009.& [matthew] - Move Xz to before GRUB so that the latter can support compressed kernel images.& [matthew] - Upgrade to Udev-180. Fixes #3008.
& & [matthew] - Upgrade to Psmisc-22.15. Fixes #3007.& [matthew] - Upgrade to GMP-5.0.3. Fixes #3006.& [matthew] - Upgrade to Linux-3.2.2. Fixes #3005.& [matthew] - Upgrade to Udev-179. Fixes #3004.
& & [bdubbs] - Update network bootscripts to support bridge devices in BLFS.& [matthew] - Upgrade to Linux-3.2.1. Fixes #2999.& [matthew] - Upgrade to Udev-178, including adding its new depdendency, Kmod-4. Fixes #2998 and #3001.
& & [bdubbs] - Change bootscripts to use devtmpfs for /dev. Move mounting of /dev to mountvirtfs and ensure /dev gets placed in /etc/mtab. Change fstab and kernel configuration sections to reflect these changes.
& & [bdubbs] - Add clarification to the GRUB configuration about using a separate boot partition.Linux From Scratch - Version 7.16& [matthew] - Remove Libnl, as it's not actually required by IPRoute2 after all. Thanks to Markku Pesonen forthe pointer to the upstream fix.
& & [matthew] - Prevent Libnl from installing static libraries. Thanks to Ken Moffat for the report.& [matthew] - Upgrade to Coreutils-8.15. Fixes #2996.& [matthew] - Upgrade to IPRoute2-3.2.0, and add its new dependency, libnl-2.0. Fixes #2995.& [matthew] - Upgrade to Linux-3.2. Fixes #2993.& [matthew] - Upgrade to Inetutils-1.9.1. Fixes #2992.& [matthew] - Fix typo in Linux tarball name. Fixes #2991.& [matthew] - Upgrade to File-5.10. Fixes #2989.
& & [bdubbs] - Change to simpler command for version-check.sh's Glibc version detection on all platforms.Thanks to Pierre Labastie for the report and fix.& [bdubbs] - Change to php script for 'get counted'.
& & [matthew] - Fix version-check.sh's Glibc version detection on 64-bit Debian hosts. Thanks to Pierre Labastiefor the report and fix.
& & [matthew] - Upgrade to Automake-1.11.2. Fixes #2986.& [matthew] - Upgrade to Linux-3.1.6. Fixes #2985.& [matthew] - Correct permissions on /run/shm. Fixes #2984.& [matthew] - Add upstream patches for MPFR. Fixes #2983.
& & [matthew] - Upgrade to Linux-3.1.5. Fixes #2981.& & [matthew] - Improve the accuracy of the list of installed files for a number of packages. Thanks to Chris Staubfor the patch. Fixes #2979.& [matthew] - Prevent some arpd artefacts from being installed by IPRoute2. Fixes #2977.& [matthew] - Correct location of Coreutils' libstdbuf. Fixes #2976.& [matthew] - Move Psmisc to before E2fsprogs because the E2fsprogs testsuite uses killall. Fixes #2975.
& & [matthew] - Upgrade to E2fsprogs-1.42. Fixes #2973.& [matthew] - Upgrade to Linux-3.1.4. Fixes #2970.& [matthew] - Upgrade to IPRoute2-3.1.0. Fixes #2969.& [matthew] - Add latest upstream patches for Bash. Fixes #2968.
& & [dj] - Update to lfs-bootscripts-.Linux From Scratch - Version 7.17& [ken] - Fix daylight saving time bug in coreutils testsuite.
& & [bdubbs] - Clean up console script.
& & [matthew] - Upgrade to Binutils-2.22. Fixes #2967.& [matthew] - Install Glibc's NIS and RPC headers again. The headers have not been installed by default sinceGlibc-2.14, but that causes various BLFS packages to break. Fixes #2965.& [matthew] - Upgrade to Grep-2.10. Fixes #2964.& [matthew] - Add a patch to fix a security vulnerability in Perl. Fixes #2963.& [matthew] - Upgrade to GDBM-1.10. Fixes #2962.& [matthew] - Install Coreutils' libstdbuf.so to /usr/lib/coreutils to maintain consistency withother packages' shared library locations. Fixes #2961.& [matthew] - Upgrade to Linux-3.1.2. Fixes #2960.& [matthew] - Upgrade to Tcl-8.5.11. Fixes #2959.
& & [bdubbs] - Make /var/log/btmp have 660 permissions. Suggestion from Michael Blanchard.
& & [bdubbs] - Updates to boot scripts: move conso clean up boot logging fix interactive prompt between run level S and target run level. Thanks to DJ Lucas.
& & [bdubbs] - Text correction in bootscripts description.& [bdubbs] - Remove erroneous sourcing line in bootscript functions used for backward BLFS compatibility.
& & [matthew] - Upgrade to GCC-4.6.2. Fixes #2951.& [matthew] - Upgrade to Util-Linux-2.20.1. Fixes #2947.& [matthew] - Upgrade to Libtool-2.4.2. Fixes #2946.& [bdubbs] - LFS-7.0 released.
1.2. 与上一版有什么不同
下面是从本书上次发布以来的软件包升级列表。&
Upgraded to:
& Automake 1.11.3& Binutils 2.22& Coreutils 8.15& E2fsprogs 1.42& File 5.10& GCC 4.6.2& GDBM 1.10& GMP 5.0.4& Grep 2.10& Inetutils 1.9.1& IPRoute2 3.2.0& Libtool 2.4.2& Linux 3.2.6& Man-DB 2.6.1& Psmisc 22.15& Shadow 4.1.5& TCL 8.5.11& Udev 181& Util-Linux 2.20.1& Zlib 1.2.6
& glibc-2.14.1-sort-1.patch& Kmod-5& mpfr-3.1.0-fixes-1.patch& shadow-4.1.5-nscd-1.patch
& bash-4.2-fixes-3.patch& coreutils-8.14-test_fix-1.patch& gcc-4.6.1-locale-1.patch
1.1. 如何构建LFS系统
我们将用一个已***好的Linux发布版 (比如 Debian, Mandriva, Red Hat, 或 SUSE) 来构建LFS系统。这个现有的Linux系统(宿主系统)将作为起点来提供包括编译器, 链接器和shell,等构建新系统的必要程序。在***这个发布版时,选择&开发/编程&选项, 以便可以访问这些工具。&另一种选择***一个独立发布版本在你的机器上,你可以使用 商业发布版的 LiveCD。&
第二章 表述了怎样建立一个新的Linux本地分区和文件系统, 新的LFS系统将在该分区上编译和***。 第三章& 解释构建LFS系统所需下载的软件包和补丁, 以及如何将它们保存到新的文件系统上。第四章 讨论建立一个适当的工作环境。请仔细阅读 第四章 因为它讨论了在开始 第五章 之前及以后的工作中你应该知道的一些重要问题。&
第五章 解释了组成基础开发工具(工具链)所需的一些软件包的***。该工具链将用来在 第六章 构建一个真实系统。这些软件包中,有些需要解决循环依赖问题--例如, 要编译一个编译器,你首先需要一个编译器。&
第五章 也让您看到如何第一遍编译工具链,包括Binutils 和 GCC (第一遍编译的意思就是这两个核心软件包还要重新编译)。下一步是编译 C 的运行库Glibc。 Glibc 会用第一遍编译的工具链编译。然后,将第二遍编译工具链。这时, 工具链将再次动态链接到刚编译的Glibc上。第五章 剩下的软件包将用第二遍编译的工具链编译。 完成这些工作后, LFS的***除了正在运行的内核外, 将不再依靠宿主系统。&为了从宿主系统分离出新系统,看起来要做很多工作。关于为什么要这样做,Section&5.2, &工具链技术说明& 提供了一份完整的技术说明。&在 第六章 中,将构建一个完整的LFS系统。chroot (改变 root) 程序被用于进入一个虚拟环境, 并启动一个新的shell,其跟目录设置在LFS 分区。这很类似于重新启动,并让内核装载LFS分区作为根分区。系统并没有真的重启, 而是由chroot替代了,因为创建一个可启动的系统需要做但现在还不需要 做的额外工作。主要的有好处是,在创建LFS系统时,&chrooting&允许你继续使用宿主系统。 在等待软件包编译完成的时候,你可以像平常一样,继 续使用你的电脑。&为了完成***,第七章 设置了启动脚本, 第八章 是内核和启动引导程序,第九章 包含了本书之外,获得进一步LFS经验的信息。本书的所有步骤被执行以后, 计算机就准备好重启进入新的LFS系统了。&这是概括的过程。在以后的章节和软件包中,讨论了每一步的细节。看似复杂的项目将更清晰, 随着你踏上LFS冒险之旅,一切都会水到渠成。
1. 介绍&1.1 如何构建LFS系统&1.2 与上一版有什么不同&1.3 更新记录&1.4 资源&1.5 帮助
用来构建LFS的软件一直在更新和加强。 LFS书发布以后, 也会有安全警告和bug修正。 在构建你的系统前, 要检查本书中的软件包版本或者使用的指令是否需要更新或更改以堵上安全漏 洞或修正 bug, 请查看这里:&
&你应当将出现的改变应用到本书的相应部分。
本书分成以下部分。&
Part I - 介绍
Part I 解释了一些关于进行LFS***的重要事项。本节还提供了关于本书的基本信息。
Part II - 构建前的准备
Part II 描述了构建前的准备工作--建立一个分区,下载软件包,编译临时工具。
Part III - 构建 LFS系统
Part III 指导读者逐步构建 LFS 系统&逐个编译和***所有的软件包,设置启动脚本并***内核。 然后,可以在这个Linux系统的基础上,按要求***其他软件来扩展系统。本书的结尾, 有一份易用的用户参考,列出了***的所有程序,库,和重要的文件。
为了易于理解和使用,一些排版约定在本书中通篇使用,本节包含其中一些排版格式的例子。&
./configure --prefix=/usr&除非另有说明,这种样式的文本表明应该按照所看到的内容完整无误的输入。 这种样式也用在解释部分,来表明引用了哪些命令。有时,一个逻辑行会用行尾的&\& 扩展成两个或多个物理行。&
CC="gcc -B/usr/bin/" ../binutils-2.18/configure \
&&& --prefix=/tools --disable-nls --disable-werror&注意,&\&后面必需紧跟着一个回车符。多余的空白如空格符和制表符都会引起错误的结果。&
install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'&这种样式 (固定宽度的文本) 表明是屏幕输出的, 通常是命令运行的结果。 这种格式也用来显示文件名,如:/etc/ld.so.conf.&
强调这种样式的文字在本书中有多种用途,主要是用来强调重点。
这个样式是用在超链接,不管是LFS社区内部还是外部的页面。包括 HOWTO,下载点,和网站。&
cat & $LFS/etc/group && "EOF"
EOF&这种样式用在创建配置文件时。第一个命令告诉系统建立 $LFS/etc/group文件,内容 是接下来输入的每一行直到文件结束符(EOF)为止。 因此,一般就是按看到的内容整段输入。&
&替代文本&
这种格式用来用来输入替代内容的文本或者是复制粘贴的内容。&
[可选文本]
这种格式用来显示可选文本。&
passwd(5)&这种格式被用来指定特定的手册页 (以下简称&man&) 。参数里的数字指出man里的特定章节。例如 passwd 有两个 man 页. 按 LFS ***手册,这两个 man 页将位于 /usr/share/man/man1/passwd.1 和 /usr/share/man/man5/passwd.5中。 当书中用 passwd(5)时, 是特指/usr/share/man/man5/passwd.5. man passwd 将打印出所找到的第一个匹配&passwd&的 man页, 也就是 /usr/share/man/man1/passwd.1. 在这个例子中,你需要运行 man 5 passwd 来指定想要的页。需要提醒的是,大部分 man页不含有不同章节的多个页,因此, man &program name&通常就足够了。
我是一条小青龙
我是一条小青龙,我有许多小秘密,我有许多的秘密,就告诉你,就不告诉你,就不告诉你 ..
对宿主系统的要求
你的宿主系统应该含有下列软件,并且不低于指出的版本。 这对于现在的大多数Linux发行版都不是问题。 也要注意到, 很多发行版会把软件的头文件放在单独的包里, 经常命名为 &&package-name&-devel& 或 &&package-name&-dev&的样子。 如果你用的发行版提供了它们,一定要***。&被列出的低版本软件包可能也可以,但尚未经过测试。
& Bash-3.2 (/bin/sh 应该是bash的一个符号链接或硬链接)& Binutils-2.17 (不推荐使用高于 2.22 版的,因为没经过测试)& Bison-2.3 (/usr/bin/yacc 应该是 bison的一个连接或是执行bison的一个小脚本)& Bzip2-1.0.4& Coreutils-6.9& Diffutils-2.8.1& Findutils-4.2.31& Gawk-3.1.5 (/usr/bin/awk 应该是gawk的链接)& Gcc-4.1.2 (不推荐使用高于 4.62 版的,因为没经过测试)& Glibc-2.5.1 (不推荐使用高于 2.14.1 版的,因为没经过测试)& Grep-2.5.1a& Gzip-1.3.12& Linux Kernel-2.6.25 (使用 GCC-4.1.2或更高版进行了编译)
要求内核版本的原因是第六章创建glibc时开发者推荐的。这也是udev包所要求的。&如果宿主内核低于2.6.25版或者它不是用GCC-4.1.2(或以上)版本编译的,你需要重新安置一个符合要求的内核。有两种方法可以解决这个问题。 首先,看你的Linux提供商是否提供了2.6.25版或更新的内核补丁, 如果是,你可能愿意***它。 如果商家没有提供合适的补丁,或者你不想***它, 你可以自己编译一个。 关于内核编译和配置引导加载程序(假设主机用的是GRUB)的介绍放在第八章。&& M4-1.4.10& Make-3.81& Patch-2.5.4& Perl-5.8.8& Sed-4.1.5& Tar-1.18& Texinfo-4.9& Xz-5.0.3&注意,上面提到的构建LFS系统要用到的符号链接的介绍包含在本书中。指向其他软件 (如dash、mawk等)的符号链接可以运行,但是没有被LFS开发团队所测试和支持, 可能会偏离本指南或者需要为某些软件包打补丁。&要查看你的宿主系统是否包含所有的版本适当,有编译程序能力的软件,请运行以下脚本:&
cat & version-check.sh && "EOF"
#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -& `readlink -f /bin/sh`"
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -e /usr/bin/yacc ];
&&& then echo "/usr/bin/yacc -& `readlink -f /usr/bin/yacc`";
&&& else echo "yacc not found"; fi
bzip2 --version 2&&1 & /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -e /usr/bin/awk ];
&&& then echo "/usr/bin/awk -& `readlink -f /usr/bin/awk`";
&&& else echo "awk not found"; fi
gcc --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
echo "Texinfo: `makeinfo --version | head -n1`"
xz --version | head -n1
echo 'main(){}' & dummy.c && gcc -o dummy dummy.c
if [ -x dummy ]
&&& then echo "gcc compilation OK";
&&& else echo "gcc compilation failed"; fi
rm -f dummy.c dummy
bash version-check.sh
创建LFS系统不是一项简单的任务。 它需要一定的Unix系统管理知识, 以便解决问题和正确的执行所列出的命令。至少,作为最低要求, 你应该会使用命令行(shell)来拷贝或移动文件和路径,列出路径和文件目录, 改变当前路径(cp、mv、ls、cd)。 也希望用户具备使用和***Linux软件的基本知识。&因为本书假定读者至少具备上述的基础技能,所以各个LFS支持论坛都不会在这方面提供很多帮助 。你会发现关于上述基础知识的问题无人理睬,或者仅仅得到一个指向下述LFS预备知识的链接 。&&在创建LFS系统前,我们推荐阅读以下的 HOWTO:&● Software-Building-HOWTO 是一个在Linux下创建和***&一般的&Unix软件包的详尽指南。虽然是以前写的, 但它还是提供了创建和***软件基本技能的总结。&●& Linux用户手册 这个手册包括了各种Linux软件的用法。这本参考书也相当老,但仍可用。&● The Essential Pre-Reading Hint 这是专为Linux新手写的LFS提示。它包括一份列表,包含了很广泛的话题和很棒的信息资源。 每个想要***LFS系统的人都应该对这份提示里的很多话题 有所理解。
为何使用本书选择的软件包
就像前面所说的,LFS 的目标是为了建立一个完整的,基础级的可用系统。 这包括在提供一个相对较小的基础系统时,需要再生自己的全部软件包,从这个小基础系统开始,可以按照用户的选择定制一个更完整的系统。 这并不意味着 LFS 是可能的最小系统。它包括一些重要担不是必需的软件包。下面列出了本书中每个文件包的理由:&Autoconf此软件包包含了能从开发者模板生成用于自动配置源代码的Shell脚本。它通常需要更新后重建一个软件包来构建程序。&Automake此包包含从模板生成 Make 文件的程序。他通常需要更新后重建一个软件包来构建程序。&Bash此包满足LSB核心需求,来为系统提供一个Bourne Shell接口。之所以选择它,而不是其他Shell包,是因为它的基本Shell功能之外的通用和性能。&Binutils此包包含一个连接器,一个汇编器和其他处理目标文件的工具。这个包中的程序需要编译LFS系统和超越大部分的包。&Bison此包包含编译其他LFS程序所需要的yacc(Yet Another Compiler COmpiler)的GNU版。&Bzip2此包包含压缩和解压缩文件的程序。被用来解压很多的LFS软件包。&Coreutils此包包含一些显示和操作文件和目录的基础程序。在命令行文件管理中和在LFS***所有程序包中这些程序都是必要的。&DejaGNU此包包含测试其他程序的框架。它只***在临时工具链中。&Diffutils此包包含显示两个文件或目录之间差异的程序。这些程序用来创建补丁,也用于许多包程序的构建。&Expect此包包含一个通过执行脚本对话框与其它交互式程序通信的工具。通常用于测试其他软件包。它只***在临时工具链中。&E2fsprogs此包包含处理 ext2, ext3 和 ext4 文件系统的工具。这些是 Linux 支持的最常用,并经过彻底测试的文件系统。&File此包包含一个判断给定文件类型的工具。极少数的包需要依靠它来构建。&Findutils此包包含在文件系统中查找文件的程序。它用于在许多包中构建脚本。&Flex此包包含一个能生成识别文本模式的程序的工具。它是 GNU 版的 lex (词法分析器) 程序。它被用来编译一些LFS软件包。&Gawk此包包含处理文本文件的程序。它是 GNU 版的 awk (Aho-Weinberg-Kernighan). 它用于在许多其他包中构建脚本。&Gcc此包包含 GNU 编译器集合。它包括 C 和 C++ 及一些没有被 LFS 编译的编译器。&GDBM此包包含 GNU 数据库管理器。它被另一个 LFS 软件包( Man-DB)使用
Gettext此包包含用于许多软件包的国际化和本地化的工具和库。
Glibc此包包含主要的 C 库。没有它 Linux 程序就不能运行。
GMP此包包含数学库,它们为任意精度计算提供了有用的函数。 编译Gcc时需要它。
Grep此包包含在文件中搜索的程序。
Groff此包包含软件包包含几个处理和格式化文本的程序。这些程序的一个重要功能是格式化 man 手册页。
GRUB此包是 Grand 统一引导装载程序。它是几个可用的引导装载程序之一,但它是最灵活的。
Gzip此包包含压缩和解压缩文件的程序。
Iana-etc此包为网络服务和协议提供数据。它需要启用正确的网络功能。
Inetutils此包包含基本的网络管理的程序。
IProute2此包包含基本的和高级的基于IPv4 和 IPv6 网络的程序。 选择它而不是其他通用的网络工具软件包(net-tools)是因为它的 IPv6 性能。
Kbd此包包含非美国键盘的键盘映射表和键盘工具。
Less此包包含一个很好用的文本文件查看器,在显示文件的内容时允许上下滚屏。
Libtool此包包含 GNU 通用库支持脚本。它将使用共享库的复杂性封装到统一的,可移植的接口。在其他的 LFS 软件包测试工具中需要它。
Linux Kernel此包是操作系统。它是 GNU/Linux 环境中的 Linux。
M4此包包含一个通用的文本宏处理器,用于为其他程序编译工具。
Make此包包含一个直接编译软件包的程序。LFS 中几乎每个软件包都需要它。
Man-DB此包包含查找和显示 man 手册页的程序。选择它代替 man 软件包是由于它卓越的国际化能力。它提供了 man 程序。
Man-pages此包包含基本的 Linux man 手册页的实际内容&MPC
此包包含复数的运算功能。GCC需要这个包。
MPFR此包包含用于多倍精度运算的函数。Gcc 需要它。
Ncurses此包包含字符终端处理库。它通常用于提供一个菜单系统的游标控制。
Patch此包包含一个根据补丁文件来修改或建立文件的程序,补丁文件通常是用 diff 程序创建的。 一些 LFS 软件包的编译过程会需要它。
Perl此包是运行时语言 PERL 的解释程序。
Procps此包包含用于监视系统进程的程序。
Psmisc此包包含用于显示进程信息的程序。
Readline此包是一个提供命令行编辑和历史纪录功能的库集合。它被 Bash 使用。
Sed此包允许在没有用编辑器打开的情况下编辑文本文件。大多数 LFS 软件包配置脚本也需要它。
Shadow此包包含在安全方式下处理密码的程序。
Sysklogd此包包含记录系统日志的程序,比如内核或守护进程处理意外事务的日志。
Sysvinit此包提供 init 程序,它是Linux系统上所有其他进程的父进程。
Tar此包为 LFS 中使用的几乎所有软件包提供归档和展开功能。
Tcl此包包含LFS 软件包中很多测试组件会用到的工具命令语言(Tool Command Language)。 它仅在临时工具链中***。
Texinfo此包包含用于读取、写入、转换 Info 文档的程序。它用于很多 LFS 软件包的***过程。
Udev此包包含用于动态建立设备节点的程序。 它是在 /dev 目录下创建数以千计静态设备的一个替代品。
Util-linux此包包含很多工具程序。 其中包括处理文件系统,控制台,分区和日志的工具&Vim此包包含一个编辑器。之所以选择它,是因为它与经典的 vi 编辑器兼容,以及它大量强大的功能。对很多用户来说,编辑器是非常个性化的选择, 如果需要,你可以将它替换成任何其他的编辑器。&XZ Utils
此包包含压缩和解压文件的程序。它提供了最高的压缩比,一般可用来解压XZ或LZMA压缩格式是非常有用的。
Zlib此包包含用于一些程序的压缩和解压缩工具。
LFS 的结构尽可能的遵循 Linux 标准。主要的标准是:
&&& &&& 注:需要免费注册。
LSB 有5个不同的标准: 核心, C++, 桌面, 运行时语言和打印。 除了一般要求,还有结构的具体要求。 LFS 会遵循上一节讨论的架构。&
& 注意许多人不同意LSB的要求。规定的主要目的是为了确保专有软件可以在兼容系统上正确***并运行。因为LFS 是基于源代码的,用户渴望完全控制哪些软件包,并且,很多人选择不***一些LSB明确规定的软件包。&建立一个性能通过LSB认证测试的,完整的 LFS 系统是可能的, 但还有许多超出LFS范围的软件包。在 BLFS 中,有大多数额外软件包的***指南。&需要符合LSB要求的由LFS提供的软件包LSB Core:&&&&&&&&&&&&&&&&& & & & & & & Bash, Binutils, Coreutils, Diffutils, File, Findutils,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Gawk, Grep, Gzip, M4, Man-DB, Ncurses, Procps,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Psmisc, Sed, Shadow, Tar, Util-linux, ZlibLSB C++:&&&&&&&&&&&&&&&&&& & & & &&&&& GccLSB Desktop:&&&&&&&&&&&&&&&&&&&&&&&& NoneLSB Runtime Languages:&&&&& PerlLSB Printing:&&&&&&&&&&&&&&&&&&&&&&&&& NoneLSB Multimeda:&&&&&&&&&&&&&&&&&&&& None&需要符合LSB要求的由BLFS提供的软件包LSB Core:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Bc, Cpio, Ed, Fcrontab, Initd-tools, PAM,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Sendmail (or Postfix or Exim)LSB C++:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& NoneLSB Desktop:&&&&&&&&&&&&&&&&&&&&&&&&& ATK, Cairo, Desktop-file-utils, Freetype,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Fontconfig, Glib2, GTK+2, Icon-naming-utils,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Libjpeg, Libpng, Libxml2, MesaLib, Pango,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Qt3, Qt4, XorgLSB Runtime Languages:&&&&&&& PythonLSB Printing:&&&&&&&&&&&&&&&&&&&&&&&&&& CUPSLSB Multimeda:&&&&&&&&&&&&&&&&&&&&& Alsa Libraries, NSPR, NSS, OpenSSL, Java&需要符合LSB要求的LFS 和 BLFS 没有提供的软件包LSB Core:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& At, Batch, Lsb_releaseLSB C++:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& NoneLSB Desktop:&&&&&&&&&&&&&&&&&&&&&&&&&& NoneLSB Runtime Languages:&&&&&&& NoneLSB Printing:&&&&&&&&&&&&&&&&&&&&&&&&&& NoneLSB Multimeda:&&&&&&&&&&&&&&&&&&&&&& Xdg-utils
LFS 目标架构
LFS系统主要的目标架构是32位的Intel CPU。如果你以前没有构建过Linux系统,你应该从这个目标开始。 32位架构是得到Linux最广泛支持的,并且对开放资源和商业软件的兼容性最好。&&另一方面,本书的用法说明已知,通过一些修改,该系统可以在 Power PC 和64位的AMD/Intel CPU 架构下运行。 为了构建适合这些CPU的系统,除了接下来几页以外,主要的先决条件是你要有一个相同目标架构的现存Linux系统,比如以前***的LFS, Ubuntu, Red Hat/Fedora, SuSE 或其他发布系统。 还要注意,32位发布系统可以在64位 AMD/Intel 计算机上***和使用。&&一些关于64位系统的其他情况需要添加在这里。和32位系统比较,可执行程序的容量稍微大一些,而速度仅快一点。例如, 在 Core2Duo CPU 上的 LFS-6.5 基础系统测试中,下面是统计结果:&Architecture
Build Time
Build Size32-bit
198.5 minutes
648MB64-bit
190.6 minutes
&就像你看到的,64位的编译速度只比32位的快 4%,而容量大9%。 使用64位系统得到的好处相对很少。当然,如果你有超过4GB的内存,或者要操作超过4GB的数据,那么64位系统的优点是很明显的。&在默认情况下,LFS 编译的64位系统是&纯净的&64位系统。也就是说,它只支持64位可执行文件。 构建一个 &多库(multi-lib)& 系统,需要将很多应用软件编译两次,一次用于32位系统,一次用于63位系统。在LFS系统不直接支持,是因为它干扰了提供易用的基本Linux系统指南 的教育目标。 对于这个高级主题,你可以参考
项目。&这是关于64位系统的最后讨论。当前有一些软件包不能在&纯净的&64位系统中编译,或者专门的编译指南。通常,这些包有一些嵌入式32位特定汇编语言指令,它们在64位系统编译时会失败。 这包括
中的一些Xorg 驱动。其中很多问题可以被绕过, 但是可能需要专门的程序或补丁。
LFS目标读者
为什么要读这本书呢?有许多原因,最主要的原因是可以学习如何直接从源代码***一个Linux 系统。许多人也许会问:"当你可以下载和***一个现成的 Linux 系统时,为什么要如此麻烦的从源代码开始手动构建一个 Linux 系统呢?"这是一个好问题,也是本书存在本节的原因。&这个项目存在的一个重要原因是为了帮助人们从里到外(from inside out) 学习Linux系统如何工作。 构建LFS系统可以帮助理解什么使Linux运转,以及各组件之间如何相互依赖协同工作。 最好的事情之一是这个学习经历使人们获得了定制符合自己需求的Linux系统的能力。&另一个关键的好处是,LFS允许你对系统拥有更大的控制权,而不是依赖他人的Linux实现。 在LFS世界里, 你坐在驾驶员的位置,决定着系统运行的每个细节。&LFS 允许你创建非常小巧的Linux系统。 在***常规的发行版时,你经常被迫***很多可能根本用不到或不明白的程序。这些程序浪费了宝贵的资源。你可以争辩说现在硬盘和CPU这些资源已经不再是负 担。 such resources are no longer a consideration. 然而,有时如果不考虑其它问题,你还是会被容量大小所限制。 想想启动CD,插入式USB盘和嵌入式系统,LFS在这些领域非常有用。&定制Linux系统的另一个优点是安全。 通过由源代码编译一个完整的系统,你能够审查任何东西,打上所有补丁。不必等别人编译好修复安全漏洞的二进制包。除非你自己发现并制作补丁,否则你无法确 定新的二进制包正确编译,并修复了问题。&LFS的目标是创建一个完整、可用的基础系统。如果你不想自己从头创建Linux,就不会从本书的信息中受益。&创建自己的LFS系统,还有很多好处,无法在这里一一列出。最后,教育是目前最强大的理由。随着你LFS经验的增长,你会发现LFS真正带给你的信息和知识的力量。
早在十年前的1998年,我就开始了学习和更好理解linux的旅程。那时我刚刚***了我的第一个 linux发布版,并很快被linux的设计理念和思想 体系所吸引。&有很多办法来完成单个任务。这句话同样适用于linux发布版。 很多已经存在了多年。 一些还存在, 一些已经演变成其它事情,也有一些已经放弃了我们的思想。 他们都做着不同的事情来满足目标读者的需要。因此可以有很多不同的办法来完成相同的最终目标, 我开始认为我不必再被任何人的成品所限制。在出现linux以前,因为你没有选择,我们不过是忍受 了其他操作系统的问题。 它就是它,不管你是否喜欢。 因为linux, 选择的观念开始显现。如果你不喜欢什么,就改变它,这是你的自由,甚至受到鼓励。&我试用了一些发行版,却不能决定使用任何一个。 它们都是伟大的系统。 它不是对和错的问题, 而是变成了个人任务的问题。 为了使它完全符合我自己的喜好, 我开始构建自己的linux系统。 因为都是可选择的,所以对于我来说, 它不再是一个简单的系统, 而是完美的。&为了把它真正的变成我自己的系统,我从源代码编译了所有需要的软件,来代替预编译的二进制包。 这个&完美的&linux系统将拥有其他发行版的强壮,而没 有它们显而易见的弱点。开始,这个想法看起来是令人感到畏惧的,但是我仍然坚信这个想法, 一个符合我特定需求的系统是可以构建的。&在处理好注入循环依赖和编译错误等各种问题之后,我终于创建了一个定制的Linux系统。 它功能完善,并且和其他Linux系统一样好用。但是,它是我自 己创建的。 你自己组建这样一个系统是很让人满足的。更好的是自己创建每一个软件。&当我把目标和经验与linux社区的其他成员共享时,显而易见,别人也有同样的想法。 很快,这个定制的Linux系统不仅满足用户的特殊需求, 而且也给程序员和系统管理员提供了一个提高Linux技能的机会。 由于这样广泛的兴趣, Linux From Scratch 项目诞生了。
这本 Linux From Scratch 文档给读者提供了设计并建构自定义的Linux系统的背景知识和过程指导。本书的重点是Linux From Scratch这个项目以及使用LFS系统带来的好处。 用户可以控制系统的所有特征, 包括目录布局、 脚本设置和安全设置等等。 最终的系统将从源代码直接编 译产生, 用户可以指定在哪里***、 为什么***及怎样***每一个程序。 本书使得读者可以完全按照自己的需求订制他们的Linux系统, 而且使用户对他们的系 统有更多的控制权。&希望您在自己的 LFS 系统上工作愉快,享受真正属于自己的系统所带来的各种好处。&-- Gerard&Beekmans gerard@linuxfromscratch.org&[译者注] "From Scratch"是一个词组,它的意思是"从零做起,白手起家,从无到有"的意思,因此"Linux From Scratch"本质上不应当理解为一个Linux发行版名称。它最贴切的含义应当是一种"方法/思想":一切从源代码开始的方法/思想。&
LFS人人小站使命
本站将奉献给喜欢Linux,想深入了解Linux,并希望自己定制Linux系统的朋友们。我们将提供最新版的LFS7.1翻译工作以及技术交流。
[致谢]感谢之前的 LFS 5.0 和 6.0 翻译小组以及翻译LFS6.11版的先生和LFS6.6的先生, 没有他们的辛勤工作,仅凭我一人之力,是不可能完成这项工作的。 同时也希望朋友们在预览中发现错误, 能及时提出建议和指正, 任何工作的完成都需要大家的支持。[译者声明]本文档虽然不是软件,但是本着GPL的精神发布。 任何人都可以自由使用、 分发、 转载, 包括对本文档进行各种商业性或是非商业性的复制和再分发, 但必须保留译者署名, 亦不得对声明中的任何条款作任何形式的修改, 也不得附加任何其它条件。 您可以自由链接、 下载、 传播此文档, 或者放置在您的网站上, 甚至作为产品的一部分发行, 但前提是必须保证全文完整转载, 包括完整的版权信息和作译者声明。 这里"完整"的含义是指不能进行任何删除/增添/注解。 若有删除/增添/注解,必须逐段明确声明那些部分并非本文档的一部分。&
站长在关注

参考资料

 

随机推荐