作者: 開花石頭 [文章出自: www.PHPx.com]
如果你玩過Linux ,那麼你一定使用過或者知道 LILO ,這個在安裝有Linux 的系統上使用最廣泛的多重啟動管理程序。然而筆者今天要介紹的是隨 Mandrake Linux 所帶的 GRUB(GRand Unified Bootloader),讓我們看看它怎樣來代替LILO。
LILO 需要知道你的內核在驅動器上的實際位置,但是GRUB
卻不需要,它不僅能讀文件系統還能識別內核映像,而且它還支持最新的 2.4.1 內核所帶的 Reiser 日志文件系統。這意味著你不必在更新內核或者改變配置文件之後重新安裝GRUB。如果BIOS 支持LBA 的話,也沒有1024 柱面的問題。另外還支持網絡啟動和無盤客戶機。
然而,或許我們對LILO 太熟悉了吧,也或許GRUB 還有很多需要完善?總之,安裝 GRUB 看起來並不是一件很輕松的事情。下面我們就詳細介紹GRUB 的安裝和配置。
安裝
在 /tmp 目錄下解開文件:
# tar zxvf grub-0.5.96.1.tar.gz
進入 "grub-0.5.96.1" 目錄,編譯程序:
# ./configure
# make
# make install
配置:
和許多我們平常看到的多重啟動管理程序一樣,GRUB
提供一個菜單界面(LILO 不是菜單界面的)。GRUB的
缺省安裝位置為 /boot/grub ,配置文件也放在這個目錄下。缺省的配置文件名為 menu.lst,這個文件的功能就像和 lilo.conf
一樣,定義多重啟動選項以及磁盤映像。
我們來看一個 menu.lst 文件的示范例子:
timeout 5
color black/yellow yellow/black
default 0
passWord freeos
title My Mandrake
kernel (hd0,1)/vmlinuz root=/dev/hda3 idebus=66
title My Red Hat
kernel (hd0,6)/boot/vmlinuz root=/dev/hda7 idebus=66
title W2K Pro
root (hd0,0)
makeactive
chainloader +1
讓我們詳細分析一下各個選項的含義:
timeout - 缺省入口的顯示延遲時間(秒)
color - 菜單顯示的顏色組合,第一組顏色為前景色和背景色,
第二組為高亮時的組合。
default - 定義缺省的啟動入口,這裡的 0 就是使用定義的第一個入口。
password - 定義進入GRUB 高級特性時需要的口令。GRUB 利用其能讀取文件系統的特色,提供十分強大的功能。例如用戶可以在grub 的啟動提示符下輸 'cat /etc/shadow' 來讀包含加密口令的文件,而不需要進入你的系統!所以,為你的系統設置一個口令十分重要。
下面分析啟動入口,每一個入口都應該以一個 'title' 的關鍵字開始,後面跟上對該啟動入口的描述。接下來就是 'kernel' 入口,
kernel (hd0,1)/vmlinuz root=/dev/hda3 hdc=ide-scsi
根據 GRUB 對設備的命名規則,我們可以很容易的理解上面這行的含義:軟驅設備名為 fdx ,硬盤為 hdx,需要記住的是 GRUB 從0 開始計數,所以第一台硬盤為 hd0 而不是 hd1。設備名用括號括起來,硬盤上的分區用逗號連接。例如 (hd0,1) 表示第一台硬盤上的第二個分區,而 (hd1,5) 就表示第二台硬盤上的第一個邏輯分區。
GRUB 能讀取大多數文件系統,上面這一行指定 GRUB 尋找
位於第一台硬盤上第二基本分區上的 /vmlinuz 文件,你也需要指定 'root=/dev/hda3' (假設你的根文件系統位於/dev/hda3),否則內核就不能掛接上根文件系統,之後就是你自己想加入的其他參數了。這些參數就和LILO 啟動時傳遞給內核的參數一樣,或者說和 lilo.conf 中 append 後面的參數一樣。
另外一個比較特別的入口是啟動windows 2000 的入口,root 入口指向 Windows 2000 的安裝位置(C:\\),接下來的入口設置分區的激活標志,最後的入口告訴 GRUB 搜索分區的第一個扇區來啟動那裡的操作系統。
以上是對GRUB 的一個典型的多重啟動設置的分析,在正式開始安裝GRUB 之前,建議你手頭有一張LILO 啟動盤或者一張應急啟動盤,以防不測。
以root 登錄,輸入"grub"命令以後,就會看到如下的畫面:
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ]
grub>
以上看到的就是 grub 提示符,我們要在這個提示符下面安裝GRUB。
grub> install (hd0,1)/boot/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2 p (hd0,1)/boot/grub/menu.lst
GRUB 分為兩個主要的步驟, stage1 和 stage2。Stage1 是一段嵌入MBR 的迷你代碼。Stage2 是主要部分,在 stage1 把控制權傳遞給它後,就由它來接管所有事情。
install 後面指定stage1 的位置,我們不僅說明了其分區
位置:(hd0,1),因為 GRUB 能讀取文件系統,所以還說
明了分區上目錄位置:/boot/grub/stage1,d 參數表示 stage1 將尋找 stage2 所在的磁盤。接著就是 GRUB 的安裝位置:(hd0) ,這裡就是指安裝在MBR。後面的參數指定 stage2 的位置:(hd0,1),和 stage1 的定義一樣。p 參數指定 menu.lst 文件的位置。
對於 /boot 作為單獨的分區的例子,需要采用下面的命令行:
grub> install (hd0,1)/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2 p (hd0,1)/grub/menu.lst
以上例子假設 /boot 位於 (hd0,1) (也就是hda2),而 / 位於(hd0,2) (也就是 hda3) ,我們不能用 '(hd0,2)/boot/grub/stage1' ,因為GRUB 不知道 (hd0,1) 是 /boot ,所以必須首先指向掛接為 /boot 的分區,然後把目錄指向那裡。
重新啟動系統以後,就可以看到 GRUB 菜單了。看起來似乎很繁瑣,這麼長的命令行,是的!對於那些 LILO 能正常使用的人來說,或許沒有必要來玩這個危險游戲。但是,對於那些想使用 GRUB 增強功能的人來說,試一下 GRUB 或許會有意想不到的驚喜。我的朋友告訴我說他不能用 LILO 識別 1G 內存,希望 GRUB 能幫助辦到。本文旨在拋磚引玉,
GRUB 還有很多的功能有待您的開發。
如果在配置和安裝中遇到了麻煩,為什麼不使用
info grub 或者 man grub 來尋求幫助呢?或者干脆上
GRUB 的官方網站
http://www.gnu.org/software/grub/
尋找 FAQ 和其他文檔呢?
GRUB 的下載地點:
FTP://alpha.gnu.org:/gnu/grub/