📄 dialup.html
字号:
<!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="term.html" /><link rel="NEXT" title="拨出设备" href="dialout.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="term.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 20. 串口通信</td><td width="10%" align="right" valign="bottom"><a href="dialout.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="DIALUP" name="DIALUP">20.4. 拨入服务</a></h1><i class="AUTHORGROUP"><span class="CONTRIB">Contributed by</span> Guy Helmer.</i> <iclass="AUTHORGROUP"><span class="CONTRIB">Additions by</span> Sean Kelly.</i> <p>为拨入服务配置FreeBSD系统与连接到终端是非常相似的,除非你正在使用modem来拨号而不是终端。</p><div class="SECT2"><h2 class="SECT2"><a id="AEN28482" name="AEN28482">20.4.1. 外置vs.内置modem</a></h2><p>外置modem看起来很容易拨号。因为,外置modem可以通过储存在非易失性的RAM中的参数来配置,它们通常提供指示器来显示重要的RS-232信号的状态。不停闪光的信号灯能给用户留下比较深刻的印象,而且指示器也可以用来查看modem是否正常地工作。</p><p>内置modem通常缺乏非易失性的RAM,所以对它们的配置可能会限制在通过DIP开关来设置。如果你的内置modem有指示灯,你也很难看得到。</p><div class="SECT3"><h3 class="SECT3"><a id="AEN28486" name="AEN28486">20.4.1.1. Modem和线缆</a></h3><p>如果你使用一个外置的modem,那你将需要适当的电缆线。一个标准的串行线应当足够长以至普通的信号能够连接上:</p><ul><li><p>Transmitted Data (<acronym class="ACRONYM">TD</acronym>)</p></li><li><p>Received Data (<acronym class="ACRONYM">RD</acronym>)</p></li><li><p>Request to Send (<acronym class="ACRONYM">RTS</acronym>)</p></li><li><p>Clear to Send (<acronym class="ACRONYM">CTS</acronym>)</p></li><li><p>Data Set Ready (<acronym class="ACRONYM">DSR</acronym>)</p></li><li><p>Data Terminal Ready (<acronym class="ACRONYM">DTR</acronym>)</p></li><li><p>Carrier Detect (<acronym class="ACRONYM">CD</acronym>)</p></li><li><p>Signal Ground (<acronym class="ACRONYM">SG</acronym>)</p></li></ul><p>FreeBSD需要对速度超过2400bit/s的<acronym class="ACRONYM">RTS</acronym> 和 <acronymclass="ACRONYM">CTS</acronym>信号进行流控制,当一个呼叫被回复或线路被挂起的时候,<acronymclass="ACRONYM">CD</acronym>信号就会被侦测到,一个会话完成之后,<acronymclass="ACRONYM">DTR</acronym>信号就会刷新modem。一些线缆不需要任何信号就可以连接,所以如果你有问题,当线路被挂起时,一个登陆任务就会丢失,你可能会在线缆上有问题。</p><p>像其他<spanclass="TRADEMARK">UNIX</span>®类的操作系统一样,FreeBSD使用硬件信号来寻找出一个呼叫什么时候会回复或一个线路会被挂起。FreeBSD避免发送命令给modem或监视modem的状况。如果你熟悉连接modem到基于PC的BBS,这可能看起来有点笨。</p></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN28523" name="AEN28523">20.4.2. 串行接口的考虑</a></h2><p>FreeBSD支持以NS8250-,NS16450-,NS16550-和NS16550A为基础的EIARS-232C通信接口。8250和16450设备有单字符缓冲。16550设备提供了一个16个字符的缓冲,可以提高更多的系统性能。因为单字符缓冲设备比16个字符的缓冲需要更多的系统资源来工作,所以基于16550A的接口卡可能更好。如果系统没有活动的串口,或有一个巨大的负载,16字符缓冲的卡对于低错误率的通信来说更好。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN28526" name="AEN28526">20.4.3. 快速预览</a></h2><p>对于终端,<tt class="COMMAND">init</tt>会在每个配置串口上为每个拨入连接产生一个<ttclass="COMMAND">getty</tt>进程。例如,如果一个modem被附带在<ttclass="FILENAME">/dev/ttyd0</tt>中,用命令<tt class="COMMAND">psax</tt>可以显示下面这些:</p><pre class="SCREEN"> 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0</pre><p>当一个用户拨上modem,并使用它进行连接时,<acronymclass="ACRONYM">CD</acronym>线就会被modem认出。内核注意到载波信号已经被检测到,需要完成<tt class="COMMAND">getty</tt>端口的打开。<ttclass="COMMAND">getty</tt>发送一个登陆:在指定的初始线速度上的命令行。Getty会检查合法的字符是否被接收,在一个典型的配置中,如果发现“垃圾”,<tt class="COMMAND">getty</tt>就会设法调节线速度,直到它接收到合理的字符。</p><p>用户在键入他/她的登陆名称后,<tt class="COMMAND">getty</tt>执行<ttclass="FILENAME">/usr/bin/login</tt>,这会要求用户输入密码来完成登陆,然后启动用户的shell。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN28547" name="AEN28547">20.4.4. 配置文件</a></h2><p>在<ttclass="FILENAME">/etc</tt>目录中,有三个你将需要编辑的系统配置文件,来允许拨号访问到你的FreeBSD系统。第一,<tt class="FILENAME">/etc/gettytab</tt>包含了针对<ttclass="FILENAME">/usr/libexec/getty</tt>守护程序的配置信息。第二,保存信息来告诉<ttclass="FILENAME">/sbin/init</tt>什么<ttclass="FILENAME">tty</tt>设备将有运行在它们系统上的<ttclass="COMMAND">getty</tt>进程。最后,你可以把端口初始化命令放在<ttclass="FILENAME">/etc/rc.serial</tt>脚本中。</p><p>在<spanclass="TRADEMARK">UNIX</span>上,关于拨号modem的想法主要有两种。一种是把本地接口配置成一个固定速度,以至一个远程用户拨号进入时都保持一个固定速度。这样配置的好处是远程用户总是可以立即看到一个系统的登陆界面。这种下降趋势是系统不知道一个用户真正的数据速度是多少,所以像eamcs全屏程序将不会调节屏幕刷新来确保对比较慢的连接有比较好的回应。</p><p>其他配置RS-232modem的方法是随着远程用户连接的速度的变化而变化。例如,连接到modem的V.32bis(14.4Kbit/s)连接可以使modem在19.2 Kbit/s上运行RS-232接口,而连接使得RS-232接口运行在2400bit/s上。 因为<tt class="COMMAND">getty</tt>不了解任何特殊的modem的连接速度报告,<ttclass="COMMAND">getty</tt>会给出一个登陆:在一个初始速度和检测字符的信息会作出回应。如果用户看到垃圾,假定它们知道它们键入了enter键,知道他看到了一个熟悉的命令行界面。如果数据速度不相匹配,<ttclass="COMMAND">getty</tt>会把用户键入的任何东西都看作``junk'',设法回到下面的速度,然后给出登陆:命令行界面。很明显,这个登陆顺序看起来不如``locked-speed''的方法,但一个连接在低速度上的用户将更好地交互接收来自全屏幕程序的回应。</p><p>This section will try to give balanced configuration information, but is biasedtowards having the modem's data rate follow the connection rate.</p><div class="SECT3"><h3 class="SECT3"><a id="AEN28566" name="AEN28566">20.4.4.1. <ttclass="FILENAME">/etc/gettytab</tt></a></h3><p><tt class="FILENAME">/etc/gettytab</tt>是一个用来配置<ttclass="COMMAND">getty</tt>信息的termcap风格的文件。请看看gettytab的联机手册了解完整的文件格式和功能列表。</p><div class="SECT4"><h4 class="SECT4"><a id="AEN28575" name="AEN28575">20.4.4.1.1. 锁定速度的配置</a></h4><p>如果你把你的modem的数据通信率锁定在一个特殊的速度上,你不需要对<ttclass="FILENAME">/etc/gettytab</tt>文件作任何变化。</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN28579" name="AEN28579">20.4.4.1.2. 匹配速度的配置</a></h4><p>你将需要在<tt class="FILENAME">/etc/gettytab</tt>中设置一个记录来告诉<ttclass="COMMAND">getty</tt>你希望在modem上使用的速度。如果你的modem的速率是2400 bit/s,则可以使用现有的 <var class="LITERAL">D2400</var> 的记录。</p><pre class="PROGRAMLISTING">## Fast dialup terminals, 2400/1200/300 rotary (can start either way)#D2400|d2400|Fast-Dial-2400:\ :nx=D1200:tc=2400-baud:3|D1200|Fast-Dial-1200:\ :nx=D300:tc=1200-baud:5|D300|Fast-Dial-300:\ :nx=D2400:tc=300-baud:</pre><p>如果你有一个更高速度的modem,必须在<ttclass="FILENAME">/etc/gettytab</tt>中添加一个记录。这儿是一个你可以使用的一个最高19.2Kbit/s的接口用在14.4 Kbit/s的modem上的记录:</p><pre class="PROGRAMLISTING">## Additions for a V.32bis Modem#um|V300|High Speed Modem at 300,8-bit:\ :nx=V19200:tc=std.300:un|V1200|High Speed Modem at 1200,8-bit:\ :nx=V300:tc=std.1200:uo|V2400|High Speed Modem at 2400,8-bit:\ :nx=V1200:tc=std.2400:up|V9600|High Speed Modem at 9600,8-bit:\ :nx=V2400:tc=std.9600:uq|V19200|High Speed Modem at 19200,8-bit:\ :nx=V9600:tc=std.19200:</pre><p>This will result in 8-bit, no parity connections.</p><p>上面使用19.2 Kbit/s的连接速度的例子,也可以使用9600 bit/s(for V.32),2400 bit/s,1200 bit/s,300 bit/s,直到19.2 Kbit/s。通信率的调节使用<var class="LITERAL">nx=</var>(``next table'')来实现。每条线使用一个<var class="LITERAL">tc=</var> (``tablecontinuation'')的记录来加速对于一个特殊传输率的标准设置。</p><p>如果你有一个28.8 Kbit/s的modem,或你想使用它的14.4Kbit/s,需要使用一个更高的超过19.2Kbit/s的通信速度的modem。这是一个启动57.6 Kbit/s的<ttclass="FILENAME">gettytab</tt>记录的例子:</p><pre class="PROGRAMLISTING">## Additions for a V.32bis or V.34 Modem# Starting at 57.6 Kbps#vm|VH300|Very High Speed Modem at 300,8-bit:\ :nx=VH57600:tc=std.300:vn|VH1200|Very High Speed Modem at 1200,8-bit:\ :nx=VH300:tc=std.1200:vo|VH2400|Very High Speed Modem at 2400,8-bit:\ :nx=VH1200:tc=std.2400:vp|VH9600|Very High Speed Modem at 9600,8-bit:\ :nx=VH2400:tc=std.9600:vq|VH57600|Very High Speed Modem at 57600,8-bit:\ :nx=VH9600:tc=std.57600:</pre><p>如果你有一个低速的CPU或一个庞大负载的系统,你没有16550A的串行端口,你可能会在57.6Kbit/s上得到``<tt class="ERRORNAME">sio</tt>'' ``silo''错误。</p></div></div><div class="SECT3"><h3 class="SECT3"><a id="DIALUP-TTYS" name="DIALUP-TTYS">20.4.4.2. <ttclass="FILENAME">/etc/ttys</tt></a></h3><p><tt class="FILENAME">/etc/ttys</tt>文件的配置在<a href="term.html#EX-ETC-TTYS">例子20-1</a>中介绍过。配置modem是相似的,但我们必须指定一个不同的终端类型。锁定速度和匹配速度配置的通用格式是:</p><pre class="PROGRAMLISTING">ttyd0 "/usr/libexec/getty <var class="REPLACEABLE">xxx</var>" dialup on</pre><p>上面的第一条是这个记录的设备特定文件——<var class="LITERAL">ttyd0</var>意味着<ttclass="FILENAME">/dev/ttyd0</tt>是这个<ttclass="COMMAND">getty</tt>将被监视的文件。第二条<var class="LITERAL">"/usr/libexec/getty<var class="REPLACEABLE">xxx</var>"</var>是将运行在设备上的进程<ttclass="COMMAND">init</tt>。第三条,dialup,是默认的终端类型。第四个参数,<varclass="LITERAL">on</var>,指出了线路是可操作的<ttclass="COMMAND">init</tt>。也可能会有第五个参数,<varclass="LITERAL">secure</var>,但它将只被用作拥有物理安全的终端(如系统终端)。</p><p>默认的终端类型可能依赖于本地参考。拨号是传统的默认终端类型,以至用户可以定制他们的登陆脚本来注意终端什么时候拨号,和自动调节它们的终端类型。然而,作者发现它很容易在它的站点上指定<var class="LITERAL">vt102</var>作为默认的终端类型,既然用户刚才在它们的远程系统上使用的是VT102模拟器。</p><p>你对<tt class="FILENAME">/etc/ttys</tt>作修改之后,你可以发送<ttclass="COMMAND">init</tt>进程给一个<acronymclass="ACRONYM">HUP</acronym>信号来重读文件。你可以使用下面的命令来发送信号:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">kill -HUP 1</kbd></pre>如果这是你的第一次设置系统,你可能要在发信号<ttclass="COMMAND">init</tt>之前等一下,等到你的modem正确地配置并连接好。 <br /><br /><div class="SECT4"><h4 class="SECT4"><a id="AEN28632" name="AEN28632">20.4.4.2.1. 锁定速度的配置</a></h4><p>对于一个锁定速度的配置,你的<tt class="FILENAME">ttys</tt>录必须有一个为<ttclass="COMMAND">getty</tt>提供固定速度的记录。对于一个速度被锁定在19.2kbit/s的modem,<ttclass="FILENAME">ttys</tt>录是这样的:</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -