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

📄 serialconsole-setup.html

📁 这是很好的学习嵌入式LINUX的文章
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<th>内核中的控制台</th></tr></thead><tbody><tr><td>nothing</td><td>internal</td><td>internal</td><td>internal</td></tr><tr><td><var class="OPTION">-h</var></td><td>serial</td><td>serial</td><td>serial</td></tr><tr><td><var class="OPTION">-D</var></td><td>serial and internal</td><td>internal</td><td>internal</td></tr><tr><td><var class="OPTION">-Dh</var></td><td>serial and internal</td><td>serial</td><td>serial</td></tr><tr><td><var class="OPTION">-P</var>, keyboard present</td><td>internal</td><td>internal</td><td>internal</td></tr><tr><td><var class="OPTION">-P</var>, keyboard absent</td><td>serial and internal</td><td>serial</td><td>serial</td></tr></tbody></table></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN29231" name="AEN29231">20.6.4.2.例2:你为sio0设置标记为0x30</a></h3><pre class="PROGRAMLISTING">device sio0 at isa? port port IO_COM1 flags 0x30 irq 4</pre><div class="INFORMALTABLE"><a id="AEN29234" name="AEN29234"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><col /><col /><thead><tr><th>在/boot.config中的选项</th><th>启动块过程中的控制台</th><th>启动引导器过程中的控制台</th><th>内核中的控制台</th></tr></thead><tbody><tr><td>nothing</td><td>internal</td><td>internal</td><td>serial</td></tr><tr><td><var class="OPTION">-h</var></td><td>serial</td><td>serial</td><td>serial</td></tr><tr><td><var class="OPTION">-D</var></td><td>serial and internal</td><td>internal</td><td>serial</td></tr><tr><td><var class="OPTION">-Dh</var></td><td>serial and internal</td><td>serial</td><td>serial</td></tr><tr><td><var class="OPTION">-P</var>, keyboard present</td><td>internal</td><td>internal</td><td>serial</td></tr><tr><td><var class="OPTION">-P</var>, keyboard absent</td><td>serial and internal</td><td>serial</td><td>serial</td></tr></tbody></table></div></div></div><div class="SECT2"><h2 class="SECT2"><a id="SERIALCONSOLE-TIPS" name="SERIALCONSOLE-TIPS">20.6.5.串行控制台的提示</a></h2><div class="SECT3"><h3 class="SECT3"><a id="AEN29280" name="AEN29280">20.6.5.1.设置一个快速的串口速度</a></h3><p>默认的串口被设置成9600波特,8位,没有奇偶校验,1个停止位。如果你希望改变速度,你必须重新编译启动块。在<tt class="FILENAME">/etc/make.conf</tt>中添加下面一行,然后编译新的启动块:</p><pre class="PROGRAMLISTING">BOOT_COMCONSOLE_SPEED=19200</pre><p>参见 <a href="serialconsole-setup.html#SERIALCONSOLE-COM2">&#181;&#218; 20.6.5.2节</a> 以了解如何编译和安装新的引导快。</p><p>如果串行控制台用其他方法来配置而不是在启动时用 <var class="OPTION">-h</var>,或内核使用的串行控制台与启动块使用的不同,就必须在内核配置中加入下面这行,并重新编译内核:</p><pre class="PROGRAMLISTING">options CONSPEED=19200</pre></div><div class="SECT3"><h3 class="SECT3"><a id="SERIALCONSOLE-COM2" name="SERIALCONSOLE-COM2">20.6.5.2.使用串口而不是<tt class="DEVICENAME">sio0</tt>作为控制台</a></h3><p>使用串口而不是<ttclass="DEVICENAME">sio0</tt>作为控制台需要做一些重编译。如果你无论如何都要使用另一个串口,重新编译启动块,启动引导器和内核。</p><div class="PROCEDURE"><ol type="1"><li><p>得到内核源代码(看<a href="cutting-edge.html">&#181;&#218; 19 章</a>)。</p></li><li><p>编辑<tt class="FILENAME">/etc/make.conf</tt>文件,然后设置<varclass="LITERAL">BOOT_COMCONSOLE_PORT</var>作为你要使用(<varclass="LITERAL">0x3f8</var>, <var class="LITERAL">0x2f8</var>,0x3E8 or0x2E8)端口的地址。只有<tt class="DEVICENAME">sio0</tt> 到 <ttclass="DEVICENAME">sio3</tt>(<tt class="DEVICENAME">COM1</tt>到 <ttclass="DEVICENAME">COM4</tt>)能被使用。多接口串行卡将不会工作。不需要任何中断设置。</p></li><li><p>创建一个定制的内核配置文件,在你要使用的串口添加合适的标记。例如,如果要将<ttclass="DEVICENAME">sio1</tt>(<tt class="DEVICENAME">COM2</tt>:)作为控制台:</p><pre class="PROGRAMLISTING">device sio1 at isa? port port IO_COM2 flags 0x10 irq 3</pre><p>or</p><pre class="PROGRAMLISTING">device sio1 at isa? port port IO_COM2 flags 0x30 irq 3</pre><p>其他端口的控制台标记也不要设。</p></li><li><p>重新编译和安装启动块:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">cd /sys/boot</kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">make</kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">make install</kbd></pre></li><li><p>重建和安装内核。</p></li><li><p>用<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">disklabel</span>(8)</span>将启动块写到启动磁盘上,然后从新内核启动。</p></li></ol></div></div><div class="SECT3"><h3 class="SECT3"><a id="SERIALCONSOLE-DDB" name="SERIALCONSOLE-DDB">20.6.5.3.通过串行线进入DDB调试器</a></h3><pre class="PROGRAMLISTING">options BREAK_TO_DEBUGGERoptions DDB</pre></div><div class="SECT3"><h3 class="SECT3"><a id="AEN29336" name="AEN29336">20.6.5.4.在串行控制台上得到一个登陆命令行</a></h3><p>你可能希望通过串行线得到一个登陆命令行,现在你可以看到启动信息,通过串行控制台键入内核调试信息。可以这样做。</p><p>用一个编辑器打开<tt class="FILENAME">/etc/ttys</tt>文件,然后定位到下面的行:</p><pre class="PROGRAMLISTING">ttyd0 "/usr/libexec/getty std.9600" unknown off securettyd1 "/usr/libexec/getty std.9600" unknown off securettyd2 "/usr/libexec/getty std.9600" unknown off securettyd3 "/usr/libexec/getty std.9600" unknown off secure</pre><p><var class="LITERAL">ttyd0</var> 到 <var class="LITERAL">ttyd3</var>相当于<ttclass="DEVICENAME">COM1</tt>到<ttclass="DEVICENAME">COM4</tt>。可以打开或关闭某个端口。如果你已经改变了串口的速度,你必须修改标准的9600与当前的例如19200相匹配。</p><p>你也可以改变终端的类型从不知名的到你串行终端的真实类型。编辑完这个文件,你必须<ttclass="COMMAND">kill -HUP 1</tt>来使这个修改生效。</p></div></div><div class="SECT2"><h2 class="SECT2"><a id="SERIALCONSOLE-LOADER" name="SERIALCONSOLE-LOADER">20.6.6.从启动引导器修改控制台</a></h2><p>前面一节描述了如何通过调整启动块来设定串行控制台。这节将讲到在启动引导器中通过键入一些命令和环境变量来指定控制台。由于启动引导器会被启动进程的第三步所调用,启动块以后,在启动引导器中的设置将忽略在启动块中的设置。</p><div class="SECT3"><h3 class="SECT3"><a id="AEN29352" name="AEN29352">20.6.6.1. 设定串行控制台</a></h3><p>你可以很容易地指定启动引导器和内核来使用串行控制台,只需要在<ttclass="FILENAME">/boot/loader.rc</tt>中写入下面这行:</p><pre class="PROGRAMLISTING">set console=comconsole</pre><p>This will take effect regardless of the settings in the boot block discussed in theprevious section.</p><p>你最好把上面一行放在文件的第一行,以至于尽早地在启动时看到串行控制台的启动信息。</p><p>同样地,你可以指定内部控制台为:</p><pre class="PROGRAMLISTING">set console=vidconsole</pre><p>如果你不设置启动引导环境变量控制台,启动引导器和内核将使用在启动块时用<varclass="OPTION">-h</var>选项指定的控制台。</p><p>在版本3.2或以后的版本中,你可以在<tt class="FILENAME">/boot/loader.conf.local</tt> 或<tt class="FILENAME">/boot/loader.conf</tt>中指定控制台,而不是在<ttclass="FILENAME">/boot/loader.rc</tt>中。在这个方法中,你的<ttclass="FILENAME">/boot/loader.rc</tt>文件将是这样的:</p><pre class="PROGRAMLISTING">include /boot/loader.4thstart</pre><p>然后,创建<tt class="FILENAME">/boot/loader.conf.local</tt>放上下面的行。</p><pre class="PROGRAMLISTING">console=comconsole</pre><p>或</p><pre class="PROGRAMLISTING">console=vidconsole</pre><p>看看<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">loader.conf</span>(5)</span> 的联机手册了解更多信息。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> At the moment, the boot loader has no option equivalent to the <varclass="OPTION">-P</var> option in the boot block, and there is no provision toautomatically select the internal console and the serial console based on the presence ofthe keyboard.</p></blockquote></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN29381" name="AEN29381">20.6.6.2. 使用串口而不是<ttclass="DEVICENAME">sio0</tt>作为控制台</a></h3><p>你需要使用一个串口而不是<ttclass="DEVICENAME">sio0</tt>重新编译启动引导器作为串行控制台。下面的步骤跟<ahref="serialconsole-setup.html#SERIALCONSOLE-COM2">&#181;&#218; 20.6.5.2节</a>描述的相似。</p></div></div><div class="SECT2"><h2 class="SECT2"><a id="SERIALCONSOLE-CAVEATS" name="SERIALCONSOLE-CAVEATS">20.6.7.警告</a></h2><p>这篇文章本意是想告诉人们如何设定没有显示设备或键盘的专用服务器。不幸的是,绝大多数系统没有键盘可以让你启动,而没有显示设备就不让你启动。使用AMIBIOS的机器可以通过在CMOS中将“graphics adapter”项设为“Notinstalled”来在启动时不需要显示适配器。T</p><p>然而,许多机器不支持这个选项,如果你的系统没有显示硬件就拒绝启动。对于这些机器,即使你没有显示器,你也必需在机器上插上显示适配器。建议你试试采用AMIBIOS的机器。</p></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="dialout.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="ppp-and-slip.html"accesskey="N">前进</a></td></tr><tr><td width="33%" align="left" valign="top">拨出设备</td><td width="34%" align="center" valign="top"><a href="serialcomms.html"accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">PPP 和 SLIP</td></tr></table></div></body></html>

⌨️ 快捷键说明

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