📄 network-diskless.html
字号:
border="0" alt="(4)" /></a> } host corbieres { hardware ethernet 00:02:b3:27:62:df; fixed-address corbieres.example.com; next-server 192.168.4.4; filename "pxeboot"; option root-path "192.168.4.4:/data/misc/diskless"; }} </pre><div class="CALLOUTLIST"><dl compact="COMPACT"><dt><a href="network-diskless.html#CO-DHCP-HOST-NAME"><imgsrc="./imagelib/callouts/1.png" hspace="0" vspace="0" border="0" alt="(1)" /></a></dt><dd>这个选项告诉<b class="APPLICATION">dhcpd</b>发送<varclass="LITERAL">host</var>里声明的用于无盘主机的主机名的值。另外可能会增加一个<varclass="LITERAL">option host-name <var class="REPLACEABLE">margaux</var></var> 到<varclass="LITERAL">host</var>声明里。</dd><dt><a href="network-diskless.html#CO-DHCP-NEXT-SERVER"><imgsrc="./imagelib/callouts/2.png" hspace="0" vspace="0" border="0" alt="(2)" /></a></dt><dd><var class="LITERAL">next-server</var> 正式指定 <acronymclass="ACRONYM">TFTP</acronym> 或 <acronym class="ACRONYM">NFS</acronym>服务用于载入装载器或内核文件(默认使用的是相同的主机作为<acronymclass="ACRONYM">DHCP</acronym> 服务器)。</dd><dt><a href="network-diskless.html#CO-DHCP-FILENAME"><img src="./imagelib/callouts/3.png"hspace="0" vspace="0" border="0" alt="(3)" /></a></dt><dd><var class="LITERAL">filename</var> 正式定义这样的文件——<bclass="APPLICATION">etherboot</b> 或 <acronym class="ACRONYM">PXE</acronym>为执行下一步将装载它。根据使用的传输方式,它必须要指定。 <bclass="APPLICATION">Etherboot</b> 可以被编译来使用 <acronym class="ACRONYM">NFS</acronym>或 <acronym class="ACRONYM">TFTP</acronym>。FreeBSD port 默认配置了<acronymclass="ACRONYM">NFS</acronym>。 <acronym class="ACRONYM">PXE</acronym> 使用 <acronymclass="ACRONYM">TFTP</acronym>,这就是为什么在这里使用相对文件名(这可能依赖于 <acronymclass="ACRONYM">TFTP</acronym> 服务器配置,不过会相当典型)。同样,<acronymclass="ACRONYM">PXE</acronym> 会装载 <ttclass="FILENAME">pxeboot</tt>,而不是内核。另外有几个很有意思的可能,如从FreeBSD CD-ROM的<tt class="FILENAME">/boot</tt>目录装载<tt class="FILENAME">pxeboot</tt>(因为 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">pxeboot</span>(8)</span> 能够装载 <ttclass="FILENAME">GENERIC</tt>内核,这就使得可以使用<acronym class="ACRONYM">PXE</acronym>从远程的CD-ROM里启动)。</dd><dt><a href="network-diskless.html#CO-DHCP-ROOT-PATH"><imgsrc="./imagelib/callouts/4.png" hspace="0" vspace="0" border="0" alt="(4)" /></a></dt><dd><var class="LITERAL">root-path</var> 选项定义到根(root)文件系统的路径,通常是<acronymclass="ACRONYM">NFS</acronym>符号。 当使用<acronymclass="ACRONYM">PXE</acronym>时,只要你不启用内核里的BOOTP选项,可以不管主机的IP。<acronym class="ACRONYM">NFS</acronym>服务器然后就如同<acronymclass="ACRONYM">TFTP</acronym>一样。</dd></dl></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36610" name="AEN36610">24.6.2.2. 配置使用BOOTP</a></h3><p>这里紧跟的是一个等效的<bclass="APPLICATION">bootpd</b>配置(减少到一个客户端)。这个可以在<ttclass="FILENAME">/etc/bootptab</tt>里找到。</p><p>请注意:为了使用BOOTP,<b class="APPLICATION">etherboot</b> 必须使用非默认选项<varclass="LITERAL">NO_DHCP_SUPPORT</var>来进行编译,而且<acronymclass="ACRONYM">PXE</acronym> <span class="emphasis"><i class="EMPHASIS">需要</i></span><acronym class="ACRONYM">DHCP</acronym>。<bclass="APPLICATION">bootpd</b>的唯一可见的好处是它存在于基本系统中。</p><pre class="PROGRAMLISTING">.def100:\ :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\ :sm=255.255.255.0:\ :ds=192.168.4.1:\ :gw=192.168.4.1:\ :hd="/tftpboot":\ :bf="/kernel.diskless":\ :rp="192.168.4.4:/data/misc/diskless":margaux:ha=0123456789ab:tc=.def100</pre></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36626" name="AEN36626">24.6.2.3. 使用<bclass="APPLICATION">Etherboot</b>准备启动程序</a></h3><p><a href="http://etherboot.sourceforge.net" target="_top">Etherboot的网站</a> 包含有<ahref="http://etherboot.sourceforge.net/doc/html/userman/t1.html"target="_top">更多的文档</a>——主要瞄准的是Linux系统,但无疑包含有有用的信息。如下列出的是关于在FreeBSD系统里使用<b class="APPLICATION">Etherboot</b>。</p><p>首先你必须安装<ahref="http://www.FreeBSD.org/cgi/url.cgi?ports/net/etherboot/pkg-descr"><ttclass="FILENAME">net/etherboot</tt></a> 包或port。</p><p>你可以改变 <b class="APPLICATION">Etherboot</b> 的配置(如使用<acronymclass="ACRONYM">TFTP</acronym>来代替<acronymclass="ACRONYM">NFS</acronym>),方法是修改<tt class="FILENAME">Config</tt> 文件——在<bclass="APPLICATION">Etherboot</b>源目录里。</p><p>对于我们的设置,我们要使用一张启动软盘。对于其它的方法(PROM,或<spanclass="TRADEMARK">MS-DOS</span>程序),请参考<bclass="APPLICATION">Etherboot</b>文档。</p><p>想要使用启动软盘,先插入一张软盘到安装有<bclass="APPLICATION">Etherboot</b>的机器的驱动器里,然后把当前路径改到<ttclass="FILENAME">src</tt>目录——在<bclass="APPLICATION">Etherboot</b>树下,接着输入:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">gmake bin32/<varclass="REPLACEABLE">devicetype</var>.fd0</kbd> </pre><p><var class="REPLACEABLE">devicetype</var>依赖于无盘工作站上的以太网卡的类型。参考在同一个目录下的<ttclass="FILENAME">NIC</tt>文件确认正确的<var class="REPLACEABLE">devicetype</var>。</p></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36658" name="AEN36658">24.6.2.4. 使用<acronymclass="ACRONYM">PXE</acronym>启动</a></h3><p>默认地,<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">pxeboot</span>(8)</span>装载器通过<acronymclass="ACRONYM">NFS</acronym>装载内核。它可以编译来使用<acronymclass="ACRONYM">TFTP</acronym>——通过在文件<ttclass="FILENAME">/etc/make.conf</tt>里指定<varclass="LITERAL">LOADER_TFTP_SUPPORT</var>选项来代替。查看<ttclass="FILENAME">/etc/defaults/make.conf</tt>里的注释(或5.X系统的<ttclass="FILENAME">/usr/share/examples/etc/make.conf</tt>)可以获得指导。</p><p>其它有两个未说明的<ttclass="FILENAME">make.conf</tt>选项——它可能对于设置一系列控制台无盘机器会有用: <varclass="LITERAL">BOOT_PXELDR_PROBE_KEYBOARD</var>和<varclass="LITERAL">BOOT_PXELDR_ALWAYS_SERIAL</var>(后者只存在于FreeBSD 5.X里)。</p><p>当机器启动里,要使用<acronym class="ACRONYM">PXE</acronym>,通常需要选择<varclass="LITERAL">Boot from network</var>选项——在<acronymclass="ACRONYM">BIOS</acronym>设置里,或者在PC初始化的时候输入一个功能键(functionkey)。</p></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36679" name="AEN36679">24.6.2.5. 配置<acronymclass="ACRONYM">TFTP</acronym>和<acronym class="ACRONYM">NFS</acronym>服务器</a></h3><p>如果你正在使用<acronym class="ACRONYM">PXE</acronym>或<bclass="APPLICATION">Etherboot</b>——配置使用了<acronymclass="ACRONYM">TFTP</acronym>,那么你需要在文件服务器上启用<bclass="APPLICATION">tftpd</b>:</p><div class="PROCEDURE"><ol type="1"><li><p>建立一个目录——从那里<b class="APPLICATION">tftpd</b>可以提供文件服务,如<ttclass="FILENAME">/tftpboot</tt>。</p></li><li><p>把这一行加入到<tt class="FILENAME">/etc/inetd.conf</tt>里:</p><pre class="PROGRAMLISTING">tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot</pre><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 好像有一些版本的<acronym class="ACRONYM">PXE</acronym>需要<acronymclass="ACRONYM">TCP</acronym>版本的<acronymclass="ACRONYM">TFTP</acronym>。在这种情况下,加入第二行,使用<var class="LITERAL">streamtcp</var>来代替<var class="LITERAL">dgram udp</var>。</p></blockquote></div></li><li><p>让<b class="APPLICATION">inetd</b>重读它的配置文件:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">kill -HUP `cat /var/run/inetd.pid`</kbd></pre></li></ol></div><p>你可把<ttclass="FILENAME">tftpboot</tt>目录放到服务器上的什何地方。确定这个位置设置在<ttclass="FILENAME">inetd.conf</tt> 和 <tt class="FILENAME">dhcpd.conf</tt>里。</p><p>在所有的情况下,你都需要启用<acronym class="ACRONYM">NFS</acronym>,并且<acronymclass="ACRONYM">NFS</acronym>服务器上导出相应的文件系统。</p><div class="PROCEDURE"><ol type="1"><li><p>把这一行加入到<tt class="FILENAME">/etc/rc.conf</tt>里:</p><pre class="PROGRAMLISTING">nfs_server_enable="YES"</pre></li><li><p>通过往<ttclass="FILENAME">/etc/exports</tt>里加入下面几行(调整“载入点”列,并且使用无盘工作站的名字替换<var class="REPLACEABLE">margaux corbieres</var>),导出文件系统——无盘根目录存在于此:</p><pre class="PROGRAMLISTING"><var class="REPLACEABLE">/data/misc</var> -alldirs -ro <varclass="REPLACEABLE">margaux corbieres</var></pre></li><li><p>让<b class="APPLICATION">mountd</b>重读它的配置文件。如果你真的需要启用第一步的<ttclass="FILENAME">/etc/rc.conf</tt>里<acronymclass="ACRONYM">NFS</acronym>,你可能就要重启系统了。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">kill -HUP `cat /var/run/mountd.pid`</kbd></pre></li></ol></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36743" name="AEN36743">24.6.2.6. 建立无盘内核</a></h3><p>如果你在使用<bclass="APPLICATION">Etherboot</b>,你需要为无盘客户端建立内核配置文件,使用如下选项(除了常使用的外):</p><pre class="PROGRAMLISTING">options BOOTP # Use BOOTP to obtain IP address/hostnameoptions BOOTP_NFSROOT # NFS mount root filesystem using BOOTP info </pre>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -