


通過COM口管理Linux系統(tǒng)服務(wù)器簡(jiǎn)介
本文簡(jiǎn)要地介紹了如何通過常見的COM口進(jìn)行Linux服務(wù)器的控制臺(tái)的擴(kuò)展,具有實(shí)用性和簡(jiǎn)易性,不受服務(wù)器網(wǎng)絡(luò)等條件的限制,可以方便地管理實(shí)際生產(chǎn)環(huán)境中的Linux服務(wù)器。
說(shuō)到管理Linux服務(wù)器,大家會(huì)有很多種不同的辦法:鍵盤+顯示器、通過網(wǎng)絡(luò)登陸、基于WEB的工具、X系統(tǒng)下的圖形工具等等,這些方法用在普通的服務(wù)器或者自己 的PC服務(wù)器上是沒有任何問題的,但是要管理一臺(tái)24X7模式的服務(wù)器,確保在任何情況下都能直接快捷地管理到服務(wù)器,就不是那么容易了。
對(duì)比以上說(shuō)到的幾種方式:
X系統(tǒng)下的圖形工具。這當(dāng)然是界面很友好的方式了,而且X系統(tǒng)也可以通過網(wǎng)絡(luò)擴(kuò)展到遠(yuǎn)程,但網(wǎng)絡(luò)畢竟不是這么可靠,如果服務(wù)器的網(wǎng)絡(luò)癱瘓了,你正好需要遠(yuǎn)程解決網(wǎng)絡(luò)的問題,那該怎么做?
基于WEB的工具。這種方式的界面也是相當(dāng)友好,如webadmin,但是由于安全方面的問題,這些工具是不會(huì)安裝在真正重要的服務(wù)器上的,另外這種方式也受限于網(wǎng)絡(luò);
通過網(wǎng)絡(luò)登陸。這是常用的辦法,一般服務(wù)器會(huì)對(duì)信賴的遠(yuǎn)程站點(diǎn)開放SSH服務(wù),以便維護(hù)人員可以遠(yuǎn)程登陸進(jìn)行日常維護(hù),這是很安全的,但很不幸它還是基于網(wǎng)絡(luò)的,當(dāng)然也受限于網(wǎng)絡(luò);
鍵盤+顯示器。這是最保險(xiǎn)的辦法,筆者都建議使用這種最保險(xiǎn)的辦法,但是很不幸這也是有缺陷的,就是有很多服務(wù)器都不配備顯示器和鍵盤,就算有,也只是安裝系統(tǒng)時(shí)使用,一旦投入生產(chǎn)運(yùn)行就不再使用顯示器和鍵盤了。
其實(shí)對(duì)于UNIX/Linux系統(tǒng)的服務(wù)器,可以通過COM口即串行口來(lái)擴(kuò)展系統(tǒng)的控制臺(tái),作為另外的途徑管理服務(wù)器。
CONSOLE,即控制臺(tái),是系統(tǒng)輸出管理信息的字符輸出設(shè)備,這些管理信息是由內(nèi)核產(chǎn)生,比如系統(tǒng)日志、告警信息等。Linux下默認(rèn)的控制臺(tái)就是鍵盤和顯示器,而一些老式的SUN、HP、IBM服務(wù)器則使用串行口接Text Terminal[1](字符終端,如著名的DEC的VT100)作為控制臺(tái),這也是這次將要介紹的方式。
字符終端在大型機(jī)時(shí)代用得比較多,一個(gè)大型機(jī)通常聯(lián)接許多終端,每個(gè)終端沒有處理能力,只是簡(jiǎn)單地用鍵盤輸入和從屏幕輸出結(jié)果,處理過程都是由大型機(jī)完成。字符終端屏幕多為黑白字符型的,不具備圖形顯示功能。這里介紹的Text Terminal和大型機(jī)的終端是一樣的,只不過市場(chǎng)上早就沒有新的終端設(shè)備了,現(xiàn)在都是通過應(yīng)用程序模擬一個(gè)終端,叫虛擬終端,如WINDOWS的超級(jí)終端就是常用的一個(gè)虛擬終端程序,在管理工作站上用打開超級(jí)終端(使用正確的速率),就相當(dāng)于一個(gè)終端了。
這種通過串行口實(shí)行CONSOLE功能是廣泛使用的,如CISCO的路由器,都是通過這種方式進(jìn)行設(shè)備的管理,小小的一條CONSOLE線就相當(dāng)于一臺(tái)PC的顯示器加鍵盤,這無(wú)疑為路由器省下了許多不必要的配件,而事實(shí)上部分CISCO的設(shè)備就是一臺(tái)PC,如思科PIX515防火墻,只要你插上一塊PCI的顯卡到PCI槽,接上顯示器,按下PIX的開關(guān),你就可以看到一臺(tái)BX主板、奔騰II代350MHZ處理器、128M內(nèi)存電腦的啟動(dòng)信息,和一臺(tái)普通電腦啟動(dòng)是沒有任何區(qū)別的。當(dāng)PIX完成自檢后,控制臺(tái)就轉(zhuǎn)到CONSOLE口上了,而那個(gè)RJ45接口的CONSOLE口,其實(shí)就是一個(gè)COM口,只是接口形式不是9針D形口而己。
現(xiàn)在可以明確我們需要做的工作了:使用管理工作站的虛擬終端程序模擬一個(gè)字符終端設(shè)備,通過COM口對(duì)COM口的形式將Linux的CONSOLE重定向到該虛擬終端,以實(shí)現(xiàn)從虛擬終端控制Linux服務(wù)器。步驟如下:
1、制作交叉線
兩臺(tái)電腦要用COM口互聯(lián)起來(lái)需要一種"NULL MODEM CABLE","NULL MODEM CABLE"直譯過來(lái)大致是"交叉MODEM線",和網(wǎng)線的交叉線意思相近,這是用來(lái)"背靠背"聯(lián)接兩個(gè)DTE設(shè)備的,兩頭都是9針D型母接頭,分別插入管理工作站和服務(wù)器的COM口中,為了方便標(biāo)識(shí)建議都接第一個(gè)COM口。這種線可以自己制作,也可以去電腦城買,最方便的是有CISCO的標(biāo)準(zhǔn)CONSOLE線加RJ45轉(zhuǎn)9針D型母接頭的轉(zhuǎn)接頭(部件號(hào)74-0495-01),可以直接使用。
制作時(shí)需要把Txd與Rxd、CTS與RTS、GND與GND、DTR與DSR&DCD交叉相聯(lián),DSR&DCD表示這兩個(gè)引腳串聯(lián)在一起作為一個(gè)引腳信號(hào)。更多的詳細(xì)介紹參見Serial-HOWTO[3]。
2、測(cè)試聯(lián)通性
管理工作站和服務(wù)器接上交叉線后,可以簡(jiǎn)單地來(lái)測(cè)試一下這條線是否起作用。在管理工作站上用超級(jí)終端新建一個(gè)聯(lián)接,速率9600,8數(shù)據(jù)位,1停止位,無(wú)奇偶校驗(yàn)位,無(wú)硬件"Flow control";在服務(wù)器上echo '1'>/dev/ttyS0(需要ROOT權(quán)限),在管理工作站超級(jí)終端里觀察是否能收到數(shù)字1,如果能收到就表明聯(lián)接無(wú)問題。如果不能收到則要在服務(wù)器上檢查一下各信號(hào)引腳是否正確,使用命令"statserial /dev/ttyS0"可以查看當(dāng)前串行口的狀態(tài)(在CABLE對(duì)端不接管理工作站時(shí)或者線序錯(cuò)誤時(shí)DSR狀態(tài)為0),聯(lián)接狀態(tài)如下:
Device: /dev/ttyS0
Signal Name Pin(25) Pin(9) Direction (computer) Status Full Name
FG 1 - - - Frame Ground
TxD 2 3 out - Transmit Data
RxD 3 2 in - Receive Data
RTS 4 7 out 1 Request To Send
CTS 5 8 in 0 Clear To Send
DSR 6 6 in 1 Data Set Ready
GND 7 5 - - Signal Ground
DCD 8 1 in 0 Data Carrier Detect
DTR 20 4 out 1 Data Terminal Ready
RI 22 9 in 0 Ring Indicator
3、從POST開始
這是很多電腦都無(wú)法實(shí)現(xiàn)的功能,這主要取決于主板BIOS是否支持。POST(Power On Self Test)即我們通常說(shuō)的自檢,我們可以看到系統(tǒng)的基本信息及檢查過程,當(dāng)然也有可能有出錯(cuò)的提示信息及相應(yīng)的處理提示,有一些型號(hào)的服務(wù)器主板(如INTEL原裝NL440BX)可以將POST重定向到COM口,這樣我們可以接一個(gè)終端在COM口上便能看到POST過程,當(dāng)然也可以通過終端操作,完全不需要鍵盤和顯示器?上б话闱闆r下我們的主板并不支持這項(xiàng)功能,但是沒有關(guān)系,我們可以先設(shè)定好BIOS參數(shù)(Halt On 設(shè)置為None)忽略無(wú)關(guān)緊要的出錯(cuò)信息,讓每次系統(tǒng)自檢都順利通過,這樣系統(tǒng)便能順利進(jìn)入硬盤啟動(dòng)了。
4、重定向GRUB
也許你有幾個(gè)系統(tǒng)(如FreeBSD),或者有新的內(nèi)核需要進(jìn)行測(cè)試,你可能希望通過COM口來(lái)選擇系統(tǒng),將GRUB重定向到COM口也是可能的。我們?cè)贕RUB的manual頁(yè)[4]可以看到其支持seriral終端,在GRUB配置文件第一條Title的前面加入兩行如下:
serial --unit=0 --speed=38400
terminal serial console
我們便能從接在COM口上的終端中看到GRUB的提示信息,通過上、下鍵選擇光帶就可以正確地進(jìn)入各個(gè)系統(tǒng)了。LILO的用法類似,請(qǐng)參閱LILO的手冊(cè)頁(yè)。
5、重定向CONSOLE
為了能夠控制Linux服務(wù)器啟動(dòng)過程,我們需要傳遞一些參數(shù)到Linux內(nèi)核中,從serial-console[2]中我們可以看到只需要將console=ttyS0,9600傳遞到內(nèi)核中就可以實(shí)現(xiàn)CONSOLE重定向到串口。當(dāng)然9600的速度太慢,我們可以使用38400的速率,這樣顯示的速度就和啟動(dòng)時(shí)顯示器上顯示的速度差不多了。我的服務(wù)器使用GRUB,所以我的/boot/grub/menu.lst文件中kernel語(yǔ)句如下:
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ console=tty0 console=ttyS0,38400
現(xiàn)在重新啟動(dòng)Linux服務(wù)器,打開超級(jí)終端,不出意外就能看到平時(shí)在顯示器上才看得到的啟動(dòng)信息,當(dāng)然你也可以按"i"鍵進(jìn)入交互式的啟動(dòng)模式,當(dāng)然在不小心踢掉電源后也能輕松輸入"Y"進(jìn)行文件系統(tǒng)檢測(cè),是不是很好用?不過啟動(dòng)完了系統(tǒng)后怎么就停在那里不動(dòng)了?好像Linux很笨啊,它居然不知道我想從這里登錄進(jìn)系統(tǒng)?不要怪Linux,我們馬上就來(lái)解釋為什么會(huì)這樣以及解決辦法。
6、開啟ttyS0登陸
其實(shí)Linux啟動(dòng)時(shí)的信息都是由KERNEL顯示的,缺省情況下啟動(dòng)完畢了后init再運(yùn)行mingetty來(lái)提供6個(gè)虛擬終端來(lái)登陸系統(tǒng),這可以在/etc/inittab文件中清楚地看到。其實(shí)login和內(nèi)核是沒有關(guān)系的,所以如果只是在內(nèi)核中加入?yún)?shù)使其能從COM口交互式地操作并不代表能從超級(jí)終端登錄系統(tǒng),我們需要另外運(yùn)行一個(gè)提供從串口登錄能力的程序,這個(gè)程序就是agetty,它是屬于util-Linux軟件包中的一員,大家可以參考其man手冊(cè)頁(yè)以獲得更多的信息,這些信息在其他的文檔[1][3]中也都提及到了。我在服務(wù)器的/etc/inittab文件中加了一行如下:
S0:2345:respawn:/sbin/agetty -L 38400 ttyS0
這樣我們就能從超級(jí)終端登錄系統(tǒng)了,很好用吧。
7、一些經(jīng)驗(yàn)
使用ttyS0登錄還有一些小的竅門和經(jīng)驗(yàn),以下是我的經(jīng)驗(yàn):
COM口的傳輸距離有限制,普通的線纜只有15米的有效距離,建議使用5類雙絞線,可以擴(kuò)展到50米仍能正常操作;
大家一般會(huì)想使用root從ttyS0登錄,但是默認(rèn)的這是不行的,我們需要把該終端加入到文件/etc/securetty中,就是說(shuō)終端ttyS0是安全的終端,可以使用root登錄; 如果服務(wù)器長(zhǎng)時(shí)間開著的話,最好每次都使用exit退出該終端,因?yàn)槿绻煌顺鰜?lái)的話,下次再登陸可能會(huì)出現(xiàn)輸入亂碼導(dǎo)致終端不可用等問題,而在登錄提示符下輸入亂碼則無(wú)關(guān)緊要;
如果你是通過這種方法管理一臺(tái)實(shí)際24X7開著的服務(wù)器的話,你可能會(huì)有時(shí)發(fā)現(xiàn)在終端中按回車沒有任何反映,有一種可能性就是系統(tǒng)在停電后再開機(jī)出現(xiàn)不能啟動(dòng)NFS和sendmail之類的服務(wù),就這樣卡在那里死鎖住了,這在電源不穩(wěn)定的情況下尤其多見,所以一定要給你的Linux服務(wù)器接上UPS不間斷電源,或者在系統(tǒng)BIOS里設(shè)置斷電后不再啟動(dòng)系統(tǒng)(如果它不是太重要的話),在這種情況下只有按鍵盤重新啟動(dòng)或者直接斷電再重新啟動(dòng)一次,檢查啟動(dòng)過程到底發(fā)生了什么事情,一般只需要檢查一遍硬盤就沒有問題了;
如果你的ttyS0出現(xiàn)亂碼沒有辦法使用的話,可以嘗試著從網(wǎng)絡(luò)登陸,把/etc/inittab中ttyS0那一行注釋,使用"init q"命令停止通過inittab啟動(dòng)的agetty,然后再重新取消/etc/inittab中的注釋,再次"init q"命令啟動(dòng)agetty,不出意外就能恢復(fù)正常了。
結(jié)束語(yǔ)
到此我們就方便地管理沒有顯示器和鍵盤的Linux服務(wù)器了,實(shí)際生產(chǎn)中可以使用終端服務(wù)器代替管理工作站來(lái)管理非常多的服務(wù)器。簡(jiǎn)單地說(shuō)終端服務(wù)器有許多COM口,可以同時(shí)連接多個(gè)服務(wù)器(或者網(wǎng)絡(luò)設(shè)備如思科路由器)的CONSOLE,以實(shí)現(xiàn)集中式管理。
關(guān)鍵字:服務(wù)器、COM、系統(tǒng)
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解