GRUB入門教程
發表于:2007-07-04來源:作者:點擊數:
標簽:
GRUB入門教程 ============================== 目錄: 1.教程提示 2.GRUB基礎 3.安裝GRUB 4.使用GRUB 5.GRUB內幕 6.總結 ============================== SMTH精華區 2005年3月16日 [回到上層] [上一篇][下一篇] 發信人:huggin(再平和點再慢點),信區: Linux Ap
GRUB入門教程
==============================
目錄:
1. 教程提示
2. GRUB 基礎
3. 安裝 GRUB
4. 使用 GRUB
5. GRUB 內幕
6. 總結
==============================
SMTH精華區 2005年3月16日
[回到上層] [上一篇][下一篇]
發信人: huggin (再平和點再慢點), 信區:
LinuxApp
標 題: grub原理
發信站: BBS 水木清華站 (Thu Oct 14 23:00:37 2004), 站內
GRUB入門教程
==============================
目錄:
1. 教程提示
2. GRUB 基礎
3. 安裝 GRUB
4. 使用 GRUB
5. GRUB 內幕
6. 總結
==============================
第一章 教程提示
我應該學習這門教程嗎?
本教程向您顯示如何安裝和使用 GRUB (Grand Unified Boot Loader)。就像 LILO 一樣,G
RUB 允許引導 Linux 系統,它負責裝入和引導內核。但與 LILO 不同,GRUB 的功能非常多
,更易于使用,更可靠和靈活,而且非常小巧。
如果已經有些熟悉 LILO,并了解了磁盤分區的基本
知識,那么您就掌握了學習本教程應具
備的預備知識。通過學習本教程和安裝 GRUB 之后,您將改進 Linux 系統的
可靠性和可用
性。
如果只是想嘗試 GRUB,可以學習本教程的前半部分,并制作 GRUB 引導盤,然后練習使用
它來引導系統。這樣做以后,您將學會在緊急情況下如何使用 GRUB 來引導系統。
但是,如果想更深入地體驗 GRUB,可以學完整個教程,它將為您演示如何將 GRUB 設置成
缺省引導裝入器。
第二章 GRUB 基礎
什么是 GRUB?
GRUB 是引導裝入器 -- 它負責裝入內核并引導 Linux 系統。GRUB 還可以引導其它操作系
統,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及
Windows 95、98、NT 和 200
0。盡管引導操作系統看上去是件平凡且瑣碎的任務,但它實際上很重要。如果引導裝入器
不能很好地完成工作或者不具有彈性,那么就可能鎖住系統,而無法引導計算機。另外,好
的引導裝入器可以給您靈活性,讓您可以在計算機上安裝多個操作系統,而不必處理不必要
的麻煩。
GRUB 很棒
幸好,GRUB 是一個很棒的引導裝入器。它有許多功能,可以使引導過程變得非??煽?。例
如,它可以直接從 FAT、minix、FFS、ext2 或 ReiserFS 分區讀取 Linux 內核。這就意味
著無論怎樣它總能找到內核。另外,GRUB 有一個特殊的交互式控制臺方式,可以讓您手工
裝入內核并選擇引導分區。這個功能是無價的:假設 GRUB 菜單配置不正確,但仍可以引導
系統。哦,對了 -- GRUB 還有一個彩色引導菜單。我們只是剛開始。
為什么使用 GRUB?
您也許會奇怪,為什么全世界都需要 GRUB -- 畢竟,Linux 世界在很長一段時間里一直使
用 LILO 引導裝入器,而且它可以讓上百萬的 Linux 用戶引導系統。是的,的確是這樣,L
ILO 很有效。但是,LILO 的維修率很高,而且很不靈活。與其花很多時間來描述 GRUB 的
優點,還不如演示如何創建自己的 GRUB 引導盤以及如何使用它來引導系統。然后,我將說
明 GRUB 的一些很“酷”的技術細節,并指導您完成將 GRUB 安裝到 MBR(主引導記錄)的
過程,以使它成為缺省引導裝入器。
如果您有點膽小,不必害怕??梢詫W習本教程的前半部分,創建 GRUB 引導盤,嘗試使用 G
RUB 而不必弄亂現有的引導裝入器?;蛘?,可以用其
安全的“駐留”方式來熟悉 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 控制臺?,F在,研究命令。
制作引導盤,第四部分
在 grub> 提示符處,輸入:
grub> root (fd0)
grub> setup (fd0)
grub> quit
現在,引導盤完成了。在繼續下一步驟之前,在看一下剛才輸入的命令。第一個 "root" 命
令告訴 GRUB 到哪里查找輔助文件 stage1 和 stage2。缺省情況下,GRUB 會在指定的分區
或磁盤上的 /boot/grub 目錄中進行查找。在安裝引導盤時,也就是幾分鐘以前,我們已將
這些文件復制到正確的位置。接著,輸入了 setup 命令,它告訴 GRUB 將引導裝入器安裝
到軟盤的引導記錄上;我們將在以后詳細討論這一過程。然后退出?,F在,已經制作好引導
盤,可以開始使用 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 內核的分區。這可能是您的正式 r
oot 文件系統,也可能不是。例如,在 Gentoo Linux 中,有一個單獨的小分區專用于保存
Linux 內核與引導信息。大多數情況下,我們不安裝這個分區,這樣在系統意外崩潰或重
新引導時,就不會把它弄亂。
"root",第二部分
這些,我們討論的是 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,
"root",第三部分
現在,繼續操作,再按一次 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 的交互式硬盤和分區名稱實現功能非常有條理。這些,只需要好好理解 GR
UB 新奇的硬盤和分區命名語法,然后就可以繼續操作了。
GRUB 命名約定
到目前為止,您可能會感到一點困惑,因為 GRUB 所使用的硬盤/分區命名約定與 Linux
使用的命名約定不同。在 Linux 中,第一個硬盤的第五個分區稱作 "hda5"。而 GRUB 把這
個分區稱作 "(hd0,4)"。GRUB 對硬盤和分區的編號都是從 0 開始計算。另外,硬盤和分區
都用逗號分隔,整個表達式用括號括起?,F在,回來看一下 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/vm
linux vga=0x314 root=/dev/hda5
[Linux-bzImage, setup=0x1200, size=0xe1a30]
請留意 "root=" 內核參數,它非常重要。它應該指向保存 root 文件系統的 Linux 分區。
您也許要寫下到目前為止輸入的命令,這樣在教程后面講述如何創建 GRUB 引導菜單時,就
可以迅速找到它們。
Root,內核,引導!
您已經安裝了 root 文件系統并裝入了內核?,F在,可以引導了。只要輸入 "boot",Linux
引導過程就將開始。
第五章 GRUB 內幕
重新調查引導軟盤
如果一切正常,就可以使用使用 GRUB 引導盤來引導當前 Linux 發行版。如您所見,GRUB
是功能非常強大的引導裝入器,它讓您可以隨意動態配置以進行引導。我將向您介紹如何
創建 GRUB 引導菜單,這樣就可以從菜單中進行 OS 選擇,而不是輸入三行命令來引導 Lin
ux。但在動手之前,現在是深入了解 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 文件系統裝入 sta
ge2,卻要更靈活的標準基于路徑的方法。GRUB 理解文件系統結構的這一能力使 GRUB 比 L
ILO 更強壯。例如,如果正好在整理引導盤文件系統的碎片,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 目錄,并將 st
age1 和 stage2 文件從 /usr/share/grub/i386-pc 復制到該目錄中??梢酝ㄟ^重新引導系
統并使用引導盤,或者使用駐留版本的 GRUB 來執行后一步操作。在這兩種情況下,啟動 G
RUB,并用 root 命令指定 root 分區。例如,如果將 stage1 和 stage2 文件復制到 hda5
的 /boot/grub 目錄中,應輸入 "root (hd0,4)"?,F在,只差一步。
硬盤引導,續
接著,決定在哪里安裝 GRUB -- 在硬盤的 MBR,或者如果與 GRUB 一起使用另一個“主”
引導裝入器,則安裝在特定分區的引導記錄中。如果安裝到 MBR,則可以指定整個磁盤而不
必指定分區,如下(對于 hda):
grub> setup (hd0)
如果要將 GRUB 安裝到 /dev/hda5 的引導記錄中,應輸入:
grub> setup (hd0,4)
現在,已安裝 GRUB。引導系統時,應該立即以 GRUB 的控制臺方式結束(如果安裝到 MBR
)?,F在,應創建引導菜單,這樣就不必在每次引導系統時都輸入那些命令。
引導菜單
要創建菜單,只需在 /boot/grub 中創建一個簡單的文本文件 menu.lst。如果將它放在正
確位置,它將在 root GRUB 驅動器的 stage1 和 stage2 文件的旁邊。這里是一個樣本 me
nu.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=/ini
tdisk.gz
initrd /initdisk.gz
title=Windows NT
root (hd0,3)
chainloader +1
我將在以下的屏面中說明 menu.lst 格式。
理解引導菜單
引導菜單很容易理解。前三行設置缺省菜單項(項目號 0,第一個)、設置超時值(30 秒
),并選擇整個菜單的一些顏色。
接著的三行配置 "Boot Linux" 菜單項。要創建手工引導命令系列之外的菜單項,只要添加
一行 "title=" 作為第一行,并從最后一行中除去 "boot" 命令(GRUB 會自動添加這個命
令)。
接著的四行顯示了如何使用 GRUB 來引導 initrd(初始 root 磁盤),如果您愿意的話。
現在,討論最后三行……
鏈式裝入器
這里是示例 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) 的強大功能和靈活性!
--
9997 honk Sep 1 Re: 面對西方媒體的負面報道(我的觀點)
9998 * happymanme Sep 1 Re: 諷刺:小日本的倭女旗手被俺們打敗了!
9999 * F5 Sep 1 Re: 關于劉翔的成績的疑問
> 10000 huggin Sep 1. Re: 劉翔、姚明、謝暉、范志毅……上海男人不錯
※ 來源:·BBS 水木清華站 smth.org·[FROM: 166.111.68.*]
[回到上層] [上一篇][下一篇]
歡迎光臨http://www.sterm.com獲取最新的S-Term,本下載通過Sterm腳本實現
原文轉自:http://www.kjueaiud.com