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

📄 serialconsole-setup.html

📁 这是很好的学习嵌入式LINUX的文章
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>设置串行控制台</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="串口通信" href="serialcomms.html" /><link rel="PREVIOUS" title="拨出设备" href="dialout.html" /><link rel="NEXT" title="PPP 和 SLIP" href="ppp-and-slip.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="dialout.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 20. 串口通信</td><td width="10%" align="right" valign="bottom"><a href="ppp-and-slip.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="SERIALCONSOLE-SETUP" name="SERIALCONSOLE-SETUP">20.6.设置串行控制台</a></h1><i class="AUTHORGROUP"><span class="CONTRIB">Contributed by</span> Kazutaka YOKOTA.</i><i class="AUTHORGROUP"><span class="CONTRIB">Based on a document by</span> Bill Paul.</i><div class="SECT2"><h2 class="SECT2"><a id="SERIALCONSOLE-INTRO" name="SERIALCONSOLE-INTRO">20.6.1.Introduction</a></h2><p>FreeBSD可以通过一个串口只使用一个哑(dumb)终端就可以启动一个系统。这样一种配置只有两种人能使用:希望在机器上安装FreeBSD的系统管理员,他没有键盘或显示器,还有就是要调试内核或设备驱动程序的开发人员。</p><p>就象<a href="boot.html">&#181;&#218; 12章</a>描述的,FreeBSD可以使用一个三步的启动过程。最先两步被储存在FreeBSD启动磁盘的启动slice的启动代码块中。启动块然后就被加载,接着运行第三步启动引导器(<tt class="FILENAME">/boot/loader</tt>)。</p><p>为了设置串行控制台,你必须配置启动代码块,启动引导器代码和内核。</p></div><div class="SECT2"><h2 class="SECT2"><a id="SERIALCONSOLE-HOWTO-FAST"name="SERIALCONSOLE-HOWTO-FAST">20.6.2. 串行控制台的配置, 简明版</a></h2><p>本节假定您使用默认的配置, 了解如何连接串口, 并且希望快速地了解一下串行控制台。如果您在采取这些步骤时遇到问题, 请参考 <ahref="serialconsole-setup.html#SERIALCONSOLE-HOWTO">&#181;&#218; 20.6.3 节</a>中关于高级设置的详细介绍。</p><div class="PROCEDURE"><ol type="1"><li><p>连接串口。 串行控制台将出现在 <tt class="DEVICENAME">COM1</tt> 上。</p></li><li><p>使用 <tt class="COMMAND">echo -h &gt; /boot.config</tt>来启用引导加载器和内核的串口控制台。</p></li><li><p>编辑 <tt class="FILENAME">/etc/ttys</tt> 并把 <var class="LITERAL">ttyd0</var> 的 <varclass="LITERAL">off</var> 改为 <var class="LITERAL">on</var>。这将在串口控制台上启用一个登录提示, 其内容和普通的控制台一样。</p></li><li><p><tt class="COMMAND">shutdown -r now</tt> 将重启系统并启用串行控制台。</p></li></ol></div></div><div class="SECT2"><h2 class="SECT2"><a id="SERIALCONSOLE-HOWTO" name="SERIALCONSOLE-HOWTO">20.6.3.串行控制台的设置S</a></h2><div class="PROCEDURE"><ol type="1"><li><p>准备一个串行线缆。</p><p>你需要使用一个null-modem的线缆或一个标准的串行线和一个null-modem适配器。看看<ahref="serial.html#SERIAL-CABLES-PORTS">&#181;&#218; 20.2.2 节</a>有关串行线的讨论。</p></li><li><p>拔去你的键盘。</p><p>绝大多数的PC在开机检测的时候会检测到键盘,如果键盘没有被检测到,将会出现一个错误。一些机器会提示丢失键盘,就不会继续引导系统。</p><p>如果你的计算机出现错误,但仍能继续启动,你可以不必理它。</p><p>如果你的计算机没有键盘拒绝启动,那你需要配置BIOS来避免这个错误。看看你的主板的使用说明了解更多细节。</p><div class="TIP"><blockquote class="TIP"><p><b>提示:</b> 在BIOS中设置键盘Notinstalled并不意味着你不能使用键盘。这样做只是告诉BIOS不要在机器开机检测时检测键盘,以至不会提示说系统找不到键盘。即使你设置了Notinstalled,只要把你的键盘插上去仍然可以使用。</p></blockquote></div><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b>如果你的系统有一个PS/2鼠标,如果机会好的话,你也可以象键盘一样把它拔下来,这是因为PS/2鼠标与键盘的一些硬件是共享的,你的鼠标插上去,系统会认为键盘仍在那儿。</p></blockquote></div></li><li><p>插一个哑(dumb)终端到<tt class="DEVICENAME">COM1</tt>:(<ttclass="DEVICENAME">sio0</tt>)。</p><p>如果你没有一个哑终端,你可以使用一个比较老的带有一个modem程序的PC/XT机器,或在其他<spanclass="TRADEMARK">UNIX</span>&reg;机器上的串口。如果你没有<ttclass="DEVICENAME">COM1</tt>:(<ttclass="DEVICENAME">sio0</tt>),去找一个。这时,你没有办法只能选择<ttclass="DEVICENAME">COM1</tt>:来启动系统。如果你已经在另一台设备上使用<ttclass="DEVICENAME">COM1</tt>:,你必须临时删除那个设备,然后安装一个新的系统启动块和内核。</p></li><li><p>确信你的内核配置文件已经为<tt class="DEVICENAME">COM1</tt>:(<ttclass="DEVICENAME">sio0</tt>)设置了适当的标记:</p><p>有关的标记是:</p><div class="VARIABLELIST"><dl><dt><var class="LITERAL">0x10</var></dt><dd><p>启用控制台支持。其他的控制台标记会被忽略,除非它被设置了。现在,绝大多数的设置都有控制台的支持。这个标记的第一个就是首选的。这个单独选项是不能确保串口适用于控制台的,设置下面的标记或加上下面描述的<var class="OPTION">-h</var>选项,和这个放在一起。</p></dd><dt><var class="LITERAL">0x20</var></dt><dd><p>不管下面有没有讨论,都迫使这个选项支持控制台。这个标记在FreeBSD 2.X中替换了<varclass="LITERAL">COMCONSOLE</var>选项。标记<var class="LITERAL">0x20</var>必须和<varclass="OPTION">0x10</var>一起使用。</p></dd><dt><var class="LITERAL">0x40</var></dt><dd><p>预留这个单元 (配合 <var class="LITERAL">0x10</var>) 并让它不能用于普通的使用。您不应在希望作为控制台的串口单元上设置这个标志。 这一标志是为内核远程调试准备的。 参见 <ahref="../../../../doc/en_US.ISO8859-1/books/developers-handbook/index.html"target="_top">开发者手册</a> 以了解关于远程调试更进一步的情况。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 在FreeBSD 4.0-CURRENT和以后的版本中,标记<varclass="LITERAL">0x40</var>通常是不同的,有另一个标记可以来指定一个串口用于远程调试。</p></blockquote></div></dd></dl></div><p>例如:</p><pre class="PROGRAMLISTING">device sio0 at isa? port port IO_COM1 flags 0x10 irq 4</pre><p>看看sio的联机手册了解更多信息。</p><p>如果标记没有被设置,你必须运行UserConfig或重新编译内核。</p></li><li><p>在启动磁盘的<var class="LITERAL">a</var>分区的根目录创建一个<ttclass="FILENAME">boot.config</tt>文件。</p><p>这个文件将指导启动块代码如何启动系统。为了激活串行控制台,你必须有一个或多个下面的选项——如果你要多个选项,在同一行必须都包含它们:</p><div class="VARIABLELIST"><dl><dt><var class="OPTION">-h</var></dt><dd><p>切换内部和串行控制台。你使用这个来交换控制台设备。例如,如果你从内部控制台启动,你可以使用<var class="OPTION">-h</var>来直接使用启动引导器和内核来使用串口作为它的控制台设备。另外,如果你从串口启动,你可以使用<var class="OPTION">-h</var>来告诉启动引导器和内核使用显示设备作为控制台。/para&#62;</p></dd><dt><var class="OPTION">-D</var></dt><dd><p>切换单一和双重控制台配置。在单一配置中,控制台将是本机的控制台(显示设备)或串口。在双重控制台配置中,显示设备和串口将同时成为控制台,无论<var class="OPTION">-h</var>的选项的情形。然而,双控制台配置只在启动块运行的过程中起作用。一旦启动引导器获得控制,由<var class="OPTION">-h</var>选项指定的控制台将成为唯一的控制台。</p></dd><dt><var class="OPTION">-P</var></dt><dd><p>在启动时,探测键盘。如果键盘找不到,<var class="OPTION">-D</var>和<varclass="OPTION">-h</var>选项会自动设置。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 由于启动块的当前版本的限制,<varclass="OPTION">-P</var>选项只能探测扩展的键盘。少于101键的键盘将无法被探测到。如果你碰到这个情况,你必须避免使用<var class="OPTION">-P</var>选项。不幸的是这个问题还没有解决。</p></blockquote></div></dd></dl></div><p>使用<var class="OPTION">-P</var>选项来自动选择控制台,或使用<varclass="OPTION">-h</var>选项来激活控制台。</p><p>你也可以使用boot联机文档中所描述的其他选项。</p><p>除了<var class="OPTION">-P</var>选项,所有选项将被传给启动引导器(<ttclass="FILENAME">/boot/loader</tt>)。启动引导器将通过检查<varclass="OPTION">-h</var>选项的状态来决定是显示设备成为控制台,还是串口成为控制台。这意味着如果你指定<var class="OPTION">-D</var>选项,但在<tt class="FILENAME">/boot.config</tt>中没有<varclass="OPTION">-h</var>选项,你在启动代码块时使用串口作为控制台。启动引导器将使用内部显示设备作为控制台。</p></li><li><p>启动机器</p><p>当你启动你的FreeBSD时,启动块将把<ttclass="FILENAME">/boot.config</tt>的内容发给控制台。例如:</p><pre class="SCREEN">/boot.config: -PKeyboard: no</pre><p>如果你把<var class="OPTION">-P</var>放在<ttclass="FILENAME">/boot.config</tt>中并指出键盘存在或不存在,那将只出现第二行。这些信息会被定位到串口或内部控制台,或两个都是,完全取决于<tt class="FILENAME">/boot.config</tt>中的选项。</p><div class="INFORMALTABLE"><a id="AEN29139" name="AEN29139"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><thead><tr><th>选项</th><th>定位信息</th></tr></thead><tbody><tr><td>none</td><td>internal console</td></tr><tr><td><var class="OPTION">-h</var></td><td>serial console</td></tr><tr><td><var class="OPTION">-D</var></td><td>serial and internal consoles</td></tr><tr><td><var class="OPTION">-Dh</var></td><td>serial and internal consoles</td></tr><tr><td><var class="OPTION">-P</var>, keyboard present</td><td>internal console</td></tr><tr><td><var class="OPTION">-P</var>, keyboard absent</td><td>serial console</td></tr></tbody></table></div><p>出现上面信息后,在启动块加载启动引导器和更多信息被映到屏幕之前将有一个小小的停顿。在通常情况下,你不需要打断启动进程,但为了确信设置是否正确,你也可以这样做。</p><p>键入任何键,而不是<spanclass="KEYCODE">Enter</span>,控制台会打断启动进程。启动块将进入命令行模式。你看到:</p><pre class="SCREEN">&#62;&#62; FreeBSD/i386 BOOTDefault: 0:ad(0,a)/boot/loaderboot:</pre><p>检验上面出现的信息,可能是串口,或内部控制台,或两个都是,完全取决于你在<ttclass="FILENAME">/boot.config</tt>中的选项。如果信息出现在正确的控制台,键入<spanclass="KEYCODE">Enter</span>继续启动进程。</p><p>如果你要使用串行控制台,但你没有看到命令行,那可能设置有问题。这时,你键入<varclass="OPTION">-h</var>然后单击Enter/Return来告诉启动块(然后是启动引导器和内核)选择串口作为控制台。一旦系统起来了,回去检查一下是什么出问题了。</p></li></ol></div><p>启动引导器加载完后,你将进入启动进程的第三步,你仍然可以在启动引导器通过设定你喜欢的环境来切换内部控制台和串行控制台。看看<a href="serialconsole-setup.html#SERIALCONSOLE-LOADER">&#181;&#218; 20.6.6 节</a>。</p></div><div class="SECT2"><h2 class="SECT2"><a id="SERIALCONSOLE-SUMMARY" name="SERIALCONSOLE-SUMMARY">20.6.4.摘要</a></h2><p>这是几个在这章要讨论的几个设置和选择的控制台的摘要。</p><div class="SECT3"><h3 class="SECT3"><a id="AEN29183" name="AEN29183">20.6.4.1. 例1: 你为<ttclass="DEVICENAME">sio0</tt>设置标记为0x10</a></h3><pre class="PROGRAMLISTING">device sio0 at isa? port port IO_COM1 flags 0x10 irq 4</pre><div class="INFORMALTABLE"><a id="AEN29187" name="AEN29187"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><col /><col /><thead><tr><th>在/boot.config中的选项</th><th>启动块过程中的控制台</th><th>启动引导器过程中的控制台</th>

⌨️ 快捷键说明

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