Linux重新導向console口控制台的具體操作步驟如下:
首先,因為Linux系統的版本不一樣,重新導向規則也稍有不同。所以這裡只以Fedora13版的Linux系統來說明,下文以Linux自稱。
Linux從啟動到啟動完成的所有輸出均複製到Com口上,一共需要修改3個檔案。在此之前還要確認/sbin/agetty檔案是否存在,此檔案用來把系統的輸入輸出映射到其它裝置上。
1.首先在 /etc/inittab裡面添加如下內容,最後一行另加一行加上:
sc:2345:respawn:/sbin/agetty ttyS0 1152000,115200 xterm
“sc”為改行ID,“2345”指改行的運行層級是2、3、4、5級;“respawn”是使命令退出後再執行一次,以便其他使用者能夠登入;“/sbin/agetty ttyS0 9600 vt100”表示具體的命令,即通過他來執行開啟串口/dev/ttyS0(COM1),後面是傳輸速率和終端模式
xterm是一個X Window System上的標準虛擬終端。使用者可以在同一個顯示器上開啟許多xterm,每一個都為其中啟動並執行進程提供獨立的輸入輸出一般來說此進程是Unix shell)。
2.修改/etc/securetty裡面的內容:
第2行另加一行加上:ttyS0
該檔案是允許root身份登入的tty裝置列表,這些裝置由/bin/login程式讀取,為了使使用者能以root身份通過串口登入,需要在該檔案中添加“ttyS0”,說明系統認為這裡的COM1是安全的;
3.修改/etc/grub.conf檔案裡面的內容:
重新導向grub:
在#Enable Serial Console下另加一行有時可能有誤差)加上:
serial --unit=0 --speed=115200 --word=8 --paity=no --stop=1 terminal --timeout=10 serial console serial
初始化一個串口裝置。
重新導向console:
在/etc/grub.conf檔案中kernel語句本行加上:
console=tty0 console=ttyS0,115200n8
其中“ttyS0”,“0”表示串口使用COM1;“9600”表示傳輸速率為9600bps;“n”表示無校正位;“8”表示有8位元據位。
其實Linux啟動時的資訊都是由KERNEL顯示的,預設情況下啟動完畢了後init再運行mingetty來提供6個虛擬終端來登陸系統,這可以在/etc/inittab檔案中清楚地看到。其實login和核心是沒有關係的,所以如果只是在核心中加入參數使其能從COM口互動式地操作並不代表能從超級終端登入系統,我們需要另外運行一個提供從串口登入能力的程式,這個程式就是agetty,它是屬於util-Linux軟體包中的一員,大家可以參考其man手冊頁以獲得更多的資訊,這些資訊在其他的文檔[1][3]中也都提及到了。
COM口的傳輸距離有限制,普通的線纜只有15米的有效距離,建議使用5類雙絞線,可以擴充到50米仍能正常操作;
一般想使用root從ttyS0登入,預設的這是不行的,我們需要把該終端加入到檔案/etc/securetty中,就是說終端ttyS0是安全的終端,可以使用root登入; 如果伺服器長時間開著的話,最好每次都使用exit退出該終端,因為如果不退出來的話,下次再登陸可能會出現輸入亂碼導致終端不可用等問題,而在登入提示符下輸入亂碼則無關緊要;
如果你是通過這種方法管理一台實際24X7開著的伺服器的話,你可能會有時發現在終端中按斷行符號沒有任何反映,有一種可能性就是系統在停電後再開機出現不能啟動NFS和sendmail之類的服務,就這樣卡在那裡死結住了,這在電源不穩定的情況下尤其多見,所以一定要給你的Linux伺服器接上UPS不斷電供應系統,或者在系統BIOS裡設定斷電後不再啟動系統(如果它不是太重要的話),在這種情況下只有按鍵盤重新啟動或者直接斷電再重新啟動一次,檢查啟動過程到底發生了什麼事情,一般只需要檢查一遍硬碟就沒有問題了;
如果你的ttyS0出現亂碼沒有辦法使用的話,可以嘗試著從網路登陸,把/etc/inittab中ttyS0那一行注釋,使用"init q"命令停止通過inittab啟動的agetty,然後再重新取消/etc/inittab中的注釋,再次"init q"命令啟動agetty,不出意外就能恢複正常了。