歡迎您光臨本站 註冊首頁

grub多重引導管理器

←手機掃碼閱讀     火星人 @ 2014-03-25 , reply:0

什麼是grub
  grub 是一個多重啟動管理器。grub是GRand Unified Bootloader的縮寫,它可以在多個操作系統共存時選擇引導哪個系統。它可以引導的操作系統包括Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,Windows NT,Windows2000。它可以載入操作系統的內核和初始化操作系統(如Linux,FreeBSD),或者把引導權交給操作系統(如Windows 98)來完成引導。
2. grub的特點
  grub可以代替lilo來完成對Linux的引導,特別適用於linux與其它操作系統共存情況,與lilo相比,它有以下特點:
支持大硬碟
  現在大多數Linux發行版本的lilo都有同樣的一個問題:根分區(/boot分區)不能分在超過1024柱面的地方,一般是在8.4G左右的地方,否則lilo不能安裝,或者安裝后不能正確引導系統。而grub就不會出現這種情況,只要安裝時你的大硬碟是在LBA模式下,grub就可以引導根分區在8G以外的操作系統。
支持開機畫面
  grub支持在引導開機的同時顯示一個開機畫面。對於玩家來說,這樣可以製作自己的個性化開機畫面;對於PC廠商,這樣可以在開機時顯示電腦的一些信息和廠商的標誌等。grub支持640x480,800x600,1024x768各種模式的開機畫面,而且可以自動偵測選擇最佳模式,與Windows那320x400的開機畫面不可同日而語。
兩種執行模式
  grub不但可以通過配置文件進行例行的引導,還可以在選擇引導前動態改變引導時的參數,還可以動態載入各種設備。例如你在Linux下編譯了一個新的核心,但不能確定它能不能工作,你就可以在引導時動態改變grub的參數,嘗試裝載這個新的核心進行使用。Grub的命令行有非常強大的功能,而且支持如bash或doskey一樣的歷史功能,你可以用上下鍵來尋找以前的命令。
菜單式選擇
  在lilo下,你需要手工輸入操作系統的名字來引導不同的操作系統。而grub使用一個菜單來選擇不同的系統進行引導。你還可以自己配置各種參數,如延遲時間,默認操作系統等。
分區位置改變后不必重新配置
  lilo是通過讀取硬碟上的絕對扇區來裝入操作系統,因此每次分區改變都必須重新配置lilo,例如你用PQ magic調整了分區的大小,那lilo在你重新配置好之前就不能引導這個分區的操作系統了。而grub是通過文件系統直接把核心讀取到內存,因此只要操作系統核心的路徑沒有改變,grub就可以引導系統。 除此之外,Grub還有許多非常強大的功能。例如支持多種外部設備,動態裝載操作系統內核,甚至可以通過網路裝載操作系統核心。Grub支持多種文件系統,支持多種可執行文件格式,支持自動解壓,可以引導不支持多重引導的操作系統等。
3. grub的使用
安裝grub
  如果已經安裝了藍點Linux2.0則grub是默認安裝的。要把grub重新安裝到主引導扇區上,只需要簡單打入makebootable命令就可以了。
製作grub啟動盤
  首先確定grub已經安裝,然後進入grub的目錄,鍵入:
  #cd /boot/grub
  放入一張軟盤,然後敲入命令:
  #dd if=stage1 of=/dev/fd0 bs=512 count=1
  #dd if=/stage2 of=/dev/fd0 bs512 seek=1
  這樣就可以做好一張啟動盤了。
開機
  安裝了grub開機後會出現一個菜單,列出所有的啟動選項。如果設置了啟動畫面則會顯示啟動畫面,按Esc鍵則可以取消啟動畫面顯示菜單選項。藍點Linux所帶的grub的命令提示是全中文的,在菜單下面詳細列出如按e是編輯啟動命令,按c是使用命令行等。用上下鍵可以選擇菜單項,按回車啟動所選項。按e鍵可以編輯所選項的啟動命令,你可以用這個功能臨時改變你的系統的啟動參數,參見配置grub一節。按c鍵則進入命令行模式。   
  在命令行模式下可以打入命令直接執行,例如你可以敲入poweroff關閉計算機。按Tab鍵可以列出所有支持的命令。藍點Linux已經把grub漢化了,其中一部分命令敲入名字後會給出中文提示,顯示命令的用法和參數。
4. 配置grub
  grub啟動時會在/boot/grub/中尋找一個名字為menu.lst的配置文件,如果找不到此文件則不進入菜單模式而直接進入命令行模式。
  menu.lst 是一個文本文件,你可以用任何一個文本編輯器來打開它。每一行代表一個配置命令,如果一行的第一個字元為井號"#"則這一行為註釋,你可以簡單地用增加或減少註釋行來改變配置。
編輯menu.lst,一般會有以下各行
timeout second
設定在second秒之後引導默認的操作系統。
藍點Linux默認是timeout 5,就是5秒沒有其他指令就引導系統,如果設成-1,則grub會一直等待直到用戶選擇一個選項為止。
default num
默認啟動第num+1行選項,也就說default=0則默認啟動菜單第一行的操作系統,default=1則啟動第2行的系統,如此類推。
splash pathname/filename
指出開機畫面的文件所存放的路徑和文件名,如 splash /boot/logo/800x600x8.img 是指用在/boot/logo路徑下的800x600.img文件作為開機畫面
title OSname title
後面的字元就是你在菜單項上所看見的選項,你可以寫上操作系統的名字和描述,如用
title BluePoint Linux, Single Mode 代表這一選項是引導藍點Linux的單用戶模式。
下面結合兩個系統引導描述來解釋幾個引導選項的意義
title BluePoint Linux, Default Mode
root (hd0,1)
kernel /boot/vmlinuz vga=auto root=/dev/hda2
hd0是指第一個硬碟(主硬碟) (hd0,1)是指第一個硬碟的第二個分區。 kernel /boot/vmlinuz 是指出Linux核心的路徑在/boot/vmlinuz中。vga=auto 是設定顯示模式,root=/dev/hda2是指把第一個硬碟的第二個分區作為根掛載點("/")。
title Microsoft Windows
root (hd1,0)
chainloader (hd1,0)+1
root (hd1,0)這是指第二個硬碟(從硬碟)上第一個分區
chainloader (hd1,0)+1 裝入一個扇區的數據然後把引導權交給它。
5. 從軟盤啟動grub
  製作啟動盤后可以用軟盤啟動引導硬碟上的操作系統 插入製作好的啟動軟盤,進入BIOS設定軟盤啟動。軟盤啟動成功后就會進入grub的命令行模式
grub>
  要啟動一個操作系統,首先指定引導哪個分區上的系統,例如要引導指第一個硬碟上的第一個分區的操作系統,先鍵入
grub>root (hd0,0)
  接著如果要啟動的是Windows系統,鍵入
grub>chainloader (hd0,0)+1
  注意(hd0,0)要隨著硬碟和分區的不同而改變數字。 如果要引導Linux或其他系統,應鍵入
grub>kernel (hd0,0)/boot/vmlinuz root=/dev/hda1
  注意hda1參數也要隨著硬碟和分區的不同而改變,如從第二個硬碟的第一個分區引導則用hdb1。
  最後敲入boot就可以啟動系統了。
  在任何時候不能確定命令或者命令的參數都可以按Tab獲得相關的幫助。用上下鍵可以獲得命令的歷史記錄。 其實這些命令就是menu.lst的啟動描述,您也可以根據那些描述來自己鍵入啟動命令,最後敲入boot就可以引導系統了。

Grub配置雜談(轉載)


1、一個GRUB配置文件
2、解讀grub.conf文件
3、配置grub
4、GRUB的交互性
5、常見grub除錯方法的思路
1 一個GRUB配置文件
基於本例的分區如下:
hda 15G
hda1 8G / RED HAT LINUX8.0
hda5 7G /home
hdc 20G
hdc1 6.4G WinXP
hdc5 6.4G
hdc6 6.4G
hdc7 6.4G
#fdisk -l
# Disk /dev/hdc: 255 heads, 63 sectors, 2434 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 * 1 894 7181023+ b Win95 FAT32
/dev/hdc2 895 2434 12370050 f Win95 Extd (LBA)
/dev/hdc5 895 1787 7172991 b Win95 FAT32
/dev/hdc6 1788 2434 5196996 b Win95 FAT32
Disk /dev/hda: 255 heads, 63 sectors, 1867 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 1020 8193118+ 83 Linux
/dev/hda2 1021 1802 6281415 83 Linux
/dev/hda3 1803 1867 522112+ 82 Linux swap
grub.conf,這個文件位於;/boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=3
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-14)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /boot/initrd-2.4.18-14.img
title Microsoft Windows XP
map (hd0) (hd1)
map (hd1) (hd0)
root (hd1,0)
chainloader (hd1,0)+1
makeactive
boot

2 解讀grub.conf文件
我們將來看看grub.conf文件內語句,(注:...)內的東西是我們的解讀內容.
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version.img
#boot=/dev/hda (注:以上以符號井"#"開頭的行表示被註釋掉,沒有任何意義)
default=0 (注:默認的操作系統就是由default控制的。default后加一個數字n,表明是第 n+1個。需要注意的是,GRUB中,計數是從0開始的,第一個硬碟是hd0,第一 個軟碟機是fd0,等等。所以,default 0 表示默認的操作系統在這兒是 Red Hat Linux (2.4.18-14)如果你修改成1就是WinXP了)
timeout=3 (注:timeout表示默認等待的時間,這兒是3秒鐘。超過3秒,用戶還沒有作出選 擇的話,系統將自動選擇默認的操作系統;當然你可以改成任何你樂意的時間)
splashimage=(hd0,0)/boot/grub/splash.xpm.gz (注:指定開機畫面文件splash.xpm.gz的位置,也可以splash /boot/logo/800x600x8.img)
title Red Hat Linux (2.4.18-14) (注:表示Red Hat Linux的菜單項)
root (hd0,0) (注:表示第一個硬碟第一個分區,這裡的root和系 統內的root不是一碼事!詳細如下說明)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ (注:指定內核的位置,詳細說明如下 文)
initrd /boot/initrd-2.4.18-14.img (注:初始化)
title Microsoft Windows XP (注:表示Microsoft Windows XP的菜單項)
map (hd0) (hd1) (注:map是命令,詳細如下)
map (hd1) (hd0)
root (hd1,0) (注:這是指第二個硬碟(從硬碟)上第一個分區)
chainloader (hd1,0)+1 (注:鏈式裝入器,裝入一個扇區的數據然後把引導 權交給它。詳細說明如下)
makeactive
boot
(注:在 Linux 中,當談到 "root" 文件系統時,通常是指主 Linux 分區。但是,GRUB 有它自己的 root 分區定義。GRUB 的 root 分區是保存 Linux 內核的分區。這可能是您的正式 root 文件系統,也可能不是。我們討論的是 GRUB,需要指定 GRUB 的 root 分區。進入 root 分區時,GRUB 將把這個分區安裝成只讀型,這樣就可以從該分區中裝入 Linux 內核。GRUB 的一個很「酷」的功能是它可以讀取本機的 FAT、FFS、minix、ext2 和 ReiserFS 分區.到目前為止,您可能會感到一點疑惑,因為 GRUB 所使用的硬碟/分區命名約定與 Linux 使用的命名約定不同。在Linux 中,第一個硬碟的第五個分區稱作 "hda5"。而 GRUB 把這個分區稱作 "(hd0,4)"。GRUB 對硬碟和分區的編號都是從 0 開始計算。另外,硬碟和分區都用逗號分隔,整個表達式用括弧括起。現在,可以發現如果要引導 Linux 硬碟 hda5,應輸入 "root (hd0,4)"。
知道了內核在哪兒,還要具體指出哪個文件是內核文件,這就是kernel的工作。
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/說明/boot/vmlinuz-2.4.18-14就是要載入的內核。後面的都是傳遞給內核的參數。root=LABEL=/就是linux的硬碟分區表示法,ro是readonly的意思。initrd用來初始的linux image,並設置相應的參數。
命令map:當你有兩塊硬碟,一個無法從第二塊硬碟啟動的操作系統,例如Windowsxp,就可以使用map命令.你能夠將hd0映射為hd1,將hd1映射為hd0。換句話說,你可以虛擬的交換兩個硬碟而啟動所需要的操作系統 。命令形式如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
GRUB 使用了「鏈式裝入器」(chainloader)。鏈式裝入器從分區 (hd1,0) 的引導記錄中裝入winxp自己的引導裝入器,然後引導它。這就是這種技術叫做鏈式裝入的原因 -- 它創建了一個從引導裝入器到另一個的鏈。這種鏈式裝入技術可以用於引導任何版本的 DOS 或 Windows。
GRUB的配置文件要簡單就這麼簡單,如果你要更個性化一點,試一試把「color light-gray/blue 」加在default語句的下面,下一次啟動GRUB時,看看有什麼變化,再試一試「color light-blue/red",驚喜嗎? 有趣吧! )

3 配置grub
grub啟動時會在/boot/grub/中尋找一個名字為menu.lst的配置文件,如果找不到此文件則不進入菜單模式而直接進入命令行模式。
現在,我們來看一下如何在啟動後進入各種操作系統,如何建立menu.conf文件。我們就從GRUB支持的啟動過程開始。可以有兩種方法來完成啟動過程:
•A.通過調用內核本地啟動
•B.連續啟動或者將控制轉給另一個引導器
A模式啟動過程
1.配置跟設備或者告訴GRUB你的根文件系統。
2.告訴GRUB你的內核影像的位置,然後將參數傳送給內核。
3.重新啟動,試一下。
為了啟動Linux,將內核以bzImage的文件名放在/boot/目錄中,跟文件系統是
/dev/hda1,或者GRUB中的(hd0,0)。啟動過程如下:
1.root (hd0,0) [This sets the root partition]
2.kernel /boot/bzImage root=/dev/hda1 [This sets the kernel]
B模式啟動過程(這種模式假設當前的分區中安裝了另一個啟動管理器,例如LILO
或者NTLDR):
1.設置根分區但不要安裝它
2.激活這個分區
3.配置需要啟動的分區的第一個扇區
4.重新啟動,看一下效果。
我們在試試啟動安裝在/dev/hdc1或者(hd1,0)的windows。啟動windows的過程如下:
1.rootnoverify (hd1,0)
2.makeactive
3.chainloader +1 [+1 sets the first sector of the current root
partition]
4.boot [transfers the control and quits GRUB]
menu.conf文件:它用於建立啟動多操作系統時的菜單。建立menu.conf並不難。它使用簡單的英語,就象你在這一節看到的那樣。
所有的菜單項目都以沒有逗號分隔的「title TITLENAME」開頭。你可以隨意設置
TITLENAME。
設置Linux啟動菜單步驟如下:
1.設置標題
2.設置根分區
3.設置內核的相應參數
4.啟動
一個菜單例子:
title Red Hat Linux (2.4.18-14)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /boot/initrd-2.4.18-14.img
前面有#的行是一個註釋。
建立啟動Windows 或者 DOS的菜單:
title Windoze
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
#----
又或者:
title Microsoft Windows XP
map (hd0) (hd1)
map (hd1) (hd0)
root (hd1,0)
chainloader (hd1,0)+1
makeactive
boot
----
注意:root和rootnoverify都是一樣的,把rootnoverify改成root也行。不過經過實踐來看。有時引導win時,系統安裝好后,是rootnoverify (hdX.Y)這樣形式的,這樣會出現windows起不來,出現什麼windows什麼文件損壞的情況。這時,我們就要把在grub中,引導windows的那段中的rootnoverify改為root
root英文的意思就是根的意思,在這裡是讓linux知道自己所處的位置,也就是我們所安裝linux的/根分區所在的位置 。

4 GRUB的交互性
GRUB 最好的優點之一就是其強健的設計 -- 在不斷使用它時請別忘了這點。如果更新內核或更改它在磁碟上的位置,不必重新安裝 GRUB。事實上,如有必要,只要更新 menu.lst 文件即可,一切將保持正常。
只有少數情況下,才需要將 GRUB 引導裝入器重新安裝到引導記錄。首先,如果更改 GRUB root 分區的分區類型(例如,從 ext2 改成 ReiserFS),則需要重新安裝。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由於它們來自更新版本的 GRUB,很有可能要重新安裝引導裝入器。其它情況下,可以不必理睬!
GRUB的最大的特點就是交互性特彆強。在開機時,按一下「c」,將進入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 控制台繞過lilo來啟動RedHat linux,
grub> root (h
現在,按一次 Tab 鍵。如果系統中有多個硬碟,GRUB 將顯示可能完成的列表,從 "hd0" 開始。如果只有一個硬碟,GRUB 將插入 "hd0,"。如果有多個硬碟,繼續進行,在 ("hd2") 中輸入名稱並在名稱后緊跟著輸入逗號,但不要按 Enter 鍵。部分完成的 root 命令看起來如下:
grub> root (hd0,
現在,繼續操作,再按一次 Tab 鍵。GRUB 將顯示特定硬碟上所有分區的列表,以及它們的文件系統類型。在我的系統中,按 Tab 鍵時得到以下列表:
grub> root (hd0, (tab,按tab一下鍵)
Possible partitions are:
Partition num: 0, Filesystem type is fat, partition type 0x6
Partition num: 2, Filesystem type is ext2fs, partition type 0x83
Partition num: 4, Filesystem type unknown, partition type 0x7
Partition num: 5, Filesystem type is ext2fs, partition type 0x83
Partition num: 6, Filesystem type is fat, partition type 0xb
Partition num: 7, Filesystem type is fat, partition type 0xb
Partition num: 8, Filesystem type is ext2fs, partition type 0x83
Partition num: 9, Filesystem type unknown, partition type 0x82
如您所見,GRUB 的互動式硬碟和分區名稱實現功能非常有條理。這些,只需要好好理解 GRUB 新奇的硬碟和分區命名語法,然後就可以繼續操作了
grub> root (hd0,
現在已安裝了 root 文件系統,到裝入內核的時候了
grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro
[Linux-bzImage, setup=0x1200, size=0xe1a30]
您已經安裝了 root 文件系統並裝入了內核。現在,可以引導了。只要輸入 "boot",Linux 引導過程就將開始。是不是很cool啊,GRUB的menu.lst更像一個linux下的腳本程序。
5 常見grub除錯方法的思路
首先進去Linux的rescue模式!
用軟盤或光碟啟動,然後在啟動的提示符輸入:linux rescue
按照提示進入一個Shell狀態,你可以到/mnt/下面看到一個sysimage這麼目錄,進去以後,就是你安裝linux的/分區.
使用命令將根分區變為當前目錄的根分區:chroot /mnt/sysimage
然後轉到/sbin/這個目錄中.
使用fdisk -l 顯示當前分區情況,然後使用#grub-install /dev/hdx(x為你使用的是那塊硬碟安裝的,一般情況下是hda)
使用exit推出chroot,再使用exit退出linux rescue模式,系統將重新啟動!取出光碟,應該可以看到grub安裝好了.
在具體的環境中,編輯/boot/grub/grub.conf文件和menu.lst文件

簡化:
1.安裝盤啟動
2.進入linux rescue模式
3.一系列鍵盤以及幾項簡單的配製,過後就[繼續]了。。。這個過程,我不說了,比較簡單。
4.然後會出現這樣的字元
sh#
5. sh#grub
會出現這樣的字元:grub>我們就可以在這樣的字元後面,輸入:grub>root (hdX,Y)
grub>setup (hd0)
如果成功會有一個successful......
這裡的X,如果是一個盤,就是0,如果你所安裝的linux的根分區在第二個硬碟上,那X就是1了;Y,就是裝有linux系統所在的根分區。 setup (hd0)就是把GRUB寫到硬碟的MBR上。
其他:
grub菜單項丟失,只有字元grub>時的處理方法:
grub>cat (hd0,0) /root/grub/grub.conf(為了看參數。)
grub>root (hd0,1)
grub>kernel (hd0,0) /boot/vmlinuz-2.4.18-11 ro root=/dev/hda2
grub>initrd (hd0,0) /boot/initrd-2.4.18-11.img
grub>boot
如果看不明白,可以參考後面的命令慢慢看,這裡不做註釋,促使大家學習,哈哈
98先裝,用的是單獨的硬碟,4.3G,那時候,LINUX8還沒有到我手中
後來到了,在家中安裝好了,選擇GRUB,就會有DOS的一個菜單,我的是在主分區
到了公司,把LINUX掛在第一個盤的位置,那個盤掛在第四個盤的位置(這個無所謂)
然後GRUB配置如下
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-14)
root (hd0,0)
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /initrd-2.4.18-14.img
title DOS
rootnoverify (hd1,0)
makeactive
chainloader (hd1,0)+1
map (hd0) (hd1)
map (hd1) (hd0)
boot

下面是GRUB的可用命令列表:
#大部分命令我們不常用,而且我也沒有每個都試驗!
關於下面將要用到的三種模式的解釋:
GRUB的用戶界面有三種:命令行模式,菜單模式和菜單編輯模式
  (a) 命令行模式:
  進入命令行模式后GRUB會給出一個命令提示符`grub>`,此時就可以鍵入命令,按回車執行。此模式下可執行的命令是在menu.lst中可執行的命令的一個子集。此模式下允許類似於Bash shell的命令行編輯功能:
或 游標右移一個字元
或 游標左移一個字元
到這一行的開頭
或 到行尾
或 刪除游標處的字元
或 刪除游標左邊的字元
刪除游標右邊的所有字元(包括游標處的字元)
刪除游標左邊的所有字元(包括游標處的字元)
恢復上次刪除的字元串到游標位置
或 歷史記錄中的上一條命令
或 歷史記錄中的下一條命令
  在命令行模式下鍵有補全命令的功能,如果你敲入了命令的前一部分,鍵入系統將列出所有可能以你給出的字元串開頭的命令。如果你給出了命令,在命令參數的位置按下鍵,系統將給出這條命令的可能的參數列表,具體的可用命令集將在後面給出。
  (b) 菜單模式
  當存在文件/boot/grub/menu.lst文件時系統啟動自動進入此模式。菜單模式下用戶只需要用上下箭頭來選擇他所想啟動的系統或者執行某個命令塊,菜單的定義在menu.lst文件中,你也可以從菜單模式按鍵進入命令行模式,並且可以按鍵從命令行模式返回菜單模式。菜單模式下按鍵將進入菜單編輯模式。
  (c) 菜單編輯模式
  菜單編輯模式用來對菜單項進行編輯改變,其界面和菜單模式的界面十分類似,不同的是菜單中顯示的是對應某個菜單項的命令列表。如果在編輯模式下按下,則取消所有當前對菜單的編輯並回到菜單模式下。在編輯模式下選中一個命令行,就可以對這條指令進行修改,修改完畢后按下,GRUB將提示你確認並完成修改。如果你想在當前命令列表中增加一條命令,按在當前命令的下面增加一條指令,按在當前命令前處增加一條指令。按刪除一條指令。
僅用於菜單的命令(不包括菜單項內部的啟動命令)
default num
設置菜單中的默認選項為num(默認為0,即第一個選項),超時將啟動這個選項
fallback num
如果默認菜單項啟動失敗,將啟動這個num後援選項。
password passwd new-config-file
關閉命令行模式和菜單編輯模式,要求輸入口令,如果口令輸入正確,將使用new-config-file
作為新的配置文件代替menu.lst,並繼續引導。
timeout sec
設置超時,將在sec秒后自動啟動默認選項。
title name ...
開始一個新的菜單項,並以title后的字串作為顯示的菜單名。
在菜單(不包括菜單項內部的命令)和命令行方式下都可用的命令
bootp
以BOOTP協議初始化網路設備
color normal [highlight]


改變菜單的顏色,normal是用於指定菜單中非當前選項的行的顏色,highlight是用於指定當前菜單選項的顏色。如果不指定highlight,GRUB將使用normal的反色來作為highlight顏色。指定顏色的格式是「前景色/背景色」,前景色和背景色的可選列表如下:
* black
* blue
* green
* cyan
* red
* magenta
* brown
* light-gray
下面的顏色只能用於背景色
* dark-gray
* light-blue
* light-green
* light-cyan
* light-red
* light-magenta
* yellow
* white
你可以在前景色前加上前綴"blink-",產生閃爍效果,你可以在menu.lst中加上下面這個選項來改變顏色效果:
title OS-BS like
color magenta/blue black/magenta
device drive file
在GRUB命令行中,把BIOS中的一個驅動器drive映射到一個文件file。你可以用這條命令創建一個磁碟映象或者當GRUB不能真確地判斷驅動器時進行糾正。如下
grub> device (fd0) /floppy-image
grub> device (hd0) /dev/sd0
這條命令只能在命令行方式下使用, 是個例外。
dhcp
用DHCP協議初始化網路設備。目前而言,這條指令其實就是bootp的別名,效果和bootp一樣。
hide partition
這條指令僅僅對DOS和WINDOWS有用,當在一個硬碟上存在多個DOS/WIN的主分區時,有時需要這條指令隱藏其中的一個或幾個分區,即在分區表中設置「隱藏」位。
rarp
用RARP協議初始化網路設備。
setkey to_key from_key
改變鍵盤的映射表,將from_key映射到to_key,注意這條指令並不是交換鍵映射,如果你要交換兩個鍵的映射,需要用兩次setkey指令,如下:
grub> setkey capslock control
grub> setkey control capslock
其中的鍵必須是字母,數字或者下面的一些代表某一鍵的字元串:
`escape, `exclam, `at, `numbersign, `dollar, `percent,
`caret, `ampersand, `asterisk, `parenleft, `parenright,
`minus, `underscore, `equal, `plus, `backspace, `tab,
`bracketleft, `braceleft, `bracketright, `braceright, `enter,
`control, `semicolon, `colon, `quote, `doublequote,
`backquote, `tilde, `shift, `backslash, `bar, `comma,
`less, `period, `greater, `slash, `question, `alt, `space,
`capslock, `FX (`X is a digit), and `delete.
下面給出了它們和鍵盤上的鍵的對應關係:
`exclam=`!
`at=`@
`numbersign=`#
`dollar=`$
`percent=`%
`caret=`^
`ampersand=`&
`asterisk=`*
`parenleft=`(
`parenright=`)
`minus=`-
`underscore=`_
`equal=`=
`plus=`+
`bracketleft=`[
`braceleft=`{
`bracketright=`]
`braceright=`}
`semicolon=`;
`colon=`:
`quote=`
`doublequote=`"
`backquote=``
`tilde=`~
`backslash=`
`bar=`|
`comma=`,
`less=`
`slash=`/
`question=`?
`space=`
unhide partition
僅僅對DOS/WIN分區有效,清除分區表中的「隱藏」位。
僅用於命令行方式或者菜單項內部的命令
blocklist file
顯示文件file在所佔磁碟塊的列表。
boot
僅在命令行模式下需要,當參數都設定完成後,用這條指令啟動操作系統
cat file
顯示文件file的內容,可以用來得到某個操作系統的根文件系統所在的分區,如下:
grub> cat /etc/fstab
chainloader [`--force] file
把file裝入內存進行chainload,除了能夠通過文件系統得到文件外,這條指令也可以用磁碟塊列表的方式讀入磁碟中的數據塊,如+1`指定從當前分區讀出第一個扇區進行引導。如果指定了`--force`參數,則無論文件是否有合法的簽名都強迫讀入,當你在引導SCO UnixWare時需要用這個參數。
cmp file1 file2
比較文件的內容,如果文件大小不一致,則輸出兩個文件的大小,如下:
Differ in size: 0x1234 [foo], 0x4321 [bar]
如果兩個文件的大小一致但是在某個位置上的位元組不同,則列印出不同的位元組和他們的位移:
Differ at the offset 777: 0xbe [foo], 0xef [bar]
如果兩個文件完全一致,則什麼都不輸出。
configfile FILE
將FILE作為配置文件替代menu.lst。
embed stage1_5 device
如果device是一個磁碟設備的話,將Stage1_5裝入緊靠MBR的扇區內。如果device是一個FFS文件系統分區的話,則將Stage1_5裝入此分區的第一扇區。如果裝入成功的話,輸出寫入的扇區數。
displaymem
顯示出系統所有內存的地址空間分布圖。
find filename
在所有的分區中尋找指定的文件filename,輸出所有包含這個文件的分區名。參數filename應該給出絕對路徑。
fstest
啟動文件系統測試模式。打開這個模式后,每當有讀設備請求時,輸出向底層常式讀請求的參數和所有讀出的數據。輸出格式如下:
先是由高層程序發出的分區內的讀請求,輸出:之後由底層程序發出的扇區讀請求,輸出:[磁碟絕對扇區偏移] 可以用install或者testload命令關閉文件系統測試模式。
geometry drive [cylinder head sector [total_sector]]
輸出驅動器drive的信息。
help [pattern ...]
在線命令幫助,列出符合pattern的命令列表,如果不給出參數,則將顯示所有的命令列表。
impsprobe
檢測Intel多處理器,啟動並配置找到的所有CPU。
initrd file ...
為Linux格式的啟動映象裝載初始化的ramdisk,並且在內存中的Linux setup area中設置適當的參數。
install stage1_file [`d] dest_dev stage2_file [addr] [`p] [config_file] [real_config_file]
這是用來完全安裝GRUB啟動塊的命令,一般很少用到。
ioprobe drive
探測驅動器drive所使用的I/O口,這條命令將會列出所有dirve使用的I/O口。
kernel file ...
裝載內核映象文件(如符合Multiboot的a.out,ELF,Linux zImage或bzImage,FreeBSD a.out,NetBSD
a.out等等)。文件名file后可跟內核啟動時所需要的參數。如果使用了這條指令所有以前裝載的模塊都要重新裝載。
makeactive
使當前的分區成為活躍分區,這條指令的對象只能是PC上的主分區,不能是擴展分區。
map to_drive from_drive
映射驅動器from_drive到to_drive。這條指令當你在chainload一些操作系統的時候可能是必須的,這些操作系統如果不是在第一個硬碟上可能不能正常啟動,所以需要進行映射。如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
這個就用來對付雙硬碟最過癮!!!哈哈
module file ...
對於符合Multiboot規範的操作系統可以用這條指令來裝載模塊文件file,file后可以跟這個module所需要的參數。注意,必須先裝載內核,再裝載模塊,否則裝載的模塊無效。
modulenounzip file ...
同module命令幾乎一樣,唯一的區別是不對module文件進行自動解壓。
pause message ...
輸出字元串message,等待用戶按任意鍵繼續。你可以用(ASCII碼007)使PC喇叭發聲提醒用戶注意。
quit
退出GRUB shell,GRUB shell類似於啟動時的命令行模式,只是它是在用戶啟動系統后執行/sbin/grub才
進入,兩者差別不大。
read addr
從內存的地址addr處讀出32位的值並以十六進位顯示出來。
root device [hdbias]
將當前根設備設為device,並且試圖mount這個根設備得到分區大小。hdbias參數是用來告訴BSD內核在當前分區所在磁碟的前面還有多少個BIOS磁碟編號。例如,系統有一個IDE硬碟和一個SCSI硬碟,而你的BSD安裝在IDE硬碟上,此時,你就需要指定hdbias參數為1。
rootnoverify device [hdbias]
和root類似,但是不mount該設備。這個命令用在當GRUB不能識別某個硬碟文件系統,但是仍然必須指定根設備。
setup install_device [image_device]
安裝GRUB引導在install_device上。這條指令實際上調用的是更加靈活但是複雜的install指令。如果
image_device也指定了的話,則將在image_device中尋找GRUB的文件映象,否則在當前根設備中查找。
testload file
這條指令是用來測試文件系統代碼的,它以不同的方式讀取文件file的內容,並將得到的結果進行比較,如果正確的話,輸出的`i=X,filepos=Y`中的X,Y的值應該相等,否則就說明有錯誤。通常這條指令正確執行的話,之後我們就可以正確無誤地裝載內核。
uppermem kbytes
強迫GRBU認為高端內存只有kbytes千位元組的內存,GRUB自動探測到的結果將變得無效。這條指令很少使用,可能只在一些古老的機器上才有必要。通常GRUB都能夠正確地得到系統的內存數量。
其中大部分命令我們不常用,建議在試驗的時候,做好相應的準備和備份工作

[火星人 ] grub多重引導管理器已經有628次圍觀

http://coctec.com/docs/linux/show-post-155505.html