-
GRUB
鎖定
- 外文名
- GRUB
- 全 稱
- GRand Unified Bootloader
- 類 別
- 操作程序
- 適用範圍
- 計算機
- 性 質
- 是多啓動規範的實現
- 作 用
- 選擇操作系統分區上的不同內核,也可用於向這些內核傳遞啓動參數
GRUB基本功能
Windows也有類似的工具NTLOADER;比如我們在機器中安裝了Windows 98後,我們再安裝一個Windows XP ,在機器啓動的會有一個菜單讓我們選擇進入是進入Windows 98 還是進入Windows XP。NTLOADER就是一個多系統啓動引導管理器,NTLOADER 同樣也能引導Linux,只是極為麻煩罷了。
在PowerPC 架構的機器中,如果安裝了Linux的Powerpc 版本,大多是用yaboot 多重引導管理器,比如Apple機用的是IBM PowerPC處理器,所以在如果想在Apple機上,安裝Macos 和Linux Powerpc 版本,大多是用yaboot來引導多個操作系統。
GRUB引導過程
裝載GRUB和操作系統的過程,包括以下幾個操作步驟:
GRUB裝載記錄
基本引導裝載程序所做的的事情就是裝載第二引導裝載程序。
GRUB裝載Grub
這第二引導裝載程序實際上是引出更高級的功能,以允許用户裝載一個特定的操作系統。
GRUB裝載系統
GRUB設備名稱
GRUB不區分IDE硬盤和SCSI硬盤,統一使用hdx來標識。軟盤使用fdx來標識,x為硬盤號,x從0開始計數。
GRUB使用(hdx,y)標識某個硬盤中的某個分區,x表示硬盤號,y表示分區號,x和y都從0開始計數。
在windows中,系統的第一個硬盤驅動器表示為(hd0),其中的第一個分區表示為(hd0,0),以此類推。
(hd0,0)。表示C盤。
由於主分區只能有四個,所以第一硬盤的四個主分區分別用(hd0,0)~(hd0,3)來表示;邏輯分區則從(hd0,4)開始算,即第一邏輯分區用(hd0,4),第二邏輯分區用(hd0,5)來表示,依次類推。
在Linux系統中,如ubuntu,(hdx,y)中的y是從1開始計數的。第一邏輯分區用(hd0,5),第二邏輯分區用(hd0,6)來表示
裝置
| Lilo
| Grub
|
IDE1 master
| hda, hda1, hda2
| (hd0), (hd0,0), (hd0,1)
|
IDE1 slave
| hdb, hdb1, hdb2
| (hd1), (hd1,0), (hd1,1)
|
IDE2 master
| hdc, hdc1, hdc2
| (hd2), (hd2,0), (hd2,1)
|
IDE2 slave
| hdd, hdd1, hdd2
| (hd3), (hd3,0), (hd3,1)
|
GRUB文件系統
一些用户常困惑於GRUB中根文件系統(root filesystem)這一術語的用法。GRUB的根文件系統與Linux的根文件系統是沒有關係的!
GRUB接口
當GRUB環境開始載入第二步引導裝載程序時,它尋找自己的配置文件(menu.lst)。當找到配置文件後,它使用這個配置文件建立一個要載入的操作系統的菜單列表, 然後顯示引導菜單接口。 如果配置文件沒有被找到,或者如果配置文件不能讀取,那麼GRUB將載入命令行接口。
GRUB菜單接口
在菜單接口上,按[e]鍵,對高亮菜單項中的命令進行編輯。按[c]鍵載入一個命令行接口。 添加(加在當前行後面(用[o]鍵),加在當前行前(用[0]鍵),編輯(用[e]鍵),刪除(用[d]鍵)。
在所有的改變都完成後,用[Enter]鍵來執行這些命令,並引導操作系統。[Esc]鍵來放棄
命令行接口
GRUB命令接口
以下是幾個常用命令:
boot - 引導先前已經被指定並載入的操作系統或鏈式裝載程序。
chainloader - 將指定的文件作為一個鏈式裝載程序載入。為了獲取在一個指定分區第一 扇區內的文件,使用+1作為文件名。
displaymem - 顯示當前內存的使用情況,這個信息是基於BIOS的。這個命令有助於確定系統在引導前有多少內存。
initrd - 使用户能夠指定一個在引導時可用的初始RAM盤。當內核為了完全引導而需要某些模塊時,這是必需的。
install p - 安裝GRUB到系統的主引導記錄。這個命令允許系統重啓時出現GRUB接口。
(警告:install命令將覆蓋主引導扇區中的其他信息。如果命令被執行,那麼除了GRUB信息之外的其他用於引導其他操作系統的信息都將丟失。在執行這條命令前,確定你對它有正確的瞭解。)
kernel - 當使用直接載入方式引導操作系統時,kernel命令指定內核從GRUB的根文件系統中載入 。
比如 kernel /vmlinuz root=/dev/hda5
Vmlinuz是內核。。它從GRUB的根文件系統載入的,如(hd0,0)。同時,後面一個選項被傳給內核。它指出當Linux內核載入時,內核的根文件系統應該是位於hda5,第一個IDE硬盤的第五個分區。
GRUB命令
color red/black green/blue
default - 默認項目的標題名稱。如果菜單接口超時,那它將被載入。
fallback - 當這個命令被使用時,如果第一次嘗試失敗,那麼這個項目的標題名稱將被使用。
hiddenmenu - 這個命令被使用時,它不顯示GRUB菜單接口,在超時時間過期後載入默認項。用户通過按[Esc]鍵,可以看到標準的GRUB菜單。
timeout - 這個命令設定了在GRUB載入由default命令指定的項目的時間間隔,以秒為單位。
splashimage - 它指定在GRUB引導時所使用的屏幕圖像的位置。
title - 設定用來裝載一個操作系統的一組特定命令的標題。
字符#用來在菜單配置文件放置註釋。
GRUB手動啓動
有時候grub出現問題,不能通過啓動選項啓動目標操作系統,以啓動一個linux為例
按c鍵切換到命令行模式
grub> root (hd0,0) 設置根目錄為第一硬盤的第一個分區
grub> kernel /boot/vmlinuz 設置內核文件,有的linux發行版會有一個名為wmlinuz的軟連接指 向真正的內核文件
grub> initrd /boot/initrd 設置initrd文件,也有可能用軟連接代替真正的文件名
grub> boot (hd0,0) 從硬盤啓動
以上命令可以用tab鍵補全 根據實際情況有所不同
GRUB例子
這是個非常基本的用於引導Red Hat Linux或Microsoft Windows 2000的GRUB菜單配置文件可能如下所示:
default=linux timeout=10 color=green/blacklight-gray/blue #sectiontoloadlinux titlelinux root(hd0,1)這裏制定了grub的根。並且掛載。 kernel/vmlinuzroot=/dev/hda5內核是grub根下的vmlinuz。 並且內核載入後,內核的根是在/dev/hda5 boot #sectiontoloadWindows2000 titlewindows rootnoverify(hd0,0)rootnoverify就是指定根,但是不要掛載。 chainloader+1使用(hd0,0)的第一扇區來引導。
GRUB安裝wingrub
在安裝軟件到機器中時,就直接按它默認的安裝,下一步、下一步就好了
在安裝過程中會出現一個Base Setup的提示窗口,ChooseDrive即是grub配置文件的存放位置,一定要選一個(一般選擇第一個,提醒你注意軟件的標題欄,不同的選擇會顯 示的不一樣),如果你選擇cancel,則不會有menu.lst 文件產生(這個文件很重要),Base Setup提示窗口下面的copy stage files和keep old directory不點擊也可以,它們的區別就是前者把grub文件夾中的文件和menu.lst一起放在新產生的grub文件夾下,而後者新產生的 grub文件夾中只有menu.lst ,如果不點擊則只會產生只含menu.lst文件的grub文件夾,都點擊則是copy stage files那種情況。
GRUB安裝grub
與LILO不同,修改GRUB的配置文件後,不必把GRUB重新安裝到MBR或者某個分區中。
在Linux中,“grub-install”命令是用來把GRUB的步驟1安裝到MBR或者分區中的。GRUB的配置文件、步驟2以及其它文件必須安裝到某個可用的分區中。如果這些文件或者分區不可用,步驟1將把用户留在命令行界面。
GRUB配置文件的文件名和位置隨系統的不同而不同;如在Debian和OpenSUSE中,這個文件為/boot/grub/menu.lst, 而在Fedora和Gentoo中為/boot/grub/grub.conf。Fedora提供了一個從/etc/grub.conf到/boot/grub/grub.conf的符號鏈接。
除了硬盤外,GRUB也可安裝到光盤、軟盤和閃存盤等移動介質中,這樣就可以帶起一台無法從硬盤啓動的系統。
GRUB軟件使用
打開wingrub程序,選擇 tools菜單,然後點擊Install grub ,彈出一個對話框;如下圖所示:
這裏面有兩個方法供選擇;
在下拉列表框中,如果看到(hd0,0)或者(hd0,1)等,則選(hd0,0);如果只看到(hd0,1),説明計算機硬盤的第一個分區是NTFS的文件格式,如果看不到什麼下拉列表框,就使用下面的辦法,
B)選擇Systerm Device ,在右邊的下拉列表框中,選C:然後再選中BOOT FROM 下的BOOT.INI 單選按鈕,在Title 中輸入mygrub ;最後在 Time OUT 中輸入30;
單擊Install按鈕,這樣grub就安裝好了。
grub的配置文件在c:\grub\中(如果你的不是,則可以從wingrub的標題欄看出),配置文件名為menu.lst ,這個配置文件起到決定性作用;所以一定要編輯好。
A和B還是有一些區別,A的方法是開機就能看到所有在menul.lst中的系統;而B,則必須按一下剛才所填寫的mygrub ,然後才能看到在menu.lst所提到的系統。
【個人首選B項,因為A安裝的grub會覆蓋掉原有的啓動引導程序,即重寫了MBR,而B則是把原有的引導程序修改了,加了一個啓動項。如果你想安 裝兩個系統,Windows為主,Linux為副,那麼B就可以更好的實現。當然,在安裝Linux時也要注意安裝程序中有一個“配置高級引導裝載程序選 項”就是對grub的安裝位置進行設置。
▲▲▲配置啓動文件▲▲▲
運行wingrub,單擊菜單中的tools菜單選擇Partition List(分區列表),在這裏能瞭解到硬盤的分區情況,比如可能看到 FAT32的分區是(hd0,1)等,要把Linux的光盤映像文件保存在fat32分區中;通過這個能知道把光盤ISO存放到(hdX,Y)了,也能知 道(hdX,Y)所對應的Windows分區是C,是D,還是E。配置啓動文件的過程如下:
1]先找一個FAT 32的分區,把下載下來的ISO直接放到分區的下面,不要放在任何目錄中,這個分區裏也不要存放其他文件。
2]在這個分區中,再新建一個文件夾,命名為linux,從下載的第一張Linux系統安裝ISO文件isolinux中抽取 vmlinuz 和 initrd.img 兩個文件,放到linux目錄中: 注意只放這兩個文件,不要再存放其他內容,如果放進其他的內容,有可能出現安裝程序中途退出的情況。
注意:抽取文件可以使用WinRAR軟件,另外,輸入文件夾時文件夾名是小寫;在輸入menu.lst 文件名時,要用半角英文,標點之類的全是半角;title root kernel initrd 全是小寫的英文;如果文件夾或文件名輸入出錯,在安裝時安裝程序會提示找不到文件。
GRUB編輯menu.lst
當打開menul.lst 時,可能裏面已經有內容了,比如有個 timeout 10 ,如果沒有則可以自己寫上(這是開機等待進入系統的時間,為時10秒)。
root [開機根目錄 / 所在的磁盤代號]
kernel [開機檔案的所在地完整檔名] [root=/dev/硬盤代號]
範例:
root(hd0,0) kernel/boot/vmlinuz-2.4.19-16mdkroot=/dev/hda1
設定上面就是這樣而已!所以,開機完畢之後,請將您的 kernel 文件名稱(完整檔名)與開機的根目錄所在的磁盤代號記憶一下,那麼下次就可以手動設定開機設定項目呢!但如果是 windows 方面的設定時,那就直接使用 chainloader 這個項目即可,有點像這樣:
chainloader [硬盤代號] +1
範例:
chainloader(hd1,0)+1 titleWindowsXP#計算機中已經安裝了windows系統,用來啓動windows的,這四行代碼如下所示。 titleWindowsXP root(hd0,0) makeactive chainloader+1
menu.lst 文件的配置引導説明,通過menu.lst ,可以配置 Linux的啓動和引導:也可以引導已經安裝好的Linux系統。語法結構有以下的四條,舉例如下:總共有兩個書寫格式,任選其一;
格式一:最簡單:
titlefc4install root(hd0,1) kernel(hd0,1)/linux/vmlinuz initrd(hd0,1)/linux/initrd.img
title 行是在在開機時所看到的菜單,顯示的就是 fc4install ,它要加在 title 的後面。title是必須保留的,它是grub的語法的標籤,可以在title 後面寫入想要添加的東西,這是可以自己定義的,比如 title fc4setup也是可以的。
root (hd0,1) 行使用 root開頭,然後加一個空格,至於用户把vmlinuz和initrd.img 放在哪個分區了,可以打開 wingrub,單擊tools菜單選擇partioinlist (分區列表),在打開的對話框中查到。
kernel 命令行以kernel 開頭,然後加一個空格,並在其後給定vmlinuz文件存放路徑,這個命令行的作用是告訴計算機將使用(hd0,1)分區下的linux目錄中的kernel 內核來啓動;
initrd 行和 kernel 行類似;主要用於指明安裝的文件放在哪個分區和哪個目錄中,即在該命令後指定文件的安裝目錄。
基本的説明已經在上表當中了,這裏需要在説明的是關於 default 開機檔的計算。如果今天我有四個開機設定檔,那麼 default 算的是什麼呢?就是『排序』啦!假如我底下依序出現的設定檔 title 分別是 linux, linux-test, windows, failsafe 的話,那麼開機的時候, grub 的選單就會顯示:
linux linux-test windows failsafe
其中,linux 就是 0 ,而 failsafe 就是 3 ,如果您要調整開機時後的選單順序,就在 /boot/grub/menu.lst 修改一下他們的順序即可!
格式二:比較麻煩一點:理解着看吧;
titlefc4install root(hd0,1) kernel/linux/vmlinuzroroot=/dev/hda2 initrd/linux/initrd.img
title 這行就是我們在開機時,所看到的菜單 ,顯示的就是 FC4install ,要加在 title 的後面,title是必須保留的,是grub的語法的標籤 ,我們可以在title 後面寫我們想要加的東西,這是自己可以定義的,比如 title fc4setup也是可以的;
root 這行,在本例中是 root (hd0,1),這行就是我們打開 wingrub,點tools =》partioinlist (分區列表) 中查到的;我們通過這個知道我們把解壓出來的 vmlinuz和initrd.img 所處的分區和路徑;比如我的機器,我查到的是 (hd0,1),對應的Windows FAT 32分區是D,事實上,我的確把四個光盤映象都放在了 (hd0,1),也就是win中所看到的D盤; 並且我同樣也把提取出來
vmlinuz 和initrd.img 放在了(hd0,1)中的linux目錄中; 不知道自己存放提取出來的內容放在哪個分區了,就用 打開 wingrub,點tools =》partioinlist (分區列表) 中查看;
kernel 這行;注意在 kernel後面有個空格,接着寫 vmlinuz所處的位置 ,在哪裏呢?在 /dev/hda2,這個/dev/hda2是怎麼來的?是由(hd0,1)而來的,如果您的顯示的是 (hd0,2),那root=/dev/hda3,明白了吧,就是(hdX,Y)中的Y+1=Z,就是/dev/hdaZ ,再舉一例:比如我們把提出來的vmlinuz 和initrd.img 放在了 (hd0,5)的linux 目錄中,這時應該寫 root=/dev/hda6 ;
有可能有的弟兄説,我放在了 (hd1,6)的分區,這怎麼辦?這個也不難,我們這裏面的所提到的 (hdX,Y),中的X可能是0 、1、2等 ,所以對應的是 hdaZ ,hdbZ,hdcZ ,如果您看到的是(hd1,6) ,所以對應的是/dev/hdb7 。
initrd 這行,原樣搬上就好;
完整menul.lst 應該如下:在這之中,引導Linux的,有兩種寫法,都在裏面,哪種都是可以啓動引導安裝的;
這是第一種寫法
timeout10 titleWindowsXP root(hd0,0) makeactive chainloader+1 titlefc4install root(hd0,1) kernel(hd0,1)/linux/vmlinuz initrd(hd0,1)/linux/initrd.img
這是第二種格式的寫法
timeout10 titleWindowsXP root(hd0,0) makeactive chainloader+1 titlefc4install root(hd0,1) kernel/linux/vmlinuzroroot=/dev/hda2 initrd/linux/initrd.img
編輯好後,就可以進入引導安裝,此時,如果系統仍然產生錯誤,例如出現找不到文件之類的提示。就需要查看文件存放路徑是否正確,如果能夠引導進入安裝,則 需要選擇ISO映像所存放的FAT32磁盤的分區,然後按Enter鍵執行安裝。
在安裝過程中,以下的幾個情況是要注意的:
1、在FC4的安裝過程,安裝分區時要自定義,不要讓系統自動分區;要自己指定Linux 安裝到哪個分區。我們可以在用windows分區工具,分出兩個空白區,一個要大一點,最好是10G 以上,另外一個是內存的兩倍(對於小內存的機器來説,大內存的機器分上512M 就行了;在安裝時,我們要把大的分區用來裝系統,點一下那個分區,出現掛載點,選擇/ ,然後格式化成 ext3或者 reiserfs 等文件系統;把小一點的分區格式化成swap ,這是Linux的交換區;
當然如果您有未用過的空白區,不用windows分區工具來分也行,在安裝過程中,可以用linux的分區工具來劃分,點幾下鼠標就行了;這是對RH 和/FC 或者 的安裝來説的,Madrake 也一樣;
2、對於有些系統版本要把ISO抽取出來都放在一個目錄中才能進行,比如Slackware 發行版;
3、看到大家反饋的情況,有的弟兄説中途退出與放ISO的分區的下有中文目錄或者中文文件有關;如果找不出問題所在,就把ISO放在一個FAT32的空白分區上。
【安裝成功後,只用保留文件名為GRLDR的文件,即可實現用Windows引導程序引導Linux。】
▲▲▲安裝Fedora▲▲▲
重新啓動電腦,就可以啓動菜單,選擇Fedora的安裝啓動選項進行安裝。