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<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<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<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<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<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<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> 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<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<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<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:21:70:da:ae:37 @@ -3200,16 +3235,19 @@ lagg0: flags=8843<UP,BROADCAST,RUNNIN laggport: wlan0 flags=0<> laggport: bge0 flags=5<MASTER,ACTIVE></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> 从网络启动。 + 如果之前你所有的配置步骤都正确的话, 那么所有部分应该能 + "正常工作"。</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>