學習,使用linux必須要會基本的Grub操作,只有這樣以後使用中才不會遇到麻煩
例如重新調整分區,安裝linux之後重新安裝windows,增加/減少硬碟等等。。
都可能導致Grub無法引導系統,面對黑呼呼的Grub>發獃或是上各大論壇發貼求助等待獲救?
求人不如求己,趕快掌握Grub基本操作吧! 實際上Grub基本操作是很簡單的:
Grub命名法,TAB鍵補全,啟動linux/win的命令,幾個常用命令(cat,configfile,find,setup,map)
瞭解這些就能處理上述的問題了,這篇Grub文章很不錯,我很喜歡讀Daniel Robbins的文章
GRUB 入門 [轉自developerWorks Linux 專區(IBM)]
第一章 教程提示
我應該學習這門教程嗎?
本教程向您顯示如何安裝和使用 GRUB (Grand Unified Boot Loader)。就像 LILO 一樣,GRUB 允許引導 Linux 系統,它負責裝入和引導核心。但與 LILO 不同,GRUB 的功能非常多,更便於使用,更可靠和靈活,而且非常小巧。
如果已經有些熟悉 LILO,並瞭解了磁碟分割的基本知識,那麼您就掌握了學習本教程應具備的預備知識。通過學習本教程和安裝 GRUB 之後,您將改進 Linux 系統的可靠性和可用性。
如果只是想嘗試 GRUB,可以學習本教程的前半部分,並製作 GRUB 引導盤,然後練習使用它來引導系統。這樣做以後,您將學會在緊急情況下如何使用 GRUB 來引導系統。
但是,如果想更深入地體驗 GRUB,可以學完整個教程,它將為您示範如何將 GRUB 設定成預設引導裝入器。
擷取協助
如果對本教程的內容有技術疑問,請通過 drobbins@gentoo.org 與作者 Daniel Robbins 聯絡。與 GRUB 直接相關的錯誤、建議和問題可以發送到 GNU GRUB 郵件清單 bug-grub@gnu.org。
Daniel Robbins 居住在美國新墨西哥州的 Albuquerque,他是 Gentoo Technologies, Inc. 的總裁兼 CEO,還是 Gentoo Linux(在 PC 上啟動並執行進階 Linux)和 Portage 系統(下一代 Linux 移植系統)的創作者。他還是 Macmillan 書籍 Caldera OpenLinux Unleashed、SuSE Linux Unleashed 和 Samba Unleashed 撰稿作家。自二年級開始,Daniel 就和電腦打交道了,當時他第一次接觸 Logo 程式設計語言和 Pac Man。這也許能解釋他為什麼會成為 SONY Electronic Publishing/Psygnosis 的首席美工設計師。Daniel 喜歡陪伴他的妻子 Mary 和剛出生的女兒 Hadassah。
第二章 GRUB 基礎
什麼是 GRUB?
GRUB 是引導裝入器 -- 它負責裝入核心並引導 Linux 系統。GRUB 還可以引導其它作業系統,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。儘管引導作業系統看上去是件平凡且瑣碎的任務,但它實際上很重要。如果引導裝入器不能很好地完成工作或者不具有彈性,那麼就可能鎖住系統,而無 法引導電腦。另外,好的引導裝入器可以給您靈活性,讓您可以在電腦上安裝多個作業系統,而不必處理不必要的麻煩。
GRUB 很棒
幸好,GRUB 是一個很棒的引導裝入器。它有許多功能,可以使引導過程變得非常可靠。例如,它可以直接從 FAT、minix、FFS、ext2 或 ReiserFS 分區讀取 Linux 核心。這就意味著無論怎樣它總能找到核心。另外,GRUB 有一個特殊的互動式控制台方式,可以讓您手工裝入核心並選擇引導分區。這個功能是無價的:假設 GRUB 菜單配置不正確,但仍可以引導系統。哦,對了 -- GRUB 還有一個彩色引導菜單。我們只是剛開始。
為什麼使用 GRUB?
您也許會奇怪,為什麼全世界都需要 GRUB -- 畢竟,Linux 世界在很長一段時間裡一直使用 LILO 引導裝入器,而且它可以讓上百萬的 Linux 使用者引導系統。是的,的確是這樣,LILO 很有效。但是,LILO 的維修率很高,而且很不靈活。與其花很多時間來描述 GRUB 的優點,還不如示範如何建立自己的 GRUB 引導盤以及如何使用它來引導系統。然後,我將說明 GRUB 的一些很"酷"的技術細節,並指導您完成將 GRUB 安裝到 MBR(主引導記錄)的過程,以使它成為預設引導裝入器。
如果您有點膽小,不必害怕。可以學習本教程的前半部分,建立 GRUB 引導盤,嘗試使用 GRUB 而不必弄亂現有的引導裝入器。或者,可以用其安全的"駐留"方式來熟悉 GRUB。那麼,讓我們立即開始吧。
第三章 安裝 GRUB
下載 GRUB
要開始探究 GRUB 的精妙之處,首先需要下載、編譯和安裝它。但不要害怕 -- 根本不會修改您的引導記錄 -- 我們只是要編譯和安裝 GRUB,就像其它程式一樣,在此過程中我們可以建立 GRUB 引導盤。請不要擔心;在修改引導過程之前,我會告訴您。
現在開始。訪問 ftp://alpha.gnu.org/gnu/grub/ 並下載可以找到的最新版本的 GRUB tar 壓縮包。我編寫本教程時,最新的 tar 壓縮包是 grub-0.5.96.1.tar.gz。下載了最新版本後,就可以安裝了。
安裝期
這裡是從 tar 壓縮包安裝 GRUB 所需輸入的命令。我將在 /tmp 中編譯源檔案,並將所有部分都安裝到硬碟的 /usr 目錄下。從 root 使用者,輸入以下命令:
# cd /tmp
# tar xzvf /path/to/archive/here/grub-0.5.96.1.tar.gz
# cd grub-0.5.96.1
# ./configure --prefix=/usr
# make
# make install
現在已經安裝了 GRUB,準備開始使用它。
製作引導盤
要製作引導盤,需執行一些簡單的步驟。首先,在新的磁碟片上建立 ext2 檔案系統。然後,將其安裝,並將一些 GRUB 檔案複製到該檔案系統,最後運行 "grub" 程式,它將負責設定磁碟片的開機磁區。準備好了嗎?
好,將一張空盤插入 1.44MB 軟碟機,輸入:
# mke2fs /dev/fd0
建立了 ext2 檔案系統後,需要安裝該檔案系統:
# mount /dev/fd0 /mnt/floppy
現在,需要建立一些目錄,並將一些關鍵檔案(原先安裝 GRUB 時已安裝了這些檔案)複製到磁碟片:
# mkdir /mnt/floppy/boot
# mkdir /mnt/floppy/boot/grub
# cp /usr/share/grub/i386-pc/stage1 /mnt/floppy/boot/grub
# cp /usr/share/grub/i386-pc/stage2 /mnt/floppy/boot/grub
只需要再有一個步驟,就能得到可用的引導盤。
解壓、編譯和安裝 GRUB 源 tar壓縮包時,會將程式 grub 放到 /usr/sbin 中。該程式非常有趣並值得注意,因為它實際上是 GRUB 引導裝入器的半功能性版本。是的,儘管 Linux 已經啟動並正在運行,您仍可以運行 GRUB 並執行某些任務,而且其介面與使用 GRUB 引導盤或將 GRUB 安裝到硬碟 MBR 時看到的介面完全相同。
這是有趣的設計策略,現在該使用駐留版本的 GRUB 來設定引導盤的開機磁區了。從 root 使用者,輸入 "grub"。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> root (fd0)
grub> setup (fd0)
grub> quit
現在,引導盤完成了。在繼續下一步驟之前,在看一下剛才輸入的命令。第一個 "root" 命令告訴 GRUB 到哪裡尋找輔助檔案 stage1 和 stage2。預設情況下,GRUB 會在指定的分區或磁碟上的 /boot/grub 目錄中進行尋找。在安裝引導盤時,也就是幾分鐘以前,我們已將這些檔案複製到正確的位置。接著,輸入了 setup 命令,它告訴 GRUB 將引導裝入器安裝到磁碟片的引導記錄上;我們將在以後詳細討論這一過程。然後退出。現在,已經製作好引導盤,可以開始使用 GRUB 了。
第四章 使用 GRUB
準備
使用 GRUB 引導系統之前,需要知道一些資訊。首先,應知道哪個分區儲存了 Linux 核心,以及 root 檔案系統的分區名稱。然後,應查看現有 LILO 配置來尋找需要傳遞給核心的變數,如 "mem=128M"。一旦擷取了這些資訊,就可以開始了。
啟動 GRUB
要啟動 GRUB,需要關閉系統並退出引導盤。如果由於某些原因而不能立即關閉系統(比如上班時在部門的伺服器上測試 GRUB),那麼只要在提示中輸入 "grub" 並繼續操作。所有程式的運行情況都不會改變,只是您不能執行引導(因為 Linux 正在運行)。
首次接觸
裝入引導盤時,在螢幕頂部將出現一條訊息,告訴您正在裝入第一階段和第二階段。幾秒後,將會出現一個熟悉的螢幕,顯示如下:
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>
可以看到,這些內容與在 Linux 中以駐留方式運行 GRUB 時出現的訊息完全相同 -- 只不過現在我們是使用 GRUB 來引導 Linux。
"root"
在 Linux 中,當談到 "root" 檔案系統時,通常是指主 Linux 分區。但是,GRUB 有它自己的 root 分區定義。GRUB 的 root 分區是儲存 Linux 核心的分區。這可能是您的正式 root 檔案系統,也可能不是。例如,在 Gentoo Linux 中,有一個單獨的小分區專用於儲存 Linux 核心與引導資訊。大多數情況下,我們不安裝這個分區,這樣在系統意外崩潰或重新引導時,就不會把它弄亂。
這些,我們討論的是 GRUB,需要指定 GRUB 的 root 分區。進入 root 分區時,GRUB 將把這個分區安裝成唯讀型,這樣就可以從該分區中裝入 Linux 核心。GRUB 的一個很"酷"的功能是它可以讀取原生 FAT、FFS、minix、ext2 和 ReiserFS 分區,我們很快就會討論這個功能。但現在,讓我們輸入 root 分區。在提示中輸入 root,但不要按 Enter 鍵:
grub> root (
現在,按一次 Tab 鍵。如果系統中有多個硬碟,GRUB 將顯示可能完成的列表,從 "hd0" 開始。如果只有一個硬碟,GRUB 將插入 "hd0,"。如果有多個硬碟,繼續進行,在 ("hd2") 中輸入名稱並在名稱後緊跟著輸入逗號,但不要按 Enter 鍵。部分完成的 root 命令看起來如下:
grub> root (hd0,
現在,繼續操作,再按一次 Tab 鍵。GRUB 將顯示特定硬碟上所有分區的列表,以及它們的檔案系統類型。在我的系統中,按 Tab 鍵時得到以下列表:
grub> root (hd0, (tab)
Possible partitions are:
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type unknown, partition type 0x82
Partition num: 2, Filesystem type unknown, partition type 0x7
Partition num: 4, Filesystem type is reiserfs, partition type 0x83
Partition num: 5, Filesystem type is reiserfs, partition type 0x83
如您所見,GRUB 的互動式硬碟和分區名稱實現功能非常有條理。這些,只需要好好理解 GRUB 新奇的硬碟和分區命名文法,然後就可以繼續操作了。
GRUB 命名規範
到目前為止,您可能會感到一點困惑,因為 GRUB 所使用的硬碟/分區命名規範與 Linux 使用的命名規範不同。在 Linux 中,第一個硬碟的第五個分區稱作 "hda5"。而 GRUB 把這個分區稱作 "(hd0,4)"。GRUB 對硬碟和分區的編號都是從 0 開始計算。另外,硬碟和分區都用逗號分隔,整個運算式用括弧括起。現在,回來看一下 GRUB 提示,可以發現如果要引導 Linux 硬碟 hda5,應輸入 "root (hd0,4)"。如果已經明白了 GRUB 硬碟/分區命名,您也許要調整當前 root 命令列,以使它指向儲存 Linux 核心的分區。按以下格式輸完命令,然後按 Enter 鍵:
grub> root (hd0,4) (hit enter)
Filesystem type is reiserfs, partition type 0x83
裝入核心
現在已安裝了 root 檔案系統,到裝入核心的時候了。在 GRUB 提示中,依次輸入 "kernel"、空格、到核心的路徑、空格、核心參數,如 root 參數(GRUB 將自動插入適當的 "mem=" 參數)。我在我的系統中輸入:
grub> kernel /boot/bz2.4 root=/dev/hda5
[Linux-bzImage, setup=0x1200, size=0xe1a30]
請留意 "root=" 核心參數,它非常重要。它應該指向儲存 root 檔案系統的 Linux 分區。您也許要寫下到目前為止輸入的命令,這樣在教程後面講述如何建立 GRUB 引導菜單時,就可以迅速找到它們。
Root,核心,引導!
您已經安裝了 root 檔案系統並裝入了核心。現在,可以引導了。只要輸入 "boot",Linux 引導過程就將開始。
第五章 GRUB 內幕
重新調查引導磁碟片
如果一切正常,就可以使用使用 GRUB 引導盤來引導當前 Linux 發行版。如您所見,GRUB 是功能非常強大的引導裝入器,它讓您可以隨意動態配置以進行引導。我將向您介紹如何建立 GRUB 引導菜單,這樣就可以從菜單中進行 OS 選擇,而不是輸入三行命令來引導 Linux。但在動手之前,現在是深入瞭解 GRUB 幕後是如何工作的好時機。我將說明引導盤引導過程的工作原理,這樣您就可以對 GRUB 有一個更好的評價和瞭解。
兩階段過程
要製作引導磁碟片,需要做兩件事 -- 將檔案複製到磁碟片的 ext2 檔案系統的 /boot/grub 目錄中,運行 GRUB 的安裝程式。運行 GRUB 安裝程式時,GRUB 將 "stage 1" 裝入器安裝到磁碟片的引導記錄中。它還將 stage 1 裝入器配置成從 ext2 檔案系統直接裝入 stage2。通常,GRUB 通過在包含 stage2 資料的磁碟片上建立一列塊來完成此操作,這樣 stage1 裝入 stage2 時不必知道 ext2 檔案系統的任何情況。
但是,大多數情況下,GRUB 在安裝完 stage1 之後,會立即將 stage1.5 裝入器安裝到引導記錄中。這個特殊的 stage1.5 允許無需使用原始塊列表就能從 ext2 檔案系統裝入 stage2,卻要更靈活的標準基於路徑的方法。GRUB 理解檔案系統結構的這一能力使 GRUB 比 LILO 更強壯。例如,如果正好在整理引導盤檔案系統的片段,stage1 就可以找到 stage2(歸功於 ext2 stage1.5)。而 LILO 就不能完成此項操作。因為 LILO 只能依賴於對應檔,每次更新核心或在磁碟上物理移動資料時,即使不更改路徑,也需要重新運行它。
階段 1、1.5 和 2
您也許會想知道:如果使用 FAT 而不是 ext2 檔案系統建立引導盤,GRUB 是否可以工作。是的,它可以工作,因為在輸入 "setup (fd0)" 時,GRUB 會安裝與 root 檔案系統類型匹配的 stage1.5。即使沒有沒有空間可以安裝 stage1.5,GRUB 仍可以通過追溯到更原始的塊列表,來裝入 stage2。
搜尋和恢複
在繼續討論之前,先研究一個與引導磁碟片相關的實用提示。由於 GRUB 的互動式性質,它為恢複磁碟片產生了一個很好的引導裝入器。但是,如果將好的核心複製到引導盤上,那它就更好了。那樣,即使硬碟上的核心壞了或者被意外刪除 了,也可以追溯到引導盤核心,並啟動和運行系統。要將備用核心複製到引導盤,執行以下操作:
# mount /dev/fd0 /mnt/floppy
# cp /path/to/bzImage /mnt/floppy/boot
# umount /dev/fd0
現在,磁碟片已包含備用核心,可以在 GRUB 中使用它來引導 Linux 發行版,操作如下:
grub> root (fd0)
grub> kernel /boot/bzImage root=/dev/hda5 (將 /dev/hda5 更改成想要引導的分區名稱)
grub> boot
硬碟引導
好,現在如何將 GRUB 安裝到硬碟上?這個過程幾乎與引導盤安裝過程一樣。首先,需要決定哪個硬碟分區將成為 root GRUB 分區。在這個分區上,建立 /boot/grub 目錄,並將 stage1 和 stage2 檔案從 /usr/share/grub/i386-pc 複製到該目錄中。可以通過重新引導系統並使用引導盤,或者使用駐留版本的 GRUB 來執行後一步操作。在這兩種情況下,啟動 GRUB,並用 root 命令指定 root 分區。例如,如果將 stage1 和 stage2 檔案複製到 hda5 的 /boot/grub 目錄中,應輸入 "root (hd0,4)"。現在,只差一步。
接著,決定在哪裡安裝 GRUB -- 在硬碟的 MBR,或者如果與 GRUB 一起使用另一個"主"引導裝入器,則安裝在特定分區的引導記錄中。如果安裝到 MBR,則可以指定整個磁碟而不必指定分區,如下(對於 hda):
grub> setup (hd0)
如果要將 GRUB 安裝到 /dev/hda5 的引導記錄中,應輸入:
grub> setup (hd0,4)
現在,已安裝 GRUB。引導系統時,應該立即以 GRUB 的控制台方式結束(如果安裝到 MBR)。現在,應建立引導菜單,這樣就不必在每次引導系統時都輸入那些命令。
引導菜單
要建立菜單,只需在 /boot/grub 中建立一個簡單的文字檔 menu.lst。如果將它放在正確位置,它將在 root GRUB 磁碟機的 stage1 和 stage2 檔案的旁邊。這裡是一個樣本 menu.lst 檔案,可以將它作為一個您的菜單的基礎:
default 0
timeout 30
color white/blue blue/green
title=Boot Linux
root (hd0,4)
kernel /boot/bzImage root=/dev/hda5
title=Boot Linux using initrd
root (hd0,5)
kernel /boot/bzImage root=/dev/loop0 init=/initdisk.gz
initrd /initdisk.gz
title=Windows NT
root (hd0,3)
chainloader +1
理解引導菜單
引導菜單很容易理解。前三行設定預設功能表項目(項目號 0,第一個)、設定逾時值(30 秒),並選擇整個菜單的一些顏色。
接著的三行配置 "Boot Linux" 功能表項目。要建立手工引導命令系列之外的功能表項目,只要添加一行 "title=" 作為第一行,並從最後一行中除去 "boot" 命令(GRUB 會自動添加這個命令)。
接著的四行顯示了如何使用 GRUB 來引導 initrd(初始 root 磁碟),如果您願意的話。現在,討論最後三行......
我將在以下的屏面中說明 menu.lst 格式。
鏈式裝入器
這裡是樣本 menu.lst 的最後三行......
title=Windows NT
root (hd0,3)
chainloader +1
這裡,我添加了一項來引導 Windows NT。要完成此操作,GRUB 使用了"鏈式裝入器"。鏈式裝入器從分區 (hd0,3) 的引導記錄中裝入 NT 自己的引導裝入器,然後引導它。這就是這種技術叫做鏈式裝入的原因 -- 它建立了一個從引導裝入器到另一個的鏈。這種鏈式裝入技術可以用於引導任何版本的 DOS 或 Windows。
第六章 總結
GRUB 的彈性
GRUB 最好的優點之一就是其強健的設計 -- 在不斷使用它時請別忘了這點。如果更新核心或更改它在磁碟上的位置,不必重新安裝 GRUB。事實上,如有必要,只要更新 menu.lst 檔案即可,一切將保持正常。
只有少數情況下,才需要將 GRUB 引導裝入器重新安裝到引導記錄。首先,如果更改 GRUB root 分區的分區類型(例如,從 ext2 改成 ReiserFS),則需要重新安裝。或者,如果更新 /boot/grub 中的 stage1 和 stage2 檔案,由於它們來自更新版本的 GRUB,很有可能要重新安裝引導裝入器。其它情況下,可以不必理睬!
優秀的 GRUB 參考資料
我們在這裡只是介紹了 GRUB 的一部分。例如,可以使用 GRUB 來執行網路引導,引導 BSD 檔案系統,或更多操作。另外,GRUB 有許多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,請閱讀 GRUB 出色的 GNU 文檔。只要在 bash 提示中輸入 "info grub" 就可以閱讀該文檔。
希望您喜歡本教程,喜歡 GRUB (Grand Unified Boot Loader) 的強大功能和靈活性!
反饋意見
請告訴我們這篇教程對您是否有所協助,同時也歡迎您提出一些寶貴的意見和建議以便我們今後做得更好一些。如果您還想我們提供一些別的教程,不妨與我們聯絡。非常感謝!
如果對本教程的內容有疑問,請通過 drobbins@gentoo.org 與作者 Daniel Robbins 聯絡。與 GRUB 直接相關的錯誤、建議和問題可以發送到 GNU GRUB 郵件清單 bug-grub@gnu.org。
相關資源:
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=29204
看過上面後再看看這篇,鞏固+補充