1. 程式人生 > >為GRUB載入程式安裝串列埠輸出

為GRUB載入程式安裝串列埠輸出

  • Redhat及很多Linux現在使用grub作為預設的載入程式。按照以下步驟建立串列埠控制檯輸出。
  • 為了取消splash image,所以註釋掉了splash那一行。你需要kermit或者其他能夠支援vt100的串列埠程式(例如Hypertermianl等)來支援此功能。如果你用的GUI(X11),  'xterm'支援此功能。其他GUI終端可能不支援vt100,你需要'Null Modem'電纜來連線電腦的串列埠
  • 首先定義串列埠:

serial --unit=0 --speed=9600

這句只是簡單定義了串列埠號,不會有實質性作用。其中定義了串列埠COM1,如果要使用串列埠COM2,要定義--unit=1。之後要定義終端顯示:

terminal --timeout=15 console serial

這裡定義了兩個終端用於顯示grub的選單,顯示器(console:tty0)和串列埠(serial:ttyS0)。使用者有15秒的時間用於選擇,選擇的依據是使用者在哪個終端按下任意鍵。否則,15秒過後,程式會自動選擇第一個作為選單輸出。上面的例子中,顯示器將作為首要輸出裝置用於顯示可選擇os的grub選單。

接下來是核心選項行('kernel')。該行可以定義核心資訊的輸出裝置。在上面的例子中,使用者能選擇顯示器和終端作為資訊輸出端。

kernel /boot/vmlinuz-2.4.17 ro root=/dev/sda3 console=ttyS0 console=tty0

單使用者模式(single)登陸:雖然你能夠同時用顯示器和串列埠獲得核心資訊,但是隻有最後一個選項(console=??)能夠在單人模式下作為輸出和輸入的裝置。所以,這裡設定了兩個image選項,使得單人模式下能夠用到合適的選項。注意:'console=??'引數項在兩個核心選項中互換了位置,因為只有最後定義的'console=??'引數項才能被選作主要裝置。

顯示器的單人模式:

kernel /boot/vmlinuz-2.4.17 ro root=/dev/sda3 console=ttyS0 console=tty0

串列埠單人模式:

kernel /boot/vimlinuz-2.4.17 ro root=/dev/sda3 console=tty0 console=ttyS0

為了以單使用者模式登陸,在grub選擇選單中,使用up,down按鈕選擇一個核心映象,然後按'e'鍵進入編輯模式,在kernel行的最後加入'single',按Enter後,再按'b'鍵即能從該映象啟動,這次編輯編輯只是暫時的,不會儲存到/boot/grub/menu.lst中。

選單中最後一項是用於引導windows系統的 為串列埠控制檯提供login提示輸出:到目前為止,所有獲得的資訊都是grub和核心的。這些只是讓你在單人模式下能夠從串列埠登陸,但是在多使用者模式下,將不能獲得login程式的輸出,也就是說沒有用於使用者登陸提示符出現。在此,應該使用mgetty程式 http://www.rpmfind.net,在/etc/inittab中加入如下一行:

# Add a tty to the serial console

s0:2345:respawn:/sbin/mgetty -b -r -s 9600  -p "Serial Console Login:" ttyS0

如果你按上面設定了mgetty,即使你選擇了顯示器作為顯示控制檯,你仍然能夠在串列埠上登陸。這是因為在系統啟動後,mgetty將作為一個獨立的程式執行,並在ttyS0上等待登陸。 為了讓root在串列埠上登陸,應該在/etc/seruretty上新增該串列埠(ttyS0),否則你只能先以普通使用者登陸,並使用su成為root身份。