Synchornize translation with the FreeBSD Simplified Chinese project's

repository.  Actual work was done by loader@ and I.
This commit is contained in:
Xin LI 2011-10-14 20:49:59 +00:00
parent fe66e03460
commit 7bff1e4e51
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=37829
17 changed files with 965 additions and 200 deletions

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Chinese Documentation Project
Original Revision: 1.246
Original Revision: 1.247
$FreeBSD$
-->
@ -218,34 +218,38 @@
所有特定的改变应该在 <filename>rc.conf</filename> 中。</para>
<para>在集群应用中,为了降低管理成本,
可以应用多种策略把涉及全站范围的设置从特定于系统的设置中分离出来。
建议的方法是将全站范围的设置放在另一个文件中,例如
<filename>/etc/rc.conf.site</filename>
并且把它包含进然后把这个文件包括进只包含系统指定信息的
<filename>/etc/rc.conf</filename>。</para>
<para>由于 <filename>rc.conf</filename> 可以被 &man.sh.1;
阅读,所以达到这个目的很简单,例如:</para>
可以采用多种策略把涉及全站范围的设置从特定于系统的设置中分离出来。
推荐的方法是把系统范围的配置放到
<filename>/etc/rc.conf.local</filename> 文件中。
例如:</para>
<itemizedlist>
<listitem><para>rc.conf:</para>
<programlisting> . /etc/rc.conf.site
hostname="node15.example.com"
network_interfaces="fxp0 lo0"
ifconfig_fxp0="inet 10.1.1.1"</programlisting></listitem>
<listitem><para>rc.conf.site:</para>
<programlisting> defaultrouter="10.1.1.254"
saver="daemon"
blanktime="100"</programlisting></listitem>
<listitem><para><filename>/etc/rc.conf</filename>:</para>
<programlisting>sshd_enable="YES"
keyrate="fast"
defaultrouter="10.1.1.254"</programlisting></listitem>
<listitem><para><filename>/etc/rc.conf.local</filename>:</para>
<programlisting>hostname="node1.example.org"
ifconfig_fxp0="inet 10.1.1.1/8"</programlisting></listitem>
</itemizedlist>
<para><filename>rc.conf.site</filename> 文件可以使用
<command>rsync</command> 或类似程序分发给各个系统
同时各系统的 <filename>rc.conf</filename> 文件仍保持独立。</para>
<para><filename>rc.conf</filename> 文件可以通过
<command>rsync</command> 或类似的程序来分发到所有的机器上
而各自的 <filename>rc.conf.local</filename> 文件则保持不变。</para>
<para>使用 &man.sysinstall.8; 或者 <command>make world</command>
来升级系统不会覆盖 <filename>rc.conf</filename>
文件, 所以系统配置信息不会丢失。</para>
<tip>
<para>配置文件 <filename>/etc/rc.conf</filename>
是通过 &man.sh.1; 解析的。 这使得系统管理员可以在其中添加一些逻辑,
从而创建能够适应非常复杂的场景的配置。 请参阅联机手册
&man.rc.conf.5; 来了解关于这一话题的进一步信息。</para>
</tip>
</sect1>
<sect1 id="configtuning-appconfig">

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.252
Original Revision: 1.255
$FreeBSD$
-->
@ -188,8 +188,8 @@ Components src world kernel</programlisting>
<para>这个参数是控制 &os; 的哪一部分将被保持更新。
默认的是更新源代码,整个基本系统还有内核。
这些部件跟安装时的那些相同,举例来说,
在这里加入 “world/games” 就会允许打入游戏相关的补丁。
使用 “src/bin” 则是允许更新
在这里加入 <literal>world/games</literal> 就会允许打入游戏相关的补丁。
使用 <literal>src/bin</literal> 则是允许更新
<filename class="directory">src/bin</filename>
目录中的源代码。</para>
@ -293,16 +293,16 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
就需要重新启动系统。这将使 &os;
装载新的二进制程序进内存。</para>
<para><command>freebsd-update</command> 工具只能自动更新 <literal>GENERIC</literal> 内核。
<para><command>freebsd-update</command> 工具只能自动更新 <filename>GENERIC</filename> 内核。
如果您使用自行联编的内核, 则在 <command>freebsd-update</command>
安装完更新的其余部分之后需要手工重新联编和安装内核。 不过,
<command>freebsd-update</command> 会检测并更新位于 <filename
class="directory">/boot/GENERIC</filename> (如果存在) 中的
<literal>GENERIC</literal> 内核, 即使它不是当前 (正在运行的)
<filename>GENERIC</filename> 内核, 即使它不是当前 (正在运行的)
系统的内核。</para>
<note>
<para>保存一份 <literal>GENERIC</literal> 内核的副本到 <filename
<para>保存一份 <filename>GENERIC</filename> 内核的副本到 <filename
class="directory">/boot/GENERIC</filename> 是一个明智的主意。
在诊断许多问题, 以及在
<xref linkend="freebsdupdate-upgrade"> 中介绍的使用
@ -346,20 +346,20 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
<literal>yes</literal>,这会帮助在编译过程中免去人工的介入。</para>
<para>如果正在使用的是定制的内核, 则升级操作会复杂一些。
您会需要将一份 <literal>GENERIC</literal> 内核的副本放到 <filename
您会需要将一份 <filename>GENERIC</filename> 内核的副本放到 <filename
class="directory">/boot/GENERIC</filename>。 如果系统中没有
<literal>GENERIC</literal> 内核, 可以用以下两种方法之一来安装:</para>
<filename>GENERIC</filename> 内核, 可以用以下两种方法之一来安装:</para>
<itemizedlist>
<listitem>
<para>如果只联编过一次内核, 则位于
<filename class="directory">/boot/kernel.old</filename> 中的内核,
就是 <literal>GENERIC</literal> 的那一个。 只需将这个目录改名为
就是 <filename>GENERIC</filename> 的那一个。 只需将这个目录改名为
<filename class="directory">/boot/GENERIC</filename> 即可。</para>
</listitem>
<listitem>
<para>假如能够直接接触机器, 则可以通过 CD-ROM 介质来安装 <literal>GENERIC</literal>
<para>假如能够直接接触机器, 则可以通过 CD-ROM 介质来安装 <filename>GENERIC</filename>
内核。 将安装盘插入光驱, 并执行下列命令:</para>
<screen>&prompt.root; <userinput>mount /cdrom</userinput>
@ -369,12 +369,12 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
<para>您需要将 <filename
class="directory"><replaceable>X.Y-RELEASE</replaceable></filename>
替换为您正在使用的版本。
<literal>GENERIC</literal> 内核默认情况下会安装到 <filename
<filename>GENERIC</filename> 内核默认情况下会安装到 <filename
class="directory">/boot/GENERIC</filename>。</para>
</listitem>
<listitem>
<para>如果前面的方法都不可用, 还可以使用源代码来重新联编和安装 <literal>GENERIC</literal>
<para>如果前面的方法都不可用, 还可以使用源代码来重新联编和安装 <filename>GENERIC</filename>
内核:</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
@ -383,14 +383,14 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
&prompt.root; <userinput>rm -rf /boot/GENERIC/boot</userinput></screen>
<para>如果希望 <command>freebsd-update</command> 能够正确地将内核识别为
<literal>GENERIC</literal> 您必须确保没有对
<literal>GENERIC</literal> 配置文件进行过任何变动。
<filename>GENERIC</filename> 您必须确保没有对
<filename>GENERIC</filename> 配置文件进行过任何变动。
此外, 建议您取消任何其他特殊的编译选项 (例如使用空的
<filename>/etc/make.conf</filename>)。</para>
</listitem>
</itemizedlist>
<para>上述步骤并不需要使用这个 <literal>GENERIC</literal> 内核来引导系统。</para>
<para>上述步骤并不需要使用这个 <filename>GENERIC</filename> 内核来引导系统。</para>
<para>重大和次要的更新可以由
<command>freebsd-update</command> 命令后指定一个发行版本来执行,
@ -432,7 +432,7 @@ This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install"</screen>
<para>此时您可以暂时安全地无视这个警告。 更新的
<literal>GENERIC</literal> 内核将在升级过程的中间步骤中使用。</para>
<filename>GENERIC</filename> 内核将在升级过程的中间步骤中使用。</para>
<para>在下载完针对本地系统的补丁之后, 这些补丁会被应用到系统上。
这个过程需要消耗的时间取决于机器的速度和其负载。
@ -463,12 +463,12 @@ before running "/usr/sbin/freebsd-update install"</screen>
<screen>&prompt.root; <userinput>nextboot -k GENERIC</userinput></screen>
<warning>
<para>在使用 <literal>GENERIC</literal> 内核启动之前,
<para>在使用 <filename>GENERIC</filename> 内核启动之前,
请确信它包含了用于引导系统所需的全部驱动程序 (如果您是在远程进行升级操作,
还应确信网卡驱动也是存在的)。 特别要注意的情形是,
如果之前的内核中静态联编了通常以内核模块形式存在的驱动程序, 一定要通过
<filename>/boot/loader.conf</filename> 机制来将这些模块加载到
<literal>GENERIC</literal> 内核的基础上。 此外,
<filename>GENERIC</filename> 内核的基础上。 此外,
您可能也希望临时取消不重要的服务、
磁盘和网络挂载等等, 直到升级过程完成为止。</para>
</warning>
@ -506,7 +506,7 @@ before running "/usr/sbin/freebsd-update install"</screen>
<screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
<para>如果您临时用过 <literal>GENERIC</literal> 内核来引导系统,
<para>如果您临时用过 <filename>GENERIC</filename> 内核来引导系统,
现在是按照通常的方法重新联编并安装新的定制内核的时候了。</para>
<para>重新启动机器进入新版本的 &os; 升级过程至此就完成了。</para>
@ -2689,7 +2689,7 @@ Building everything..
<para>在删除文件时, 系统会针对每个文件都给出提示。
您可以跳过这些提示, 并让系统自动完成删除操作,
方法是使用 make 变量 <makevar>BATCH_DELETE_OLD_FILES</makevar>
具体做法如下:<para>
具体做法如下:</para>
<screen>&prompt.root; <userinput>make -DBATCH_DELETE_OLD_FILES delete-old</userinput></screen>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.98
Original Revision: 1.115
$FreeBSD$
-->
@ -55,7 +55,8 @@
<application>KOffice</application>、
<application>AbiWord</application>、
<application>GIMP</application>、
<application>OpenOffice.org</application>)</para>
<application>OpenOffice.org</application>、
<application>LibreOffice</application>)</para>
</listitem>
<listitem>
@ -165,7 +166,7 @@
</indexterm>
<para><application>Firefox</application> 是一个现代, 自由,
开放源代码稳定的浏览器, 并完全移植到了 &os; 上:
开放源代码稳定的浏览器, 并完全移植到了 &os; 上:
它的特性包括有一个非常标准的 HTML 显示引擎,
标签式浏览, 弹出窗口阻止, 扩展插件, 改进的安全性, 等等。
<application>Firefox</application> 是基于
@ -175,11 +176,11 @@
<screen>&prompt.root; <userinput>pkg_add -r firefox</userinput></screen>
<para>这将会安装 <application>Firefox</application> 3.6
如果希望运行 <application>Firefox</application> 3.5
<para>这将会安装 <application>Firefox</application> 7.0
如果希望运行 <application>Firefox</application> 3.6
则应使用下面的命令:</para>
<screen>&prompt.root; <userinput>pkg_add -r firefox35</userinput></screen>
<screen>&prompt.root; <userinput>pkg_add -r firefox36</userinput></screen>
<para>如果你希望从源代码编译的话,
可以通过 Ports Collection 安装:</para>
@ -187,9 +188,9 @@
<screen>&prompt.root; <userinput>cd /usr/ports/www/firefox</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>对于 <application>Firefox</application> 3.5
<para>对于 <application>Firefox</application> 3.6
对应的命令中的 <literal>firefox</literal> 应改为
<literal>firefox35</literal>。</para>
<literal>firefox36</literal>。</para>
</sect2>
<sect2 id="moz-java-plugin">
@ -198,75 +199,42 @@
<note>
<para>在这一节和接下来的两节中,
我们均假定您已经安装了 <application>Firefox</application>。</para>
<para>目前, &java; 插件还不能够配合
<application>Firefox</application> 3.6 使用。</para>
</note>
<para>&os; 基金会拥有来自 Sun Microsystems 的关于发布针对 &os;
的预编译版本的 Java 运行环境
(&jre;) 和 Java 开发包 (&jdk;) 的授权。 用于
&os; 的预编译版本可以在 <ulink
url="http://www.freebsdfoundation.org/downloads/java.shtml">&os;
基金会</ulink> 网站上找到。</para>
<para>通过 Ports 套件来安装 <application>OpenJDK 6</application>
输入下面的命令:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/java/openjdk6</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>要为 <application>Firefox</application>
添加 &java; 支持,您必须首先安装 <filename
role="package">java/javavmwrapper</filename> port。
接下来, 从 <ulink
url="http://www.freebsdfoundation.org/downloads/java.shtml"></ulink>
下载 <application>Diablo &jre;</application> 软件包,
并使用 &man.pkg.add.1; 来安装它。</para>
<para>接下来安装 <filename
role="package">java/icedtea-web</filename> port</para>
<note>
<para>以上提到的网站并不提供 &os;&nbsp;8.<replaceable>X</replaceable>
的二进制包。 但仍然能够在 &os;&nbsp; 8.<replaceable>X</replaceable>
系统上使用 7.<replaceable>X</replaceable> 的包。
只需要在安装之前装上 <filename role="package">misc/compat7x</filename>
port 就行了。</para>
<para>或者也可以通过 Ports 安装 <application>Diablo &jre;</application>
(以及 <application>Diablo &jdk;</application>
相关的 ports 包括
<filename role="package">java/diablo-jre16</filename> 和
<filename role="package">java/diablo-jdk16</filename>)。
由于许可证的问题, 从 Ports 安装需要手工下载源代码(distfiles)。
当你运行 <command>make <maketarget>install</maketarget></command>
命令时, 会显示出具体有关下载的提示。</para>
</note>
<screen>&prompt.root; <userinput>cd /usr/ports/java/icedtea-web</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>启动浏览器, 并在地址栏中输入
<literal>about:plugins</literal> 然后按
<keycap>Enter</keycap>。 浏览器将给出一个页面,
其中会显示已经安装的插件,
您应在这个列表中找到 <application>&java;</application>
插件。 如果不是这样的话, 每个用户则需要运行如下命令:</para>
<para>请确认在编译上述 port 时使用的是系统预设的配置。</para>
<screen>&prompt.user; <userinput>ln -s /usr/local/diablo-jre1.6.0/plugin/<replaceable>i386</replaceable>/ns7/libjavaplugin_oji.so \
<para>启动浏览器并在地址栏中输入 <literal>about:plugins</literal>
然后按 <keycap>Enter</keycap>。
浏览器将会呈现一个列出所有已安装插件的页面;
<application>&java;</application> 插件应在其中出现。</para>
<para>如果浏览器找不到插件, 则用户可能必须运行下面的命令,
并重启浏览器:</para>
<screen>&prompt.user; <userinput>ln -s /usr/local/lib/IcedTeaPlugin.so \
$HOME/.mozilla/plugins/</userinput></screen>
<para>or, if you installed the <application>Diablo
&jdk;</application> package:</para>
<screen>&prompt.user; <userinput>ln -s /usr/local/diablo-jdk1.6.0/jre/plugin/<replaceable>i386</replaceable>/ns7/libjavaplugin_oji.so \
$HOME/.mozilla/plugins/</userinput></screen>
<para>然后重启浏览器。</para>
<note>
<para>以上命令假定您使用的是
&arch.i386; 平台, 不过, 我们也提供适用于 &arch.amd64;
的预编译包。</para>
</note>
</sect2>
<sect2 id="moz-flash-plugin">
<title>Firefox 与 &macromedia; &flash; 插件</title>
<title>Firefox 与 &adobe; &flash; 插件</title>
<indexterm>
<primary>Flash</primary>
</indexterm>
<para>&macromedia; &flash; 插件并没有直接提供其 &os; 版本。 不过,
<para>&adobe; &flash; 插件并没有直接提供其 &os; 版本。 不过,
我们有一个软件层 (wrapper) 可以用来运行 Linux 版本的插件。
这个 wrapper 也支持 &adobe; &acrobat;、
RealPlayer 和很多其他插件。</para>
@ -314,13 +282,13 @@
<screen>&prompt.root; <userinput>ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so \
/usr/local/lib/browser_plugins/</userinput></screen>
<para>如果系统中没有 <filename
class="directory">/usr/local/lib/browser_plugins</filename>
目录, 则应手工创建它。</para>
</step>
</procedure>
<para>Once the right &flash; port, according to the &os; version
you run,
is installed, the plugin must be installed by each
user with <command>nspluginwrapper</command>:</para>
<para>按照 &os; 版本, 在安装了正确的 &flash; port 之后,
插件必须由每个用户运行 <command>nspluginwrapper</command>
安装:</para>
@ -390,12 +358,29 @@
&prompt.root; <userinput>make install clean</userinput></screen>
<para>要安装 Linux 版本的
<application>Opera</application>,将上面例子中的
<literal>opera</literal> 替换为 <literal>linux-opera</literal>。Linux
版本在某些情况下非常有用,象是使用只有 Linux 版本的插件,例如 <application>Adobe
&acrobat.reader;</application>。就其它方面来说,
FreeBSD 和 Linux 版本的功能是完全一样的。</para>
<application>Opera</application> 将上面例子中的
<literal>opera</literal> 改为
<literal>linux-opera</literal> 即可。</para>
<para>&adobe; &flash; 插件目前并没有提供 &os; 专用的版本。
不过, 可以使用其 &linux; 版本的插件。 要安装这个版本,
需要安装 <filename
role="package">www/linux-f10-flashplugin10</filename> port
以及 <filename
role="package">www/opera-linuxplugins</filename></para>
<screen>&prompt.root; <userinput>cd /usr/ports/www/linux-f10-flashplugin10</userinput>
&prompt.root; <userinput>make install clean</userinput>
&prompt.root; <userinput>cd /usr/ports/www/opera-linuxplugins</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>然后可以检查插件是否可用了:
在地址栏中输入 <literal>opera:plugins</literal>
然后按 <keycap>Enter</keycap>。 浏览器将列出可用的插件列表。</para>
<para>添加 <application>&java;</application> 插件的方法,
与 <link linkend="moz-java-plugin">为
Firefox 添加插件</link> 的方法相同。</para>
</sect2>
<sect2>
@ -474,6 +459,14 @@
<entry>长</entry>
<entry><application>&jdk;</application>、 <application>Mozilla</application></entry>
</row>
<row>
<entry><application>LibreOffice</application></entry>
<entry>较重</entry>
<entry>巨大</entry>
<entry><application>Gtk+</application> 或 <application>KDE</application>/
<application>GNOME</application> 或 <application>&jdk;</application></entry>
</row>
</tbody>
</tgroup>
</informaltable>
@ -650,6 +643,84 @@
<screen>&prompt.user; <userinput>openoffice.org</userinput></screen>
</sect2>
<sect2>
<title>LibreOffice</title>
<indexterm>
<primary><application>LibreOffice</application></primary>
</indexterm>
<indexterm>
<primary>办公套件</primary>
<secondary><application>LibreOffice</application></secondary>
</indexterm>
<para><application>LibreOffice</application> 是由 <ulink
url="http://www.documentfoundation.org/">The Document
Foundation</ulink> 开发的自由软件办公套件,
它与其他平台上的主流办公系统兼容。 这是
<application>OpenOffice.org</application> 的一个贴牌的分支版本,
包含了完整办公效率套件中必备的应用:
文字处理、 电子表格、 幻灯演示、 绘图工具、
数据库管理程序, 以及用于创建和编辑数学公式的程序。
它提供了许多不同语言的支持 &mdash; 国际化支持除了界面之外,
还包括了拼写检查器和字典。</para>
<para><application>LibreOffice</application>
的字处理程序使用了内建的 XML 文件格式,
以期获得更好的可移植性和灵活性。
电子表格程序提供了一种可以与外部数据库交互的宏语言支持。
<application>LibreOffice</application> 目前已经可以稳定运行于
&windows;、 Linux、 FreeBSD 和
&macos;&nbsp;X。 关于 <application>LibreOffice
</application> 的更多信息可以在
<ulink url="http://www.libreoffice.org/">LibreOffice 网站</ulink>
找到。
</para>
<para>如果希望通过预编译的二进制包安装 <application>LibreOffice</application>
执行:</para>
<screen>&prompt.root; <userinput>pkg_add -r libreoffice</userinput></screen>
<note>
<para>如果运行的是 &os; 的 -RELEASE 版本, 这个命令应该不会遇到任何问题。</para>
</note>
<para>装好软件包之后, 需要用下面的命令来安装 <application>LibreOffice</application>
</para>
<screen>&prompt.user; <userinput>libreoffice</userinput></screen>
<note>
<para>在首次运行时, 系统会询问一系列问题,
并在当前用户的主目录中创建 <filename class="directory">.libreoffice</filename>
目录。</para>
</note>
<para>如果 <application>LibreOffice</application> 软件包不可用,
您还是可以通过 port 安装。 不过,
请注意编译它需要相当多的磁盘空间和时间。</para>
<screen>&prompt.root; <userinput>cd /usr/ports/editors/libreoffice</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<note>
<para>如果希望编译本地化的版本, 把前面的命令换成:</para>
<screen>&prompt.root; <userinput>make LOCALIZED_LANG=<replaceable>your_language</replaceable> install clean</userinput></screen>
<para>您需要把
<replaceable>your_language</replaceable> 换成正确的语言 ISO 代码。
可用的代码可以在 port 的 <filename>Makefile</filename>
中的 <maketarget>pre-fetch</maketarget> target 中找到。
</para>
</note>
<para>完成联编和安装之后, 就可以用下面的命令运行
<application>LibreOffice</application> 了:</para>
<screen>&prompt.user; <userinput>libreoffice</userinput></screen>
</sect2>
</sect1>
<sect1 id="desktop-viewers">
@ -755,8 +826,7 @@
<screen>&prompt.root; <userinput>pkg_add -r gv</userinput></screen>
<para>如果您无法获取预编译的包, 则可以使用 Ports
collection</para>
<para>如果您无法获取预编译的包, 则可以使用 Ports Collection</para>
<screen>&prompt.root; <userinput>cd /usr/ports/print/gv</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
@ -990,7 +1060,7 @@
<para>尽管 FreeBSD 由于其高性能和可靠性而获得了许多 ISP 的信赖,
但它也完全可以用于桌面环境。 拥有数以千计的
<ulink url="http://www.FreeBSD.org/where.html">packages</ulink> 和
<ulink url="http://www.FreeBSD.org/applications.html">packages</ulink> 和
<ulink url="http://www.FreeBSD.org/ports/index.html">ports</ulink>
能够帮您迅速建立完美的桌面环境。</para>
@ -1021,7 +1091,7 @@
<row>
<entry><application>KOffice</application></entry>
<entry><literal>koffice-kde3</literal></entry>
<entry><literal>koffice</literal></entry>
<entry><filename role="package">editors/koffice-kde3</filename></entry>
</row>
@ -1043,6 +1113,12 @@
<entry><filename role="package">editors/openoffice.org-3</filename></entry>
</row>
<row>
<entry><application>LibreOffice</application></entry>
<entry><literal>libreoffice</literal></entry>
<entry><filename role="package">editors/libreoffice</filename></entry>
</row>
<row>
<entry><application>&acrobat.reader;</application></entry>
<entry><literal>acroread</literal></entry>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.302
Original Revision: 1.309
$FreeBSD$
-->
@ -180,11 +180,15 @@
<para>由于 &man.bsdlabel.8; 使用 32-位 的整数来表示扇区号,
因此在多数情况下它的表现力限于每个磁盘
2^32-1 个扇区或 2TB。 &man.fdisk.8; 格式允许的起始扇区号不能高于
2^32-1 而分区长度也不能大于 2^32-1 通常情况下这限制了分区大小最大为
2TB 而磁盘大小则是 4TB。 &man.sunlabel.8; 格式的限制是每个分区
2^32-1 个扇区, 但允许 8 个分区因此最大支持 16TB 的磁盘。
要使用更大的分区, 则应使用 &man.gpt.8;。</para>
2^32-1 个扇区, 或 2TB。
&man.fdisk.8; 格式允许的起始扇区号不能高于
2^32-1 而分区尺寸也不能超过 2^32-1 这样一来通常情况下分区尺寸不能超过
2TB 而磁盘尺寸则不能超过 4TB。 &man.sunlabel.8;
格式的限制是每个分区 2^32-1 个扇区,
但可以有 8 个分区, 因而可以支持最大 16TB 的磁盘。
对于更大的磁盘, 可以使用 &man.gpart.8;
来创建 <acronym>GPT</acronym> 分区。 <acronym>GPT</acronym>
除了支持大磁盘之外, 还不受 4 个 slice 的限制。</para>
<sect2>
<title>使用 &man.sysinstall.8;</title>
@ -3531,6 +3535,605 @@ Device 1K-blocks Used Avail Capacity
</screen>
</sect2>
</sect1>
<sect1 id="disks-hast">
<sect1info>
<authorgroup>
<author>
<firstname>Daniel</firstname>
<surname>Gerzo</surname>
<contrib>Contributed by </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Freddie</firstname>
<surname>Cash</surname>
<contrib>With inputs from </contrib>
</author>
<author>
<firstname>Pawel Jakub</firstname>
<surname>Dawidek</surname>
</author>
<author>
<firstname>Michael W.</firstname>
<surname>Lucas</surname>
</author>
<author>
<firstname>Viktor</firstname>
<surname>Petersson</surname>
</author>
</authorgroup>
<!-- Date of writing: 26 February 2011 -->
</sect1info>
<title>高可用性存储 (HAST)</title>
<indexterm>
<primary>HAST</primary>
<secondary>高可用性 (high availability)</secondary>
</indexterm>
<sect2>
<title>概述</title>
<para>高可用性是担负关键业务的应用的一项主要需求,
而高可用存储则是这类环境中的一项关键组件。
高可用存储 Highly Available STorage
<acronym>HAST<remark role="acronym">Highly Available
STorage</remark></acronym> 是由 &a.pjd;
开发的一种用于提供在两台物理上隔离的系统之间以透明的方式, 通过
TCP/IP 网络传输数据的高可用性框架。 <acronym>HAST</acronym>
可以看作通过网络进行的 RAID1 (镜像) 类似于 GNU/&linux; 平台上的
DRBD&reg; 存储系统。 配合 &os; 提供的其他高可用性基础设施,
如 <acronym>CARP</acronym> <acronym>HAST</acronym>
可以用来构建可以抗御硬件故障的高可用存储集群。</para>
<para>读完这节, 您将了解:</para>
<itemizedlist>
<listitem>
<para>何为 <acronym>HAST</acronym> 它如何工作以及提供哪些功能。</para>
</listitem>
<listitem>
<para>如何在 &os; 上配置和使用 <acronym>HAST</acronym>。</para>
</listitem>
<listitem>
<para>如何与 <acronym>CARP</acronym> 及
&man.devd.8; 配合构建可靠的存储系统。</para>
</listitem>
</itemizedlist>
<para>在阅读这节之前, 您应:</para>
<itemizedlist>
<listitem>
<para>了解 &unix; 和 &os; 的基础知识
(<xref linkend="basics">)。</para>
</listitem>
<listitem>
<para>知道如何配置网络接口以及其他核心 &os; 子系统 (<xref
linkend="config-tuning">)。</para>
</listitem>
<listitem>
<para>理解 &os; 的网络功能
(<xref linkend="network-communication">)。</para>
</listitem>
<listitem>
<para>使用 &os;&nbsp;8.1-RELEASE 或更新版本。</para>
</listitem>
</itemizedlist>
<para><acronym>HAST</acronym> 项目是由
&os; 基金会资助完成的, 并得到了来自 <ulink
url="http://www.omc.net/">OMCnet Internet Service GmbH</ulink>
和 <ulink url="http://www.transip.nl/">TransIP BV</ulink>
的支持。</para>
</sect2>
<sect2>
<title>HAST 的功能</title>
<para><acronym>HAST</acronym> 系统提供的功能主要包括:</para>
<itemizedlist>
<listitem>
<para>可以掩盖本地硬盘的 I/O 错误。</para>
</listitem>
<listitem>
<para>文件系统无关, 因而可以配合 &os; 支持的任何文件系统使用。</para>
</listitem>
<listitem>
<para>高效率的快速重新同步机制, 令系统只同步在另一节点停机时修改过的块。</para>
</listitem>
<!--
<listitem>
<para>Has several synchronization modes to allow for fast
failover.</para>
</listitem>
-->
<listitem>
<para>可以在已经部署好的环境中添加冗余。</para>
</listitem>
<listitem>
<para>配合 <acronym>CARP</acronym>、
<application>Heartbeat</application> 或其他类似的工具,
可以实现健壮的可靠存储系统。</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>HAST 的运行机制</title>
<para>由于 <acronym>HAST</acronym> 本质上是在多个机器间同步地进行块级复制,
因此它需要至少两个节点 (物理的机器)
&mdash; 其一作为 <literal>主</literal> (也称作
<literal>master</literal>) 节点, 另一个作为
<literal>从</literal> (<literal>slave</literal>) 节点。
这两台机器会共同构成一个集群。</para>
<note>
<para>目前 HAST 只能使用最多两个集群节点。</para>
</note>
<para>由于 <acronym>HAST</acronym> 是配置成以主从节点的方式运行,
在任何时刻都只能有唯一的一个节点是主节点。
<literal>主</literal> 节点, 也称作
<literal>活跃</literal> 节点, 负责处理由 <acronym>HAST</acronym>
管理的设备的全部 I/O 请求。 而
<literal>从</literal> 节点则会自动从 <literal>主</literal>
节点同步数据的变更操作。</para>
<para>在 <acronym>HAST</acronym>
系统中的物理设备包括:</para>
<itemizedlist>
<listitem>
<para>本地磁盘 (在主节点上)</para>
</listitem>
<listitem>
<para>远程磁盘 (在从节点上)</para>
</listitem>
</itemizedlist>
<para><acronym>HAST</acronym> 在块的级别上同步运行,
这使其对文件系统和应用程序透明。 <acronym>HAST</acronym>
在 <filename class="directory">/dev/hast/</filename>
目录中提供标准的 GEOM 设备供其他工具或应用程序使用,
因此, 在使用上, 对应用程序或文件系统而言,
<acronym>HAST</acronym> 提供的设备与普通的裸盘或分区等没有任何区别。</para>
<para>发到本地磁盘的每次写、 删除或缓存刷写操作,
都会同时通过 TCP/IP 发到远程磁盘上。
读操作是由本地磁盘完成, 除非本地磁盘上的数据不是最新的,
或发生了 I/O 错误。 在这种情况下,
读操作会在从节点上完成。</para>
<sect3>
<title>同步及复制模式</title>
<para><acronym>HAST</acronym> 希望提供快速的故障恢复能力。
基于这一考量, 减少在某个节点停机后需要的同步时间就十分重要。
为了提供快速的同步能力, <acronym>HAST</acronym>
会维护一份保存在磁盘上的脏区段位映射表 (bitmap of dirty extents)
在普通的同步模式中, 它只同步这些部分的数据 (初始的同步除外)。</para>
<para>处理同步有多种不同的方式,
<acronym>HAST</acronym> 计划实现以下几种同步方式:</para>
<itemizedlist>
<listitem>
<para><emphasis>memsync</emphasis> 当本地的写操作已经完成,
并且远程节点汇报已经收到数据时, 便认为数据的写操作已经完成,
而不是等待远程节点完成数据的写操作。 远程节点在发出回应之后,
会立即开始执行写操作。 这种模式的目标是减少响应时间,
但在同时仍然保持很好的可靠性。 目前
<emphasis>memsync</emphasis> 复制模式尚未实现。</para>
</listitem>
<listitem>
<para><emphasis>fullsync</emphasis> 只有在本地写操作完成,
并且远程的写操作也已经完成的情况下, 才认为数据的写操作已经完成。
这种模式是最保险, 同时也是最慢的一种复制模式。
这是目前系统预设的复制模式。</para>
</listitem>
<listitem>
<para><emphasis>async</emphasis> 在本地写操作完成时,
即认为数据已经写完。 这是最快, 同时也是风险最大的复制模式,
一般而言只有在另一节点的延迟较大时才应考虑使用。 目前
<emphasis>async</emphasis> 复制模式尚未实现。</para>
</listitem>
</itemizedlist>
<warning>
<para>目前, 只支持 <emphasis>fullsync</emphasis> 复制模式。</para>
</warning>
</sect3>
</sect2>
<sect2>
<title>HAST 的配置</title>
<para><acronym>HAST</acronym> 需要
<literal>GEOM_GATE</literal> 支持才能正常工作。
系统自带的预设 <literal>GENERIC</literal> 内核
<emphasis>并不</emphasis> 包含 <literal>GEOM_GATE</literal>
但默认的 &os; 安装包含了 <filename>geom_gate.ko</filename>
内核模块。 如果对系统进行了裁剪,
则应确认这个模块是否可用。 此外,
<literal>GEOM_GATE</literal> 也可以静态联编进内核,
方法是在内核的编译配置中添加下面的设置:</para>
<programlisting>options GEOM_GATE</programlisting>
<para>从操作系统的角度, <acronym>HAST</acronym> 框架包含了下面这些部件:</para>
<itemizedlist>
<listitem>
<para>负责进行数据同步的 &man.hastd.8; 服务程序,</para>
</listitem>
<listitem>
<para>用于执行管理操作的 &man.hastctl.8; 用户态管理工具,</para>
</listitem>
<listitem>
<para>配置文件 &man.hast.conf.5;。</para>
</listitem>
</itemizedlist>
<para>下面的例子将介绍使用 <acronym>HAST</acronym> 在两个节点之间以
<literal>主</literal>-<literal>从</literal> 模式复制数据的方法。
两个节点的名字分别是
<literal><replaceable>hasta</replaceable></literal> 其 IP
地址为 <replaceable>172.16.0.1</replaceable> 以及
<literal><replaceable>hastb</replaceable></literal> 其 IP
地址为 <replaceable>172.16.0.2</replaceable>。
这两台机器都使用尺寸相同的磁盘
<devicename>/dev/<replaceable>ad6</replaceable></devicename>
来专用于 <acronym>HAST</acronym> 的运行。
<acronym>HAST</acronym> 存储池 (有时也称为资源,
例如位于 <filename
class="directory">/dev/hast/</filename> 的设备文件) 将命名为
<filename><replaceable>test</replaceable></filename>。</para>
<para><acronym>HAST</acronym> 的配置文件是
<filename>/etc/hast.conf</filename>。 在两个节点上,
这个文件的内容应该是完全一样的。
最简配置如下:</para>
<programlisting>resource test {
on hasta {
local /dev/ad6
remote 172.16.0.2
}
on hastb {
local /dev/ad6
remote 172.16.0.1
}
}</programlisting>
<para>如果需要更高级的配置, 请参阅联机手册
&man.hast.conf.5;。</para>
<tip>
<para>在 <literal>remote</literal> 语句中也可以使用主机名。
这种情况下需要确保这些主机名是可以解析的,
例如在 <filename>/etc/hosts</filename> 文件中,
或在本地 <acronym>DNS</acronym> 中进行了定义。</para>
</tip>
<para>现在在两个节点上都有同样的配置了,
接下来我们需要创建 <acronym>HAST</acronym> 存储池。
在两个节点上分别运行下面的命令来初始化本地此怕,
并启动 &man.hastd.8; 服务:</para>
<screen>&prompt.root; <userinput>hastctl create test</userinput>
&prompt.root; <userinput>/etc/rc.d/hastd onestart</userinput></screen>
<note>
<para><emphasis>没有</emphasis> 办法使用已经包含文件系统的 GEOM
设备来创建存储池 (换言之,
已经存在的文件系统无法转换为 <acronym>HAST</acronym> 管理的存储池)
这是因为创建存储池的过程需要保存一些元数据,
而已经写入文件系统的设备不再能提供保存这些元数据所需的空间。</para>
</note>
<para>HAST 并不负责选择节点的角色
(<literal>主</literal> 或 <literal>从</literal>)。
节点的角色是由管理员手工,
或由类似 <application>Heartbeat</application> 这样的软件通过
&man.hastctl.8; 来完成配置的。 在希望成为主节点的系统
(<literal><replaceable>hasta</replaceable></literal>)
上运行下面的命令令其成为主节点:</para>
<screen>&prompt.root; <userinput>hastctl role primary test</userinput></screen>
<para>类似地, 用下面的命令来指明从节点
(<literal><replaceable>hastb</replaceable></literal>)</para>
<screen>&prompt.root; <userinput>hastctl role secondary test</userinput></screen>
<caution>
<para>有可能会出现两个节点之间无法正常通讯,
但又都配置为主节点这样的情况; 这种称作
<literal>脑分裂</literal> 的状态是十分危险的。 在 <xref
linkend="disks-hast-sb"> 中介绍了如何从这种状态中恢复的方法。</para>
</caution>
<para>接下来, 可以在两个节点上分别用
&man.hastctl.8; 工具来验证节点身份是否正确:</para>
<screen>&prompt.root; <userinput>hastctl status test</userinput></screen>
<para>这其中比较重要的是 <literal>status</literal>(状态) 这行,
在两个节点上, 其输出均应为 <literal>complete</literal>(完好)。
如果系统给出的输出是 <literal>degraded</literal> (降级)
则表示出现了问题。 正常情况下, 节点间的同步已经开始。
当 <command>hastctl status</command> 命令报告的
<literal>dirty</literal> 数据块数量为 0 字节时,
表示两个节点的数据已经完全同步。</para>
<para>最后一步是在 GEOM 设备
<devicename>/dev/hast/<replaceable>test</replaceable></devicename>
上创建文件系统。 这项工作必须在
<literal>主</literal> 节点上进行 (因为
<filename>/dev/hast/<replaceable>test</replaceable></filename>
只在 <literal>主</literal> 节点上出现)
随硬盘尺寸的不同, 这可能需要花费数分钟的时间:</para>
<screen>&prompt.root; <userinput>newfs -U /dev/hast/test</userinput>
&prompt.root; <userinput>mkdir /hast/test</userinput>
&prompt.root; <userinput>mount /dev/hast/test /hast/test</userinput></screen>
<para>一旦完成了 <acronym>HAST</acronym> 框架的配置,
最后一步就是确保
<acronym>HAST</acronym> 在系统引导过程中会自动启动了。
为了达到这个目的, 应在
<filename>/etc/rc.conf</filename> 文件中添加这行配置:</para>
<programlisting>hastd_enable="YES"</programlisting>
<sect3>
<title>故障转移配置</title>
<para>这个例子的目的在于建立一套健壮的存储系统,
令其能够抵御在任何一个节点上发生的故障。
这其中的关键任务是对集群中的
<literal>主</literal> 节点发生故障的情形进行及时的补救处理。
当发生这种情况时, <literal>从</literal>
节点可以无缝地接手主节点的工作, 对文件系统进行检查并挂接,
从而继续运行, 而不损失任何数据。</para>
<para>为了达成这一任务, 需要使用 &os; 提供的另一项功能 &mdash;
<acronym>CARP</acronym> 所提供的 IP 层自动故障转移能力。
<acronym>CARP</acronym> 是共用地址冗余协议
Common Address Redundancy Protocol 的缩写,
它允许多个同网段的主机共享同一 IP 地址。 请根据 <xref linkend="carp">
的介绍在两个节点上都配置 <acronym>CARP</acronym>。
完成这些配置之后, 两个节点都会有自己的
<devicename>carp0</devicename> 网络接口,
共用 IP 地址 <replaceable>172.16.0.254</replaceable>。
显然, 集群中的 <acronym>HAST</acronym> 主节点也必须是
<acronym>CARP</acronym> 主节点。</para>
<para>前面一节中创建的 <acronym>HAST</acronym>
存储池现在可以提供给网络上的其他主机使用了。
其上的文件系统可以通过 <acronym>NFS</acronym>、
<application>Samba</application> 等等,
以共用 IP 地址 <replaceable>172.16.0.254</replaceable> 来访问。
现在余下的唯一问题是自动化对主节点故障的处理。</para>
<para>当 <acronym>CARP</acronym> 网络接口的链路状态发生变化时,
&os; 操作系统会产生一个 &man.devd.8;
消息, 这样就可以监视 <acronym>CARP</acronym>
网络接口的状态了。 <acronym>CARP</acronym>
接口的状态变化表示节点发生故障, 或重新回到了网络中。
这些情况下需要运行特定的脚本来完成对应的处理。</para>
<para>为了截获
<acronym>CARP</acronym> 网络接口的状态变化,
需要在两个节点的
<filename>/etc/devd.conf</filename>
文件中添加如下的设置:</para>
<programlisting>notify 30 {
match "system" "IFNET";
match "subsystem" "carp0";
match "type" "LINK_UP";
action "/usr/local/sbin/carp-hast-switch master";
};
notify 30 {
match "system" "IFNET";
match "subsystem" "carp0";
match "type" "LINK_DOWN";
action "/usr/local/sbin/carp-hast-switch slave";
};</programlisting>
<para>为使编辑的配置生效, 需要在两个节点上执行下面的命令:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/devd restart</userinput></screen>
<para>当网络接口 <devicename>carp0</devicename>
的状态发生变化时, 系统会产生一个通知消息,
这允许 &man.devd.8; 子系统运行管理员指定的任意脚本,
在这个例子中是
<filename>/usr/local/sbin/carp-hast-switch</filename>。
这个脚本的作用是自动化故障转移。 关于前面
&man.devd.8; 配置的具体含义, 请参阅联机手册
&man.devd.conf.5;。</para>
<para>下面是一个这种脚本的示例:</para>
<programlisting>#!/bin/sh
# Original script by Freddie Cash &lt;fjwcash@gmail.com&gt;
# Modified by Michael W. Lucas &lt;mwlucas@BlackHelicopters.org&gt;
# and Viktor Petersson &lt;vpetersson@wireload.net&gt;
# The names of the HAST resources, as listed in /etc/hast.conf
resources="test"
# delay in mounting HAST resource after becoming master
# make your best guess
delay=3
# logging
log="local0.debug"
name="carp-hast"
# end of user configurable stuff
case "$1" in
master)
logger -p $log -t $name "Switching to primary provider for ${resources}."
sleep ${delay}
# Wait for any "hastd secondary" processes to stop
for disk in ${resources}; do
while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do
sleep 1
done
# Switch role for each disk
hastctl role primary ${disk}
if [ $? -ne 0 ]; then
logger -p $log -t $name "Unable to change role to primary for resource ${disk}."
exit 1
fi
done
# Wait for the /dev/hast/* devices to appear
for disk in ${resources}; do
for I in $( jot 60 ); do
[ -c "/dev/hast/${disk}" ] && break
sleep 0.5
done
if [ ! -c "/dev/hast/${disk}" ]; then
logger -p $log -t $name "GEOM provider /dev/hast/${disk} did not appear."
exit 1
fi
done
logger -p $log -t $name "Role for HAST resources ${resources} switched to primary."
logger -p $log -t $name "Mounting disks."
for disk in ${resources}; do
mkdir -p /hast/${disk}
fsck -p -y -t ufs /dev/hast/${disk}
mount /dev/hast/${disk} /hast/${disk}
done
;;
slave)
logger -p $log -t $name "Switching to secondary provider for ${resources}."
# Switch roles for the HAST resources
for disk in ${resources}; do
if ! mount | grep -q "^/dev/hast/${disk} on "
then
else
umount -f /hast/${disk}
fi
sleep $delay
hastctl role secondary ${disk} 2>&1
if [ $? -ne 0 ]; then
logger -p $log -t $name "Unable to switch role to secondary for resource ${disk}."
exit 1
fi
logger -p $log -t $name "Role switched to secondary for resource ${disk}."
done
;;
esac</programlisting>
<para>简而言之, 在节点成为网络的 <literal>master</literal> /
<literal>primary</literal> 节点时, 脚本会进行下面的操作:</para>
<itemizedlist>
<listitem>
<para>在本节点升格为 <acronym>HAST</acronym> 存储池的主节点。</para>
</listitem>
<listitem>
<para>检查
<acronym>HAST</acronym> 存储池上的文件系统。</para>
</listitem>
<listitem>
<para>挂接存储池中的文件系统到适当的位置。</para>
</listitem>
</itemizedlist>
<para>当节点成为 <literal>backup</literal> /
<literal>secondary</literal> 节点时:</para>
<itemizedlist>
<listitem>
<para>卸下 <acronym>HAST</acronym> 存储池。</para>
</listitem>
<listitem>
<para>将本节点降格为 <acronym>HAST</acronym> 存储池的从节点。</para>
</listitem>
</itemizedlist>
<caution>
<para>务必注意, 上面的脚本只是概念性的介绍。
它并不能处理所有可能发生的情况, 因此应根据实际情况进行修改,
例如启动/停止必要的服务, 等等。</para>
</caution>
<tip>
<para>在前面的例子中, 出于示范的目的我们使用的是标准的 UFS
文件系统。 为了减少恢复所需的时间, 可以使用带日志的 UFS
文件系统, 或者使用 ZFS 文件系统。</para>
</tip>
<para>更具体的信息和例子请参阅 <ulink
url="http://wiki.FreeBSD.org/HAST">HAST Wiki</ulink>
页面。</para>
</sect3>
</sect2>
<sect2>
<title>故障排除</title>
<sect3>
<title>一般故障排除提示</title>
<para><acronym>HAST</acronym> 通常都能够无故障地运行,
不过, 和任何其他软件产品一样,
有时它也可能会无法以希望的方式运转。
导致问题的可能性有很多,
但一般来说, 首先要确保集群中所有节点的时间是同步的。</para>
<para>当尝试排除 <acronym>HAST</acronym> 故障时,
应提高 &man.hastd.8; 的调试级别。 这可以通过在启动
&man.hastd.8; 服务时指定 <literal>-d</literal>
参数来实现。 需要说明的是,
可以多次指定这一参数来进一步提高调试级别。
此外, 还可以考虑使用 <literal>-F</literal>
参数来启动服务, 它会令 &man.hastd.8; 服务在前台运行。</para>
</sect3>
<sect3 id="disks-hast-sb">
<title>从脑分裂状态恢复</title>
<para>当集群中的两个节点之间无法相互通讯时,
两个节点都会认为自己是主节点, 从而导致
<literal>脑分裂</literal> 的状态。
这种情形十分危险, 因为两个节点会产生互相无法合并的数据。
这种情形需要系统管理员实施手工干预。</para>
<para>从这种状态中恢复时, 管理员必须决定哪一个节点包含最重要的数据变动
(或者手工合并这些改动) 并让 <acronym>HAST</acronym>
进行一次完整的同步操作, 覆盖有问题的那个节点的数据。
要完成这个工作,在有问题的节点上执行下面的命令:</para>
<screen>&prompt.root; <userinput>hastctl role init &lt;resource&gt;</userinput>
&prompt.root; <userinput>hastctl create &lt;resource&gt;</userinput>
&prompt.root; <userinput>hastctl role secondary &lt;resource&gt;</userinput></screen>
</sect3>
</sect2>
</sect1>
</chapter>
<!--

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.207
Original Revision: 1.213
$FreeBSD$
-->
@ -335,11 +335,6 @@
<entry>移植 LFS 到FreeBSD上</entry>
</row>
<row>
<entry>&a.libh.name;</entry>
<entry>第二代的安装和 package 系统</entry>
</row>
<row>
<entry>&a.mips.name;</entry>
<entry>移植 FreeBSD 到 &mips;</entry>
@ -376,9 +371,8 @@
</row>
<row>
<entry>&a.openoffice.name;</entry>
<entry>移植 <application>OpenOffice.org</application> 和
<application>&staroffice;</application> 到 FreeBSD 上</entry>
<entry>&a.office.name;</entry>
<entry>&os; 上的办公套件</entry>
</row>
<row>
@ -522,6 +516,11 @@
<entry>&a.xen.name;</entry>
<entry>讨论 &os; &xen; 上的移植 &mdash; 实现和使用</entry>
</row>
<row>
<entry>&a.xfce.name;</entry>
<entry>&os; 上 <application>XFCE</application> 的移植和维护</entry>
</row>
</tbody>
</tgroup>
</informaltable>
@ -562,7 +561,7 @@
<row>
<entry>&a.wireless.name;</entry>
<entry>讨论 802.11 栈, 工具驱动开发</entry>
<entry>讨论 802.11 栈, 工具和设备驱动开发</entry>
</row>
<row>
@ -686,6 +685,13 @@
<filename>stable/8</filename> 分支的改变记录</entry>
</row>
<row>
<entry>&a.svn-src-stable-9.name;</entry>
<entry><filename>/usr/src</filename></entry>
<entry>所有对 Subversion 源码仓库中有关
<filename>stable/9</filename> 分支的改变记录</entry>
</row>
<row>
<entry>&a.svn-src-stable-other.name;</entry>
<entry><filename>/usr/src</filename></entry>
@ -1240,13 +1246,12 @@
</varlistentry>
<varlistentry>
<term>&a.openoffice.name;</term>
<term>&a.office.name;</term>
<listitem>
<para><emphasis>OpenOffice.org</emphasis></para>
<para><emphasis>&os; 上的办公套件应用</emphasis></para>
<para>关于<application>OpenOffice.org</application>和<application>&staroffice;</application>.
的移植和维护。</para>
<para>关于办公套件应用, 它们的安装、 开发和 &os; 支持的讨论中心。</para>
</listitem>
</varlistentry>
@ -1551,6 +1556,21 @@
提供一个讨论的场所。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&a.xfce.name;</term>
<listitem>
<para><emphasis>XFCE</emphasis></para>
<para>这是讨论关于向 &os; 移植
<application>XFCE</application> 的论坛。
这是一个技术性的邮件列表。 其成员是目前正活跃地进行 &os;
<application>XFCE</application> 移植的开发人员,
主要用于提出问题或讨论其他解决方法。
此外, 也欢迎希望关注相关技术讨论的其他人士。</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="eresources-mailfiltering">

View file

@ -1,6 +1,6 @@
<!--
The FreeBSD Documentation Project
Original Revision: 1.9
Original Revision: 1.10
$FreeBSD$
-->

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.95
Original Revision: 1.96
$FreeBSD$
-->
@ -2177,7 +2177,7 @@ add deny out</programlisting>
<sect4>
<title>RULE_NUMBER</title>
<para>每一个规则都必须包含一个规则编号。</para>
<para>每一条规则都与一个范围在 1 到 65535 之间的规则编号相关联。</para>
</sect4>
<sect4>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.22
Original Revision: 1.24
$FreeBSD$
-->
<chapter id="jails">

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Chinese Documentation Project
Original Revision: 1.195
Original Revision: 1.199
$FreeBSD$
-->
@ -204,8 +204,7 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
下面提到的 <devicename>ath</devicename> 无线以太网驱动。
在这个设备的联机手册中有以下信息:</para>
<programlisting>Alternatively, to load the driver as a module at boot time, place the
following line in &man.loader.conf.5:
<programlisting>另外, 也可以通过在 &man.loader.conf.5; 中添加下面的设置来令其随系统引导加载:
if_ath_load="YES"</programlisting>
@ -235,6 +234,10 @@ following line in &man.loader.conf.5:
<secondary>建立/安装</secondary>
</indexterm>
<note>
<para>联编内核时, 系统中需要安装完整的 &os; 源代码。</para>
</note>
<para>首先对内核构建目录做一个快速的浏览。
这里所提到的所有目录都在
<filename>/usr/src/sys</filename> 目录中; 也可以通过
@ -260,28 +263,23 @@ following line in &man.loader.conf.5:
<note>
<para>如果您的系统中 <emphasis>没有</emphasis>
<filename>/usr/src/sys</filename> 这样一个目录,
则说明没有安装内核源代码。 安装它最简单的方法是通过以 root 身份运行
<filename>/usr/src/sys</filename> 这样一个目录 (或如果它是空的)
则表示没有安装源代码。 安装它最简单的方法是通过以
<username>root</username> 身份运行
<command>sysinstall</command> 选择
<guimenuitem>Configure</guimenuitem> 然后是
<guimenuitem>Configure</guimenuitem>
<guimenuitem>Distributions</guimenuitem>、
<guimenuitem>src</guimenuitem> 选中其中的
<guimenuitem>base</guimenuitem> 和
<guimenuitem>sys</guimenuitem>。 如果您不喜欢
<application>sysinstall</application> 并且有一张
<quote>官方的</quote> &os; CDROM 也可以使用下列命令,
从命令行来安装源代码:</para>
<guimenuitem>src</guimenuitem> 最后是
<guimenuitem>All</guimenuitem>。 此外,
您可能还需要创建一个到 <filename>/usr/src/sys/</filename> 的符号链接:</para>
<screen>&prompt.root; <userinput>mount /cdrom</userinput>
&prompt.root; <userinput>mkdir -p /usr/src/sys</userinput>
&prompt.root; <userinput>ln -s /usr/src/sys /sys</userinput>
&prompt.root; <userinput>cat /cdrom/src/ssys.[a-d]* | tar -xzvf -</userinput>
&prompt.root; <userinput>cat /cdrom/src/sbase.[a-d]* | tar -xzvf -</userinput></screen>
<screen>&prompt.root; <userinput>ln -s /usr/src/sys/ /sys/</userinput></screen>
</note>
<para>接下来, 进入 <filename><replaceable>arch</replaceable>/conf</filename>
目录下面, 复制 <filename>GENERIC</filename> 配置文件,
并给这个文件起一个容易辨认的名称, 它就是您的内核名称。例如:</para>
<screen>&prompt.root; <userinput>cd /usr/src/sys/<replaceable>i386</replaceable>/conf</userinput>
&prompt.root; <userinput>cp GENERIC <replaceable>MYKERNEL</replaceable></userinput></screen>
@ -353,6 +351,10 @@ following line in &man.loader.conf.5:
<procedure>
<title>联编内核</title>
<note>
<para>联编内核时, 需要安装完整的 &os; 源代码。</para>
</note>
<step>
<para>进入 <filename
class="directory">/usr/src</filename> 目录:</para>
@ -373,10 +375,6 @@ following line in &man.loader.conf.5:
</step>
</procedure>
<note>
<para>使用这种方法联编内核时, 需要安装完整的 &os; 源代码。</para>
</note>
<tip>
<para>默认情况下, 在联编您所定制的内核时,
<emphasis>全部</emphasis> 内核模块也会同时参与构建。
@ -658,7 +656,7 @@ options NFS_ROOT # NFS usable as /, requires NFSCLIENT</progra
<para>如果希望使用 <literal>PROCFS</literal>
就必须加入 <literal>PSEUDOFS</literal> 的支持。</para>
<programlisting>options GEOM_GPT # GUID Partition Tables.</programlisting>
<programlisting>options GEOM_PART_GPT # GUID Partition Tables.</programlisting>
<para>这个选项提供了在磁盘上使用大量的分区的能力。</para>
@ -867,7 +865,7 @@ device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device rr232x # Highpoint RocketRAID 232x
device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
@ -1333,8 +1331,7 @@ device fwe # Ethernet over FireWire (non-standard!)</programl
在 &os; 启动加载器那里简单地选择一下要启动的内核就可以了。
当系统在引导菜单的 10 秒倒计时时进入它, 方法是选择 <quote>Escape to a loader
prompt</quote> 选项, 其编号为 6。 输入
<command>unload kernel</command> 然后输入
<command>boot /boot/<replaceable>kernel.old</replaceable>/kernel</command>
<command>boot <replaceable>kernel.old</replaceable></command>
或者其他任何一个可以正确引导的内核即可。
当重新配置内核时, 保持一个已经证明能够正常启动的内核永远是一个好习惯。</para>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Chinese Documentation Project
Original Revision: 1.140
Original Revision: 1.142
$FreeBSD$
-->
@ -292,6 +292,10 @@ FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org</screen>
<listitem>
<para><application>courier-imap</application>;</para>
</listitem>
<listitem>
<para><application>dovecot</application>;</para>
</listitem>
</itemizedlist>
</step>
@ -312,8 +316,9 @@ FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org</screen>
<para>此外还应注意的是 <acronym>POP</acronym> 和
<acronym>IMAP</acronym> 传递的信息, 包括用户名和口令等等,
通常都是明文的。 这意味着如果您希望加密传输过程中的信息,
可能需要考虑使用 &man.ssh.1; 隧道。 关于如何实施隧道在
<xref linkend="security-ssh-tunneling"> 中进行了详细阐述。</para>
可能需要考虑使用 &man.ssh.1; 隧道或者使用SSL。 关于如何实施隧道在
<xref linkend="security-ssh-tunneling"> 中进行了详细阐述,
SSL 部分在<xref linkend="openssl">。</para>
</warning>
</sect3>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Chinese Documentation Project
Original Revision: 1.493
Original Revision: 1.500
$FreeBSD$
-->
@ -231,11 +231,6 @@
您或许更想找一个 <quote>更近的</quote>
镜像站点 (特别是当您想进行某种形式的镜像的时候)。</para>
<para><ulink
url="http://mirrorlist.FreeBSD.org/">&os; 镜像
站点数据库</ulink>要比使用手册中的镜像列表更加精确,
因为它从 DNS 中获取信息而不依赖于静态的主机列表。</para>
<para>&os; 可以从下面这些镜像站点通过匿名 FTP
下载。如果您选择了通过匿名 FTP 获取 &os;
请尽量使用离您比较近的站点。被列为
@ -1634,15 +1629,6 @@ doc/zh_*</screen>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ports-mbone
release=cvs</literal></term>
<listitem>
<para>MBone 应用程序。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ports-misc
release=cvs</literal></term>
@ -2612,6 +2598,14 @@ doc/zh_*</screen>
最后, <filename class="directory">www</filename> 树上不会有任何特定发行版的标签。</para>
<variablelist>
<varlistentry>
<term>RELENG_8_2_0_RELEASE</term>
<listitem>
<para>&os; 8.2</para>
</listitem>
</varlistentry>
<varlistentry>
<term>RELENG_8_1_0_RELEASE</term>
@ -2628,6 +2622,14 @@ doc/zh_*</screen>
</listitem>
</varlistentry>
<varlistentry>
<term>RELENG_7_4_0_RELEASE</term>
<listitem>
<para>&os; 7.4</para>
</listitem>
</varlistentry>
<varlistentry>
<term>RELENG_7_3_0_RELEASE</term>
@ -3071,6 +3073,20 @@ doc/zh_*</screen>
</listitem>
</varlistentry>
<varlistentry>
<term>瑞典</term>
<listitem>
<para>rsync://ftp4.se.freebsd.org/</para>
<para>可用的 collections</para>
<itemizedlist>
<listitem><para>&os; &os; FTP
服务器的完整镜像。</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term>台湾地区 (中国)</term>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Documentation Project
Original Revision: 1.139
Original Revision: 1.143
$FreeBSD$
-->
@ -280,6 +280,12 @@ kld snd_ich (1p/2r/0v channels duplex default)</screen>
<para>这里 <filename><replaceable>filename</replaceable></filename> 可以是任意文件。
这行命令会产生一些噪音,证明声卡果真在工作。</para>
<note>
<para>设备节点 <filename>/dev/dsp*</filename> 会在需要的时候自动产生。
如果没有使用它们, 则它们不会出现在
&man.ls.1; 的输出中。</para>
</note>
<para>声卡混音级别可以通过 &man.mixer.8; 命令更改。
更多细节可以在 &man.mixer.8; 联机手册中找到。</para>
@ -326,6 +332,45 @@ kld snd_ich (1p/2r/0v channels duplex default)</screen>
</tbody>
</tgroup>
</informaltable>
<para>另一个问题是许多新式的显卡本身包含它们自己的声音驱动,
用以配合 <acronym>HDMI</acronym> 这样的设备使用。
这个声音设备有时会在真正的声卡之前被探测到,
从而成为默认的回放设备, 而使真正的声卡无法发声。
要检查这种情况, 运行
<application>dmesg</application> 并观察 <literal>pcm</literal>。
其输出类似下面这样:</para>
<programlisting>...
hdac0: HDA Driver Revision: 20100226_0142
hdac1: HDA Driver Revision: 20100226_0142
hdac0: HDA Codec #0: NVidia (Unknown)
hdac0: HDA Codec #1: NVidia (Unknown)
hdac0: HDA Codec #2: NVidia (Unknown)
hdac0: HDA Codec #3: NVidia (Unknown)
pcm0: &lt;HDA NVidia (Unknown) PCM #0 DisplayPort&gt; at cad 0 nid 1 on hdac0
pcm1: &lt;HDA NVidia (Unknown) PCM #0 DisplayPort&gt; at cad 1 nid 1 on hdac0
pcm2: &lt;HDA NVidia (Unknown) PCM #0 DisplayPort&gt; at cad 2 nid 1 on hdac0
pcm3: &lt;HDA NVidia (Unknown) PCM #0 DisplayPort&gt; at cad 3 nid 1 on hdac0
hdac1: HDA Codec #2: Realtek ALC889
pcm4: &lt;HDA Realtek ALC889 PCM #0 Analog&gt; at cad 2 nid 1 on hdac1
pcm5: &lt;HDA Realtek ALC889 PCM #1 Analog&gt; at cad 2 nid 1 on hdac1
pcm6: &lt;HDA Realtek ALC889 PCM #2 Digital&gt; at cad 2 nid 1 on hdac1
pcm7: &lt;HDA Realtek ALC889 PCM #3 Digital&gt; at cad 2 nid 1 on hdac1
...</programlisting>
<para>此处显卡 (<literal>NVidia</literal>) 先于真正的声卡
(<literal>Realtek ALC889</literal>) 被探测到。
要使用声卡作为默认的回放设备, 将
<literal>hw.snd.default_unit</literal> 改为对应的设备编号:</para>
<screen>&prompt.root; <userinput>sysctl hw.snd.default_unit=<replaceable>n</replaceable></userinput></screen>
<para>这里的 <literal>n</literal> 是希望使用的声音设备编号,
在这个例子中是 <literal>4</literal>。 您可以在
<filename>/etc/sysctl.conf</filename> 中写上这个配置来令其永久性生效:</para>
<programlisting>hw.snd.default_unit=<replaceable>4</replaceable></programlisting>
</sect3>
</sect2>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Documentation Project
Original Revision: 1.291
Original Revision: 1.292
$FreeBSD$
-->
@ -1344,9 +1344,8 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>
role="fqdn">ftp.FreeBSD.org</hostid> 的 <ulink
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">packages
目录中</ulink> 但 <emphasis>在此之前</emphasis>
一定记得先看看 <ulink
url="http://mirrorlist.FreeBSD.org/">本地镜像</ulink>
上是否已经有了!
请 <emphasis>事先</emphasis> 检查一下是否存在较近的 <link
linkend="mirrors-ftp">镜像网站</link>
通常情况下这些安装包都可以直接使用,
而且应该比自行编译快一些。
安装过程本身可以通过 &man.pkg.add.1; 来完成。</para>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.195
Original Revision: 1.196
$FreeBSD$
-->
@ -519,7 +519,7 @@ protocol: ppp</screen>
<filename>ppp.conf</filename>的配置是与
<link linkend="userppp-staticIP">PPP和静态IP地址</link>一样的, 除了以下的改变:</para>
<programlisting>17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255</programlisting>
<programlisting>17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0</programlisting>
<para>再次强调, 不要包括行号, 它只是一个引用标记。 缩排一个空格是必需的。</para>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.337
Original Revision: 1.340
$FreeBSD$
-->
@ -3304,15 +3304,15 @@ You are advised to update or deinstall the affected package(s) immediately.</pro
&a.security-notifications.name; ÓʼþÁÐ±í¡£</para>
<programlisting>=============================================================================
&os;-SA-XX:XX.UTIL Security Advisory
The &os; Project
FreeBSD-SA-XX:XX.UTIL Security Advisory
The FreeBSD Project
Topic: denial of service due to some problem<co id="co-topic">
Category: core<co id="co-category">
Module: sys<co id="co-module">
Announced: 2003-09-23<co id="co-announce">
Credits: Person@EMAIL-ADDRESS<co id="co-credit">
Credits: Person<co id="co-credit">
Affects: All releases of &os;<co id="co-affects">
&os; 4-STABLE prior to the correction date
Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
@ -3324,7 +3324,7 @@ Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)<co id="co-corrected">
<acronym>CVE</acronym> Name: CVE-XXXX-XXXX<co id="co-cve">
<acronym>CVE</acronym> Name: CVE-XXXX-XXXX<co id="co-cve">
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.135
Original Revision: 1.136
$FreeBSD$
-->
@ -2523,7 +2523,7 @@ ttyu3 "/usr/libexec/getty std.9600" unknown off secure</programlisting>
<para>您可以很容易地指定启动引导器和内核来使用串口控制台, 只需要在
<filename>/boot/loader.ronf</filename>中写入下面这行:</para>
<programlisting>set console="comconsole"</programlisting>
<programlisting>console="comconsole"</programlisting>
<para>无论前一节中的引导块如何配置, 这个设置都会生效。</para>
@ -2533,7 +2533,7 @@ ttyu3 "/usr/libexec/getty std.9600" unknown off secure</programlisting>
<para>同样地,您可以指定内部控制台为:</para>
<programlisting>set console="vidconsole"</programlisting>
<programlisting>console="vidconsole"</programlisting>
<para>如果您不设置启动引导环境变量控制台,
启动引导器和内核将使用在引导块时用 <option>-h</option>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.206
Original Revision: 1.207
$FreeBSD$
-->
@ -1271,7 +1271,7 @@ DisplayManager.requestPort: 0</screen>
<programlisting>proc /proc procfs rw 0 0</programlisting>
<para>到 <filename>/etc/fstab</filename> 以便在系统启动时自动挂载
<filename>/procfs</filename>。</para>
&man.procfs.5。</para>
<para>一旦装好了 <application>GNOME</application>
就必须告诉 X server 启动