GRUB
一個多重操作系統啟動管理器
GNU徠 GRUB(GRand Unified Bootloader簡稱“GRUB”)是一個來自GNU項目的多操作系統啟動程序。GRUB是多啟動規範的實現,它允許用戶可以在計算機內同時擁有多個操作系統,並在計算機啟動時選擇希望運行的操作系統。GRUB可用於選擇操作系統分區上的不同內核,也可用於向這些內核傳遞啟動參數。
GNU GRUB 和GRUB是GRand Unified Bootloader的縮寫,它是一個多重操作系統啟動管理器。用來引導不同系統,如windows,linux。
在X86架構的機器中,Linux、BSD 或其它Unix類的操作系統中GRUB、LILO 是大家最為常用,應該說是主流。
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來引導多個操作系統。
因為X86架構的機器仍是主流,所以目前GRUB和LILO 仍然是我們最常用的多重操作系統引導管理器。
由硬碟啟動時,BIOS通常是轉向第一塊硬碟的第一個扇區,即主引導記錄(MBR)。
裝載GRUB和操作系統的過程,包括以下幾個操作步驟:
基本引導裝載程序所做的唯一的事情就是裝載第二引導裝載程序。
這第二引導裝載程序實際上是引出更高級的功能,以允許用戶裝載一個特定的操作系統。
如linux內核。GRUB把機器的控制權移交給操作系統。
不同的是,微軟操作系統都是使用一種稱為鏈式裝載的引導方法來啟動的,主引導記錄僅僅是簡單地指向操作系統所在分區的第一個扇區。
(hd0,0)。表示C盤。
(hd0,4)。表示D盤。當然這裡指的是(第一個邏輯分區,如果D盤也是主分區,應該寫成hd0,1)
系統的第一個硬碟驅動器表示成(hd0),其上的第一個分區表示為(hd0,0),也就是說對於硬碟,採用(hdx,y)的形式來表示,x、y都是從0開始計數的,x表示硬碟號,y表示分區號。
由於主分區只能有四個,所以第一硬碟的四個主分區分別用(hd0,0)~(hd0,3)來表示;邏輯分區則從(hd0,4)開始算,即第一邏輯分區用(hd0,4),第二邏輯分區用(hd0,5)來表示,依次類推。
一般機子的硬碟都是一個主分區,其餘是邏輯分區。因此C盤用(hd0,0),D盤用(hd0,4)來表示。光碟用(cd)表示,第一軟碟機用(fd0)表示。
文件的表示:( , ) /path/to/file
在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中根文件系統(root filesystem)這一術語的用法。GRUB的根文件系統與Linux的根文件系統是沒有關係的!
當GRUB環境開始載入第二步引導裝載程序時,它尋找自己的配置文件(menu.lst)。當找到配置文件后,它使用這個配置文件建立一個要載入的操作系統的菜單列表,然後顯示引導菜單介面。如果配置文件沒有被找到,或者如果配置文件不能讀取,那麼GRUB將載入命令行介面。
在菜單介面上,按[e]鍵,對高亮菜單項中的命令進行編輯。按[c]鍵載入一個命令行介面。添加(加在當前行後面(用[o]鍵),加在當前行前(用鍵),編輯(用[e]鍵),刪除(用[d]鍵)。
在所有的改變都完成後,用[Enter]鍵來執行這些命令,並引導操作系統。[Esc]鍵來放棄
命令行介面
以下是幾個常用命令:
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硬碟的第五個分區。
color - 設定在菜單中使用的顏色,一種是作為前景色,一種作為背景色。可以簡單地使用顏色名稱,如red/black。比如:
color red/black green/blue
default - 默認項目的標題名稱。如果菜單介面超時,那它將被載入。
fallback - 當這個命令被使用時,如果第一次嘗試失敗,那麼這個項目的標題名稱將被使用。
hiddenmenu - 這個命令被使用時,它不顯示GRUB菜單介面,在超時時間過期后載入默認項。用戶通過按[Esc]鍵,可以看到標準的GRUB菜單。
timeout - 這個命令設定了在GRUB載入由default命令指定的項目的時間間隔,以秒為單位。
splashimage - 它指定在GRUB引導時所使用的屏幕圖像的位置。
title - 設定用來裝載一個操作系統的一組特定命令的標題。
2張
GRUB
字元#用來在菜單配置文件放置註釋。
有時候grub出現問題,不能通過啟動選項啟動目標操作系統,以啟動一個linux為例
按c鍵切換到命令行模式
grub> root (hd0,0) 設置根目錄為第一硬碟的第一個分區
grub> kernel /boot/vmlinuz 設置內核文件,有的linux發行版會有一個名為wmlinuz的軟連接指 向真正的內核文件
grub> initrd /boot/initrd 設置initrd文件,也有可能用軟連接代替真正的文件名
grub> boot (hd0,0) 從硬碟啟動
以上命令可以用tab鍵補全 根據實際情況有所不同
這是個非常基本的用於引導Red Hat Linux或Microsoft Windows 2000的GRUB菜單配置文件可能如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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)的第一扇區來引導。 |
安裝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的一個重要的特性是安裝它不需依附一個操作系統;但是,這種安裝需要一個Linux副本。由於單獨工作,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也可安裝到光碟、軟盤和快閃記憶體盤等移動介質中,這樣就可以帶起一台無法從硬碟啟動的系統。
軟體使用
打開wingrub程序,選擇 tools菜單,然後點擊Install grub ,彈出一個對話框;如下圖所示:
這裡面有兩個方法供選擇;
A) 直接單擊Boot From MBR Partion ,然後單擊右邊的下拉菜單;選擇要把Linux系統安裝在哪個分區中,再單擊最下邊install按鈕。
在下拉列表框中,如果看到(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 全是小寫的英文;如果文件夾或文件名輸入出錯,在安裝時安裝程序會提示找不到文件。
編輯menul.lst
當打開menul.lst 時,可能裡面已經有內容了,比如有個 timeout 10 ,如果沒有則可以自己寫上(這是開機等待進入系統的時間,為時10秒)。
root [開機根目錄 / 所在的磁碟代號]
kernel [開機檔案的所在地完整檔名] [root=/dev/硬碟代號]
範例:
設定上面就是這樣而已!所以,開機完畢之後,請將您的 kernel 文件名稱(完整檔名)與開機的根目錄所在的磁碟代號記憶一下,那麼下次就可以手動設定開機設定項目呢!但如果是 windows 方面的設定時,那就直接使用 chainloader 這個項目即可,有點像這樣:
chainloader [硬碟代號] +1
範例:
menu.lst 文件的配置引導說明,通過menu.lst ,可以配置 Linux的啟動和引導:也可以引導已經安裝好的Linux系統。語法結構有以下的四條,舉例如下:總共有兩個書寫格式,任選其一;
格式一:最簡單:
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 就是 0 ,而 failsafe 就是 3 ,如果您要調整開機時后的選單順序,就在 /boot/grub/menu.lst 修改一下他們的順序即可!
格式二:比較麻煩一點:理解著看吧;
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的,有兩種寫法,都在裡面,哪種都是可以啟動引導安裝的;
這是第一種寫法
這是第二種格式的寫法
編輯好后,就可以進入引導安裝,此時,如果系統仍然產生錯誤,例如出現找不到文件之類的提示。就需要查看文件存放路徑是否正確,如果能夠引導進入安裝,則 需要選擇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的安裝啟動選項進行安裝。