Ubuntu/Linux入門介紹-引導管理器Grub(轉)

BSDLite發表於2007-08-17
Ubuntu/Linux入門介紹-引導管理器Grub(轉)[@more@]硬體基礎
========
一塊硬碟,它起始的一部分扇區為主引導扇區,包括MBR(主引導紀錄)和DPT(分割槽表,您可以閱讀分割槽概念章節中相關內容)
每個分割槽起始的一部分扇區,為分割槽引導扇區。
在分割槽引導扇區之後的部分,為檔案系統的索引,檔案系統透過它定位檔案在硬碟上的位置。不同的檔案系統採用不同的索引,例如FAT檔案系統使用檔案分配表和目錄區。

絕大多數作業系統,對硬碟的讀寫操作,透過檔案系統來完成,因此引導扇區中的內容,我們不能夠在檔案系統中進行操作,而需要專用軟體,比如引導管理器。
我們對檔案進行修改後,作業系統會將檔案系統索引中的內容同步。


系統引導流程
------------
1、系統啟動時,首先引導至MBR,將控制權移交安裝在MBR中的引導管理器
(Windows使用NTLDR,Linux通常用Grub)
2、引導管理器讀取分割槽表
3、引導管理器讀取分割槽中的配置檔案,並按配置檔案中預設的引數執行
例如,Grub讀取“/boot/grub/menu.lst”檔案中內容,將可引導系統透過選單顯示
4、引導管理器根據您的選擇,可能會有如下活動
載入核心,啟動Linux系統
檢查活動分割槽,並引導它(單一Windows系統)
讀取相應分割槽的引導扇區,將控制權移交該扇區中的引導管理器,

Ubuntu系統在安裝Grub時,會提問您安裝在MBR或者分割槽引導扇區中。如果將Grub安裝在分割槽引導紀錄中,您必須確保MBR中的引導管理器能夠正確的引導至分割槽引導扇區。
如果您在MBR中使用的是Windows的引導管理器NTLDR,完成這件工作會非常困難,因而我們推薦您使用Grub。

Grub介紹
========
Grub主要有以下功能:

選單式選擇
命令列模式
支援開機畫面
支援大硬碟

其它的功能還有很多,就不一一介紹了。



您可以執行命令“grub”啟動它。會顯示一些版本資訊和使用提示,當然還有命令提示符,如下:

GNU GRUB version 0.97 (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>

您可以使用TAB鍵補全命令和路徑,這非常重要,因為Grub中路徑表示方式與作業系統是不同的,您可能比較陌生,所以儘量用TAB補全它,既方便,也不容易出錯。

您可以在“grub>”提示符後按TAB鍵,會將所有可用的命令顯示出來。
呵呵,是不是有點暈,命令可真不少啊!!!

其實我們會用到的命令只有兩個,
root
setup

Grub術語
--------
在分割槽概念章節裡,我們已經介紹了Linux系統中表示分割槽的方法“/dev/hda5”
/dev/hdMN M為a起始的小寫字母,表示硬碟序號;N為1起始的數字,表示分割槽序號
Grub中使用的表示方法為“hd0,1”
hdX,Y X為0起始的數字,表示硬碟序號;Y為0起始的數字,表示分割槽序號

您得留意它們之間的區別:
N從1開始計數,X和Y從0開始計數
N為1~4,它是一個主分割槽;N為5或大於5,它是第(N-4)個邏輯分割槽。Y按分割槽在硬碟上排列的順序排列,無論它表示的是主分割槽還是邏輯分割槽。
舉例來說:
主 主 邏 邏 主
/dev/hdMN hda1 hda2 hda5 hda6 hda3
hdX,Y hd0,0 hd0,1 hd0,2 hd0,3 hd0,4


現在我們來看“root”和“setup”命令的使用:
grub>root (hd0,1)
這個命令將Grub的根分割槽定位為 “(hd0,1)”
grub>setup (hd0)
這個命令表示將Grub安裝在“(hd0)”,因為沒有指定安裝的分割槽,所以安裝位置為MBR


Grub的根分割槽為Grub配置檔案“/boot/grub/menu.lst”所在分割槽。假如您單獨為“/boot”目錄掛載了一個分割槽,那麼Grub的根分割槽通常為您系統中“/boot”目錄所在的分割槽。
搞錯了根分割槽,Grub就不能正確讀取配置檔案,自然不能正確引導。

引導分割槽,Windows等系統的引導分割槽為它的安裝分割槽,Linux系統的引導分割槽為它的“/boot”目錄所在的分割槽

系統根目錄所在分割槽,Linux根目錄“/”的掛載分割槽。Linux系統的分割槽掛載資訊儲存在檔案系統分配表“/etc/fstab”檔案中

Grub首先讀取根分割槽中的“/boot/grub/menu.lst”檔案,並轉到引導分割槽,如果是Windows等系統,則將控制權移動分割槽引導扇區中的啟動管理器。如果是Linux系統,則載入核心和裝置,並根據“/etc/fstab”檔案的內容掛載檔案系統。


看這個例子:(假設Grub安裝在MBR中)
title Ubuntu
root (hd0,0)
kernel (hd0,1)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda3 ro splash vga=0x31b
initrd (hd0,1)/boot/initrd.img-2.6.15-25-686
boot
Grub的安裝位置為“(hd0)”
“root (hd0,0)”,這一行表示Grub的根分割槽為第一塊硬碟的第一個分割槽“(hd0,0)”,它讀取該分割槽中的配置檔案“grub/menu.lst”
“kernel”和“initrd”行中的“(hd0,1)”,表示當前系統的“/boot”目錄掛載到第一塊硬碟的第二個分割槽“(hd0,1)”
“kernel”行的“root=/dev/sda3”,表示當前系統的“/”目錄掛載到第一塊硬碟的第三個分割槽“(hd0,2)”,核心根據該分割槽中的“/etc/fstab”檔案來掛載檔案系統


Grub配置檔案
------------
“/boot/grub/menu.lst”檔案,主要由一些下面這樣的塊構成的

title Ubuntu
root (hd0,2)
kernel (hd0,2)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda3 ro splash vga=0x31b
initrd (hd0,2)/boot/initrd.img-2.6.15-25-686
boot


title Windows xp
root (hd0,0)
makeactive
chainloader +1


每一塊代表一個作業系統,包含下面裡幾個部分
title xxx 標題,title和分隔符後的內容為Grub選單中顯示的條目
root (hdX,Y) 引導分割槽,可以留空,預設為“grub/menu.lst”所在分割槽(根分割槽),可以使用“grub>root (hdX,Y)”命令設定,或者在您安裝系統時自動設定

如果您計劃引導至分割槽引導扇區,如Windows或者Unix系統(Unix和Linux系統,您需要選擇將引導管理器安裝到分割槽中),那麼需要這樣配置
makeactive 設定活動分割槽,系統預設設定,可以刪除
chainloader +1 鏈式引導,不要動它。
如果以這種方式引導系統,上面“root (hdX,Y)”這一行通常需要配置,“(hdX,Y)”為您的系統所在的分割槽。假如您的Windows在第一塊硬碟的第一個分割槽,則這樣寫“root (hd0,0)”

如果您引導的是Linux系統(沒有在分割槽中安裝引導管理器,而是安裝到MBR),則需要這樣配置
kernel (hd0,2)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda2 ro splash vga=0x31b
initrd (hd0,2)/boot/initrd.img-2.6.15-25-686 裝置映象檔案,與上一行保持一致
boot 不要動它
“kernel”這一行最關鍵,它控制系統核心的載入。行末以“ro”起始的部分為引數(ro只讀,splash顯示啟動畫面,vga設定啟動螢幕解析度)
之前的部分可以寫為這種形式:
kernel (hdX,Y)/boot/vmlinuz root=/dev/sdMN
“(hdX,Y)”通常不是必須的,如果您安裝了多個Linux系統,或者“/boot”目錄與根目錄“/”不在一個分割槽,則應把它寫為“/boot”目錄所在分割槽。而後面的“root=/dev/sdMN”為系統根目錄“/”所在的分割槽。
“initrd”這一行的“(hdX,Y)”與上一行保持一致。




Grub安裝
--------
上面已經向您介紹了Grub的安裝,不過更多的側重理論。現在我們來實踐一下,假設您的系統不能引導,您可以嘗試下面的方法:)

1、
a、找一張Ubuntu的LiveCD (Knoppix也是不錯的選擇)
b、也可以使用安裝光碟,啟動後在“boot”提示符後輸入 “linux rescue”,回車進入救援模式。

2、
如果您擁有root許可權,命令列提示符為“#”,如果是普通使用者,則為“$”。
a、在救援模式下,通常你已經具有了root許可權
b、如果是LiveCD且沒有root許可權,請在終端中輸入 “su”命令切換到root,會提問你root的密碼。
如果不知道root密碼,可以使用這個命令“sudo su”,只要你知道自己的密碼,並且你在ID在sudoer列表中就可以了。

3、
在終端中輸入grub,會進入到Grub的提示符介面
a、 輸入命令 “root (hd " 後按Tab鍵,螢幕上就會列出所有可用選項。
比如我的是這樣的:
Possible disks are: hd0 hd1
這表示我裝了兩塊硬碟,如果你只有一塊硬碟的話,那麼一定是hd0。

在“root(hd”後輸入0,按Tab,會自動補上一個“,”,現在你輸入的內容成為這樣:
root(hd0,
再按Tab鍵,會列出所有可用選項,我的是這樣的。
Possible partitions are:
Partition num: 0, Filesystem type unknown, partition type 0x7
Partition num: 1, Filesystem type is fat, partition type 0xc
Partition num: 2, Filesystem type is reiserfs, partition type 0x83
Partition num: 4, Filesystem type is reiserfs, partition type 0x83
Partition num: 5, Filesystem type unknown, partition type 0x82
Partition num: 6, Filesystem type unknown, partition type 0x7
Partition num: 7, Filesystem type is fat, partition type 0xc

輸入你的選擇,比如為“1”,Tab一次後,結果是這樣的:
root (hd1,1)
現在回車

b、輸入命令
setup (hd0)
將grub安裝在mbr中

c、“quit”命令退出GRUB



Grub使用
--------
命令列
在Grub啟動選單中,您可以選擇您要的選項,按下“e”鍵,進入到命令列模式
修改您的啟動引數,完成後回車
按“b”鍵,Grub將以您修改後的引數引導系統。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-963426/,如需轉載,請註明出處,否則將追究法律責任。

相關文章