Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Sep 2012 11:33:54 +0000 (UTC)
From:      Fukang Chen <loader@FreeBSD.org>
To:        doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org
Subject:   svn commit: r39524 - head/zh_CN.GB2312/books/handbook/advanced-networking
Message-ID:  <201209131133.q8DBXsSB088034@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: loader
Date: Thu Sep 13 11:33:53 2012
New Revision: 39524
URL: http://svn.freebsd.org/changeset/doc/39524

Log:
  MFen: r36946 -> r38600
  Language improvements. [1]
  
  Merging work done by:  delphij, loader
  Submitted by:          fuzhli (https://www.freebsdchina.org/forum/viewtopic.php?t=54463) [1]
  Obtained from:         The FreeBSD Simplified Chinese Project

Modified:
  head/zh_CN.GB2312/books/handbook/advanced-networking/chapter.sgml

Modified: head/zh_CN.GB2312/books/handbook/advanced-networking/chapter.sgml
==============================================================================
--- head/zh_CN.GB2312/books/handbook/advanced-networking/chapter.sgml	Wed Sep 12 22:46:03 2012	(r39523)
+++ head/zh_CN.GB2312/books/handbook/advanced-networking/chapter.sgml	Thu Sep 13 11:33:53 2012	(r39524)
@@ -2,7 +2,7 @@
      The FreeBSD Documentation Project
      The FreeBSD Chinese Documentation Project
 
-     Original revision: 1.436
+     Original revision: r38600
      $FreeBSD$
 -->
 
@@ -34,6 +34,10 @@
       </listitem>
 
       <listitem>
+        <para>如何配置从网络 PXE 启动一个 NFS 根文件系统。</para>
+      </listitem>
+
+      <listitem>
 	<para>如何配置网络地址转换 (NAT)。</para>
       </listitem>
 
@@ -325,7 +329,7 @@ host2.example.com link#1             UC 
 	的局域网里的,用于您那边的连接,对于 ISP
 	的局域网里的其它机子,其路由会自动产生。
 	因此,您就已经知道了如何到达机子 <hostid>T1-GW</hostid>,
-	那么也就没必要中那一步了——发送通信给 ISP 服务器。</para>
+	那么也就没必要中间那一步了——发送通信给 ISP 服务器。</para>
 
       <para>通常使用地址 <hostid
 	role="ipaddr">X.X.X.1</hostid> 做为一个局域网的网关。
@@ -507,8 +511,8 @@ Internet:
 Destination        Gateway            Flags    Refs      Use  Netif  Expire
 default            10.0.0.1           UGS         0    49378    xl0
 127.0.0.1          127.0.0.1          UH          0        6    lo0
-10.0.0/24          link#1             UC          0        0    xl0
-192.168.1/24       link#2             UC          0        0    xl1</screen>
+10.0.0.0/24        link#1             UC          0        0    xl0
+192.168.1.0/24     link#2             UC          0        0    xl1</screen>
 
 	<para>使用当前的路由表,<hostid>RouterA</hostid>
 	  是不能到达我们的内网——Internal Net 2 的。它没有到 <hostid
@@ -903,55 +907,54 @@ freebsdap       00:11:95:c3:0d:ac    1  
 	    而 <literal>CAPS</literal> 字段则给出了网络类型及其提供的功能,
 	    其中包括:</para>
 
-	  <variablelist>
-	    <varlistentry>
-	      <term><literal>E</literal></term>
-
-	      <listitem>
-		<para>Extended Service Set (ESS)。 表示通讯站是
-		  infrastructure 网络 (相对于 IBSS/ad-hoc 网络) 的成员。</para>
-	      </listitem>
-	    </varlistentry>
-
-	    <varlistentry>
-	      <term><literal>I</literal></term>
-
-	      <listitem>
-		<para>IBSS/ad-hoc 网络。 表示通讯站是 ad-hoc
-		  网络 (相对于 ESS 网络) 的成员。</para>
-	      </listitem>
-	    </varlistentry>
+        <table frame="none" pgwide="0">
+          <title>通讯站功能代码</title>
 
-	    <varlistentry>
-	      <term><literal>P</literal></term>
+          <tgroup cols="2">
+            <thead>
+              <row>
+                <entry>功能代码</entry>
+                <entry>含义</entry>
+              </row>
+            </thead>
+
+
+            <tbody>
+              <row>
+	        <entry><literal>E</literal></entry>
+		<entry>Extended Service Set (ESS)。 表示通讯站是
+		  infrastructure 网络 (相对于 IBSS/ad-hoc 网络) 的成员。</entry>
+              </row>
 
-	      <listitem>
-		<para>私密。 在 BSS 中交换的全部数据帧均需保证数据保密性。
-		  这表示 BSS 需要通讯站使用加密算法,
-		  例如 WEP、 TKIP 或 AES-CCMP 来加密/解密与其他通讯站交换的数据帧。</para>
-	      </listitem>
-	    </varlistentry>
+	      <row>
+                <entry><literal>I</literal></entry>
+		<entry>IBSS/ad-hoc 网络。 表示通讯站是 ad-hoc
+		  网络 (相对于 ESS 网络) 的成员。</entry>
+              </row>
 
-	    <varlistentry>
-	      <term><literal>S</literal></term>
+	      <row>
+                <entry><literal>P</literal></entry>
+		<entry>私密。 在 BSS 中交换的全部数据帧均需保证数据保密性。
+		  这表示 BSS 需要通讯站使用加密算法,
+		  例如 WEP、 TKIP 或 AES-CCMP 来加密/解密与其他通讯站交换的数据帧。</entry>
+              </row>
 
-	      <listitem>
-		<para>短前导码 (Short Preamble)。 表示网络采用的是短前导码
+              <row>
+	        <entry><literal>S</literal></entry>
+		<entry>短前导码 (Short Preamble)。 表示网络采用的是短前导码
 		  (由 802.11b High
 		  Rate/DSSS PHY 定义, 短前导码采用 56-位 同步字段,
-		  而不是在长前导码模式中所采用的 128-位 字段)。</para>
-	      </listitem>
-	    </varlistentry>
-
-	    <varlistentry>
-	      <term><literal>s</literal></term>
-
-	      <listitem>
-		<para>短碰撞槽时间 (Short slot time)。 表示由于不存在旧式 (802.11b)
-		  通讯站, 802.11g 网络正使用短碰撞槽时间。</para>
-	      </listitem>
-	    </varlistentry>
-	  </variablelist>
+		  而不是在长前导码模式中所采用的 128-位 字段)。</entry>
+              </row>
+
+              <row>
+	        <entry><literal>s</literal></entry>
+		<entry>短碰撞槽时间 (Short slot time)。 表示由于不存在旧式 (802.11b)
+		  通讯站, 802.11g 网络正使用短碰撞槽时间。</entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </table>
 
 	  <para>要显示目前已知的网络, 可以使用下面的命令:</para>
 
@@ -1067,7 +1070,7 @@ ifconfig_wlan0="authmode shared wepmode 
 	    <para>在您选定了无线访问点, 并配置了验证参数之后,
 	      还必须获得 IP 地址才能真正开始通讯。 多数时候,
 	      您会通过 DHCP 来获得无线 IP 地址。 要达到这个目的,
-	      只需简单地编辑 <filename>/etc/rc.conf</filename> 并在配置中加入
+	      需要编辑 <filename>/etc/rc.conf</filename> 并在配置中加入
 	      <literal>DHCP</literal>:</para>
 
 	    <programlisting>wlans_ath0="wlan0"
@@ -1123,7 +1126,7 @@ ifconfig_wlan0="inet <replaceable>192.16
 	    以及一些其它的安全弱点。 WPA 采用了 802.1X 认证协议,
 	    并采用从多种与 WEP 不同的加密算法中选择一种来保证数据保密性。
 	    WPA 支持的唯一一种加密算法是 TKIP (临时密钥完整性协议),
-	    这是一种对 WEP 所采用的基本 RC4 加密算法的扩展,
+	    TKIP 是一种对 WEP 所采用的基本 RC4 加密算法的扩展,
 	    除此之外还提供了对检测到的入侵的响应机制。 TKIP
 	    被设计用来与旧式硬件一同工作, 只需要进行部分软件修改;
 	    它提供了一种改善安全性的折衷方案,
@@ -1177,7 +1180,7 @@ ifconfig_wlan0="inet <replaceable>192.16
 	    <programlisting>wlans_ath0="wlan0"
 ifconfig_wlan0="WPA DHCP"</programlisting>
 
-	    <para>下面, 启用无线网络接口:</para>
+	    <para>下面启用无线网络接口:</para>
 
 	    <screen>&prompt.root; <userinput><filename>/etc/rc.d/netif</filename> start</userinput>
 Starting wpa_supplicant.
@@ -1229,15 +1232,16 @@ wlan0: flags=8843&lt;UP,BROADCAST,RUNNIN
       wme burst roaming MANUAL</screen>
 
 	    <note>
-	      <para>如果 <filename>/etc/rc.conf</filename> 的配置中,
-		使用了 <literal>ifconfig_wlan0="DHCP"</literal>,
-		就不需要手工运行
-		<command>dhclient</command> 命令了, 因为
-		<command>dhclient</command> 将在
-		<command>wpa_supplicant</command> 探测到密钥之后执行。</para>
+              <para>如果在 <filename>/etc/rc.conf</filename> 中把
+                <literal>ifconfig_wlan0</literal>
+                设置成了 <literal>DHCP</literal>
+                (像 <literal>ifconfig_wlan0="DHCP"</literal> 这样),
+                那么在 <command>wpa_supplicant</command>
+                连上了无线接入点 (AP) 之后,则会自动运行
+                <command>dhclient</command>。</para>
 	    </note>
 
-	    <para>在这个例子中, DHCP 并不可用, 您可以在
+	    <para>如果不打算使用 DHCP 或者 DHCP 不可用, 您可以在
 	      <command>wpa_supplicant</command> 为通讯站完成了身份认证之后,
 	      指定静态 IP 地址:</para>
 
@@ -1264,15 +1268,15 @@ wlan0: flags=8843&lt;UP,BROADCAST,RUNNIN
 	  <sect5 id="network-wireless-wpa-eap-tls">
 	    <title>使用 EAP-TLS 的 WPA</title>
 
-	    <para>使用 WPA 的第二种方式是使用 802.1X 后端验证服务器,
+	    <para>使用 WPA 的第二种方式是使用 802.1X 后端验证服务器。
 	      在这个例子中, WPA 也称作 企业-WPA,
 	      以便与安全性较差、 采用事先分发密钥的 个人-WPA 区分开来。
 	      在 企业-WPA 中, 验证操作是采用 EAP 完成的
 	      (可扩展认证协议)。</para>
 
-	    <para>EAP 并未附带加密方法,
+	    <para>EAP 并未附带加密方法。
 	      因此设计者决定将 EAP 放在加密信道中进行传送。
-	      为此设计了许多 EAP 验证方法,
+	      目前有许多 EAP 验证方法,
 	      最常用的方法是 EAP-TLS、 EAP-TTLS 和
 	      EAP-PEAP。</para>
 
@@ -1460,10 +1464,13 @@ wlan0: flags=8843&lt;UP,BROADCAST,RUNNIN
 	  <sect5 id="network-wireless-wpa-eap-peap">
 	    <title>使用 EAP-PEAP 的 WPA</title>
 
-	    <para>PEAP (受保护的 EAP) 被设计用以替代 EAP-TTLS。
-	      有两种类型的 PEAP 方法, 最常用的是 PEAPv0/EAP-MSCHAPv2。
-	      在这篇文档余下的部分中, 术语 PEAP 是指这种 EAP 方法。
-	      PEAP 是在 EAP-TLS 之后最为常用的 EAP 标准,
+	    <note>
+              <para>PEAPv0/EAP-MSCHAPv2 是最常见的 PEAP 方法。
+                此文档的以下部分将使用 PEAP 指代这些方法。</para>
+	    </note>
+
+	    <para>PEAP (受保护的 EAP) 被设计用以替代 EAP-TTLS,
+	      并且是在 EAP-TLS 之后最为常用的 EAP 标准。
 	      换言之, 如果您的网络中有多种不同的操作系统,
 	      PEAP 将是仅次于 EAP-TLS 的支持最广的标准。</para>
 
@@ -1575,15 +1582,15 @@ wlan0: flags=8843&lt;UP,BROADCAST,RUNNIN
 		密钥来进行数据传输。 这里我们使用第三个密钥。
 		它必须与无线接入点的配置一致。
                 如果你不清楚你的无线接入点,
-                你应该尝试用 <literal>1</literal>
+                尝试用 <literal>1</literal>
                 (就是说第一个密钥)来设置这个变量。</para>
 	    </listitem>
 
 	    <listitem>
-	      <para><literal>wepkey</literal> 表示设置所选的 WEP 密钥。
+	      <para><literal>wepkey</literal> 用于选择 WEP 密钥。
 		其格式应为
-		<replaceable>index:key</replaceable>, 如果没有给出 index 值,
-		则默认为 <literal>1</literal>。 因此,
+		<replaceable>index:key</replaceable>,
+		key 默认为 <literal>1</literal>;
 		如果需要设置的密钥不是第一个, 就必需指定 index 了。</para>
 
 	      <note>
@@ -1696,7 +1703,7 @@ cryptocaps=1f&lt;WEP,TKIP,AES,AES_CCM,TK
 
 	<para>这段输出显示了网卡所支持的各种功能; 其中的关键字
 	  <literal>HOSTAP</literal> 表示这块网卡可以作为无线网络接入点来使用。
-	  此外, 这里还会给出所支持的加密算法: WEP、 TKIP、 AES, 等等,
+	  此外, 这里还会给出所支持的加密算法: WEP、 TKIP、 AES, 等等。
 	  这些信息对于知道在访问接入点上使用何种安全协议非常重要。</para>
 
 	<para>只有创建网络伪设备时能够配置无线设备是否以 hostap 模式运行,
@@ -2988,7 +2995,8 @@ BEGEMOT-BRIDGE-MIB::begemotBridgeDefault
 	<listitem>
 	<para>只通过主网口收发数据。 如果主网口不可用, 则使用下一个激活的网口。
 	  您在这里加入的第一个网口便会被视为主网口; 此后加入的其他网口,
-	  则会被视为故障转移的备用网口。</para>
+	  则会被视为故障转移的备用网口。 如果发生故障转移之后,
+	  原先的网口又恢复了可用状态, 则它仍会作为主网口使用。</para>
         </listitem>
         </varlistentry>
 
@@ -3062,16 +3070,19 @@ BEGEMOT-BRIDGE-MIB::begemotBridgeDefault
  channel-group <replaceable>1</replaceable> mode active
  channel-protocol lacp</userinput></screen>
 
-	<para>在 &os; 使用
-	  <replaceable>fxp0</replaceable> 和
-	  <replaceable>fxp1</replaceable> 创建 &man.lagg.4; 接口:</para>
-
-        <screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> create </userinput>
-&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> up laggproto lacp laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable></userinput></screen>
+	<para>使用
+	  <replaceable>fxp0</replaceable> 和 <replaceable>fxp1</replaceable>
+	  创建 &man.lagg.4; 接口, 启用这个接口并配置 IP 地址
+	  <replaceable>10.0.0.3/24</replaceable>:</para>
+
+        <screen>&prompt.root; <userinput>ifconfig <replaceable>fxp0</replaceable> up</userinput>
+&prompt.root; <userinput>ifconfig <replaceable>fxp1</replaceable> up</userinput>
+&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> create </userinput>
+&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> up laggproto lacp laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable> <replaceable>10.0.0.3/24</replaceable></userinput></screen>
 
 	<para>用下面的命令查看接口状态:</para>
 	
-	<screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable></userinput></screen>
+	<screen>&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal></userinput></screen>
 	
 	<para>标记为
 	  <emphasis>ACTIVE</emphasis> 的接口是激活据合组的部分,
@@ -3107,26 +3118,39 @@ Fa0/2     SA      32768     0005.5d71.8d
 
 	<para>如欲查看进一步的详情, 则需要使用 <userinput>show lacp neighbor
 	  detail</userinput> 命令。</para>
+
+	<para>如果希望在系统重启时保持这些设置, 应在
+	  <filename>/etc/rc.conf</filename> 中增加如下配置:</para>
+
+	<programlisting>ifconfig_<replaceable>fxp0</replaceable>="up"
+ifconfig_<replaceable>fxp1</replaceable>="up"
+cloned_interfaces="<literal>lagg<replaceable>0</replaceable></literal>"
+ifconfig_<literal>lagg<replaceable>0</replaceable></literal>="laggproto lacp laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable> <replaceable>10.0.0.3/24</replaceable>"
+</programlisting>
       </example>
       <example id="networking-lagg-failover">
 	<title>故障转移模式</title>
 
 	<para>故障转移模式中, 当首选链路发生问题时,
-	  会自动切换到备用端口。 下面的命令会创建
-	  <replaceable>lagg0</replaceable> 接口, 并使用
-	  <replaceable>fxp0</replaceable> 作为首选接口, 而
-	  <replaceable>fxp1</replaceable> 作为备用接口:</para>
-
-        <screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> create</userinput>
-&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> up laggproto failover laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable></userinput></screen>
+	  会自动切换到备用端口。 首先启用成员接口,
+	  接着是配置 &man.lagg.4; 接口, 其中, 使用
+	  <replaceable>fxp0</replaceable> 作为首选接口,
+	  <replaceable>fxp1</replaceable> 作为备用接口,
+	  并在整个接口上配置 IP 地址 <replaceable>10.0.0.15/24</replaceable>:</para>
+
+        <screen>&prompt.root; <userinput>ifconfig <replaceable>fxp0</replaceable> up</userinput>
+&prompt.root; <userinput>ifconfig <replaceable>fxp1</replaceable> up</userinput>
+&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> create</userinput>
+&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> up laggproto failover laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable> <replaceable>10.0.0.15/24</replaceable></userinput></screen>
 
 	<para>创建成功之后, 接口状态会是类似下面这样,
 	  主要的区别是 <acronym>MAC</acronym> 地址和设备名:</para>
 
-        <screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable></userinput>
+        <screen>&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal></userinput>
 lagg0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
         options=8&lt;VLAN_MTU&gt;
         ether 00:05:5d:71:8d:b8
+        inet 10.0.0.15 netmask 0xffffff00 broadcast 10.0.0.255
         media: Ethernet autoselect
         status: active
         laggproto failover
@@ -3137,6 +3161,15 @@ lagg0: flags=8843&lt;UP,BROADCAST,RUNNIN
 	  <replaceable>fxp0</replaceable> 上进行流量的收发。 如果
 	  <replaceable>fxp0</replaceable>  的连接中断, 则 <replaceable>fxp1</replaceable>
 	  会自动成为激活连接。 如果主端口的连接恢复, 则它又会成为激活连接。</para>
+
+	<para>如果希望在系统重启时保持这些设置, 应在
+	  <filename>/etc/rc.conf</filename> 中增加如下配置:</para>
+
+	<programlisting>ifconfig_<replaceable>fxp0</replaceable>="up"
+ifconfig_<replaceable>fxp1</replaceable>="up"
+cloned_interfaces="<literal>lagg<replaceable>0</replaceable></literal>"
+ifconfig_<literal>lagg<replaceable>0</replaceable></literal>="laggproto failover laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable> <replaceable>10.0.0.15/24</replaceable>"
+</programlisting>
       </example>
       <example id="networking-lagg-wired-and-wireless">
 	<title>有线网络和无线网络接口间的自动切换</title>
@@ -3181,16 +3214,18 @@ bge0: flags=8843&lt;UP,BROADCAST,RUNNING
 
         <screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>iwn0</replaceable> ssid <replaceable>my_router</replaceable> up</userinput></screen>
 
-	<para>创建 &man.lagg.4; 接口, 其中 <replaceable>bge0</replaceable>
+	<para>启用 <replaceable>bge0</replaceable> 接口。 创建
+	  &man.lagg.4;  接口, 其中 <replaceable>bge0</replaceable>
 	  作为主网络接口, 而以 <replaceable>wlan0</replaceable> 作为备选接口:</para>
 
-        <screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> create</userinput>
-&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> up laggproto failover laggport <replaceable>bge0</replaceable> laggport <replaceable>wlan0</replaceable></userinput></screen>
+        <screen>&prompt.root; <userinput>ifconfig <replaceable>bge0</replaceable> up</userinput>
+&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> create</userinput>
+&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal> up laggproto failover laggport <replaceable>bge0</replaceable> laggport <replaceable>wlan0</replaceable></userinput></screen>
 
 	<para>新创建的接口的状态如下, 您系统上的 <acronym>MAC</acronym>
 	  地址和设备名等可能会有所不同:</para>
 
-        <screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable></userinput>
+        <screen>&prompt.root; <userinput>ifconfig <literal>lagg<replaceable>0</replaceable></literal></userinput>
 lagg0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
         options=8&lt;VLAN_MTU&gt;
         ether 00:21:70:da:ae:37
@@ -3200,16 +3235,19 @@ lagg0: flags=8843&lt;UP,BROADCAST,RUNNIN
         laggport: wlan0 flags=0&lt;&gt;
         laggport: bge0 flags=5&lt;MASTER,ACTIVE&gt;</screen>
 
-	<para>通过设置下列的
-	  <filename>/etc/rc.conf</filename> 配置,
-	  可以避免每次启动系统时都手工重复上面的设置操作:</para>
+	<para>接着用 DHCP 客户端来获取 IP 地址:</para>
+
+	<screen>&prompt.root; <userinput>dhclient <literal>lagg<replaceable>0</replaceable></literal></userinput></screen>
+
+	<para>如果希望在系统重启时保持这些设置, 应在
+	  <filename>/etc/rc.conf</filename> 中增加如下配置:</para>
 
 	<programlisting>ifconfig_bge0="up"
 ifconfig_iwn0="ether 00:21:70:da:ae:37"
 wlans_iwn0="wlan0"
 ifconfig_wlan0="WPA"
-cloned_interfaces="lagg0"
-ifconfig_lagg0="laggproto failover laggport bge0 laggport wlan0 DHCP"
+cloned_interfaces="<literal>lagg<replaceable>0</replaceable></literal>"
+ifconfig_<literal>lagg<replaceable>0</replaceable></literal>="laggproto failover laggport bge0 laggport wlan0 DHCP"
 </programlisting>
       </example>
     </sect2>
@@ -3421,9 +3459,9 @@ ifconfig_lagg0="laggproto failover laggp
 	    服务器可以回应 BOOTP 和 <acronym>DHCP</acronym>
 	    的请求。</para>
 
-	  <para><application>ISC DHCP 3.1</application>
+	  <para><application>ISC DHCP 4.2</application>
 	    并不属于基本系统。首先您需要安装
-	    <filename role="package">net/isc-dhcp31-server</filename>
+	    <filename role="package">net/isc-dhcp42-server</filename>
 	    port 或相应的<quote>包</quote>。</para>
 
 	  <para>一旦安装了 <application>ISC DHCP</application>,
@@ -3819,6 +3857,296 @@ cd /usr/src/etc; make distribution</prog
     </sect2>
   </sect1>
 
+  <sect1 id="network-pxe-nfs">
+    <sect1info>
+      <authorgroup>
+	<author>
+	  <firstname>Craig</firstname>
+	  <surname>Rodrigues</surname>
+	  <affiliation>
+	    <address>rodrigc@FreeBSD.org</address>
+	  </affiliation>
+	  <contrib>原作者 </contrib>
+	</author>
+      </authorgroup>
+    </sect1info>
+    <title>从 PXE 启动一个 NFS 根文件系统</title>
+
+    <para>&intel; 预启动执行环境 (<acronym>PXE</acronym>)
+      能让操作系统从网络启动。 通常由近代主板的 <acronym>BIOS</acronym>
+      提供 <acronym>PXE</acronym> 支持,它可以通过在 <acronym>BIOS</acronym>
+      设置里选择从网络启动开启。 一个功能完整的 <acronym>PXE</acronym>
+      配置还需要正确地设置 <acronym>DHCP</acronym> 和 <acronym>TFTP</acronym>
+      服务。</para>
+
+    <para>当计算机启动的时候, 通过 <acronym>DHCP</acronym> 获取关于
+      从 <acronym>TFTP</acronym> 得到引导加载器(boot loader)的信息。 
+      在计算机接受此信息以后, 便通过 <acronym>TFTP</acronym>
+      下载并执行引导加载器。 这些记载于
+      <ulink url="http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf">;
+        预启动执行环境 (PXE) 规范</ulink> 的 2.2.1 章节中。
+      在 &os; 中, 在 <acronym>PXE</acronym> 过程中获取的引导加载器为
+      <filename>/boot/pxeboot</filename>。 在 <filename>/boot/pxeboot</filename>
+      执行之后, &os; 的内核被加载, 接着是其他的 &os; 相关引导部分依次被执行。
+      更多关于 &os; 启动过程的详细信息请参阅 <xref linkend="boot">。</para>
+
+    <sect2>
+      <title>配置用于 NFS 根文件系统的 <command>chroot</command> 环境</title>
+
+	<procedure>
+	  <step>
+	    <para>Choose a directory which will have a &os; installation
+	      which will be NFS mountable.  For example, a directory such
+	      as <filename>/b/tftpboot/FreeBSD/install</filename> can be used.</para>
+            <para>选择一个可被用户 NFS 挂载并安装有 &os; 的目录。
+              比如可以使用像 <filename>/b/tftpboot/FreeBSD/install</filename>
+              这样的一个目录。</para>
+
+	  <screen>&prompt.root; <userinput>export NFSROOTDIR=/b/tftpboot/FreeBSD/install</userinput>
+&prompt.root; <userinput>mkdir -p ${NFSROOTDIR}</userinput></screen>
+	  </step>
+
+	  <step>
+	    <para>使用如下的命令开启 NFS 服务
+	      <xref linkend="network-configuring-nfs">.</para>
+	  </step>
+
+	  <step>
+	    <para>将下面这行加入 <filename>/etc/exports</filename>
+              用以通过 NFS 导出此目录:</para>
+
+	      <programlisting>/b -ro -alldirs</programlisting>
+	  </step>
+
+	  <step>
+	    <para>重起 NFS 服务:</para>
+
+	    <screen>&prompt.root; <userinput>/etc/rc.d/nfsd restart</userinput></screen>
+	  </step>
+
+	  <step>
+	    <para>按照 <xref linkend="network-inetd-settings">
+                中标明的步骤启用 &man.inetd.8;。</para>
+	  </step>
+
+	  <step>
+            <para>将如下这行加入到
+	      <filename>/etc/inetd.conf</filename>:</para>
+
+	    <programlisting>tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /b/tftpboot</programlisting>
+	  </step>
+
+	  <step>
+            <para>重启 inetd:</para>
+
+	    <screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
+	  </step>
+
+	  <step>
+            <para><link linkend="makeworld">重新编译 &os; 内核和用户态</link>:</para>
+
+	    <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make buildworld</userinput>
+&prompt.root; <userinput>make buildkernel</userinput></screen>
+	  </step>
+
+	  <step>
+	    <para>把 &os; 安装到 <acronym>NFS</acronym> 挂载目录:</para>
+
+	    <screen>
+&prompt.root; <userinput>make installworld DESTDIR=${NFSROOTDIR}</userinput>
+&prompt.root; <userinput>make installkernel DESTDIR=${NFSROOTDIR}</userinput>
+&prompt.root; <userinput>make distribution DESTDIR=${NFSROOTDIR}</userinput>
+	    </screen>
+	  </step>
+
+	  <step>
+            <para>测试 <acronym>TFTP</acronym> 服务是否能下载将从
+              <acronym>PXE</acronym> 获取的引导加载器:</para>
+
+	    <screen>
+&prompt.root; <userinput>tftp localhost</userinput>
+tftp> <userinput>get FreeBSD/install/boot/pxeboot</userinput>
+Received 264951 bytes in 0.1 seconds
+	    </screen>
+	  </step>
+
+	  <step>
+            <para>编辑 <filename>${NFSROOTDIR}/etc/fstab</filename>
+              并加入以下这行挂载 NFS 根文件系统:</para>
+
+	    <programlisting>
+# Device                                         Mountpoint    FSType   Options  Dump Pass
+myhost.example.com:/b/tftpboot/FreeBSD/install       /         nfs      ro        0    0
+	    </programlisting>
+
+            <para>用你的 <acronym>NFS</acronym> 服务器主机名或者 IP 地址替换
+              <replaceable>myhost.example.com</replaceable>。 在此例中,
+              根文件系统是以“只读”的方式挂载用来防止 <acronym>NFS</acronym>
+              客户端可能意外删除根文件系统上的文件。</para>
+	  </step>
+
+	  <step>
+            <para>设置 &man.chroot.8; 环境中的 root 密码。</para>
+	      <screen>&prompt.root; <userinput>chroot ${NFSROOTDIR}</userinput>
+&prompt.root; <userinput>passwd</userinput></screen>
+              <para>此为设置从 <acronym>PXE</acronym>
+                启动的客户机的 root 密码。</para>
+	  </step>
+
+	  <step>
+            <para>允许 ssh root 登录从 <acronym>PXE</acronym> 启动的客户机,
+              编辑 <filename>${NFSROOTDIR}/etc/ssh/sshd_config</filename>
+              并开启 <literal>PermitRootLogin</literal> 选项。
+              关于此选项的说明请参阅 &man.sshd.config.5;。</para>
+	  </step>
+
+	  <step>
+            <para>对 ${NFSROOTDIR} 的 &man.chroot.8; 环境做些其他的定制。
+              这可以是像使用 &man.pkg.add.1; 安装二进制包,
+              使用 &man.vipw.8; 修改密码, 或者编辑 &man.amd.conf.5;
+              映射自动挂载等。例如:</para>
+
+	    <screen>
+&prompt.root; <userinput>chroot ${NFSROOTDIR}</userinput>
+&prompt.root; <userinput>pkg_add -r bash</userinput></screen>
+	  </step>
+	</procedure>
+      </sect2>
+
+      <sect2>
+        <title>配置 <filename>/etc/rc.initdiskless</filename> 中用到的内存文件系统</title>
+
+        <para>如果你从一个 NFS 根卷启动,
+	  <filename>/etc/rc</filename>
+          如果检测到是从 NFS 启动便会运行
+	  <filename>/etc/rc.initdiskless</filename> 脚本。
+          请阅读此脚本中的注释部分以便了解到底发生了什么。
+          我们需要把 <filename>/etc</filename> 和
+	  <filename>/var</filename>
+          做成内存文件系统的原因是这些目录需要能被写入,
+          但 NFS 根文件系统是只读的。</para>
+	<screen>
+&prompt.root; <userinput>chroot ${NFSROOTDIR}</userinput>
+&prompt.root; <userinput>mkdir -p conf/base</userinput>
+&prompt.root; <userinput>tar -c -v -f conf/base/etc.cpio.gz --format cpio --gzip etc</userinput>
+&prompt.root; <userinput>tar -c -v -f conf/base/var.cpio.gz --format cpio --gzip var</userinput></screen>
+
+        <para>当系统启动的时候, <filename>/etc</filename> 和
+          <filename>/var</filename> 内存文件系统就会被创建并挂载,
+          <filename>cpio.gz</filename> 就会被复制进去。</para>
+      </sect2>
+
+      <sect2>
+        <title>配置 DHCP 服务</title>
+
+        <para>PXE 需要配置一个 <acronym>TFTP</acronym> 服务器和一个
+          <acronym>DHCP</acronym> 服务器。 <acronym>DHCP</acronym>
+          服务并不要求与 <acronym>TFTP</acronym> 服务在同一台机器上,
+          但是必须能够从你的网络访问到它。</para>
+
+	<procedure>
+	  <step>
+            <para>按照此文档处 <xref linkend="network-dhcp-server">
+                方法安装 <acronym>DHCP</acronym> 服务。
+                确保 <filename>/etc/rc.conf</filename> 和
+                <filename>/usr/local/etc/dhcpd.conf</filename>
+                都配置正确。
+	  </step>
+
+	  <step>
+            <para>在 <filename>/usr/local/etc/dhcpd.conf</filename> 中配置
+              <literal>next-server</literal>, <literal>filename</literal>,
+              <literal>option root-path</literal> 选项指向你的
+              <acronym>TFTP</acronym> 服务器的 IP 地址,
+              以及 <acronym>TFTP</acronym> 上 <filename>/boot/pxeboot</filename>
+              文件的路径, 和 <acronym>NFS</acronym> 根文件系统的路径。
+              这里一份 <filename>dhcpd.conf</filename> 实例:</para>
+
+	    <programlisting>
+subnet 192.168.0.0 netmask 255.255.255.0 {
+   range 192.168.0.2 192.168.0.3 ;
+   option subnet-mask 255.255.255.0 ;
+   option routers 192.168.0.1 ;
+   option broadcast-address 192.168.0.255 ;
+   option domain-name-server 192.168.35.35, 192.168.35.36 ;
+   option domain-name "example.com";
+
+   # IP address of TFTP server
+   next-server 192.168.0.1 ;
+
+   # path of boot loader obtained
+   # via tftp
+   filename "FreeBSD/install/boot/pxeboot" ;
+
+   # pxeboot boot loader will try to NFS mount this directory for root FS
+   option root-path "192.168.0.1:/b/tftpboot/FreeBSD/install/" ;
+
+}
+	    </programlisting>
+	  </step>
+	</procedure>
+      </sect2>
+
+      <sect2>
+        <title>配置 PXE 客户端与调试连接问题</title>
+
+	<procedure>
+	  <step>
+            <para>当客户端启动的时候, 进入 <acronym>BIOS</acronym>
+              配置菜单。 设置 <acronym>BIOS</acronym> 从网络启动。
+              如果之前你所有的配置步骤都正确的话, 那么所有部分应该能
+              &quot;正常工作&quot;。</para>
+	  </step>
+
+	  <step>
+            <para>使用 <filename role="package">net/wireshark</filename>
+              port 查看 <acronym>DHCP</acronym> 和 <acronym>TFTP</acronym>
+              的网络流量来调试各种问题。</para>
+	  </step>
+
+	  <step>
+            <para>确保 <filename>pxeboot</filename> 能从
+              <acronym>TFTP</acronym> 获取。
+              在你的 <acronym>TFTP</acronym> 服务器上检查
+              <filename>/var/log/xferlog</filename> 日志确保
+              <filename>pxeboot</filename> 被从正确的位置获取。
+              可以这样测试上面例子 <filename>dhcpd.conf</filename>
+              中所设置的:</para>
+
+	    <screen>&prompt.root; <userinput>tftp 192.168.0.1</userinput>
+tftp> <userinput>get FreeBSD/install/boot/pxeboot</userinput>
+Received 264951 bytes in 0.1 seconds</screen>
+
+          <para>请阅读 &man.tftpd.8; 和 &man.tftp.1;。
+            其中的 <literal>BUGS</literal> 列出了
+            <acronym>TFTP</acronym> 的一些限制。</para>
+	</step>
+
+	<step>
+          <para>确保根文件系统能够从 <acronym>NFS</acronym> 挂载。
+            可以这样测试上面例子 <filename>dhcpd.conf</filename>
+            中所设置的:</para>
+
+	  <screen>&prompt.root; <userinput>mount -t nfs 192.168.0.1:/b/tftpboot/FreeBSD/install /mnt</userinput></screen>
+	</step>
+
+	<step>
+          <para>阅读 <filename>src/sys/boot/i386/libi386/pxe.c</filename>
+            中的代码以了解 <filename>pxeboot</filename> 加载器如何设置诸如
+            <literal>boot.nfsroot.server</literal> 和
+            <literal>boot.nfsroot.path</literal> 之类的变量。
+            这些变量被用在了
+            <filename>src/sys/nfsclient/nfs_diskless.c</filename>
+            的 NFS 无盘根挂载代码中。</para>
+	</step>
+
+	<step>
+	  <para>Read &man.pxeboot.8; and &man.loader.8;.</para>
+	</step>
+      </procedure>
+    </sect2>
+  </sect1>
 
   <sect1 id="network-isdn">
     <title>ISDN</title>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209131133.q8DBXsSB088034>