GRUB
本詞條由“科普中國”百科科學(xué)詞條編寫與應(yīng)用工作項目審核。GNU GRUB(GRand Unified Bootloader簡稱“GRUB”)是一個來自GNU項目的多操作系統(tǒng)啟動程序。GRUB是多啟動規(guī)范的實現(xiàn),它允許用戶可以在計算機內(nèi)同時擁有多個操作系統(tǒng),并在計算機啟動時選擇希望運行的操作系統(tǒng)。GRUB可用于選擇操作系統(tǒng)分區(qū)上的不同內(nèi)核,也可用于向這些內(nèi)核傳遞啟動參數(shù)。外文名
GRUB全????稱
GRand Unified Bootloader類????別
操作程序適用范圍
計算機目錄
1基本功能2引導(dǎo)過程?裝載記錄?裝載Grub?裝載系統(tǒng)?設(shè)備名稱3文件系統(tǒng)4接口?菜單接口?命令接口5命令6手動啟動7例子?安裝wingrub?安裝grub?軟件使用?編輯menu.lst基本功能
GNU GRUB 和GRUB是GRand Unified Bootloader的縮寫,它是一個多重操作系統(tǒng)啟動管理器。用來引導(dǎo)不同系統(tǒng),如windows,linux。在X86架構(gòu)的機器中,Linux、BSD 或其它Unix類的操作系統(tǒng)中GRUB、LILO 是大家最為常用,應(yīng)該說是主流。Windows也有類似的工具NTLOADER;比如我們在機器中安裝了Windows 98后,我們再安裝一個Windows XP ,在機器啟動的會有一個菜單讓我們選擇進入是進入Windows 98 還是進入Windows XP。NTLOADER就是一個多系統(tǒng)啟動引導(dǎo)管理器,NTLOADER 同樣也能引導(dǎo)Linux,只是極為麻煩罷了。在PowerPC 架構(gòu)的機器中,如果安裝了Linux的Powerpc 版本,大多是用yaboot 多重引導(dǎo)管理器,比如Apple機用的是IBM PowerPC處理器,所以在如果想在Apple機上,安裝Macos 和Linux Powerpc 版本,大多是用yaboot來引導(dǎo)多個操作系統(tǒng)。因為X86架構(gòu)的機器仍是主流, 所以目前GRUB和LILO 仍然是我們最常用的多重操作系統(tǒng)引導(dǎo)管理器。
引導(dǎo)過程
由硬盤啟動時,BIOS通常是轉(zhuǎn)向第一塊硬盤的第一個扇區(qū),即主引導(dǎo)記錄(MBR)。裝載GRUB和操作系統(tǒng)的過程,包括以下幾個操作步驟:
裝載記錄
基本引導(dǎo)裝載程序所做的唯一的事情就是裝載第二引導(dǎo)裝載程序。
裝載Grub
這第二引導(dǎo)裝載程序?qū)嶋H上是引出更高級的功能,以允許用戶裝載一個特定的操作系統(tǒng)。
裝載系統(tǒng)
如linux內(nèi)核。GRUB把機器的控制權(quán)移交給操作系統(tǒng)。不同的是,微軟操作系統(tǒng)都是使用一種稱為鏈式裝載的引導(dǎo)方法來啟動的,主引導(dǎo)記錄僅僅是簡單地指向操作系統(tǒng)所在分區(qū)的第一個扇區(qū)。
設(shè)備名稱
IDE硬盤用hd開始,SCSI硬盤用sd開頭。軟盤用fd開頭。命名和linux不大一樣。是從0算起。(hd0,0)。表示C盤。(hd0,4)。表示D盤。當然這里指的是(第一個邏輯分區(qū),如果D盤也是主分區(qū),應(yīng)該寫成hd0,1)
系統(tǒng)的第一個硬盤驅(qū)動器表示成(hd0),其上的第一個分區(qū)表示為(hd0,0),也就是說對于硬盤,采用(hdx,y)的形式來表示,x、y都是從0開始計數(shù)的,x表示硬盤號,y表示分區(qū)號。由于主分區(qū)只能有四個,所以第一硬盤的四個主分區(qū)分別用(hd0,0)~(hd0,3)來表示;邏輯分區(qū)則從(hd0,4)開始算,即第一邏輯分區(qū)用(hd0,4),第二邏輯分區(qū)用(hd0,5)來表示,依次類推。一般機子的硬盤都是一個主分區(qū),其余是邏輯分區(qū)。因此C盤用(hd0,0),D盤用(hd0,4)來表示。 光盤用(cd)表示,第一軟驅(qū)用(fd0)表示。文件的表示:( , ) /path/to/file
在Linux系統(tǒng)中,如ubuntu,(hdx,y)中的y是從1開始計數(shù)的。第一邏輯分區(qū)用(hd0,5),第二邏輯分區(qū)用(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) |
文件系統(tǒng)
一些用戶常困惑于GRUB中根文件系統(tǒng)(root filesystem)這一術(shù)語的用法。GRUB的根文件系統(tǒng)與Linux的根文件系統(tǒng)是沒有關(guān)系的!
接口
當GRUB環(huán)境開始載入第二步引導(dǎo)裝載程序時,它尋找自己的配置文件(menu.lst)。當找到配置文件后,它使用這個配置文件建立一個要載入的操作系統(tǒng)的菜單列表, 然后顯示引導(dǎo)菜單接口。 如果配置文件沒有被找到,或者如果配置文件不能讀取,那么GRUB將載入命令行接口。
菜單接口
在菜單接口上,按[e]鍵,對高亮菜單項中的命令進行編輯。按[c]鍵載入一個命令行接口。 添加(加在當前行后面(用[o]鍵),加在當前行前(用[0]鍵),編輯(用[e]鍵),刪除(用[d]鍵)。在所有的改變都完成后,用[Enter]鍵來執(zhí)行這些命令,并引導(dǎo)操作系統(tǒng)。[Esc]鍵來放棄命令行接口
命令接口
以下是幾個常用命令:boot - 引導(dǎo)先前已經(jīng)被指定并載入的操作系統(tǒng)或鏈式裝載程序。chainloader - 將指定的文件作為一個鏈式裝載程序載入。為了獲取在一個指定分區(qū)第一 扇區(qū)內(nèi)的文件,使用+1作為文件名。displaymem - 顯示當前內(nèi)存的使用情況,這個信息是基于BIOS的。這個命令有助于確定系統(tǒng)在引導(dǎo)前有多少內(nèi)存。initrd - 使用戶能夠指定一個在引導(dǎo)時可用的初始RAM盤。當內(nèi)核為了完全引導(dǎo)而需要某些模塊時,這是必需的。install p - 安裝GRUB到系統(tǒng)的主引導(dǎo)記錄。這個命令允許系統(tǒng)重啟時出現(xiàn)GRUB接口。(警告:install命令將覆蓋主引導(dǎo)扇區(qū)中的其他信息。如果命令被執(zhí)行,那么除了GRUB信息之外的其他用于引導(dǎo)其他操作系統(tǒng)的信息都將丟失。在執(zhí)行這條命令前,確定你對它有正確的了解。)kernel - 當使用直接載入方式引導(dǎo)操作系統(tǒng)時,kernel命令指定內(nèi)核從GRUB的根文件系統(tǒng)中載入 。比如 kernel /vmlinuz root=/dev/hda5Vmlinuz是內(nèi)核。。它從GRUB的根文件系統(tǒng)載入的,如(hd0,0)。同時,后面一個選項被傳給內(nèi)核。它指出當Linux內(nèi)核載入時,內(nèi)核的根文件系統(tǒng)應(yīng)該是位于hda5,第一個IDE硬盤的第五個分區(qū)。
命令
color - 設(shè)定在菜單中使用的顏色,
grub[1]一種是作為前景色,一種作為背景色。可以簡單地使用顏色名稱,如red/black。比如:color red/black green/bluedefault - 默認項目的標題名稱。如果菜單接口超時,那它將被載入。fallback - 當這個命令被使用時,如果第一次嘗試失敗,那么這個項目的標題名稱將被使用。hiddenmenu - 這個命令被使用時,它不顯示GRUB菜單接口,在超時時間過期后載入默認項。用戶通過按[Esc]鍵,可以看到標準的GRUB菜單。timeout - 這個命令設(shè)定了在GRUB載入由default命令指定的項目的時間間隔,以秒為單位。splashimage - 它指定在GRUB引導(dǎo)時所使用的屏幕圖像的位置。title - 設(shè)定用來裝載一個操作系統(tǒng)的一組特定命令的標題。字符#用來在菜單配置文件放置注釋。
手動啟動
有時候grub出現(xiàn)問題,不能通過啟動選項啟動目標操作系統(tǒng),以啟動一個linux為例按c鍵切換到命令行模式grub> root (hd0,0) 設(shè)置根目錄為第一硬盤的第一個分區(qū)grub> kernel /boot/vmlinuz 設(shè)置內(nèi)核文件,有的linux發(fā)行版會有一個名為wmlinuz的軟連接指 向真正的內(nèi)核文件grub> initrd /boot/initrd 設(shè)置initrd文件,也有可能用軟連接代替真正的文件名grub> boot (hd0,0) 從硬盤啟動以上命令可以用tab鍵補全 根據(jù)實際情況有所不同
例子
這是個非常基本的用于引導(dǎo)Red Hat Linux或Microsoft Windows 2000的GRUB菜單配置文件可能如下所示:
| 12345678910111213 | default=linuxtimeout=10color=green/blacklight-gray/blue#sectiontoloadlinuxtitlelinuxroot(hd0,1)這里制定了grub的根。并且掛載。kernel/vmlinuzroot=/dev/hda5內(nèi)核是grub根下的vmlinuz。并且內(nèi)核載入后,內(nèi)核的根是在/dev/hda5boot#sectiontoloadWindows2000titlewindowsrootnoverify(hd0,0)rootnoverify就是指定根,但是不要掛載。chainloader+1使用(hd0,0)的第一扇區(qū)來引導(dǎo)。 |
安裝wingrub
在安裝軟件到機器中時,就直接按它默認的安裝,下一步、下一步就好了在安裝過程中會出現(xiàn)一個Base Setup的提示窗口,ChooseDrive即是grub配置文件的存放位置,一定要選一個(一般選擇第一個,提醒你注意軟件的標題欄,不同的選擇會顯 示的不一樣),如果你選擇cancel,則不會有menu.lst 文件產(chǎn)生(這個文件很重要),Base Setup提示窗口下面的copy stage files和keep old directory不點擊也可以,它們的區(qū)別就是前者把grub文件夾中的文件和menu.lst一起放在新產(chǎn)生的grub文件夾下,而后者新產(chǎn)生的 grub文件夾中只有menu.lst ,如果不點擊則只會產(chǎn)生只含menu.lst文件的grub文件夾,都點擊則是copy stage files那種情況。
安裝grub
GRUB的一個重要的特性是安裝它不需依附一個操作系統(tǒng);但是,這種安裝需要一個Linux副本。由于單獨工作,GRUB實質(zhì)上是一個微型系統(tǒng),通過鏈式啟動的方式,它可以啟動所有安裝的主流操作系統(tǒng)。與LILO不同,修改GRUB的配置文件后,不必把GRUB重新安裝到MBR或者某個分區(qū)中。在Linux中,“grub-install”命令是用來把GRUB的步驟1安裝到MBR或者分區(qū)中的。GRUB的配置文件、步驟2以及其它文件必須安裝到某個可用的分區(qū)中。如果這些文件或者分區(qū)不可用,步驟1將把用戶留在命令行界面。GRUB配置文件的文件名和位置隨系統(tǒng)的不同而不同;如在Debian和OpenSUSE中,這個文件為/boot/grub/menu.lst, 而在Fedora和Gentoo中為/boot/grub/grub.conf。Fedora提供了一個從/etc/grub.conf到/boot/grub/grub.conf的符號鏈接。除了硬盤外,GRUB也可安裝到光盤、軟盤和閃存盤等移動介質(zhì)中,這樣就可以帶起一臺無法從硬盤啟動的系統(tǒng)。
軟件使用
打開wingrub程序,選擇 tools菜單,然后點擊Install grub ,彈出一個對話框;如下圖所示:這里面有兩個方法供選擇;A) 直接單擊Boot From MBR Partion ,然后單擊右邊的下拉菜單;選擇要把Linux系統(tǒng)安裝在哪個分區(qū)中,再單擊最下邊install按鈕。在下拉列表框中,如果看到(hd0,0)或者(hd0,1)等,則選(hd0,0);如果只看到(hd0,1),說明計算機硬盤的第一個分區(qū)是NTFS的文件格式,如果看不到什么下拉列表框,就使用下面的辦法,B)選擇Systerm Device ,在右邊的下拉列表框中,選C:然后再選中BOOT FROM 下的BOOT.INI 單選按鈕,在Title 中輸入mygrub ;最后在 Time OUT 中輸入30;單擊Install按鈕,這樣grub就安裝好了。grub的配置文件在c:\grub\中(如果你的不是,則可以從wingrub的標題欄看出),配置文件名為menu.lst ,這個配置文件起到?jīng)Q定性作用;所以一定要編輯好。A和B還是有一些區(qū)別,A的方法是開機就能看到所有在menul.lst中的系統(tǒng);而B,則必須按一下剛才所填寫的mygrub ,然后才能看到在menu.lst所提到的系統(tǒng)。【個人首選B項,因為A安裝的grub會覆蓋掉原有的啟動引導(dǎo)程序,即重寫了MBR,而B則是把原有的引導(dǎo)程序修改了,加了一個啟動項。如果你想安 裝兩個系統(tǒng),Windows為主,Linux為副,那么B就可以更好的實現(xiàn)。當然,在安裝Linux時也要注意安裝程序中有一個“配置高級引導(dǎo)裝載程序選 項”就是對grub的安裝位置進行設(shè)置。▲▲▲配置啟動文件▲▲▲運行wingrub,單擊菜單中的tools菜單選擇Partition List(分區(qū)列表),在這里能了解到硬盤的分區(qū)情況,比如可能看到 FAT32的分區(qū)是(hd0,1)等,要把Linux的光盤映像文件保存在fat32分區(qū)中;通過這個能知道把光盤ISO存放到(hdX,Y)了,也能知 道(hdX,Y)所對應(yīng)的Windows分區(qū)是C,是D,還是E。配置啟動文件的過程如下:1]先找一個FAT 32的分區(qū),把下載下來的ISO直接放到分區(qū)的下面,不要放在任何目錄中,這個分區(qū)里也不要存放其他文件。2]在這個分區(qū)中,再新建一個文件夾,命名為linux,從下載的第一張Linux系統(tǒng)安裝ISO文件isolinux中抽取 vmlinuz 和 initrd.img 兩個文件,放到linux目錄中: 注意只放這兩個文件,不要再存放其他內(nèi)容,如果放進其他的內(nèi)容,有可能出現(xiàn)安裝程序中途退出的情況。注意:抽取文件可以使用WinRAR軟件,另外,輸入文件夾時文件夾名是小寫;在輸入menu.lst 文件名時,要用半角英文,標點之類的全是半角;title root kernel initrd 全是小寫的英文;如果文件夾或文件名輸入出錯,在安裝時安裝程序會提示找不到文件。
編輯menu.lst
Menu說明當打開menul.lst 時,可能里面已經(jīng)有內(nèi)容了,比如有個 timeout 10 ,如果沒有則可以自己寫上(這是開機等待進入系統(tǒng)的時間,為時10秒)。root [開機根目錄 / 所在的磁盤代號]kernel [開機檔案的所在地完整檔名] [root=/dev/硬盤代號]范例:
| 12 | root(hd0,0)kernel/boot/vmlinuz-2.4.19-16mdkroot=/dev/hda1 |
設(shè)定上面就是這樣而已!所以,開機完畢之后,請將您的 kernel 文件名稱(完整檔名)與開機的根目錄所在的磁盤代號記憶一下,那么下次就可以手動設(shè)定開機設(shè)定項目呢!但如果是 windows 方面的設(shè)定時,那就直接使用 chainloader 這個項目即可,有點像這樣:chainloader [硬盤代號] +1范例:
| 123456 | chainloader(hd1,0)+1titleWindowsXP#計算機中已經(jīng)安裝了windows系統(tǒng),用來啟動windows的,這四行代碼如下所示。titleWindowsXProot(hd0,0)makeactivechainloader+1 |
menu.lst 文件的配置引導(dǎo)說明,通過menu.lst ,可以配置 Linux的啟動和引導(dǎo):也可以引導(dǎo)已經(jīng)安裝好的Linux系統(tǒng)。語法結(jié)構(gòu)有以下的四條,舉例如下:總共有兩個書寫格式,任選其一;格式一:最簡單:
| 1234 | titlefc4installroot(hd0,1)kernel(hd0,1)/linux/vmlinuzinitrd(hd0,1)/linux/initrd.img |
title 行是在在開機時所看到的菜單,顯示的就是 fc4install ,它要加在 title 的后面。title是必須保留的,它是grub的語法的標簽,可以在title 后面寫入想要添加的東西,這是可以自己定義的,比如 title fc4setup也是可以的。root (hd0,1) 行使用 root開頭,然后加一個空格,至于用戶把vmlinuz和initrd.img 放在哪個分區(qū)了,可以打開 wingrub,單擊tools菜單選擇partioinlist (分區(qū)列表),在打開的對話框中查到。kernel 命令行以kernel 開頭,然后加一個空格,并在其后給定vmlinuz文件存放路徑,這個命令行的作用是告訴計算機將使用(hd0,1)分區(qū)下的linux目錄中的kernel 內(nèi)核來啟動;initrd 行和 kernel 行類似;主要用于指明安裝的文件放在哪個分區(qū)和哪個目錄中,即在該命令后指定文件的安裝目錄。基本的說明已經(jīng)在上表當中了,這里需要在說明的是關(guān)于 default 開機檔的計算。如果今天我有四個開機設(shè)定檔,那么 default 算的是什么呢?就是『排序』啦!假如我底下依序出現(xiàn)的設(shè)定檔 title 分別是 linux, linux-test, windows, failsafe 的話,那么開機的時候, grub 的選單就會顯示:
| 1234 | linuxlinux-testwindowsfailsafe |
其中,linux 就是 0 ,而 failsafe 就是 3 ,如果您要調(diào)整開機時后的選單順序,就在 /boot/grub/menu.lst 修改一下他們的順序即可!格式二:比較麻煩一點:理解著看吧;
| 12345 | titlefc4installroot(hd0,1)kernel/linux/vmlinuzroroot=/dev/hda2initrd/linux/initrd.img |
title 這行就是我們在開機時,所看到的菜單 ,顯示的就是 FC4install ,要加在 title 的后面,title是必須保留的,是grub的語法的標簽 ,我們可以在title 后面寫我們想要加的東西,這是自己可以定義的,比如 title fc4setup也是可以的;root 這行,在本例中是 root (hd0,1),這行就是我們打開 wingrub,點tools =》partioinlist (分區(qū)列表) 中查到的;我們通過這個知道我們把解壓出來的 vmlinuz和initrd.img 所處的分區(qū)和路徑;比如我的機器,我查到的是 (hd0,1),對應(yīng)的Windows FAT 32分區(qū)是D,事實上,我的確把四個光盤映象都放在了 (hd0,1),也就是win中所看到的D盤; 并且我同樣也把提取出來vmlinuz 和initrd.img 放在了(hd0,1)中的linux目錄中; 不知道自己存放提取出來的內(nèi)容放在哪個分區(qū)了,就用 打開 wingrub,點tools =》partioinlist (分區(qū)列表) 中查看;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 目錄中,這時應(yīng)該寫 root=/dev/hda6 ;有可能有的弟兄說,我放在了 (hd1,6)的分區(qū),這怎么辦?這個也不難,我們這里面的所提到的 (hdX,Y),中的X可能是0 、1、2等 ,所以對應(yīng)的是 hdaZ ,hdbZ,hdcZ ,如果您看到的是(hd1,6) ,所以對應(yīng)的是/dev/hdb7 。initrd 這行,原樣搬上就好;完整menul.lst 應(yīng)該如下:在這之中,引導(dǎo)Linux的,有兩種寫法,都在里面,哪種都是可以啟動引導(dǎo)安裝的;這是第一種寫法
| 123456789 | timeout10titleWindowsXProot(hd0,0)makeactivechainloader+1titlefc4installroot(hd0,1)kernel(hd0,1)/linux/vmlinuzinitrd(hd0,1)/linux/initrd.img |
這是第二種格式的寫法
| 12345678910 | timeout10titleWindowsXProot(hd0,0)makeactivechainloader+1titlefc4installroot(hd0,1)kernel/linux/vmlinuzroroot=/dev/hda2initrd/linux/initrd.img |
編輯好后,就可以進入引導(dǎo)安裝,此時,如果系統(tǒng)仍然產(chǎn)生錯誤,例如出現(xiàn)找不到文件之類的提示。就需要查看文件存放路徑是否正確,如果能夠引導(dǎo)進入安裝,則 需要選擇ISO映像所存放的FAT32磁盤的分區(qū),然后按Enter鍵執(zhí)行安裝。在安裝過程中,以下的幾個情況是要注意的:1、在FC4的安裝過程,安裝分區(qū)時要自定義,不要讓系統(tǒng)自動分區(qū);要自己指定Linux 安裝到哪個分區(qū)。我們可以在用windows分區(qū)工具,分出兩個空白區(qū),一個要大一點,最好是10G 以上,另外一個是內(nèi)存的兩倍(對于小內(nèi)存的機器來說,大內(nèi)存的機器分上512M 就行了;在安裝時,我們要把大的分區(qū)用來裝系統(tǒng),點一下那個分區(qū),出現(xiàn)掛載點,選擇/ ,然后格式化成 ext3或者 reiserfs 等文件系統(tǒng);把小一點的分區(qū)格式化成swap ,這是Linux的交換區(qū);當然如果您有未用過的空白區(qū),不用windows分區(qū)工具來分也行,在安裝過程中,可以用linux的分區(qū)工具來劃分,點幾下鼠標就行了;這是對RH 和/FC 或者 的安裝來說的,Madrake 也一樣;2、對于有些系統(tǒng)版本要把ISO抽取出來都放在一個目錄中才能進行,比如Slackware 發(fā)行版;3、看到大家反饋的情況,有的弟兄說中途退出與放ISO的分區(qū)的下有中文目錄或者中文文件有關(guān);如果找不出問題所在,就把ISO放在一個FAT32的空白分區(qū)上。【安裝成功后,只用保留文件名為GRLDR的文件,即可實現(xiàn)用Windows引導(dǎo)程序引導(dǎo)Linux。】▲▲▲安裝Fedora▲▲▲重新啟動電腦,就可以啟動菜單,選擇Fedora的安裝啟動選項進行安裝。
詞條圖冊更多圖冊參考資料
詞條標簽:
科學(xué)百科信息科學(xué)分類,
中國通信學(xué)會,
科技產(chǎn)品,
科學(xué)GRUB圖冊
總結(jié)
以上是生活随笔為你收集整理的GRUB-百度百科的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。