grub三步通
##################
# GRUB的優點???? #
##################
GRUB 是引導裝入器(boot loader) -- 它負責裝入內核并引導 Linux 系統。GRUB 還可以引導其它操作系統,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。盡管引導操作系統看上去是件平凡且瑣碎的任務,但它實際上很重要。如果引導裝入器不能很好地完成工作或者不具有彈性,那么就可能鎖住系統,而無法引導計算機。另外,好的引導裝入器可以給您靈活性,讓您可以在計算機上安裝多個操作系統,而不必處理不必要的麻煩。
GRUB 是一個很棒的boot loader。它有許多功能,可以使引導過程變得非常可靠。例如,它可以直接從 FAT、minix、FFS、ext2 或 ReiserFS 分區讀取 Linux 內核。這就意味著無論怎樣它總能找到內核。另外,GRUB 有一個特殊的交互式控制臺方式,可以讓您手工裝入內核并選擇引導分區。這個功能是無價的:假設 GRUB 菜單配置不正確,但仍可以引導系統。哦,對了 -- GRUB 還有一個彩色引導菜單。
更令人驚訝的是,這是一個自由軟件!!!
?
##################
# GRUB菜單?????? #
##################
先來看一個例子,這是位于/boot/grub/目錄下的menu.lst文件。
此文件將在開機是產生一個菜單,包含有Debian linux,Windows2000,RedHat linux和 Mandrake linux,共四個選擇項。我一共分了8個區,一個fat16(0x6),一個ntfs(0x7),三個ext2fs分區(0x83),一個swap分區(0x82)。ntfs用來裝win2000,三個ext2fs裝了三個linux,c盤fat16分區沒有裝任何東西。
#例子由此開始
#############################
#?????????????????????????? #
# 一個GRUB configure 的例子 #
#?????????????????????????? #
#############################
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)
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的交互性?????? #
######################
?
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,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 的一部分。例如,可以使用 GRUB 來執行網絡引導,引導 BSD 文件系統,或更多操作。另外,GRUB 有許多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,請閱讀 GRUB 出色的 GNU 文檔。只要在 bash 提示中輸入 "info grub" 就可以閱讀該文檔。
有用的一些信息:xosl是一個支持鼠標的圖形界面boot loader,可以于system command和boot manager相比,
網址是www.xosl.org。
GRUB的下載:ftp://alpha.gnu.org/gnu/grub/
再補充:三種硬盤安裝方法的 grub
命令集(采用任何一種都可以的,隨便你喜歡哪個方法):
1。用 hd.img 安裝,這需要用到 grub for dos 的軟盤仿真功能:
grub> map (hd0,0)/hd.img (fd0)
grub> chainloader (hd0,0)/hd.img
grub> rootnoverify (fd0)
grub> boot
2。用 vmlinuz 和 hd.rdz 兩個文件來安裝(無需使用 grub for dos,用 GNU 原來的
GRUB 都管用):
grub> kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3
automatic=method:disk acpi=ht vga=788
grub> initrd (hd0,0)/hd.rdz
grub> boot
注意 kernel 一行很長,不要截斷成兩行。還要注意上述命令都假定這些文件位于
(hd0,0) 的根目錄,如果你的不同,當然要作適當的修改
來源:LinuxEden
3.首先下載grub for dos(http://grub.linuxeden.com),其最新版本支持ntfs分區,而且可以利用ntloader調用,比如winxp的引導菜單.
提取grldr到c:/下;
修改boot.ini,加入 C:\GRLDR=Boot Grub (方法:在桌面我的電腦點右鍵--屬性--高級--啟動和故障恢復-設置--編輯,不用到c盤去找了,麻煩);
在c盤根目錄下建立/boot/grub文件夾,建立menu.lst文本文件;
把ML的iso放在vfat分區,提取mbvmlinuz,mbinitrd-hd.gz與iso都放在根目錄下 ;
修改menu.lst,加入
代碼:
?title Magci linux1.2-setup
????? kernel (hd0,6)/mbvmlinuz ro root=/dev/ram0? ramdisk_size=32000 vga=788
????? initrd (hd0,6)/mbinitrd-hd.gz
(hd0,6)為我的放置iso和mbvmlinuz,mbinitrd-hd.gz的分區,修改成你的
注意kernel后有個空格 ;
重啟,選擇boot grub,選擇Magic linux1.2-setup ;
后面的我就不說了,按照提示一步一步來就行了;
當然你可以在安裝成功后,修改menu.lst,加入你的ML啟動項,你就可以用grub
for dos 啟動你的ML。
################## ################## ################## ################## ################## ##################
我的無光驅軟驅,直接由iso文件安裝mandriva的方法,(其它linux也同理)。
首先,需要把第一張cd中的install/alt1目錄下的vmlinuz 和 all.rdz 解壓出來。說明:這層目錄下面還有alt0和alt2,它們安裝了
不同的內核,詳情可見install下面的說明文件,(文件名忘記了)。
其次,這種方法利用iso安裝的原理基本上就是利用grub引導安裝映象,那么我介紹我所知的三種方法:
A,已經擁有了grub引導,比如原有的linux仍存在,而且是由grub引導系統的。(這種情況比較簡單)。
1,只要確定好上一步解壓出來的vmlinuz 和 all.rdz在硬盤上的位置,比如第一塊硬盤的第一個分區是/dev/hda1,那么改分區的位置在grub
中就表示為(hd0, 0);
2,然后就可以利用原來的grub引導系統,當出現grub引導菜單的時候,根據下面的提示,按 "c",會出現命令行式的grub,然后按照一下格式
輸入:(以第一步中的位置為例)
kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3 automatic=method:disk acpi=ht vga=788? #注釋,然后輸入回車
initrd (hd0,0)/all.rdz??? #注釋,然后輸入回車
boot????????????????????? #注釋,然后輸入回車??????????????????????????????????????????????????????????????????????????
就可以看到引導安裝開始了,方法A 結束。
B,如果沒有grub,但是有裝好的windows(以winxp為例),也可以利用windows的c:盤下的boot.ini 結合 grub for dos引導安裝。這里根據直接用winxp 引導 grub for dos,或者進入實dos再用grub for dos,可以分為一下兩種情況。
B1, winxp 的boot.ini + grub_for_dos中的grldr;
在新版的grub_for_dos中,出現了一個文件grldr,它可以直接由winxp引導,實現引導grub,這樣就不用安裝grub了。方法如下:
1, 把grub_for_dos中的grldr 和 boot目錄拷貝到c盤,就是和boot.ini所在的分區的根目錄下;
2,編輯boot.ini,在最后加上一行,
C:\GRLDR="grub for dos"
3, 編輯boot/grub/menu.lst,如下:
title mandriva install
kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3 automatic=method:disk acpi=ht vga=788
initrd (hd0,0)/all.rdz
注意,為了方便,也可以直接把menu.lst放在grldr所在的分區根目錄。
4, 重啟,然后在winxp的引導菜單選grub for dos就可以引導安裝了。
B2, winxp的boot.ini + vfloppy + grub_for_dos
1,這種方法是首先在winxp中安裝vfloppy,方法就不介紹了,這樣在winxp引導菜單中選vfloppy對應的項,就可以進入實dos中了;
2,在dos中運行grub_for_dos中的grub.exe,可以直接指定由B1中編輯好的menu.lst,這樣比較方便:
grub --config-file=(hd0,0)/boot/grub/menu.lst ,運行就可以引導安裝了。
對于方法A和B,當引導安裝開始后,只要指定系統安裝所需的iso文件所需的位置就可以了。
以上方法所需要的軟件,可以在這里下載,http://lsec.cc.ac.cn/~peace/service/software/win4linux.rar ,當然也可以在網上下載更新
的版本。
再補充 不用grub,直接用u盤引導從硬盤安裝linux的方法。
1),這里利用mandriva提供的all.img,一般來說,解壓cd1,在cd1/install/image/all.img;
2),插上U盤,搞清楚U盤的設備號,用mount命令即可,我這里是/dev/sda1;
3),用root,執行 dd if=path/all.img of=/dev/sda1即可;
4),用u盤引導,進入圖形化安裝過程,輸入iso文件所在的位置即可。