?? grub學習筆記.txt
字號:
4.重新啟動,看一下效果。
我們在試試啟動安裝在/dev/hdc1或者(hd1,0)的widows。啟動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文件:它用于建立啟動多操作系統(tǒng)時的菜單。建立menu.conf并不難。它使用簡單的英語,就象你在這一節(jié)看到的那樣。
所有的菜單項目都以沒有逗號分隔的“title TITLENAME”開頭。你可以隨意設置
TITLENAME。
設置Linux啟動菜單步驟如下:
1.設置標題
2.設置根分區(qū)
3.設置內(nèi)核的相應參數(shù)
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也行。不過經(jīng)過實踐來看。有時引導win時,系統(tǒng)安裝好后,是rootnoverify (hdX.Y)這樣形式的,這樣會出現(xiàn)windows起不來,出現(xiàn)什么windows什么文件損壞的情況。這時,我們就要把在grub中,引導windows的那段中的rootnoverify改為root
root英文的意思就是根的意思,在這里是讓linux知道自己所處的位置,也就是我們所安裝linux的/根分區(qū)所在的位置 。
----
如果你安裝了兩個版本的Windows—一個是你自己用的,另一個給你的家人用的—這樣第二個就無法安裝,因為有提示說Windows已經(jīng)安裝了。
有一種簡單的方法可以安裝兩個版本的Windows,即在啟動時隱藏一個分區(qū)而使用另一個。你甚至可以為你的分區(qū)設置密碼保護,這樣可以避免別人錯誤的加載你的分區(qū)。下面介紹如何完成兩個Windows的安裝,hda1和hda2 或者 (hd0,0) 和(hd0,1),用到的命令有l(wèi)ock, password, hide 和 unhide。
建立windows 項目My Entry:
title My Entry
lock
unhide (hd0,0)
hide (hd0,1)
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
#----
為了更好的使用lock命令,你需要在配置文件開頭使用password命令。Password命令的語法如下:password secret(“secret”就是密碼)。任何時候你都可以通過按p鍵兒輸入密碼。
建立Windows 項目Family Entry
title Family Entry
unhide (hd0,1)
hide (hd0,0)
rootnoverify (hd0,1)
makeactive
chainloader +1
boot
任何人都可以啟動這個項目,而無須輸入密碼。
這有一個使用password命令的有趣的竅門。為了在缺省菜單列表或配置文件中隱藏某些項目,你可以使用下面的命令加載一個定制的列表:
password secret
在這個命令中,“secret”是密碼,而/boot/grub/secret-list.conf是密碼文件。這樣做之前,你要先進入到根目錄或者給出全路徑名。例如:
password secret (hd0,4)/boot/grub/secret-list.conf
還有一個更重要的命令是“map”。當你有兩塊硬盤,一個無法從第二塊硬盤啟動的操作系統(tǒng),例如Windows,就可以使用map命令。例如,你能夠將hd0映射為hd1,將hd1映射為hd0。換句話說,你可以虛擬的交換兩個硬盤而啟動所需要的操作系統(tǒng) 。命令形式如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
啟動FreeBSD:
title FreeBSD 4.0
root (hd0,4,a)
kernel /boot/loader
boot
#----
這里我們調(diào)用了FreeBSD的啟動管理器。Root (hd0,4,a)由四個參數(shù),是因為
FreeBSD對一個單獨分區(qū)進行了虛擬分割。我們稱根分區(qū)為“a”。如果FreeBSD占
據(jù)了整個第二塊硬盤,這里就應該是root (hd0,a)。這樣,就不是調(diào)用內(nèi)核而是調(diào)用FreeBSD的啟動管理器,它要比調(diào)用內(nèi)核更易使用。
(注意:推薦在使用OpenBSD和GNU/Hurd之前,要先試一下鏈式加載。)
現(xiàn)在你已經(jīng)完成了基本的GRUB編譯、安裝和配置。你對GRUB了解的越多,就越會發(fā)現(xiàn)GRUB是一種控制啟動的易用和高效的方法。
各種GRUB命令:
default xx
表明xx是缺省的啟動項目
timeout yy
表明在yy秒后缺省啟動項目將啟動
fallback zz
在第一個啟動項目失敗后,過了timeout時間后,就將啟動zz項目。
color
這個命令將生成彩色菜單。它的語法是:color normal current_selection。這兩個域都可以有兩個值,形如foreground/background。例如:
color green/black or light-gray/blue
你也可以使用相關的數(shù)字。
記住:所有的值都是從0開始,所以0是第一個
3.3 GRUB啟動盤
要制作引導盤,需執(zhí)行一些簡單的步驟。首先,在新的軟盤上創(chuàng)建 ext2 文件系統(tǒng)。然后,將其安裝,并將一些 GRUB 文件復制到該文件系統(tǒng),最后運行 grub 程序,它將負責設置軟盤的引導扇區(qū)。
將一張空盤插入 1.44MB 軟驅,輸入:
# mke2fs /dev/fd0
創(chuàng)建了 ext2 文件系統(tǒng)后,需要安裝該文件系統(tǒng):
# mount /dev/fd0 /mnt/floppy
現(xiàn)在,需要創(chuàng)建一些目錄,并將一些關鍵文件(原先安裝 GRUB 時已安裝了這些文件)復制到軟盤:
# mkdir /mnt/floppy/boot
# mkdir /mnt/floppy/boot/grub
# cp /boot/grub/stage1 /mnt/floppy/boot/grub
# cp /boot/grub/stage2 /mnt/floppy/boot/grub
再有一個步驟,就能得到可用的引導盤。
在linux bash中,從 root 用戶運行“grub”,該程序非常有趣并值得注意,因為它實際上是GRUB 引導裝入器的半功能性版本。盡管 Linux 已經(jīng)啟動并正在運行,您仍可以運行 GRUB 并執(zhí)行某些任務,而且其界面與使用 GRUB 引導盤或將 GRUB 安裝到硬盤 MBR 時看到的界面(即GRUB控制臺)完全相同。
在 grub> 提示符處,輸入:
grub> root (fd0)
grub> setup (fd0)
grub> quit
現(xiàn)在,引導盤完成了。
如果要把GRUB裝到硬盤上,也很容易。這個過程幾乎與引導盤安裝過程一樣。首先,需要決定哪個硬盤分區(qū)將成為 root GRUB 分區(qū)。在這個分區(qū)上,創(chuàng)建 /boot/grub 目錄,并將 stage1 和 stage2 文件復制到該目錄中,可以通過重新引導系統(tǒng)并使用引導盤,或者使用駐留版本的 GRUB 來執(zhí)行后一步操作。在這兩種情況下,啟動 GRUB,并用 root 命令指定 root 分區(qū)。例如,如果將 stage1 和 stage2 文件復制到 hda5 的 /boot/grub 目錄中,應輸入 root (hd0,4)。接著,決定在哪里安裝 GRUB -- 在硬盤的 MBR,或者如果與 GRUB 一起使用另一個“主”引導裝入器,則安裝在特定分區(qū)的引導記錄中。如果安裝到 MBR,則可以指定整個磁盤而不必指定分區(qū),如下(對于 hda):
grub> setup (hd0)
如果要將 GRUB 安裝到 /dev/hda5 的引導記錄中,應輸入:
grub> setup (hd0,4)
現(xiàn)在,已安裝 GRUB。引導系統(tǒng)時,應該立即以 GRUB 的控制臺方式結束(如果安裝到 MBR)。現(xiàn)在,應創(chuàng)建引導菜單,這樣就不必在每次引導系統(tǒng)時都輸入那些命令。
從軟盤啟動grub
制作啟動盤后可以用軟盤啟動引導硬盤上的操作系統(tǒng), 插入制作好的啟動軟盤,進入BIOS設定軟盤啟動。軟盤啟動成功后就會進入grub的命令行模式
grub>
要啟動一個操作系統(tǒng),首先指定引導哪個分區(qū)上的系統(tǒng),例如要引導指第一個硬盤上的第一個分區(qū)的操作系統(tǒng),先鍵入
grub>root (hd0,0)
接著如果要啟動的是Windows系統(tǒng),鍵入
grub>chainloader (hd0,0)+1
注意(hd0,0)要隨著硬盤和分區(qū)的不同而改變數(shù)字。
如果要引導Linux或其他系統(tǒng),應鍵入
grub>kernel (hd0,0)/boot/vmlinuz root=/dev/hda1
注意hda1參數(shù)也要隨著硬盤和分區(qū)的不同而改變,如從第二個硬盤的第一個分區(qū)引導則用hdb1。
最后敲入boot就可以啟動系統(tǒng)了。
在任何時候不能確定命令或者命令的參數(shù)都可以按Tab獲得相關的幫助。用上下鍵可以獲得命令的歷史記錄。其實這些命令就是menu.lst的啟動描述,您也可以根據(jù)那些描述來自己鍵入啟動命令,最后敲入boot就可以引導系統(tǒng)了。
4 GRUB的交互性
GRUB 最好的優(yōu)點之一就是其強健的設計 -- 在不斷使用它時請別忘了這點。如果更新內(nèi)核或更改它在磁盤上的位置,不必重新安裝 GRUB。事實上,如有必要,只要更新 menu.lst 文件即可,一切將保持正常。
只有少數(shù)情況下,才需要將 GRUB 引導裝入器重新安裝到引導記錄。首先,如果更改 GRUB root 分區(qū)的分區(qū)類型(例如,從 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 控制臺。現(xiàn)在,再研究命令:
將通過GRUB 控制臺繞過lilo來啟動RedHat linux,
grub> root (h
現(xiàn)在,按一次 Tab 鍵。如果系統(tǒng)中有多個硬盤,GRUB 將顯示可能完成的列表,從 hd0 開始。如果只有一個硬盤,GRUB 將插入 hd0,。如果有多個硬盤,繼續(xù)進行,在 (hd2) 中輸入名稱并在名稱后緊跟著輸入逗號,但不要按 Enter 鍵。部分完成的 root 命令看起來如下:
grub> root (hd0,
現(xiàn)在,繼續(xù)操作,再按一次 Tab 鍵。GRUB 將顯示特定硬盤上所有分區(qū)的列表,以及它們的文件系統(tǒng)類型。在我的系統(tǒng)中,按 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 的交互式硬盤和分區(qū)名稱實現(xiàn)功能非常有條理。這些,只需要好好理解 GRUB 新奇的硬盤和分區(qū)命名語法,然后就可以繼續(xù)操作了
grub> root (hd0,8)
現(xiàn)在已安裝了 root 文件系統(tǒng),到裝入內(nèi)核的時候了
grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro
[Linux-bzImage, setup=0x1200, size=0xe1a30]
您已經(jīng)安裝了 root 文件系統(tǒng)并裝入了內(nèi)核。現(xiàn)在,可以引導了。只要輸入 boot,Linux 引導過程就將開始。是不是很cool啊,GRUB的menu.lst更像一個linux下的腳本程序。
5 常見grub除錯方法的思路
首先進去Linux的rescue模式!
用軟盤或光盤啟動,然后在啟動的提示符輸入:linux rescue
按照提示進入一個Shell狀態(tài),你可以到/mnt/下面看到一個sysimage這么目錄,進去以后,就是你安裝linux的/分區(qū).
使用命令將根分區(qū)變?yōu)楫斍澳夸浀母謪^(qū):chroot /mnt/sysimage
然后轉到/sbin/這個目錄中.
使用fdisk -l 顯示當前分區(qū)情況,然后使用#grub-install /dev/hdx(x為你使用的是那塊硬盤安裝的,一般情況下是hda)
使用exit推出chroot,再使用exit退出linux rescue模式,系統(tǒng)將重新啟動!取出光盤,應該可以看到grub安裝好了.
在具體的環(huán)境中,編輯/boot/grub/grub.conf文件和menu.lst文件.
我想請教一下,要修改Mandrake 9下的GRUB背景,具體做法是怎樣?
文件/boot/grub/splash.xpm.gz 就是GRUB啟動后的背景圖象。
gzip -d splash.xpm.gz
然后再
more splash.xpm
/* XPM */
static char * splash_xpm[] = {
640 480 15 1,
c None,
發(fā)現(xiàn)了什么?
我是從中知道了,這個圖象是640*480象素的。15,1,不太明白什么意思但大概和色位色深有關系(專業(yè)術語不太懂)。
剩下的事,就是把自已喜歡的圖片做成的640*480的,然后再用GIMP修改一下色深,好像是14還是16 ,我記不太清了,自己試一下吧。
最后將圖片保存成*.xpm格式,而且要保證當用more查看該圖片時,得到的信息為“640 480 15 1(記得千成不能弄錯了,因為錯了的話,有可能會使GRUB垮掉而不能啟動系統(tǒng)哦!)
最后將制作成的圖片改名為splash.xpm,放在/boot/grub文件夾下(不用管splash.xpm.gz)
怎么樣,是不是覺得很棒呢!
您好!謝謝您的回復,但是你提供的方法在Redhat中可行,但在Mandrake下是行不通的,Mandrake下的GRUB好象已被編譯成不接受splash。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -