⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 network-diskless.html

📁 这是很好的学习嵌入式LINUX的文章
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<p>你可能也想使用<var class="LITERAL">BOOTP_NFSV3</var>, <varclass="LITERAL">BOOT_COMPAT</var> 和 <varclass="LITERAL">BOOTP_WIRED_TO</var>(参考4.X里的<tt class="FILENAME">LINT</tt>或5.X里的<tt class="FILENAME">NOTES</tt> on 5.X).</p><p>这些名字具有历史性,并且有些有些误导,因为它们实际上启用了内核里(它可能强制限制BOOTP或<acronym class="ACRONYM">DHCP</acronym>的使用),与<acronymclass="ACRONYM">DHCP</acronym>和BOOTP的无关的应用。</p><p>编译内核(参考<a href="kernelconfig.html">&#181;&#218; 8 章</a>),然后将它复制到<ttclass="FILENAME">dhcpd.conf</tt>里指定的地方。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 当使用<acronymclass="ACRONYM">PXE</acronym>里,使用以上选项建立内核并不做严格要求(尽管建议这样做)。启用它们会在内核启动时引起更多的<acronymclass="ACRONYM">DHCP</acronym>提及过的请求,带来的小小的风险是在有些特殊情况下新值和由<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">pxeboot</span>(8)</span>取回的值之间的不一致性。使用它们的好处是主机名会被附带设置。否则,你就需要使用其它的方法来设置主机名,如在客户端指定的<tt class="FILENAME">rc.conf</tt>文件里。</p></blockquote></div><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 为了使带有<bclass="APPLICATION">Etherboot</b>的5.X内核可引导,就需要把设备提示(devicehint)编译进去。通常要在配置文件(查看<ttclass="FILENAME">NOTES</tt>配置注释文件)里设置下列选项:</p><pre class="PROGRAMLISTING">hints      "GENERIC.hints"</pre></blockquote></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36776" name="AEN36776">24.6.2.7.准备根(root)文件系统</a></h3><p>你需要为无盘工作站建立根文件系统,位置列在<tt class="FILENAME">dhcpd.conf</tt>里的<varclass="LITERAL">root-path</var>里边。下面部分描述了要这样做的两种方法:</p><div class="SECT4"><h4 class="SECT4"><a id="AEN36784" name="AEN36784">24.6.2.7.1. 使用<ttclass="FILENAME">clone_root</tt>脚本</a></h4><p>这是建立根文件系统最快的方法,只是目前只在FreeBSD4.X里支持。这个shell脚本位于<ttclass="FILENAME">/usr/share/examples/diskless/clone_root</tt>并且需要定制,至少需要调整将会被建立文件系统的地方(<var class="LITERAL">DEST</var>可变)。</p><p>参考用于指导的脚本的最前边的注释。它们说明了如何建立一个基本文件系统,并且如果根据特定版本的无盘工作站、子网或个人工作站选择性地忽略。它们也为无盘的<tt class="FILENAME">/etc/fstab</tt> 的 <tt class="FILENAME">/etc/rc.conf</tt>文件给出了例子。</p><p>在<tt class="FILENAME">/usr/share/examples/diskless</tt>里的<ttclass="FILENAME">README</tt>文件包含了许多有趣的背景信息,但是,他们同<ttclass="FILENAME">diskless</tt>目录里的其它例子一起,实际上说明了一种配置方法——与被<ttclass="FILENAME">clone_root</tt>和<ttclass="FILENAME">/etc</tt>里的系统启动脚本使用的完全不同,这个有点迷惑人。使用它们只用做参考,除非你使用它们所描述的方法——这种情况下你需要定制<ttclass="FILENAME">rc</tt>脚本。</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN36800" name="AEN36800">24.6.2.7.2. 使用标准的<ttclass="COMMAND">make world</tt>程序</a></h4><p>这种方法可以应用到FreeBSD4.X或5.X,而且会安装一个彻底干净的系统(不仅仅是根文件系统)到<ttclass="ENVAR">DESTDIR</tt>。 你需要做的就是简单地执行下面的脚本:</p><pre class="PROGRAMLISTING">#&excl;/bin/sh export DESTDIR=/data/misc/diskless mkdir -p ${DESTDIR} cd /usr/src; make world &amp;&amp; make kernel cd /usr/src/etc; make distribution</pre><p>一旦完成,你可能需要定制<tt class="FILENAME">/etc/rc.conf</tt> 和 <ttclass="FILENAME">/etc/fstab</tt>——根据你的需要放到<ttclass="ENVAR">DESTDIR</tt>里。</p></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36810" name="AEN36810">24.6.2.8. 配置swap(交换)</a></h3><p>如果需要,位于服务器上的交换文件可以通过<acronymclass="ACRONYM">NFS</acronym>来访问。完成它的一种普遍使用的方法在5.X的发行版里已不再继续(使用)。</p><div class="SECT4"><h4 class="SECT4"><a id="AEN36814" name="AEN36814">24.6.2.8.1. <acronymclass="ACRONYM">NFS</acronym>与FreeBSD 4.X之间的Swap(交换)</a></h4><p>交换文件的位置和大小可以使用BOOTP/<acronymclass="ACRONYM">DHCP</acronym>来指定,FreeBSD指定的选项是128和129。用于<bclass="APPLICATION">ISC DHCP 3.0</b> 或 <bclass="APPLICATION">bootpd</b>的配置文件例子如下:</p><div class="PROCEDURE"><ol type="1"><li><p>把下边几行加到<tt class="FILENAME">dhcpd.conf</tt>里:</p><pre class="PROGRAMLISTING"># Global section option swap-path code 128 = string; option swap-size code 129 = integer 32;host margaux { ... # Standard lines, see above option swap-path <varclass="REPLACEABLE">"192.168.4.4:/netswapvolume/netswap"</var>; option swap-size <varclass="REPLACEABLE">64000</var>; }</pre><p><var class="LITERAL">swap-path</var>指的是存放交换文件存的路径。每个文件会命名为<ttclass="FILENAME">swap.<var class="REPLACEABLE">client-ip</var></tt>。</p><p>旧版的<b class="APPLICATION">dhcpd</b>使用的风格是<var class="LITERAL">optionoption-128 "...</var>,这个已不在支持。</p><p><tt class="FILENAME">/etc/bootptab</tt>会使用下面的格式代替:</p><pre class="PROGRAMLISTING">T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00</pre><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 在<ttclass="FILENAME">/etc/bootptab</tt>里,交换大小必须以十六进制表示。</p></blockquote></div></li><li><p>在<acronym class="ACRONYM">NFS</acronym>交换文件服务器上,建立交换文件:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mkdir <varclass="REPLACEABLE">/netswapvolume/netswap</var></kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">cd <varclass="REPLACEABLE">/netswapvolume/netswap</var></kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">dd if=/dev/zero bs=1024 count=<varclass="REPLACEABLE">64000</var> of=swap.<var class="REPLACEABLE">192.168.4.6</var></kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">chmod 0600 swap.<varclass="REPLACEABLE">192.168.4.6</var></kbd>           </pre><p><var class="REPLACEABLE">192.168.4.6</var>是无盘客户端的IP地址。</p></li><li><p>在<acronym class="ACRONYM">NFS</acronym>交换文件服务器上,增加下面几行到<ttclass="FILENAME">/etc/exports</tt>:</p><pre class="PROGRAMLISTING"><var class="REPLACEABLE">/netswapvolume</var>  -maproot=0:10 -alldirs <varclass="REPLACEABLE">margaux corbieres</var>       </pre><p>然后让<b class="APPLICATION">mountd</b>重读<ttclass="FILENAME">exports</tt>文件,同上。</p></li></ol></div></div><div class="SECT4"><h4 class="SECT4"><a id="AEN36870" name="AEN36870">24.6.2.8.2. <acronymclass="ACRONYM">NFS</acronym>与FreeBSD &amp;os 5.X之间的Swap(交换)</a></h4><p>这个内核在启动时并不支持启用<acronymclass="ACRONYM">NFS</acronym>。Swap必须在启动脚本里启用,方法是装入一个可写的文件系统,然后建立和启用交换文件。要建立一个适当大小的交换文件,你可以这样做:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">dd if=/dev/zero of=<varclass="REPLACEABLE">/path/to/swapfile</var> bs=1k count=1 oseek=<varclass="REPLACEABLE">100000</var></kbd></pre><p>要启用它,你须要把下面几行加到<tt class="FILENAME">rc.conf</tt>里:</p><pre class="PROGRAMLISTING">swapfile=<var class="REPLACEABLE">/path/to/swapfile</var></pre></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN36884" name="AEN36884">24.6.2.9. 杂项问题</a></h3><div class="SECT4"><h4 class="SECT4"><a id="AEN36886" name="AEN36886">24.6.2.9.1. 运行时<ttclass="FILENAME">/usr</tt>是只读在</a></h4><p>如果无盘工作站是配置来支持X,那么你就必须调整<bclass="APPLICATION">XDM</b>配置文件,因为它默认把错误信息写到<ttclass="FILENAME">/usr</tt>。</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN36895" name="AEN36895">24.6.2.9.2.使用非FreeBSD服务器</a></h4><p>当用作根文件系统的服务器运行的是不FreeBSD,你须要在FreeBSD机器上建立根文件系统,然后把它复制到它的目的地,使用的命令可以是<tt class="COMMAND">tar</tt>或<tt class="COMMAND">cpio</tt>。</p><p>在这种情况下,有时对于<ttclass="FILENAME">/dev</tt>里的一些特殊的文件会有问题,原因就是不同的“最大/最小”整数大小。一种解决的方法就是从非FreeBSD服务里导出一个目录,并把它载入FreeBSD到机子上,然后在FreeBSD机子上执行<tt class="COMMAND">MAKEDEV</tt>来建立正确的设备条目(FreeBSD 5.0及新版使用<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">devfs</span>(5)</span>来为用户透明地分派设备节点,在这些版本上执行<tt class="COMMAND">MAKEDEV</tt>是毫无意义的)。</p></div></div></div></div><div class="NAVFOOTER"><hr align="LEFT" width="100%" /><table summary="Footer navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="network-bridging.html"accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html"accesskey="H">起点</a></td><td width="33%" align="right" valign="top"><a href="network-isdn.html"accesskey="N">前进</a></td></tr><tr><td width="33%" align="left" valign="top">桥接</td><td width="34%" align="center" valign="top"><a href="advanced-networking.html"accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">ISDN</td></tr></table></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -