一般情況下,當完成Linux操作系統的安裝后,系統中已經安裝好了LILO或GRUB引導程序。由于系統出現故障或需要更換LILO為GRUB時,需全新或重新安裝GRUB。如何安裝和配置GRUB就是下面要介紹的內容。而有時候,GRUB出現了故障,但并不需要重新安裝,從后面的內容中,讀者也可以讀到如何修復GRUB的知識。
(1) 下載安裝包
可以從ftp://alpha.gnu.org/gnu/grub/下載GRUB的源碼。具體安裝方法請參考下面的內容,這里的安裝過程都是在RHEL 4中進行的。
(2) 檢查是否安裝GRUB
#rpm -q grub
如果顯示grub-0.95-3.5或其它版本的GRUB的信息,說明系統已經安裝了,則執行如下命令首先將其卸載:
#rpm -e grub
(3) 編譯源碼安裝
a.) 編譯條件
要編譯GRUB的源代碼,系統必須具備以下條件:
q GCC2.95或者以上版本
q 安裝了GNU Make
q binutils2.9.1.0.23或者個更高版本
q Texinfo 4.0或者更高版本
q Autoconf 2.5x
q Automake 1.7 或者更高版本
b.) 編譯安裝
這里,假設下載的GRUB源代碼為grub-0.95.tar.gz,并放在~/(當前用戶的主目錄)下。通過編譯源代碼安裝GRUB的基本過程如下:
#tar -zxvf grub-0.95.tar.gz #解壓源代碼
#cd grub-0.95 #轉入grub目錄
#./configure #生成Makefile文件
#make install #編譯代碼并安裝
(4) 安裝GRUB到MBR
GRUB的工作目錄是在/boot/grub下,而make install并沒將其安裝到/boot/grub。所以,安裝完成后要執行如下一些操作:
a) 把/usr/local/share/grub/i386-pc/目錄下的所有文件統統拷貝到/boot/grub/目錄下
#cp /usr/local/share/grub/i386-pc/* /boot/grub/
b) 在/boot/grub下創建grub.conf文件,并建立一個到grub.conf的軟鏈接menu.lst
#cd /boot/grub
#touch grub.conf
#ln -s grub.conf menu.lst
注意!如果已經存在grub.conf,就最好不要再次創建,需要時直接修改即可。
c) 確認/usr/local/sbin和/usr/local/bin在PATH變量的值中,執行如下命令檢查
#env |grep PATH
如果發現/usr/local/sbin和/usr/local/bin不在PATH變量中,可以通過如下命令修改:
#export PATH=$PATH /usr/local/sbin:/usr/local/bin
d) 安裝GRUB到MBR
GRUB在啟動中,被BIOS調用,只有放在MBR中才可以被調用,所以,GRUB要讓BIOS調用,就必須安裝在MBR中。實際上是將stage1安裝到MBR中,也可能根據文件系統選擇安裝了stage1_5。下面,提供幾個安裝GRUB的例子:
#grub-install /dev/hda //將GRUB安裝到第1塊IDE硬盤的MBR
#grub-install /dev/sda //將GRUB安裝到第1塊SCSI硬盤的MBR
#grub-install /dev/fd0 //將GRUB安裝到軟盤
#grub-install /dev/hda1 //將GRUB安裝到第1快硬盤的0扇區,當用其它引導程序引導系統時,往往選擇這種方式,以免覆蓋其它引導程序。
e) 在GRUB的命令行模式下安裝GRUB
關于GRUB命令行模式及其操作方法請參考3小節的內容。在系統顯示啟動菜單時候按下c鍵,或者系統啟動后在命令行執行/usr/sbin/grub程序,都可以進入GRUB的命令行模式。命令行模式下安裝GRUB的基本過程如下:
q 指定啟動設備
grub>root (hd0,0) #除了root后必須有空格,別的位置均不能有空格!
此處(hd0,0)是指第1塊硬盤的第1個分區。如果不能確定包含GRUB的stage1文件的分區,可以通過find指令查找確定:
grub> find /boot/grub/stage1 #查找stage1
GRUB將會查找文件/boot/grub/stage1并顯示包含這個文件的設備名,這個設備就是上面要用到的設備。
q 安裝GRUB
grub> setup (hd0) #除了setup后必須有空格,別的位置均不能有空格!
這條命令將會在第1塊硬盤的MBR安裝GRUB,如果不想在MBR安裝GRUB,而是希望將GRUB安裝在某分區的引導扇區的話,可以用下面的命令安裝:
grub> setup (hd0,0) #除了setup后必須有空格,別的位置均不能有空格!
這將會在第1塊硬盤的第1個分區的引導扇區安裝GRUB。
q 退出GRUB
grub>quit
f) 重啟機器,新安裝的GRUB生效