GRUB入門教程(轉)
GRUB入門教程(轉)[@more@]GRUB入門教程==============================目錄:1. 教程提示2. GRUB 基礎3. 安裝 GRUB4. 使用 GRUB5. GRUB 內幕6. 總結==============================第一章 教程提示我應該學習這門教程嗎?本教程向您顯示如何安裝和使用 GRUB (Grand Unified Boot Loader)。就像 LILO 一樣,GRUB 允許引導 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 和 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, TABlists possible command completions. Anywhere else TAB lists the possiblecompletions 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, TABlists possible command completions. Anywhere else TAB lists the possiblecompletions of a device/filename. ]grub>可以看到,這些內容與在 Linux 中以駐留方式執行 GRUB 時出現的訊息完全相同 -- 只不過現在我們是使用 GRUB 來引導 Linux。"root"在 Linux 中,當談到 "root" 檔案系統時,通常是指主 Linux 分割槽。但是,GRUB 有它自己的 root 分割槽定義。GRUB 的 root 分割槽是儲存 Linux 核心的分割槽。這可能是您的正式 root 檔案系統,也可能不是。例如,在 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 0x83Partition num: 1, Filesystem type unknown, partition type 0x82Partition num: 2, Filesystem type unknown, partition type 0x7Partition num: 4, Filesystem type is reiserfs, partition type 0x83Partition 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/vmlinux vga=0x314 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 0timeout 30color white/blue blue/greentitle=Boot Linuxroot (hd0,4)kernel /boot/bzImage root=/dev/hda5title=Boot Linux using initrdroot (hd0,5)kernel /boot/bzImage root=/dev/loop0 init=/initdisk.gzinitrd /initdisk.gztitle=Windows NTroot (hd0,3)chainloader +1我將在以下的屏面中說明 menu.lst 格式。理解引導選單引導選單很容易理解。前三行設定預設選單項(專案號 0,第一個)、設定超時值(30 秒),並選擇整個選單的一些顏色。接著的三行配置 "Boot Linux" 選單項。要建立手工引導命令系列之外的選單項,只要新增一行 "title=" 作為第一行,並從最後一行中除去 "boot" 命令(GRUB 會自動新增這個命令)。接著的四行顯示瞭如何使用 GRUB 來引導 initrd(初始 root 磁碟),如果您願意的話。現在,討論最後三行……鏈式裝入器這裡是示例 menu.lst 的最後三行……title=Windows NTroot (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) 的強大功能和靈活性
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945131/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉:區塊鏈入門教程區塊鏈
- [轉]Systemd 入門教程:命令篇
- 埠轉發工具Rinetd詳細入門教程
- Android入門教程 | RecyclerView使用入門AndroidView
- ReactiveCocoa入門教程——第二部分(轉)React
- AudioKit 入門教程
- awk 入門教程
- Maven入門教程Maven
- Aseprite入門教程
- Electron入門教程
- HBase入門教程
- RabbitMQ入門教程MQ
- CMake入門教程
- SnapKit入門教程APK
- Linux入門教程Linux
- Springboot入門教程Spring Boot
- Vuex入門教程Vue
- Webpack 入門教程Web
- Guzzle 入門教程
- Ceph入門教程
- Iptables入門教程
- Jmeter入門教程JMeter
- Redux入門教程Redux
- vue入門教程Vue
- Twisted 入門 教程
- ZooKeeper 入門教程
- Dart 入門教程Dart
- Vivado入門教程
- Elasticsearch入門教程Elasticsearch
- flask入門教程Flask
- 新手入門,webpack入門詳細教程Web
- Android入門教程 | Kotlin協程入門AndroidKotlin
- 【轉】Zookeeper入門
- git 入門教程之github 教程Github
- Apache Flume 入門教程Apache
- Materialize快速入門教程
- SVG 影像入門教程SVG
- SVG 影象入門教程SVG
- React新手入門 教程React