timeout 10
default 2
# --> Debian Linux <--
title Debian linux
root (hd0,2)
kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro
initrd /boot/initrd-2.2.18.gz
# --> Debian END <--
# --> Windows 菜單選項 <--
title Windows2000
root (hd0,0)
LILO
A. 從主引導記錄中移走LILO並重存原先的windows MBR
1. c:> fdisk /mbr
2. #/sbin/lilo -u /dev/hda
3. #dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
4. #cat /boot/boot.0300 > /dev/hda
注意:只有你原先安裝windows 95後再安裝Linux時,/boot/boot.0300才是你原先的wi
ndows 95 MBR。
B. 重存LILO到MBR
1. 用安裝軟盤或光盤啟動到boot:
boot: vmlinuz root=/dev/hdXY (如: hda1 )
啟動完成後運行 #/sbin/lilo
2. 用兩張軟盤啟動後:
#mount -t ext2 /dev/hda1 /mnt
#ln -s /mnt/boot boot
#ln -s /mnt/etc/lilo.conf /etc/lilo.conf
#/mnt/sbin/lilo
C. 拷貝LILO到軟盤
1. /sbin/lilo -b /dev/fd0
2.用Redhat 安裝盤引導到 boot:
boot: vmlinuz root=/dev/hdXY (hdXY 為你的根分區)
update /etc/lilo.conf
root=/dev/fd0
boot=/dev/fd0
再運行:#/sbin/lilo -v
D. 制作一張Redhat Linux 引導盤
#mkbootdisk --device /dev/fd0 2.0.36-3
E. 拷貝內核至軟盤,讓軟盤單獨引導Linux並掛上硬盤上的根文件系統。
#fdformat /dev/fd0H1440
#dd if=/boot/vmlinuz of=/dev/fd0
#rdev /dev/fd0 /dev/hda1
--
chainloader +1
# --> Winddows 結束 <--
# --> RedHat linux 菜單選項 <--
title RedHat linux
root (hd0,8)
chainloader +1 # 在硬盤主引導分區裝了lilo,所以也用了chainloader。
# --> RedHat linux 結束 <--
# --> Mandrake linux 菜單選項 <--
title Mandrake linux
root (hd0,5)
kernel /boot/vmlinuz-2.4.3-20mdk root=/dev/hda6 ro
initrd /boot/initrd-2.4.3-20mdk.img
# --> Mandrake linux 結束 <--
#例子到此結束
以符號井"#"開頭的行表示被注釋掉,沒有任何意義。
timeout表示默認等待的時間,這兒是10秒鐘。超過10秒,用戶還沒有作出選擇的話,系統將自動選擇默認的操作系統。
默認的操作系統就是由default控制的。default後加一個數字n,表明是第n+1個。需要注意的是,GRUB中,計數是從0開始的,第一個硬盤是hd0,第一個軟驅是fd0,等等。所以,default 2 表示默認的操作系統在這兒是 Redhat linux。
接下來,正如你所想象的,title表示的是“Debian linux”菜單項。root (hd0,2)表示第一個硬盤,第三個分區。這兒的root 於linux的root分區及其不同,此root非彼root也!
在 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.2.18 root=/dev/hda3 ro說明/boot/vmlinuz-2.2.18 就是要載入的內核。後面的都是傳遞給內核的參數。root=/dev/hda3就是linux的硬盤分區表示法,ro是以readonly的意思。
initrd用來初始的linux image,並設置相應的參數。
是不是感覺很簡單啊!再來看一看windows的定義段吧。
這裡,我添加了一項來引導 Windows2000。要完成此操作,GRUB 使用了“鏈式裝入器”(chainloader)。鏈式裝入器從分區 (hd0,0) 的引導記錄中裝入 win2000 自己的引導裝入器,然後引導它。這就是這種技術叫做鏈式裝入的原因 -- 它創建了一個從引導裝入器到另一個的鏈。這種鏈式裝入技術可以用於引導任何版本的 DOS 或 Windows。
我的RedHat linux在硬盤主引導分區裝了lilo,所以也用了chainloader。
GRUB的配置文件要簡單就這麼簡單,如果你要更個性化一點,試一試把“color light-gray/blue ”加在default語句的下面,下一次啟動GRUB時,看看有什麼變化,再試一試“color light-blue/red",驚喜嗎? 有趣吧!
# 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,8)
現在已安裝了 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下的腳本程序。
#####################
# 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 /boot/grub/stage1 /mnt/floppy/boot/grub
# cp /boot/grub/stage2 /mnt/floppy/boot/grub
再有一個步驟,就能得到可用的引導盤。
在linux bash中,從 root 用戶運行“grub”,該程序非常有趣並值得注意,因為它實際上是 GRUB 引導裝入器的半功能性版本。盡管 Linux 已經啟動並正在運行,您仍可以運行 GRUB 並執行某些任務,而且其界面與使用 GRUB 引導盤或將 GRUB 安裝到硬盤 MBR 時看到的界面(即GRUB控制台)完全相同。
在 grub> 提示符處,輸入:
grub> root (fd0)
grub> setup (fd0)
grub> quit
現在,引導盤完成了。
如果要把GRUB裝到硬盤上,也很容易。這個過程幾乎與引導盤安裝過程一樣。首先,需要決定哪個硬盤分區將成為 root GRUB 分區。在這個分區上,創建 /boot/grub 目錄,並將 stage1 和 stage2 文件復制到該目錄中,可以通過重新引導系統並使用引導盤,或者使用駐留版本的 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)。現在,應創建引導菜單,這樣就不必在每次引導系統時都輸入那些命令
grub> setup (hd0,4)
現在,已安裝 GRUB。引導系統時,應該立即以 GRUB 的控制台方式結束(如果安裝到 MBR)。現在,應創建引導菜單,這樣就不必在每次引導系統時都輸入那些命令