Skip to content
This repository has been archived by the owner on May 19, 2022. It is now read-only.

续章校对内容合并 #82

Merged
merged 6 commits into from
Dec 25, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions prologue/architecture.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

<title>LFS 的目标架构</title>

<para>LFS 当前主要支持 AMD/Intel 的 x86(32 位)和 x86_64(64 位)CPU。另外,本文档也涉及一些更改可以让 LFS 顺利地在 Power PC 和 ARM CPU 上运行。为了顺利构建 LFS,除了后面几页的内容外,你主要需要一个可以在当前 CPU 上正常运行的 Linux 系统,例如:早先版本的 LFS、Ubuntu、Red Hat/Fedora、SuSE 或者是在你的架构上可以运行的其它发行版。另外注意 32 位的发行版是可以在 64 位的 AMD/Intel 处理器上作为宿主机正常安装和运作的。</para>
<para>LFS 当前主要支持 AMD/Intel 的 x86(32 位)和 x86_64(64 位)构架的 CPU。另外,本文档也涉及一些更改以允许 LFS 顺利地在 Power PC 和 ARM CPU 上运行。为了顺利构建 LFS,除了后面几页的内容外,你主要需要一个可以在当前 CPU 上正常运行的 Linux 系统,例如:早先版本的 LFS、Ubuntu、Red Hat/Fedora、SuSE 或者是在你的架构上可以运行的其它发行版。另外注意 32 位的发行版是可以在 64 位的 AMD/Intel 处理器上作为宿主机正常安装和运作的。</para>

<para>不过,64 位的一些实情是:和 32 位相比,运行的速度稍微的快那么一点点,但是相较而言,体积也稍微的大一点点。以在 Core 2 Duo 处理器上运行的 LFS-6.5 系统为例,以下是一些实际的数据:</para>

Expand All @@ -20,12 +20,11 @@

<para>正如你看到的,64 位程序仅仅比 32 位程序快了 4%,体积大了 9%。由此可见,单纯的追逐 64 位系统其实并没有太大的必要。但是,假如你的电脑的内存超过了 4 GB 又或者说需要操作大于 4 GB 的数据,64 位系统的优势就比较明显了。</para>

<para>假如按照本文的默认方式构建,那么你将得到一个「纯」64 位系统————这意味着你仅能够执行 64 位的程序。构建「multi-lib」也并不是不可以,但是这意味着很多的程序都需要编译两次:一次编译为 32 位程序,一次编译为 64 位程序。不过,本文档并不涉及这部份的内容:这会干扰用户学习如何构建一份最基本的 Linux 系统。你可以通过阅读 <ulink url="http://trac.clfs.org/">Cross Linux From Scratch</ulink> 的相关内容获得有关本话题的更多帮助。</para>
<para>假如按照本文的默认方式构建,那么你将得到一个「纯」64 位系统————这意味着你仅能够执行 64 位的程序。构建「multi-lib」并不是不可以,但是这意味着很多的程序都需要编译两次:一次为 32 位程序编译,一次为 64 位程序编译。不过,本文档并不涉及这部份的内容:这将会干扰用户学习如何构建一份最基本的 Linux 系统。你可以通过阅读 <ulink url="http://trac.clfs.org/">Cross Linux From Scratch</ulink> 的相关内容获得有关该话题的更多帮助。</para>

<!-- This does not appear to be valid for LFS/BLFS any more
<para>关于 64 位系统,还有一点需要说明。有一些异常老旧的包无法在「纯」64 位系统上构建,或者是需要专门的编译指令。通常出现这样的问题是因为这些包包含有一些与 32 位系统紧密相关的汇编指令。这些包括一些 Xorg 的视频卡驱动(<ulink url="http://xorg.freedesktop.org/releases/individual/driver/">
http://xorg.freedesktop.org/releases/individual/driver/</ulink>),大多数类似的情况都有解决方案,但可能需要特别的方法或者是补丁。</para>
-->

</sect1>

15 changes: 7 additions & 8 deletions prologue/audience.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,18 @@

<title>致读者</title>

<para>说到为什么要读这本书,我想,原因一定很多。有些人可能会提出这样的疑问:<quote>都已经有现成的 Linux 系统可以下载和安装了,你为什么还要多此一举的从无到有创建一个呢?</quote></para>
<para>说到为什么要读这本书,我想,原因一定有很多。有些人可能会提出这样的疑问:<quote>都已经有现成的 Linux 系统可以下载和安装了,你为什么还要多此一举的从从头构建一个呢?</quote></para>

<para>此项目存在的一个重要原因是帮助你了解 Linux 内部是如何工作的。通过构建 LFS 系统,你可以更好的理解 Linux 是如何正常运转,和其它程序之间是如何协同工作,以及和其它程序之间的依赖关系。最棒的是,这个学习经历能给你提供自定义 Linux 系统以满足你自己独特需求的能力。</para>
<para>此项目存在的一个重要原因是帮助你了解 Linux 的内部是如何工作的。通过构建 LFS 系统,你可以更好的理解 Linux 的工作原理,以及程序是如何协同工作和相互依赖的。最棒的是,这个学习经历能给你提供自定义 Linux 系统以满足你自己独特需求的能力。</para>

<para>另一个重要的原因是,你对系统本身有更多的控制权,而不必知道别人是如何实现的。在 LFS 下,你就是主宰,系统的各个方面都需要你亲力亲为。</para>
<para>另一个重要的原因是,你对系统本身有更多的控制权,而不必知道别人的发行版是如何实现的。在 LFS 下,你就是主宰,系统的各个方面都需要你亲力亲为。</para>

<para>LFS 可以让你创建极其精简的 Linux 系统。当安装那些常规的 Linux 系统,你往往迫不得已安装那些你用不到的(甚至你都不知道它们是干什么的)程序。这些程序也许会浪费你的硬件资源。你可能要说了,现在计算机的资源那么丰富,稍微浪费一些又有什么关系呢。但是你依旧要考虑到可引导 CD、USB 棒或者是一些嵌入式环境,它们对资源高度敏感,这恰恰是 LFS 所擅长的地方。</para>
<para>LFS 可以让你创建极其精简的 Linux 系统。当在安装那些常规的 Linux 系统时,你往往会迫不得已而安装那些你用不到的(甚至你都不知道它们是干什么用的)程序。这些程序也许会浪费你的硬件资源。或许你可能会说,现在计算机的资源那么丰富,稍微浪费一些又有什么关系呢。但是你依旧要考虑到可引导 CD、U 盘或者是一些嵌入式的环境,它们对资源高度敏感,这也恰恰是 LFS 所擅长的地方。</para>

<para>另一个优势是,自定义的 Linux 系统有更高的安全性。通过从源码构建一个完整的系统,你有权审核所有的代码和打入所需的安全补丁。这避免了花很长时间去等待别人编译修复了安全漏洞的二进制程序。而且,除非你检查了补丁文件且做了完整的验证,否则你又怎么能确信,新的二进制程序的的确确编译正确且解决了问题呢?</para>
<para>另一个优势是,自定义的 Linux 系统有着更高的安全性。通过从源码构建一个完整的系统,你有权审核所有的代码以及所打入的安全补丁。也就没必要去在等别人编译修复该安全漏洞的二进制程序了。而且,除非你亲自检查了补丁文件并且做了完整的测试,否则你又怎么能确信,新的二进制程序确实是正确的编译且解决了问题呢?</para>

<para>从零构建一个基本可用的 Linux 系统是本书的目标,如果你并不打算这么做,那么,这本书可能对你来说用处并不大。</para>
<para>从头构建一个基本可用的 Linux 系统是本书的目标,如果你并不打算这么做,那么,这本书可能对你来说用处并不大。</para>

<para>有太多的原因来支撑你从头构建属于自己的 LFS 系统了。最重要的原因,我想还是当你学会构建 LFS 后,就会发现你已经学会太多的相关信息和知识了。</para>
<para>支撑你从头构建属于自己的 LFS 系统的原因实在是太多了。但说到最后,其中最重要的一个原因还是教学。随着你的 LFS 经验愈趋熟稔,这些信息和知识真正给你带来的力量,你也便了然于胸了。</para>

</sect1>

4 changes: 2 additions & 2 deletions prologue/bookinfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<authorgroup>
<author>
<firstname>创建:Gerard</firstname>
<firstname>项目创建者:Gerard</firstname>
<surname>Beekmans</surname>
</author>
<author>
Expand Down Expand Up @@ -40,7 +40,7 @@

<legalnotice>

<para>版权 &copy; &copyrightdate;, Gerard Beekmans</para>
<para>Copyright &copy; &copyrightdate;, Gerard Beekmans</para>

<para>版权所有。</para>

Expand Down
12 changes: 6 additions & 6 deletions prologue/foreword.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@

<para>自 1998 年始,我对 Linux 从学习到深入了解已十年有余。在安装好我的第一个 Linux 发行版后,我很快就为 Linux 所蕴含的整套理念及其背后的哲学思想所着迷。</para>

<para>做一件事总是有很多的方法。对于 Linux 发行版亦是如此。这么多年来已有了许多发行版。一些仍在,一些演变成其他的版本,还有些则只能活在记忆中了。所有这些发行版均有不同的特点,以满足不同受众的需求。条条大路通罗马,我开始意识到自己可以不再必须受限于别人做好的发行版。在发现 Linux 之前,我们只能忍受各种操作系统的问题,因为我们别无选择。无论你爱还是不爱,它就在那里。而在 Linux 下,你才有了选择的可能。如果不喜欢某个东西,就可以自由地改变它,Linux 甚至鼓励你这样做。</para>
<para>殊途同归,对 Linux 的发行版而言亦是如此。这些年来,这么多的发行版层出不迭,或是今尚犹在,或是今非昔比,或是恸不复存。所有这些发行版均有不同的特点,以满足不同受众的需求。条条大路通罗马,我开始意识到自己可以不再必须受限于别人做好的发行版。在发现 Linux 之前,我们只能忍受各种操作系统的问题,因为我们别无选择。无论你爱还是不爱,它就在那里。而在 Linux 下,你才有了选择的可能。如果不喜欢某个东西,就可以自由地改变它,Linux 甚至还鼓励你这样做。</para>

<para>我尝试过很多发行版,但是无法确定该用哪个。从某个角度来说,它们都是很不错的系统。这并不是说某个系统好或不好的问题,而是个人习惯问题。在各种可用选择中,显然没有哪个单一的系统对我而言是完美的。于是我着手创建自己的 Linux 系统,以完全满足自己的喜好。</para>

<para>为了使系统真正属于我,我毅然决定从源代码编译所有东西,而不是使用预编译好的二进制包。这个<quote>完美</quote> 的 Linux 系统能具不同系统的优点,而没有它们与之俱来的不足。起初,这种想法相当让人想都不敢想,但我一直保持着可以构建出这样一个系统的信念。</para>
<para>为了使系统真正地属于我,我毅然决定开始从源代码编译所有东西,而不是使用预编译好的二进制包。这个<quote>完美</quote>的 Linux 系统能够拥有不同系统的优点,而不会有它们与之俱来的不足。起初,这种想法让人想都不敢想,但我一直保持着可以构建出这样一个系统的信念。</para>

<para>在梳理了诸如循环依赖和编译错误之类的问题后,我最终构建出一个订制的 Linux 系统。它完全可以工作,并与当时已有的任何其它 Linux 系统一样完美可用。但它是我自己所创造的。能够亲手组装出这样一个系统让人很满意,而唯一一个能让人感觉更美妙的事是能够亲自创建软件的每个部分。</para>
<para>在梳理了诸如循环依赖和编译错误之类的问题后,我最终构建出了一个订制的 Linux 系统。它运转自如,用起来与当时的那些 Linux 系统一样完美,但它是由我亲手打造的。能组装出这样一个系统让我很满意,而与之相比更棒的,恐怕唯有在软件的各个方面都亲历亲为了,不过这也可算是第二棒的事了。</para>

<para>当我将自己的目标和经验与 Linux 社区的其它成员分享时,引发了大家对这些想法的不断关注。很快人们就清楚地意识到,这样一个定制的 Linux 系统不仅仅可以满足用户的特定需求,还可为程序员和系统管理员提供一个理想的学习机会,以增强他们(已有)的 Linux 技能。正是由于这种广泛的兴趣,<emphasis>Linux From Scratch Project</emphasis> 诞生了。</para>
<para>当我将自己的目标和经验与 Linux 社区的其它成员分享时,引发了大家对这些想法的不断关注。很快人们就清楚地意识到,这样一个定制的 Linux 系统不仅仅可以满足用户的特定需求,还可为程序员和系统管理员提供一个理想的学习机会,以增强他们(已有)的 Linux 技能。正是由于这种广泛的兴趣,<emphasis>Linux From Scratch 项目</emphasis>诞生了。</para>

<para>这本 Linux From Scratch 手册是该项目的重中之重。它为您提供了设计和构建自己的系统所需的背景知识和指令。本手册给出了一个样板,可以由此得到一个能正常工作的系统,但您可自由改变指令以适合自己的需求,从某种程度上说,这是本项目的一个重要组成部分。您仍然可以控制一切,我们只是在你起航前助你一臂之力。</para>
<para>这本 Linux From Scratch 手册是该项目的重中之重。它为您提供了设计和构建自己的系统所需的背景知识和指令。本手册给出了一个样板,可以由此得到一个能正常工作的系统,但您可自由改变指令以适合自己的需求,从某种程度上说,这是本项目的一个重要组成部分。您仍然可以控制一切,我们只是在你起航之前助你一臂之力。</para>

<para>我真诚地希望您在自己的 Linux From Scratch 系统上能度过一段美好的时光,并能享受拥有一个真正属于自己的系统的众多好处。</para>
<para>我真诚地希望您在自己的 Linux From Scratch 系统上能度过一段美好的时光,并能够享受拥有一个真正属于自己的系统的众多好处。</para>

<literallayout>--
Gerard Beekmans
Expand Down
2 changes: 1 addition & 1 deletion prologue/organization.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<sect2>
<title>第三部分 构建 LFS 系统</title>

<para>第三部分引导用户开始 LFS 系统的构建 &mdash; 逐一的编译和安装所有的软件包,设置启动脚本,安装内核。生成的 Linux 系统是继续编译其它一系列软件的基础,通过那些软件来扩展系统,系统才能更好地满足我们的需求。在本书的最后,我们还给出了一个便于使用的引用列表,包括安装好的程序、库和一些重要文件。</para>
<para>第三部分引导用户开始 LFS 系统的构建——逐一的编译和安装所有的软件包,设置启动脚本,安装内核。生成的 Linux 系统是继续编译其它一系列软件的基础,通过那些软件来扩展系统,系统才能更好地满足我们的需求。在本书的最后,我们还给出了一个便于使用的引用列表,包括安装好的程序、库和一些重要文件。</para>
</sect2>

</sect1>
2 changes: 1 addition & 1 deletion prologue/prerequisites.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<para>构建一个 LFS 系统并不是一个简单的任务。它要求对 Unix 系统管理有一定水平的了解,以便可以解决问题并正确地执行所列出的命令。特别是,最起码你应该有使用命令行(shell)复制或移动文件和目录、列出目录和文件内容、切换当前目录的能力。同时也希望你有使用和安装 Linux 软件的基本知识。</para>

<para>因为 LFS 书中假设你<emphasis>至少</emphasis>有这些基本技能,所以众多的 LFS 支持[论坛看起来在这方面给你提供不了太多帮助。你会发现对于这些基本知识的问题并不会得到解答,或者会简单的建议你去看一下 LFS 主要的提前阅读列表。</para>
<para>因为 LFS 书中假设你<emphasis>至少</emphasis>有这些基本技能,所以众多的 LFS 支持论坛看起来在这方面给你提供不了太多帮助。你会发现对于这些基本知识的问题并不会得到解答,或者会简单的建议你去看一下 LFS 主要的提前阅读列表。</para>

<para>构建 LFS 系统之前,我们建议阅读以下内容:</para>

Expand Down
7 changes: 3 additions & 4 deletions prologue/standards.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<listitem>
<para><ulink url="http://refspecs.linuxfoundation.org/lsb.shtml">Linux 标准规范(LSB) 5.0 版本</ulink></para>

<para>LSB 有四个独立的标准:核心、桌面、运行时语言和成像。除了普通的要求,还有架构特定要求。此外还有两个领域在试行:分别是 Gtk3 和图形。LFS 试图遵从前一节中所讨论的架构要求。</para>
<para>LSB 有四个独立的标准:核心、桌面、运行时语言和成像。除了通用要求,还有架构特定要求。此外还有两个领域在试行:分别是 Gtk3 和图形。LFS 试图遵从前一节中所讨论的架构要求。</para>

<note><para>很多人不认同 LSB 的要求。定义它的主要目的是确保私有软件能够在兼容的系统上安装并正常运行。由于 LFS 是基于源代码的,用户对于需要什么软件包有完全的控制权,很多人选择不安装 LSB 规范所要求的软件包。</para></note>

Expand Down Expand Up @@ -71,7 +71,7 @@
</varlistentry>

<varlistentry>
<term><emphasis>LSB Gtk3 和 LSB 图形(试行):</emphasis></term>
<term><emphasis>LSB Gtk3 和 LSB 图形(试用):</emphasis></term>
<listitem>
<para>无</para>
</listitem>
Expand Down Expand Up @@ -117,7 +117,7 @@
</varlistentry>

<varlistentry>
<term><emphasis>LSB Gtk3 和 LSB 图形(试行):</emphasis></term>
<term><emphasis>LSB Gtk3 和 LSB 图形(试用):</emphasis></term>
<listitem>
<para>GTK+3</para>
</listitem>
Expand Down Expand Up @@ -168,4 +168,3 @@
</variablelist>

</sect1>

5 changes: 2 additions & 3 deletions prologue/typography.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
<screen role="nodump"><userinput>CC="gcc -B/usr/bin/" ../binutils-2.18/configure \
--prefix=/tools --disable-nls --disable-werror</userinput></screen>

<para>注意,反斜杠后面必须紧跟一个回车符。其它空格字符,例如空格和 tab 键会导致错误结果。</para>
<para>注意,反斜杠后面必须紧跟一个回车符。其它空格字符,例如空格和 Tab 会导致错误结果。</para>

<screen><computeroutput>install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'</computeroutput></screen>

<para>这种形式的文本(定宽文本)显示屏幕输出,通常是所运行命令的输出结果。 这种形式也用来显示文件名,例如: <filename>/etc/ld.so.conf</filename>。</para>
<para>这种形式的文本(等宽文本)显示屏幕输出,通常是所运行命令的输出结果。 这种形式也用来显示文件名,例如: <filename>/etc/ld.so.conf</filename>。</para>

<para><emphasis>强调</emphasis></para>

Expand Down Expand Up @@ -57,4 +57,3 @@ EOF</userinput></screen>
<filename>/usr/share/man/man1/passwd.1</filename>。在这个例子中,你需要执行 <command>man 5 passwd</command> 才能阅读指定的手册页面。应该注意的是,大部分的手册页面在不同部分不会有重复的页面名字。因此,<command>man <replaceable>&lt;program name&gt;</replaceable></command> 通常就足够了。</para>

</sect1>