哈爾濱海月數(shù)據(jù)恢復,技術亞洲領先 設為首頁加入收藏RSS訂閱
中國區(qū):哈爾濱(總部)鄭州福建深圳沈陽合肥大連包頭淄博上海廣州
    南京杭州嘉興武漢濟南青島新疆太原
亞太區(qū):印度韓國泰國新加坡馬來西亞澳大利亞
FreeBSD
FreeBSD handbook中文版 15 串口通訊

  作者: 張紀青編譯

  目錄

  15 串口通訊

  15.1 概要

  15.2 介紹

  15.3 終端

  15.4 撥入服務

  15.5 撥出服務

  15.6 設置串行控制臺

  =============================================================

  第15 章串口通訊

  =============================================================

  (翻譯中出現(xiàn)的任何問題或錯誤,請廣大讀者及時反饋給我:freebsdhandbook@163.com)

  15.1 概要

  UNIX 都是支持串口通訊的。事實上,早期的UNIX 系統(tǒng)就是利用串行線來輸入和輸出數(shù)據(jù)的。那時通常的“terminal”包含了一個每秒10 個字符的串行打印機和鍵盤時,現(xiàn)在這些事情已經(jīng)有所變化了。這章將介紹一些利用FreeBSD 進行串行通訊的方法。讀完這章,你將了解到:

  . 如何通過終端連接到FreeBSD 系統(tǒng)。

  . 如何使用modem 撥號到遠程域。

  . 如何允許遠程用戶通過modem 登陸到你的系統(tǒng)。

  . 如何從串行控制臺引導你的系統(tǒng)。

  閱讀這章之前,你應當了解:

  . 如何配置和安裝一個新的內(nèi)核。(第9 章)

  . 理解unix 的權限和進程。(第3 章)

  . 通過網(wǎng)絡設備訪問技術參考手冊。

  15.2 介紹

  15.2.1 術語

  bps

  每秒比特---數(shù)據(jù)的傳輸速率

  DTE

  數(shù)據(jù)終端設備---如你的電腦

  DCE

  第1 頁FreeBSD 使用手冊

  數(shù)據(jù)通訊設備---如你的modem

  RS-232

  用于硬件串行通訊的EIA 標準

  15.2.2 線纜和端口

  要從你的FreeBSD 系統(tǒng)連接到一個modem 或終端,你需要有一個串行端口,和連接到你串行設備的適當?shù)木€纜。如果你比較熟悉硬件和線纜,你可以跳過這節(jié)。

  15.2.2.1 線纜

  有好幾種線纜。兩個***普通的類型是null-modem 線纜和標準RS-232 線纜。你的硬件的規(guī)格說明會有詳細描述。

  15.2.2.1.1 Null-modem 線纜

  一個null-modem 線纜會直接通過象signal ground 這樣的信號。如果你想自己選擇線纜,你可以做一個使用null-modem 的線纜。這個線纜在一個DB-25 連接器上會顯示RS-232C信號名和pin 號碼。

  Pin # Signal Signal Pin #

  TxD 2 連接到3 RxD

  RxD 3 連接到2 TxD

  DTR 20 連接到6 DSR

  DSR 6 連接到20 DTR

  SG 7 連接到7 SG

  DCD 8 連接到4 RTS

  RTS 4 5 CTS

  CTS 5 連接到8 DCD

  15.2.2.1.2 標準RS-232C 線纜

  一個標準的串行線纜會直接通過所有的RS-232C 信號。這是連接一個modem 到你的FreeBSD 系統(tǒng)的線纜類型,線纜的類型需要針對一些終端。

  第2 頁FreeBSD 使用手冊

  15.2.2.2 端口

  串行端口是FreeBSD 主機與終端傳輸數(shù)據(jù)的設備。這節(jié)描述了端口的種類和他們在FreeBSD 上的地址。

  15.2.2.2.1 幾種端口

  有好幾種端口存在。你在購買和做線纜之前,你需要確定它是否適合你機器的接線端。

  絕大多數(shù)的接線端有DB25 端口。個人電腦包括運行FreeBSD 的PC 機,有DB25 或DB9端口。如果你有一個多端口的串行卡,你可以使用RJ-12 或RJ-45 端口。請仔細看看硬件

  的說明。

  15.2.2.2.2 端口名稱

  在FreeBSD 中,你可以通過/dev 目錄中的一個記錄來訪問每個串行端口。有兩種不同的記錄:

  . 呼入端口被命名為/dev/ttyd N,這兒N 是端口號,從零開始。通常,你使用呼入端口作為接線端。呼入端口要求數(shù)據(jù)線使用載波檢測信號來工作。

  . 呼出端口被命名為/dev/cuaa N。你通常不使用呼出端口作為接線端,只使用modem。

  如果串行線或接線端不支持載波檢測數(shù)據(jù)傳輸,你可以使用呼出端口。

  如果你已經(jīng)連接到了******個串行端口,那你需要使用/dev/ttyd0 來應用接線端。如果它是在第二個串行口,那就是/dev/ttyd1,等等。

  15.2.3 內(nèi)核配置

  FreeBSD 默認支持4 個串行端口。在MS-DOS 下,這些是COM1:, COM2:, COM3:和COM4:。

  FreeBSD 當前支持dumb 多端口串行接口卡,如BocaBoard 1008 and 2016,就象許多Digiboard

  和Stallion Technologies 制造的智能多接口卡。默認的內(nèi)核只會尋找標準的COM 接口。

  要看看你的內(nèi)核是否支持你的串口,需要在內(nèi)核啟動時查看一些信息,或使用

  /sbin/dmesg 命令重新播出內(nèi)核啟動信息。特別的,尋找以sio 為特征的啟動信息。

  提示:要看看帶有sio 的信息,可以使用下面的命令:

  # /sbin/dmesg | grep 'sio'

  第3 頁FreeBSD 使用手冊

  例如,在一個帶有4 個串行口的系統(tǒng)上,這些是串行口特定的內(nèi)核啟動信息:

  sio0 at 0x3f8-0x3ff irq 4 on isa

  sio0: type 16550A

  sio1 at 0x2f8-0x2ff irq 3 on isa

  sio1: type 16550A

  sio2 at 0x3e8-0x3ef irq 5 on isa

  sio2: type 16550A

  sio3 at 0x2e8-0x2ef irq 9 on isa

  sio3: type 16550A

  如果你的內(nèi)核沒有認出你的所有串行口,你需要為你的系統(tǒng)定制一個內(nèi)核。更多有關配置內(nèi)核的細節(jié),可以看看

  第9 章。

  在你的內(nèi)核配置文件中相關的設備行是這樣的:

  device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr

  device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr

  device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr

  device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr

  你可以注釋掉或完全刪除你沒有的設備。請看看sio 的有關如何為你的多端口主板寫入配置信息的聯(lián)機手冊。如果你使用了一個不同版本的FreeBSD 的配置文件,請小心點,因為

  設備的標記在兩個版本之間已經(jīng)改變了。

  15.2.4 設備指定文件

  內(nèi)核中的絕大多數(shù)設備可以通過device special files 來訪問,它就在/dev 目錄下。

  Sio 設備通過/dev/ttyd N (dial-in)和/dev/cuaa N (call-out)來訪問。FreeBSD 也提供了初始化的設備(/dev/ttyid N and /dev/cuai0 N) 和鎖定的設備(/dev/ttyld N and

  第4 頁FreeBSD 使用手冊

  /dev/cual0 N)。初始化的設備在每次端口被打開時被用來初始化設備通訊端口參數(shù)。例如使用CTS/RTS 的流控制信號的crtscts。鎖定設備被用來鎖定端口的標記以阻止用戶或程序改變某個參數(shù);看看termios, sio, and stty 的聯(lián)機手冊了解更多信息。

  15.2.4.1 編譯設備指定文件

  注意:FreeBSD 5.0 已把自動創(chuàng)建設備接點的devfs 文件系統(tǒng)作為是必需的。如果你在運行啟用devfs 的FreeBSD 版本,你就可以跳過這一節(jié)。

  一個在/dev 目錄下的叫做MAKEDEV 的shell 腳本管理著設備的特殊文件。要使用MAKEDEV 來編譯撥號設備,以使用COM1:(port 0),cd 進入/dev,然后執(zhí)行命令MAKEDEV

  ttyd0。同樣地,要編譯撥號設備以使用COM2:(port 1),可以執(zhí)行MAKEDEV ttyd1。MAKEDEV

  不僅僅創(chuàng)建/dev/ttyd N設備特殊文件,也創(chuàng)建/dev/cuaa N, /dev/cuaia N, /dev/cuala N,

  /dev/ttyld N, 和/dev/ttyid N節(jié)點。

  編譯完支持新設備的特殊文件之后,需要檢查文件的權限來確定誰可以在這些文件上讀寫—你可能不想讓普通的用戶來使用你的modem 吧。默認的在/dev/cua*上的權限應當比較

  充分:

  crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1

  crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1

  crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1

  這些許可允許用戶uucp 和在組撥號上的用戶使用呼出設備。

  15.2.5 串行端口配置

  ttyd N (或cuaa N)設備是你要打開你的應用程序的規(guī)則設備。當一個進程打開某個設備,它將有一個終端I/O 的默認設置。你可以在命令行看這些設置:

  # stty -a -f /dev/ttyd1

  當你修改了這個設備的設置,這個設置會生效,除非設備被關閉。當它被重新打開時,

  它將回到默認設置。要修改默認設置,你可以打開和調(diào)整initial state 設備的設置。例如,要打開CLOCAL 模式,8 位通訊,默認的XON/XOFF 流控制,鍵入:

  第5 頁FreeBSD 使用手冊

  # stty -f /dev/ttyid5 clocal cs8 ixon ixoff

  系統(tǒng)的串行設備的初試化可以在/etc/rc.serial 中被控制。這個文件影響了串行設備的默認設置。

  要防止某個設置被一個應用程序所修改,需要調(diào)整lock state 設備。例如,要鎖定ttyd5 的速度為57600 bps,鍵入:

  # stty -f /dev/ttyld5 57600

  現(xiàn)在,一個打開ttyd5 和設法改變端口速度的應用程序將被固定在57600 bps。很自然地,你需要確定初始情形,和鎖定設備的寫入狀態(tài),只有root 才能寫。

  15.3 終端

  當你不在電腦控制臺或不在一個連接的網(wǎng)絡上時,終端提供了一個方便和低成本的訪問你的FreeBSD 系統(tǒng)的方法。這節(jié)描述了如何在FreeBSD 上使用終端。

  15.3.1 終端的用法和類型

  早期的UNIX 系統(tǒng)沒有控制臺。人們通過將終端連接到電腦的串行口來登陸和使用程序。它很象用一個modem 和一些終端軟件來撥號進入一個遠程的系統(tǒng)只執(zhí)行文本的工作。

  今天的PC 已經(jīng)可以使用高質(zhì)量的圖形了,但與今天的其他UNIX 操作系統(tǒng)一樣,建立一個登陸的能力仍然存在;通過使用一個終端連接到一個沒有使用的串行口,你就能登陸和運

  行任何文本程序或在X Window System 中運行一個xterm 窗口程序。對于商業(yè)用戶,你可以配上任何終端到FreeBSD 系統(tǒng),然后把它們放在員工的桌面上。對于一個家庭用戶,可以使用一臺比較老的IBM PC 或Macintosh 運行一個終端連接到一臺運行FreeBSD 的高性能機器上。

  對于FreeBSD,有三種終端:

  . Dumb 終端

  . 充當終端的PCs

  . X 終端

  第6 頁FreeBSD 使用手冊

  下面的小節(jié)將描述每一種。

  15.3.1.1 Dumb 終端

  Dumb 終端可以適應好幾種硬件,讓你通過串行線連接到電腦。他們被叫做dumb 是因為他們只能夠用來顯示、發(fā)送和接受文本。你不能在它上面運行任何程序。有好幾百種dumb 終端被制造,包括Digital Equipment Corporation's VT-100 和Wyse's WY-75。只有幾種可以在FreeBSD 上工作。一些高端的終端可以顯示圖形,但只有某些軟件包可以使用這些高級特性。

  15.3.1.2 充當終端的PCs

  如果一個dumb 終端有足夠的能力來顯示、發(fā)送和接受文本,那這些個人電腦可以作為一個dumb 終端。你所需要的只是適當?shù)木€纜和一些終端模擬軟件。

  這樣一個配置被廣泛運用于家庭。例如,如果你的妻子忙于在你的FreeBSD 系統(tǒng)控制臺上工作,你也可以從一臺低檔的個人電腦登陸到FreeBSD 系統(tǒng)執(zhí)行一些文本的工作。

  15.3.1.3 X 終端

  X 終端是***復雜的終端系統(tǒng)。它們通常需要使用以太網(wǎng)來連接。他們能顯示任何X 應用程序。我們介紹X 終端只是為了感興趣。然而,這章不會涉及X 終端的安裝、配置或使用。

  15.3.2 配置

  這節(jié)描述了你在一個終端上啟用一個登陸活動,需要你在FreeBSD 系統(tǒng)上配置些什么。

  假設你已經(jīng)配置好了你的內(nèi)核來支持串行端口,你就可以連接了。

  回想起第7 章,init 進程依賴于系統(tǒng)啟動時所有的處理控制和初始化。通過init 來執(zhí)行的一些任務將先讀取/etc/ttys 文件,然后在可用的終端上啟用一個getty 進程。getty

  進程可用來閱讀一個登陸名和啟動登陸程序。

  然而,要配置你FreeBSD 系統(tǒng)的終端,你需要以root 來執(zhí)行下面的步驟:

  1. 如果它不在那兒,你需要為串行端口在/dev 目錄下添加一行記錄到/etc/ttys。

  2. 指定/usr/libexec/getty 在端口上運行,然后從/etc/gettytab 文件指定適當?shù)膅etty類型。

  第7 頁FreeBSD 使用手冊

  3. 指定默認的終端類型。

  4. 設置端口為on。

  5. 確定端口是否為secure。

  6. 迫使init 重新讀取/etc/ttys 文件。

  作為可選的步驟,你可以通過在/etc/gettytab 中建立一個記錄,在第2 步創(chuàng)建一個定制的getty類型來使用。這章不會介紹如何做;你可以看看gettytab 和getty 的聯(lián)機手冊

  了解更多信息。

  15.3.2.1 添加一個記錄到/etc/ttys

  /etc/ttys 文件列出了你FreeBSD 系統(tǒng)上允許登陸的所有端口。例如,******個虛擬控制臺ttyv0 在這個文件中有一個記錄。你可以使用這個記錄登陸進控制臺。這個文件也包含其

  他虛擬控制臺的記錄、串行口、和偽-ttys。對于一個硬連線的終端,只要列出串行端口的/dev 記錄。

  默認的FreeBSD 安裝包括了支持***初四個串行口ttyd0 到ttyd3 的/etc/ttys 文件。如果你從那些端口來使用終端,你不需要添加另一個記錄。

  例15-1.添加終端記錄到/etc/ttys

  建議我們連接兩個終端給系統(tǒng):一個Wyse-50 和一個老的運行Procomm 終端軟件模擬一個VT-100 終端的286IBM PC。在/etc/ttys 文件中的相應的記錄是這樣的:

  "/usr/libexec/getty std.38400" wy50 on insecure ttyd1

  ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure

  ,******部分指定了終端特殊文件的名稱,它可以在/dev 中找到。

  ,第二部分是在這行執(zhí)行的命令,通常是getty。Getty 初始化然后打開一行,設置速度,用戶名的命令和執(zhí)行登陸程序。

  getty 程序在它的命令行接收一個參數(shù), getty類型。一個getty類型會在終端行描述一個特征,象bps rate 和parity。getty 程序從/etc/gettytab 文件讀取這些字符。文件

  /etc/gettytab 包含了許多老的和新的終端線的記錄。在很多例子中,啟動文本std 的記錄

  第8 頁FreeBSD 使用手冊

  將用硬連線終端來工作。這些記錄忽略了奇偶性。這是一個從110 到115200 的每bps 的std記錄。當然,你可以添加你自己的記錄到這個文件。Gettytab 的聯(lián)機手冊提供了更多的信息。

  當在/etc/ttys 中設置getty類型的時候,確信在終端上的通訊設置匹配。

  在我們的例子中,Wyse-50 不使用奇偶性,用38400 bps 來連接。286 PC 不使用奇偶性,用19200bps 來連接。第三部分是通常連接到那個tty 線的終端類型。對于撥號端口,不知名的或撥出的

  通常被用在這個地方。對于硬連線的終端,終端類型不會改變,所以你可以從termcap 數(shù)據(jù)庫文件中放置一個真正的終端類型。

  在我們的例子中,Wyse-50 使用真正的終端類型,而運行Procomm 的286 PC 將被設置成在VT-100 上的模擬。如果端口被啟用,可以指定第四個部分。在第二部分,把它放在這兒將執(zhí)行初始化

  進程來啟動程序getty。如果你在這部分推遲,將沒有getty,在端口上因此就沒有登陸,***后部分被用來指定端口是否安全。標記一個安全的端口意味著你信任它允許用root

  帳戶從哪個端口登陸。不安全的端口不允許root 登陸。在一個不安全的端口上,用戶必須用無特權的帳戶登陸,然后使用su 或一個相似的機制來獲得超級用戶的權限。

  15.3.2.2 重新讀取/etc/ttys 來強制初始化

  對/etc/ttys 文件做一個必要的修改后,你必須發(fā)送一個SIGHUP 信號給初始化進程來迫使它重新讀取它的配置文件,例如:

  # kill -HUP 1

  如果能夠被正確設置,所有的線纜都是適當?shù)模K端將可以啟用了,然后一個getty進程將在每個終端被運行,你將在你的終端上看到登陸命令行。

  15.3.3 你的連接可能出現(xiàn)的問題

  即使你小心翼翼地注意細節(jié),你仍然可能會在設置終端時出錯。這兒有一個有關問題的現(xiàn)象和解決辦法的列表:

  第9 頁FreeBSD 使用手冊

  1,沒有登陸命令出現(xiàn):

  確定終端被嵌入和打開了。如果把一臺個人電腦充當一個終端,確信終端模擬軟件運行

  在正確的串口上。

  確信線纜被穩(wěn)固地連接在終端和FreeBSD 電腦上。確信用了正確的電纜。

  確定終端和FreeBSD 的傳輸速率和奇偶設置已經(jīng)一致了。如果你有一個圖象顯示終端,

  確信對比度已經(jīng)調(diào)節(jié)好了。如果它是一個可打印的終端,確信紙張和墨水已經(jīng)準備好了。

  確定一個getty 進程正在運行和服務終端。例如,可以用ps 命令來得到運行getty 程

  序的列表,鍵入:

  # ps -axww|grep getty

  你將看到一個終端的記錄。例如,下面的顯示表明一個getty 正在第二個串行端口ttyd1運行,正在/etc/gettytab 中使用std.38400 的記錄:

  22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1

  如果沒有getty 進程運行,確信你已經(jīng)在/etc/ttys 中啟用了端口。在修改完ttys 文件后,記得運行kill -HUP 1 。

  2,出現(xiàn)一個“垃圾”而不是一個登陸命令行

  確信終端和FreeBSD 使用相同的bps 傳輸率和奇偶校驗設置。檢查一下getty 進程確信當前使用的正確的getty 類型。如果沒有,編輯/etc/ttys 然后運行kill -HUP 1。

  3,當鍵入密碼時,字符兩個兩個出現(xiàn)

  將終端(或終端模擬軟件)從“half duplex”或“l(fā)ocal echo”換成“full duplex”。

  15.4 撥入服務

  配置FreeBSD 系統(tǒng)來用撥入服務與連接到終端是非常相似的,除非你正在使用modem 來撥號。

  15.4.1 外置和內(nèi)置modem

  外置modem 看起來很容易撥號。因為,外置modem 可以通過儲存在非易失性的RAM 中的

  第10 頁FreeBSD 使用手冊

  參數(shù)來配置,他們通常提供指示器來顯示重要的RS-232 信號的狀態(tài)。不停閃光的信號燈能給用戶留下比較深刻的印象,而且指示器也可以用來查看modem 是否正常地工作。

  內(nèi)置modem 通常缺乏非易失性的RAM,所以對它們的配置可能被限制在通過DIP 開關來設置。如果你的內(nèi)置modem 有指示燈,你也很難看得到。

  15.4.1.1 Modems 和線纜

  如果你使用一個外置的modem,那你將需要適當?shù)碾娎|線。一個標準的串行線應當足夠長以至普通的信號能夠連接上:

  . Transmitted Data (SD)

  . Received Data (RD)

  . Request to Send (RTS)

  . Clear to Send (CTS)

  . Data Set Ready (DSR)

  . Data Terminal Ready (DTR)

  . Carrier Detect (CD)

  . Signal Ground (SG)

  FreeBSD 需要對速度超過2400bps 的RTS 和CTS 信號進行流控制,當一個呼叫被回復或線路被掛起的時候,CD 信號就會被偵測到,一個任務完成之后,DTR 信號就會刷新modem。

  一些線纜不需要任何信號就可以連接,所以如果你有問題,當線路被掛起時,一個登陸任務就會丟失,你可能會在線纜上有問題。

  象其它unix 類的操作系統(tǒng)一樣,F(xiàn)reeBSD 使用硬件信號來尋找出一個呼叫什么時候會回復或一個線路會被掛起。FreeBSD 避免發(fā)送命令給modem 或監(jiān)視modem 的狀況。如果你熟

  悉連接modem 到BBS,這可能是很難的。

  15.4.2 串行接口的考慮

  FreeBSD 支持以NS8250-, NS16450-, NS16550-和NS16550A 為基礎的EIA RS-232C 通訊接口。8250 和16450 設備有單字符緩沖。16550 設備提供了一個16 個字符的緩沖,可以提

  第11 頁FreeBSD 使用手冊

  高更多的系統(tǒng)性能。因為單字符緩沖設備比16 個字符的緩沖需要更多的系統(tǒng)資源來工作,所以基于16550A 的接口卡可能更好。如果系統(tǒng)沒有活動的串行口,或有一個巨大的負載,

  16 字符緩沖的卡對于低錯誤率的通訊來說更好。

  15.4.3 快速預覽

  對于終端,init 會在每個配置串行口上為每個撥入連接產(chǎn)生一個getty 進程。例如,

  如果一個modem 被附帶在/dev/ttyd0 中,用命令ps ax 可以顯示下面這些:

  4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0

  當一個用戶撥上modem,并使用它進行連接時,CD 線就會被modem 認出。內(nèi)核注意到載波信號已經(jīng)被檢測到,需要完成getty 的端口的打開。Getty 發(fā)送一個登陸:在指定的初始

  線速度上的命令行。Getty 會檢查合法的字符是否被接收,在一個典型的配置中,如果發(fā)現(xiàn)垃圾,getty 就會設法調(diào)節(jié)線速度,直到它接收到合理的字符。

  15.4.4 配置文件

  在/etc 目錄中,有三個你將需要編輯的系統(tǒng)配置文件,來允許撥號訪問到你的FreeBSD系統(tǒng)。******,/etc/gettytab 包含了針對/usr/libexec/getty 守護程序的配置信息。第二,

  保存信息來告訴/sbin/init 什么tty 設備將有運行在他們系統(tǒng)上的getty 進程。***后,你可以把端口初試化命令放在/etc/rc.serial 腳本中。在unix 上,關于撥號modem 的想法主要有兩種。一種是把本地接口配置成一個固定速率,以至一個遠程用戶撥號進入時都保持一個固定速率。這樣配置的好處是遠程用戶總是可以立即看到一個系統(tǒng)的登陸界面。這種下降趨勢是系統(tǒng)不知道一個用戶真正的數(shù)據(jù)速率是多少,所以象eamcs 全屏程序將不會調(diào)接屏幕刷新來確保對比較慢的連接有比較好的回應。

  其他的配置RS-232 modem 的方法是隨著遠程用戶連接的速度的變化而變化。例如,連接到modem 的V.32bis (14.4 Kbps)連接可以使modem 在19.2 Kbps 上運行RS-232 接口,

  而連接使得RS-232 接口運行在2400 bps 上。

  第12 頁FreeBSD 使用手冊

  因為getty 不了解任何特殊的modem 的連接速度報告,getty 會給出一個登陸:在一個初始速度和檢測字符的信息會作出回應。如果用戶看到垃圾,假定他們知道他們鍵入了

  enter 鍵,知道他看到了一個熟悉的命令行界面。如果數(shù)據(jù)速率不相匹配,getty 會把用戶鍵入的任何東西都看作“junk”,設法回到下面的速度,然后給出登陸:命令行界面。很明顯,這個登陸順序看起來不如locked-speed 的方法,但一個連接在低速率上的用戶將更好地交互接收來自全屏幕程序的回應。

  15.4.4.1 /etc/gettytab

  /etc/gettytab 是一個用來配置getty 信息的termcap 風格的文件。請看看gettytab 的聯(lián)機手冊了解完整的文件格式和功能列表。

  15.4.4.1.1 鎖定速率的配置

  如果你把你的modem 的數(shù)據(jù)通訊率鎖定在一個特殊的速率上, 你不需要對/etc/gettytab 文件做任何變化。

  15.4.4.1.2 匹配速率的配置

  你將需要在/etc/gettytab 中設置一個記錄來給出getty 的你希望用到你的modem 上的有關速度的信息。如果你有一個2400 bps 的modem,你可以使用已存在的D2400 的記錄。

  #

  # 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:

  第13 頁FreeBSD 使用手冊

  如果你有一個更高速度的modem,你必須在/etc/gettytab 中添加一個記錄;這兒是一個你可以使用的一個******19.2 Kbps 的接口用在14.4 Kbps 的modem 上的記錄:

  #

  # 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:

  上面使用19.2 Kbps 的連接速度的例子,也可以使用9600 bps (for V.32), 2400 bps, 1200 bps, 300 bps,直到19.2 Kbps。通訊率的調(diào)節(jié)使用nx= (“next table”)來實現(xiàn)。每

  條線使用一個tc= (“table continuation”)的記錄來加速對于一個特殊數(shù)據(jù)率的標準設置。如果你有一個28.8 Kbps 的modem,或你想使用它的14.4Kbps,你需要使用一個更高的

  超過19.2 Kbps 的通訊速率的modem。這是一個啟動57.6 Kbps 的gettytab 記錄的例子:

  #

  # Additions for a V.32bis or V.34 Modem

  第14 頁FreeBSD 使用手冊

  # 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:

  如果你有一個低速的CPU 或一個龐大負載的系統(tǒng),你沒有16550A 的串行端口,你可能會在57.6 Kbps 上得到sio 錯誤。

  15.4.4.2 /etc/ttys

  /etc/ttys 文件的配置在例15-1 中介紹過。配置modem 是相似的,但我們必須指定一個不同的終端類型。鎖定速度和匹配速度配置的通用格式是:

  ttyd0 "/usr/libexec/getty xxx" dialup on

  上面的******條是這個記錄的設備特定文件—ttyd0 意味著/dev/ttyd0 是這個getty 將被監(jiān)視的文件。第二條"/usr/libexec/getty xxx"是將運行在設備上的處理init。第三條,

  dialup,是默認的終端類型。第四個參數(shù),on,指出了線路是可操作的init。也可能會有第五個參數(shù),secure,但它將只被用作擁有物理安全的終端(如系統(tǒng)終端)。

  第15 頁FreeBSD 使用手冊

  默認的終端類型可以依賴于本地參考。撥號是傳統(tǒng)的默認的終端類型,以至用戶可以定制他們的登陸腳本來注意終端什么時候撥號,和自動調(diào)節(jié)他們的終端類型。然而,作者發(fā)現(xiàn)

  它很容易在他的站點上指定vt102 作為默認的終端類型,既然用戶剛才在他們的遠程系統(tǒng)上使用的是VT102 模擬器。

  你對/etc/ttys 作修改之后,你可以發(fā)送init 進程給一個HUP 信號來重讀文件。你可以使用下面的命令來發(fā)送信號。:

  # kill -HUP 1

  如果這是你的******次設置系統(tǒng),你可能要在發(fā)信號init 之前等一下,等到你的modem 被正確地配置并連接好。

  15.4.4.2.1 鎖定速率的配置

  對于一個鎖定速率的配置,你的ttys 記錄必須有一個為getty 提供固定速率的記錄。

  對于一個速度被鎖定在19.2kbps 的modem,ttys 記錄是這樣的:

  ttyd0 "/usr/libexec/getty std.19200" dialup on

  如果你的modem 被鎖定在一個不同的數(shù)據(jù)速率,為std. speed使用適當?shù)乃俾蕘泶鎠td.19200。確信你使用了一個在/etc/gettytab 中列出的正確的類型。

  15.4.4.2.2 匹配速度的配置

  在一個匹配速率的配置中,你的ttys 記錄需要參考在/etc/gettytab 中適當?shù)钠鹗糰uto-baud 記錄。例如,如果你為一個以19.2 Kbps 開始的可匹配速度的modem 添加上面建

  議的記錄的話,你的ttys 記錄可能是這樣的:

  ttyd0 "/usr/libexec/getty V19200" dialup on

  15.4.4.3 /etc/rc.serial

  高速modem,象V.32, V.32bis, 和V.34 modems,需要使用硬件(RTS/CTS)流控制。你可以在/etc/rc.serial 中添加stty 命令來設置硬件流控制標記。

  例如,在撥入和撥出初始設備的#1's (COM2:)串行端口上設置termios 標記crtscts, 下面這些行會被添加到/etc/rc.serial 中:

  第16 頁FreeBSD 使用手冊

  # Serial port initial configuration

  stty -f /dev/ttyid1 crtscts

  stty -f /dev/cuai01 crtscts

  15.4.5 Modem 設置

  如果你有一個modem,它的參數(shù)能被存儲在非易失性的RAM 中,你將必須使用一個終端程序來設置參數(shù)。使用同樣的通訊速率來連接modem 作為初始速度getty 將使用和配置

  modem 的非易失性RAM 來匹配這些要求:

  . CD asserted when connected

  . DTR asserted for operation; dropping DTR hangs up line and resets modem

  . CTS transmitted data flow control

  . Disable XON/XOFF flow control

  . RTS received data flow control

  . Quiet mode (no result codes)

  . No command echo

  請讀讀你的modem 的文檔找到你需要用什么命令和DIP 接口設置。例如,要在一個USRobotics Sportster 14,400 的外置modem 上設置上面的參數(shù),你可以用下面這些命令:

  ATZ

  AT&C1&D2&H1&I0&R2&W

  你也可能想要在modem 上尋找機會調(diào)節(jié)這個設置,例如它是否使用V.42bis 和MNP5 壓 縮。USR Sportster 14,400 外置modem 也有一些用來設置的DIP 開關,也許你可以使用這

  些設置作為一個例子:

  . Switch 1: UP -- DTR Normal

  . Switch 2: Do not care (Verbal Result Codes/Numeric Result Codes)

  . Switch 3: UP -- Suppress Result Codes

  第17 頁FreeBSD 使用手冊

  . Switch 4: DOWN -- No echo, offline commands

  . Switch 5: UP -- Auto Answer

  . Switch 6: UP -- Carrier Detect Normal

  . Switch 7: UP -- Load NVRAM Defaults

  . Switch 8: Do not care (Smart Mode/Dumb Mode)

  15.4.5.1 鎖定速率的配置

  對于一個鎖定速率的配置,你需要配置modem 來獲得一個不依賴于通訊率的穩(wěn)定的modem-to-computer 的數(shù)據(jù)率。在一個USR Sportster 14,400 外置modem 上,這些命令將

  鎖定modem-to-computer 的數(shù)據(jù)率:

  ATZ

  AT&B1&W

  15.4.5.2 匹配速率的配置

  對于一個變速的配置,你需要配置你的modem 來調(diào)節(jié)它的串行端口數(shù)據(jù)率來匹配接收的數(shù)據(jù)率。在一個USR Sportster 14,400 的外置modem 上,這些命令將鎖定modem 的錯誤修

  正數(shù)據(jù)率適合命令要求的速度,但允許串行端口速率適應non-error-corrected 的連接:

  ATZ

  AT&B2&W

  15.4.5.3 檢查modem 的配置

  大多數(shù)高速的modem 提供了用來查看當前操作參數(shù)的命令。在USR Sportster 14,400 外置modem 上,命令ATI5 顯示了存儲在非易失性RAM 中的設置。要看看正確的modem 操作

  參數(shù),可以使用命令ATZ 然后是ATI4。

  如果你有一個不同牌子的modem,檢查modem 的使用手冊看看如何雙重檢查你的modem 的配置參數(shù)。

  15.4.6 問題解答

  第18 頁FreeBSD 使用手冊

  這兒是幾個檢查撥號modem 的步驟。

  15.4.6.1 檢查FreeBSD 系統(tǒng)

  把你的modem 連接到FreeBSD 系統(tǒng),啟動系統(tǒng),然后,如果你的modem 有一個指示燈,當?shù)顷憰r看看modem 的DTR 指示燈是否亮:會在系統(tǒng)控制臺出現(xiàn)命令行---如果它亮,意味

  著FreeBSD 已經(jīng)在適當?shù)耐ㄓ嵍丝趩恿艘粋€getty 進程,等待modem 接受一個呼叫。

  如果DTR 指示燈不亮,通過控制臺登陸到FreeBSD 系統(tǒng),然后執(zhí)行一個ps ax 來看

  FreeBSD 是否正在正確的端口運行一個getty 進程。你將在進程顯示中看到象這樣的一行:

  114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0

  115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1

  如果你看到這樣的:

  114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0

  說明,modem 不接受呼叫,這意味著getty 已經(jīng)在通訊端口打開了。這可以指出線纜有問題或modem 錯誤配置,因為getty 不能打開通訊端口。

  如果你沒有看到任何getty 進程等待打開渴望的ttyd N端口,在/etc/ttys 中雙擊你的記錄看看那兒是否有錯誤。另外,檢查日志文件/var/log/messages 看看是否有一些來自

  init 或getty 的關于一些問題的日志信息。如果有任何信息,仔細檢查配置文件/etc/ttys 和/etc/gettytab,還有適當?shù)脑O備文件/dev/ttydN,是否有錯誤,丟失記錄,或丟失了設備指定文件。

  15.4.6.2 嘗試接入

  設法撥入系統(tǒng);確信使用8 位,沒有奇偶檢驗,在遠程系統(tǒng)上的1 阻止位。如果你不能立刻得到一個命令行,試試每隔一秒鍵入enter。如果你仍沒有看到一個登陸:設法發(fā)送一

  個BREAK。如果你正使用一個高速的modem 來撥號,請在鎖定撥號modem 的接口速度后再試試。

  如果你不能得到一個登陸:prompt,再檢查一下/etc/gettytab,重復檢查:

  . 在/etc/ttys 中指定的初始可用的名稱與/etc/gettytab 中的一個可用的相匹配。

  第19 頁FreeBSD 使用手冊

  . 每個nx=記錄與另一個gettytab 可用名稱匹配。

  . 每個tc=記錄與另一個gettytab 可用名稱相匹配。

  如果你撥號但FreeBSD 系統(tǒng)上的modem 沒有回應,確信modem 能回應電話。如果modem看起來配置正確了,通過檢查modem 的指示燈來確認DTR 線連接正確。

  如果你做了好幾次,它仍然無法工作,打斷一會,待會再試試。如果還不能工作,也許你應該發(fā)一封電子郵件給尋求幫助。

  15.5 撥出設備

  下面將讓你的主機通過modem 連接到另一臺電腦上。這只要建立一個終端作為遠程主機。這可以用來登陸進一個BBS。

  如果你用PPP 有問題,那這種連接在internet 上下載一個文件是非常有幫助的。如果你必須FTP 一些東西,而PPP 斷了,使用終端連接到FTP。然后使用zmodem 來把它傳輸?shù)?

  你的機器上。

  15.5.1 我的Stock Hayes Modem 不被支持,我該怎么辦?

  事實上,聯(lián)機手冊對于這個的描述已經(jīng)過期了。有一個通用的Hayes 撥號已經(jīng)建構在里面了。只要在你的/etc/remote 文件中使用at=hayes。

  Hayes 驅動器不夠“聰明”只能認出一些比較新的modem 的高級特性---如BUSY, NO

  DIALTONE, or CONNECT 115200 的信息將被搞亂。當你使用的時候,你必須把這些信息關掉。

  另外,撥號的延遲是60 秒。你的modem 可能使用另外的時間或提示認為有其他的通訊問題。試試ATS7=45&W。

  實際上,有些提示不完全被支持。解決方法是編輯/usr/src/usr.bin/tip/tip 目錄中的tipconf.h 文件。很明顯,你需要它的源代碼。

  把行#define HAYES 0 修改成#define HAYES 1。然后make,make install。這樣就好了。

  15.5.2 我如何鍵入這些命令?

  在/etc/remote 文件中編譯一個叫做direct 的記錄。例如,如果你的modem 連接在******個串行端口,/dev/cuaa0,就放進下面這行:

  第20 頁cuaa0:dv=/dev/cuaa0:br#19200:pa=none

  在br 項中使用******的傳輸速率。然后鍵入cuaa0,你就可以連接到你的modem 了。如果在你的系統(tǒng)上沒有/dev/cuaa0,可以這樣:

  # cd /dev

  # MAKEDEV cuaa0

  或以root 使用cu:

  # cu -l line -s speed

  line是串行端口(如./dev/cuaa0), speed是速度(如57600)。當你鍵入~.就退出。

  15.5.3 在pn 現(xiàn)@標記不能工作?

  在電話號碼項@標記告訴電腦在/etc/phones 文件中查找一個電話號碼。但@標記也是一個在象/etc/remote 這樣的可用文件中的特殊的字符。用一個反斜線符號退出:

  pn=\@

  15.5.4 我如何在命令行撥電話號碼?

  在你的/etc/remote 文件中通常放著一個叫做generic 的記錄。例如:

  tip115200|Dial any phone number at 115200 bps:\

  :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:

  tip57600|Dial any phone number at 57600 bps:\

  :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

  然后,你可以這樣:

  # tip -115200 5551234

  如果你更喜歡cu,使用一個通用的cu 記錄:

  cu115200|Use cu to dial any number at 115200bps:\

  FreeBSD 使用手冊

  第21 頁FreeBSD 使用手冊

  :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

  然后鍵入:

  # cu 5551234 -s 115200

  15.5.5 通過一個終端服務器我能訪問許多主機。

  不用等待,除非你每次連接需要鍵入CONNECT ,使用tip 的cm 功能。例如,這些記錄在/etc/remote 中:

  pain|pain.deep13.com|Forrester's machine:\

  :cm=CONNECT pain\n:tc=deep13:

  muffin|muffin.deep13.com|Frank's machine:\

  :cm=CONNECT muffin\n:tc=deep13:

  deep13:Gizmonics Institute terminal server:\

  :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:

  15.6 設置串行控制臺

  15.6.1 介紹

  FreeBSD 可以通過一個串行口只使用一個啞終端就可以啟動一個系統(tǒng)。這樣一種配置只有兩種人能使用:希望在機器上安裝FreeBSD 的系統(tǒng)管理員,他沒有鍵盤或顯示器,還有就

  是要調(diào)試內(nèi)核或設備驅動程序的開發(fā)人員。

  就象第7 章描述的,F(xiàn)reeBSD 可以使用一個三步的啟動過程。******兩步被儲存在FreeBSD啟動磁盤的啟動slice 的啟動代碼塊中。啟動塊然后就被加載,接著運行第三步啟動引導器

  (/boot/loader)。

  為了設置串行控制臺,你必須配置啟動塊代碼,啟動引導器代碼和內(nèi)核。

  15.6.2 串行控制臺的配置

  1. 準備一個串行線纜。

  第22 頁FreeBSD 使用手冊

  你需要使用一個null-modem 的線纜或一個標準的串行線和一個null-modem 適配器。看看第15.2.2 節(jié)有關串行線的討論。

  2. 拔去你的鍵盤。

  絕大多數(shù)的PC 在開機檢測的時候會檢測到鍵盤,如果鍵盤沒有被檢測到,將會出現(xiàn)一個錯誤。一些機器會提示丟失鍵盤,就不會繼續(xù)引導系統(tǒng)。

  如果你的電腦出現(xiàn)錯誤,但仍能繼續(xù)啟動,你可以不必理它。

  如果你的電腦沒有鍵盤拒絕啟動,那你需要配置BIOS 來避免這個錯誤。看看你的主板的使用說明了解更多細節(jié)。

  提示:在BIOS 中設置鍵盤Not installed 并不意味著你不能使用鍵盤。這樣做只是告

  訴BIOS 不要在機器開機檢測時檢測鍵盤,以至不會提示說系統(tǒng)找不到鍵盤。即使你設置了Not installed,只要把你的鍵盤插上去仍然可以使用。

  注意:如果你的系統(tǒng)有一個PS/2 鼠標,如果機會好的話,你也可以象鍵盤一樣把它拔下來,這是因為PS/2 鼠標與鍵盤的一些硬件是共享的,你的鼠標插上去,系統(tǒng)會認為鍵盤

  仍在那兒。

  3. 插一個啞終端到COM1: (sio0)。

  如果你沒有一個啞終端,你可以使用一個比較老的帶有一個modem 程序的PC/XT 機器,或在其他unix 機器的串行口。如果你沒有COM1: (sio0),去找一個。這時,你沒有辦法只

  能選擇COM1:來啟動系統(tǒng)。如果你已經(jīng)在另一臺設備上使用COM1:,你必須臨時刪除那個設備,然后安裝一個新的系統(tǒng)啟動塊和內(nèi)核。

  4. 確信你的內(nèi)核配置文件已經(jīng)為COM1: (sio0)設置了適當?shù)臉擞洠?

  有關的標記是:

  0x10

  啟用控制臺支持。其他的控制臺標記會被忽略,除非它被設置了。現(xiàn)在,絕大多數(shù)的設置都有控制臺的支持;這個標記的******個就是******的。這個單獨選項是不能確保串行口適用

  于控制臺的,設置下面的標記或加上下面描述的-h 選項,和這個放在一起。

  0x20

  第23 頁FreeBSD 使用手冊

  不管下面有沒有討論,都迫使這個選項支持控制臺。這個標記在FreeBSD 2. X中替換了COMCONSOLE 選項。標記0x20 必須和0x10 一起使用。

  0x40

  保存這個設置,確保這個設置不能用于普通訪問。你不要把這個標記放在你要使用的串口設置中。這個標記的******的用處是在進行遠程內(nèi)核調(diào)試時用于指派單位。看看開發(fā)人員手

  冊了解更多信息。

  注意:在FreeBSD 4.0-CURRENT 和以后的版本中,標記0x40 通常是不同的,有另一個標記可以來指定一個串行口用于遠程調(diào)試。

  例:

  device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4

  看看sio 的聯(lián)機手冊了解更多信息。如果標記沒有被設置,你必須運行UserConfig 或重新編譯內(nèi)核。

  5. 在啟動磁盤的a 分區(qū)的根目錄創(chuàng)建一個boot.config 文件。

  這個文件將指導啟動塊代碼如何啟動系統(tǒng)。為了******串行控制臺,你必須有一個或多個下面的選項---如果你要多個選項,在同一行必須都包含它們:

  -h

  切換內(nèi)部和串行控制臺。你使用這個來交換控制臺設備。例如,如果你從內(nèi)部控制臺啟動,你可以使用-h 來直接使用啟動引導器和內(nèi)核來使用串行口作為它的控制臺設備。另外,

  如果你從串行口啟動,你可以使用-h 來告訴啟動引導器和內(nèi)核使用顯示設備作為控制臺。

  -D

  切換單一和雙重控制臺配置。在單一配置中,控制臺將是本機的控制臺(顯示設備)或串行口。在雙重控制臺配置中,顯示設備和串行口將同時成為控制臺,無論-h 的選項的情

  形。然而,雙控制臺配置只在啟動塊運行的過程中起作用。一旦啟動引導器獲得控制,由-h選項指定的控制臺將成為******的控制臺。

  -P

  第24 頁FreeBSD 使用手冊

  在啟動時,探測鍵盤。如果鍵盤找不到,-D 和-h 選項會自動設置。

  注意:由于啟動塊的當前版本的限制,-P 選項只能探測擴展的鍵盤。少于101 鍵的鍵盤將無法被探測到。如果你碰到這個情況,你必須避免使用-P 選項。不幸的是這個問題還

  沒有解決。

  使用-P 選項來自動選擇控制臺,或使用-h 選項來******控制臺。

  你也可以使用boot 聯(lián)機文檔中所描述的其他選項。

  除了-P 選項,所有選項將被傳給啟動引導器(/boot/loader)。啟動引導器將通過檢查-h 選項的狀態(tài)來決定是顯示設備成為控制臺,還是串行口成為控制臺。這意味著如果你指

  定-D 選項,但在/boot.config 中沒有-h 選項,你在啟動塊時使用串行口作為控制臺;啟動引導器將使用內(nèi)部顯示設備作為控制臺。

  6. 啟動機器

  當你啟動你的FreeBSD 時,啟動塊將把/boot.config 的內(nèi)容發(fā)給控制臺。例如:

  /boot.config: -P

  Keyboard: no

  如果你把-P 放在/boot.config 中并指出鍵盤存在或不存在,那將只出現(xiàn)第二行。這些信息會被定位到串行口或內(nèi)部控制臺,或兩個都是,完全取決于/boot.config 中的選項。

  定位信息選項

  none internal console

  -h serial console

  serial and internal consoles -D

  serial and internal consoles -Dh

  -P, keyboard present internal console

  -P, keyboard absent serial console

  出現(xiàn)上面信息后,在啟動塊加載啟動引導器和更多信息被映到屏幕之前將有一個小小的停頓。在通常情況下,你不需要打斷啟動進程,但為了確信設置是否正確,你也可以這樣做。

  第25 頁FreeBSD 使用手冊

  鍵入任何鍵,而不是Enter,控制臺會打斷啟動進程。啟動塊將進入命令行模式。你看到:

  >> FreeBSD/i386 BOOT

  Default: 0:wd(0,a)/boot/loader

  boot:

  檢驗上面出現(xiàn)的信息,可能是串行口,或內(nèi)部控制臺,或兩個都是,完全取決于你在/boot.config 中的選項。如果信息出現(xiàn)在正確的控制臺,鍵入Enter 繼續(xù)啟動進程。

  如果你要使用串行控制臺,但你沒有看到命令行,那可能設置有問題。這時,你鍵入-h

  然后單擊Enter/Return 來告訴啟動塊選擇串行口作為控制臺。一旦系統(tǒng)起來了,回去檢查一下是什么出問題了。

  啟動引導器被加載完后,你將進入啟動進程的第三步,你仍然可以在啟動引導器通過設定你喜歡的環(huán)境來切換內(nèi)部控制臺和串行控制臺。看看第15.6.5 節(jié)。

  15.6.3 摘要

  這是幾個在這章要討論的幾個設置和選擇的控制臺的摘要。

  15.6.3.1 Case 1: You Set the flags to 0x10 for sio0

  device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4

  Console in Console during boot Console during boot Options in

  kernel loader blocks /boot.config

  nothing internal internal internal

  -h serial serial serial

  internal internal -D serial and internal

  serial serial -Dh serial and internal

  internal internal internal -P, keyboard present

  serial serial -P, keyboard absent serial and internal

  第26 頁FreeBSD 使用手冊

  15.6.3.2 Case 2: You Set the flags to 0x30 for sio0

  device sio0 at isa? port "IO_COM1" tty flags 0x30 irq 4

  Console in Console during Console during Options in

  kernel boot loader boot blocks /boot.config

  nothing internal internal serial

  -h serial serial serial

  -D serial and internal internal serial

  -Dh serial and internal serial serial

  serial internal internal -P, keyboard present

  serial serial serial and internal -P, keyboard absent

  15.6.4 串行控制臺的提示

  15.6.4.1 設置一個快速的串行口速度

  默認的串行口被設置成9600 波特,8 位,沒有奇偶性,1 個停止位。如果你希望改變速度,你必須重新編譯啟動塊。在/etc/make.conf 中添加下面一行,然后編譯新的啟動塊:

  BOOT_COMCONSOLE_SPEED=19200

  如果串行控制臺用其他方法來配置而不是在啟動時用-h,或內(nèi)核使用的串行控制臺與啟動塊使用的不同,那你必須在內(nèi)核配置文件中添加下面這行,然后編譯內(nèi)核:

  options CONSPEED=19200

  15.6.4.2 使用串行口而不是sio0 作為控制臺

  使用串行口而不是sio0 作為控制臺需要做一些重編譯。如果你無論如何都要使用另一個串行口,重新編譯啟動塊,啟動引導器和內(nèi)核。

  1. 得到內(nèi)核源代碼。

  2. 編輯/etc/make.conf 文件,然后設置BOOT_COMCONSOLE_PORT 作為你要使用(0x3F8,0x2F8, 0x3E8 or 0x2E8)端口的地址。只有sio0 到sio3(COM1: through COM4:)能被使

  用;多接口串行卡將不會工作。不需要任何中斷設置。

  第27 頁FreeBSD 使用手冊

  3. 創(chuàng)建一個定制的內(nèi)核配置文件,在你要使用的串行口添加合適的標記。例如,如果要將sio1(COM2:)作為控制臺:

  4. device sio1 at isa? port "IO_COM2" tty flags 0x10 irq 3

  或

  device sio1 at isa? port "IO_COM2" tty flags 0x30 irq 3

  其他端口的控制臺標記也不要設。

  5. 重新編譯和安裝啟動塊:

  6. # cd /sys/boot/i386/boot2

  7. # make

  8. # make install

  9. 重編譯和安裝啟動引導器:

  10. # cd /sys/boot/i386/loader

  11. # make

  12. # make install

  13. 重建和安裝內(nèi)核。

  14. 用disklabel 將啟動塊寫到啟動磁盤上,然后從新內(nèi)核啟動。

  15.6.4.3 通過串行線鍵入DDB 調(diào)試器

  如果你想通過串行控制臺進行內(nèi)核調(diào)試,你需要在編譯內(nèi)核時加上下面選項:

  options BREAK_TO_DEBUGGER

  options DDB

  15.6.4.4 在串行控制臺上得到一個登陸命令行

  第28 頁FreeBSD 使用手冊

  你可能希望通過串行線得到一個登陸命令行,現(xiàn)在你可以看到啟動信息,通過串行控制臺鍵入內(nèi)核調(diào)試信息。可以這樣做。

  用一個編輯器打開/etc/ttys 文件,然后定位到下面的行:

  ttyd0 "/usr/libexec/getty std.9600" unknown off secure

  ttyd1 "/usr/libexec/getty std.9600" unknown off secure

  ttyd2 "/usr/libexec/getty std.9600" unknown off secure

  ttyd3 "/usr/libexec/getty std.9600" unknown off secure

  ttyd0 到ttyd3 相當于COM1 到COM4。可以打開或關閉某個端口。如果你已經(jīng)改變了串行口的速度,你必須修改標準的9600 與當前的例如19200 相匹配。

  你也可以改變終端的類型從不知名的到你串行終端的真實類型。編輯完這個文件,你必須殺掉-HUP 1 來使這個修改啟用。

  15.6.5 從啟動引導器修改控制臺

  前面一節(jié)描述了如何通過調(diào)整啟動塊來設定串行控制臺。這節(jié)將講到在啟動引導器中通過鍵入一些命令和環(huán)境變量來指定控制臺。由于啟動引導器會被啟動進程的第三步所調(diào)用,

  啟動塊以后,在啟動引導器中的設置將忽略在啟動塊中的設置。

  15.6.5.1 設定串行控制臺

  你可以很容易地指定啟動引導器和內(nèi)核來使用串行控制臺,只需要在/boot/loader.rc

  中寫入下面這行:

  set console=comconsole

  你******把上面一行放在文件的******行,以至于盡早地在啟動時看到串行控制臺的啟動信息。同樣地,你可以指定內(nèi)部控制臺為:

  set console=vidconsole

  如果你不設置啟動引導環(huán)境變量控制臺,啟動引導器和內(nèi)核將使用在啟動塊時用-h 選項指定的控制臺。

  第29 頁FreeBSD 使用手冊

  在版本3.2 或以后的版本中,你可以在/boot/loader.conf.local 或/boot/loader.conf

  中指定控制臺,而不是在/boot/loader.rc 中。在這個方法中,你的/boot/loader.rc 文件將是這樣的:

  include /boot/loader.4th

  start

  然后,創(chuàng)建/boot/loader.conf.local 放上下面的行。

  console=comconsole

  或

  console=vidconsole

  看看loader.conf 的聯(lián)機手冊了解更多信息。

  15.6.5.2 使用串行口而不是sio0 作為控制臺

  你需要使用一個串行口而不是sio0 重新編譯啟動引導器作為串行控制臺。下面的步驟跟第15.6.4.2 節(jié)描述的相似。

  15.6.6 警告

  這篇文章本意是想告訴人們?nèi)绾卧O定沒有顯示設備或鍵盤的專用服務器。不幸的是,絕大多數(shù)系統(tǒng)沒有鍵盤可以讓你啟動,而沒有顯示設備就不讓你啟動。使用AMI BIOS 的機器

  可以通過在CMOS 中將“graphics adapter”項設為“Not installed”來在啟動時不需要顯示適配器。

  然而,許多機器不支持這個選項,如果你的系統(tǒng)沒有顯示硬件就拒絕啟動。對于這些機器,即使你沒有顯示器,你也必需在你機器上插上顯示適配器。建議你試試用AMI BIOS 的

  機器。

  第30 頁









  用戶在鍵入他/她的登陸名稱后,getty 執(zhí)行/usr/bin/login,這會要求用戶輸入密碼來完成登陸,然后啟動用戶的shell。





 
客戶服務 +more
上門服務
服務承諾
異地恢復
收費標準
付款方式
疑難解答
服務特色 +more
·免費檢測
·免費提供3天備份
·專業(yè)工程師提供服務
·免費清潔送修的介質(zhì)
·數(shù)據(jù)恢復前報價,客戶確認后工程師開始數(shù)據(jù)恢復
·數(shù)據(jù)恢復不成功不收費
·與客戶簽訂保密協(xié)議,對客戶的數(shù)
 據(jù)嚴格保密,整個恢復過程不會對
 客戶的原盤有任何的寫操作,以確
 保原盤的數(shù)據(jù)完全

·免費參觀恢復全過程

·工程師在線免費咨詢

·專業(yè)工程師提供服務
服務器數(shù)據(jù)恢復 點擊這里給我發(fā)消

息
數(shù)據(jù)庫修復
點擊這里給我發(fā)

消息
硬盤數(shù)據(jù)恢復
點擊這里給我發(fā)消

息
主站蜘蛛池模板: 国产在线一区二区| 91香蕉福利一区二区三区| 日本国产一区二区三区在线观看 | 久久精品国产一区二区三区不卡 | 国产一区二区精品在线观看| 中文字幕一区日韩精品| 日日摸夜夜添一区| 无码少妇丰满熟妇一区二区| 国产一区二区三区影院| 亚洲综合激情五月色一区| 久久se精品一区二区影院| 东京热无码av一区二区| 中文字幕一区在线播放| 久久精品国产亚洲一区二区| 日本高清不卡一区| 国产亚洲一区二区三区在线| 久久精品国产免费一区| 亚洲一区二区三区免费视频 | 无码日韩精品一区二区免费暖暖| www一区二区三区| 真实国产乱子伦精品一区二区三区 | 久久精品免费一区二区三区 | 中文字幕一区二区三区5566| 99精品一区二区三区| 亚洲AV日韩AV一区二区三曲| 免费高清av一区二区三区| 男人的天堂精品国产一区| 波多野结衣一区二区三区aV高清 | 久久精品黄AA片一区二区三区| 91秒拍国产福利一区| 精产国品一区二区三产区| 国产一区美女视频| 国产亚洲3p无码一区二区| 国产精品福利一区二区久久| 日韩免费视频一区| 国产成人高清亚洲一区久久| 一区二区三区www| 无码精品人妻一区二区三区漫画| 亚洲色精品VR一区区三区| 鲁大师成人一区二区三区| 国内国外日产一区二区|