?? 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>撥入服務(wù)</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="撥出設(shè)備" 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. 撥入服務(wù)</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>為撥入服務(wù)配置FreeBSD系統(tǒng)與連接到終端是非常相似的,除非你正在使用modem來撥號而不是終端。</p><div class="SECT2"><h2 class="SECT2"><a id="AEN28482" name="AEN28482">20.4.1. 外置vs.內(nèi)置modem</a></h2><p>外置modem看起來很容易撥號。因為,外置modem可以通過儲存在非易失性的RAM中的參數(shù)來配置,它們通常提供指示器來顯示重要的RS-232信號的狀態(tài)。不停閃光的信號燈能給用戶留下比較深刻的印象,而且指示器也可以用來查看modem是否正常地工作。</p><p>內(nèi)置modem通常缺乏非易失性的RAM,所以對它們的配置可能會限制在通過DIP開關(guān)來設(shè)置。如果你的內(nèi)置modem有指示燈,你也很難看得到。</p><div class="SECT3"><h3 class="SECT3"><a id="AEN28486" name="AEN28486">20.4.1.1. Modem和線纜</a></h3><p>如果你使用一個外置的modem,那你將需要適當?shù)碾娎|線。一個標準的串行線應(yīng)當足夠長以至普通的信號能夠連接上:</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>信號進行流控制,當一個呼叫被回復(fù)或線路被掛起的時候,<acronymclass="ACRONYM">CD</acronym>信號就會被偵測到,一個會話完成之后,<acronymclass="ACRONYM">DTR</acronym>信號就會刷新modem。一些線纜不需要任何信號就可以連接,所以如果你有問題,當線路被掛起時,一個登陸任務(wù)就會丟失,你可能會在線纜上有問題。</p><p>像其他<spanclass="TRADEMARK">UNIX</span>®類的操作系統(tǒng)一樣,F(xiàn)reeBSD使用硬件信號來尋找出一個呼叫什么時候會回復(fù)或一個線路會被掛起。FreeBSD避免發(fā)送命令給modem或監(jiān)視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為基礎(chǔ)的EIARS-232C通信接口。8250和16450設(shè)備有單字符緩沖。16550設(shè)備提供了一個16個字符的緩沖,可以提高更多的系統(tǒng)性能。因為單字符緩沖設(shè)備比16個字符的緩沖需要更多的系統(tǒng)資源來工作,所以基于16550A的接口卡可能更好。如果系統(tǒng)沒有活動的串口,或有一個巨大的負載,16字符緩沖的卡對于低錯誤率的通信來說更好。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN28526" name="AEN28526">20.4.3. 快速預(yù)覽</a></h2><p>對于終端,<tt class="COMMAND">init</tt>會在每個配置串口上為每個撥入連接產(chǎn)生一個<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認出。內(nèi)核注意到載波信號已經(jīng)被檢測到,需要完成<tt class="COMMAND">getty</tt>端口的打開。<ttclass="COMMAND">getty</tt>發(fā)送一個登陸:在指定的初始線速度上的命令行。Getty會檢查合法的字符是否被接收,在一個典型的配置中,如果發(fā)現(xiàn)“垃圾”,<tt class="COMMAND">getty</tt>就會設(shè)法調(diào)節(jié)線速度,直到它接收到合理的字符。</p><p>用戶在鍵入他/她的登陸名稱后,<tt class="COMMAND">getty</tt>執(zhí)行<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>目錄中,有三個你將需要編輯的系統(tǒng)配置文件,來允許撥號訪問到你的FreeBSD系統(tǒng)。第一,<tt class="FILENAME">/etc/gettytab</tt>包含了針對<ttclass="FILENAME">/usr/libexec/getty</tt>守護程序的配置信息。第二,保存信息來告訴<ttclass="FILENAME">/sbin/init</tt>什么<ttclass="FILENAME">tty</tt>設(shè)備將有運行在它們系統(tǒng)上的<ttclass="COMMAND">getty</tt>進程。最后,你可以把端口初始化命令放在<ttclass="FILENAME">/etc/rc.serial</tt>腳本中。</p><p>在<spanclass="TRADEMARK">UNIX</span>上,關(guān)于撥號modem的想法主要有兩種。一種是把本地接口配置成一個固定速度,以至一個遠程用戶撥號進入時都保持一個固定速度。這樣配置的好處是遠程用戶總是可以立即看到一個系統(tǒng)的登陸界面。這種下降趨勢是系統(tǒng)不知道一個用戶真正的數(shù)據(jù)速度是多少,所以像eamcs全屏程序?qū)⒉粫{(diào)節(jié)屏幕刷新來確保對比較慢的連接有比較好的回應(yīng)。</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>會給出一個登陸:在一個初始速度和檢測字符的信息會作出回應(yīng)。如果用戶看到垃圾,假定它們知道它們鍵入了enter鍵,知道他看到了一個熟悉的命令行界面。如果數(shù)據(jù)速度不相匹配,<ttclass="COMMAND">getty</tt>會把用戶鍵入的任何東西都看作``junk'',設(shè)法回到下面的速度,然后給出登陸:命令行界面。很明顯,這個登陸順序看起來不如``locked-speed''的方法,但一個連接在低速度上的用戶將更好地交互接收來自全屏幕程序的回應(yīng)。</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的聯(lián)機手冊了解完整的文件格式和功能列表。</p><div class="SECT4"><h4 class="SECT4"><a id="AEN28575" name="AEN28575">20.4.4.1.1. 鎖定速度的配置</a></h4><p>如果你把你的modem的數(shù)據(jù)通信率鎖定在一個特殊的速度上,你不需要對<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>中設(shè)置一個記錄來告訴<ttclass="COMMAND">getty</tt>你希望在modem上使用的速度。如果你的modem的速率是2400 bit/s,則可以使用現(xiàn)有的 <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。通信率的調(diào)節(jié)使用<var class="LITERAL">nx=</var>(``next table'')來實現(xiàn)。每條線使用一個<var class="LITERAL">tc=</var> (``tablecontinuation'')的記錄來加速對于一個特殊傳輸率的標準設(shè)置。</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或一個龐大負載的系統(tǒng),你沒有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>上面的第一條是這個記錄的設(shè)備特定文件——<var class="LITERAL">ttyd0</var>意味著<ttclass="FILENAME">/dev/ttyd0</tt>是這個<ttclass="COMMAND">getty</tt>將被監(jiān)視的文件。第二條<var class="LITERAL">"/usr/libexec/getty<var class="REPLACEABLE">xxx</var>"</var>是將運行在設(shè)備上的進程<ttclass="COMMAND">init</tt>。第三條,dialup,是默認的終端類型。第四個參數(shù),<varclass="LITERAL">on</var>,指出了線路是可操作的<ttclass="COMMAND">init</tt>。也可能會有第五個參數(shù),<varclass="LITERAL">secure</var>,但它將只被用作擁有物理安全的終端(如系統(tǒng)終端)。</p><p>默認的終端類型可能依賴于本地參考。撥號是傳統(tǒng)的默認終端類型,以至用戶可以定制他們的登陸腳本來注意終端什么時候撥號,和自動調(diào)節(jié)它們的終端類型。然而,作者發(fā)現(xiàn)它很容易在它的站點上指定<var class="LITERAL">vt102</var>作為默認的終端類型,既然用戶剛才在它們的遠程系統(tǒng)上使用的是VT102模擬器。</p><p>你對<tt class="FILENAME">/etc/ttys</tt>作修改之后,你可以發(fā)送<ttclass="COMMAND">init</tt>進程給一個<acronymclass="ACRONYM">HUP</acronym>信號來重讀文件。你可以使用下面的命令來發(fā)送信號:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">kill -HUP 1</kbd></pre>如果這是你的第一次設(shè)置系統(tǒng),你可能要在發(fā)信號<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>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -