前言: 為何寫此初級教程?
假如你是第一次聽說grub,你可能說我不需要grub。那么,你是否用過“一鍵ghost”,或者“矮人DOS工具箱”?如果你用過的話,那么你實際上已經(jīng)在用grub了。包括本人的“GGhost一鍵恢復(fù)”在內(nèi)的大多數(shù)windows下安裝的一鍵恢復(fù)類工具及其它dos類維護工具合集,都是基于grub的。
grub4dos相關(guān)的資料互聯(lián)網(wǎng)上并不少,grub4dos軟件包里也有說明文件,可是絕大多數(shù)資料并不適合剛接觸grub的人。初學(xué)者下載了grub4dos軟件包后,即使大概看了readme.txt文件后,也很可能仍然是一團霧水,不知從何處入手。出現(xiàn)這種狀況的一個主要原因是,此軟件是作者利用業(yè)余時間開發(fā)的,開發(fā)者在有限的時間里集中精力于排除軟件bug,從而無過多剩余精力撰寫文檔。[注:bean的中文文檔的發(fā)布,已使文檔方面欠缺的局面得以根本改觀。]
其實,初步使用這個軟件并不難,可以說非常簡單。下面的內(nèi)容參考了有關(guān)資料,并結(jié)合自己的使用經(jīng)驗,供初學(xué)者參考,希望能對你入門grub有所幫助。我自身也是接觸grub不久,對grub的了解還很膚淺,錯誤之處,在所難免,還望不吝指出。
致謝
本文的完成,參考、引用了眾多的資料,不少已找不到原始出處。初稿完成后,網(wǎng)友們提出了不少意見和建議,也得到了軟件開發(fā)者的支持和鼓勵。在此一并表示感謝。
lianjiang 2007.03 初稿
2009.04 最后修改
目錄
1 grub4dos初級教程-入門篇
1.1 grub簡介
1.2 如何獲得grub4dos最新版
1.3 如何安裝grub4dos
1.3.1 通過Windows NT的啟動菜單進入grub4dos
1.3.2 通過DOS啟動grub
1.3.3 通過mbr啟動grub
1.3.4 通過Windows VISTA的啟動菜單進入grub4dos
1.4 如何使用grub4dos
1.5 結(jié)言
2 grub4dos初級教程-應(yīng)用篇
2.1 硬盤上的應(yīng)用
2.1.1 加載軟盤鏡像
2.1.2 啟動WinPE
2.1.3 啟動系統(tǒng)
2.1.4 引導(dǎo)光盤鏡像(ISO仿真)
2.2 光盤上的應(yīng)用
2.2.1 grub引導(dǎo)的可啟動光盤
2.2.2 BCDW引導(dǎo)GRUB的可啟動光盤
2.3 軟盤上的應(yīng)用
2.3.1 通過DOS啟動grub的軟盤應(yīng)用
2.3.2 引導(dǎo)扇區(qū)安裝了GRLDR引導(dǎo)記錄的軟盤應(yīng)用
2.4 優(yōu)盤上的應(yīng)用
2.5 結(jié)言
3 grub4dos初級教程-進階篇
3.1 設(shè)置密碼
3.2 菜單內(nèi)置
3.3a 使用個性化grub4dos文件名 (grubinst)
3.3b 用批處理自動給grldr改名 (適用于最新版grldr)NEW!
3.4 安裝Windows XPE到邏輯分區(qū)
3.5 利用savedefault命令傳遞參數(shù)的方法與應(yīng)用
3.6 利用dd命令傳遞參數(shù)的方法與應(yīng)用 NEW!
4 附錄
grub legacy資料
4.01 Grub 命令索引
4.02 Grub 簡體中文化版使用方法
4.03 GRUB安裝配置使用匯總
4.04 Grub命令使用詳解
4.05 GRUB三步通
4.06 Grub相關(guān)安裝配置及使用實例匯總講析
Grub2資料
4.07 GRUB2使用簡介 by bean NEW!
4.08 GRUB2高級教程 by bean NEW!
Grub4dos資料
4.09 gfxmenu定制高級教程(新增可定制菜單) by bean NEW!
4.10 如何使用grubinst_gui by bean
Grub4dos官方文檔
4.11 Grub4dos_tutorial (英文)
4.12 Grub4dos簡介
4.13 Grub4dos安裝和啟動
4.14 Grub4dos新手指南
4.15 Grub4dos高級功能
4.16 Grub4dos命令索引
4.17 Grubinst使用介紹
4.18 Grub4dos readme (英文)
4.19 Grub4dos readme (中文) NEW!
1.1 grub簡介
GRUB 是一個遵從Multiboot(多重啟動)規(guī)范的啟動管理程序,F(xiàn)在接觸到的有3種,即GNU Grub Legacy , GNU Grub2 和 Grub for dos(grub4dos)。
GNU GRUB Legacy其實就是原來的 GNU GRUB 0.xx ,最新版是2005年發(fā)布的GNU GRUB 0.97。 目前已停止開發(fā),并改名為 GNU GRUB Legacy。
GNU GRUB2是第二代GRUB,它將取代原來的GNU GRUB(例如0.9x版),但目前還處于開發(fā)階段,尚未發(fā)布正式版。
GNU GRUB Legacy和GNU GRUB2都是 GNU 組織的項目。
GRUB for DOS(GRUB4DOS)是一個以 GNU GRUB 為基礎(chǔ)的功能強大的引導(dǎo)器。它可以在 DOS 和 LINUX下運行,也可以通過其他引導(dǎo)器來運行,還可以作為MBR運行。GRUB4DOS內(nèi)置了功能完善的 BIOS 級磁盤仿真。
下面以比較廣泛使用的GRUB4DOS為基礎(chǔ)進行說明。GNU GRUB與GRUB4DOS的不同之處,可參看相關(guān)說明文件。
1 grub4dos初級教程-入門篇
1.2 如何獲得grub4dos最新版
可從以下網(wǎng)址下載GRUB4DOS最新版及較早版本。
http://download.gna.org/grub4dos/
http://grub4dos.sourceforge.net/
http://sarovar.org/projects/grub4dos/
http://grub4dos.nufans.net/
http://grub4dos.jot.com/
http://download.gna.org/grubutil/
http://grub4dos.sourceforge.net/wiki (官方說明文檔)
http://bbs.znpc.net/forumdisplay.php?fid=4 (官方論壇)
1 grub4dos初級教程-入門篇
1.3 如何安裝grub4dos?
下載grub4dos后,解壓縮后就可以了。核心文件有下面這幾個:grldr(VISTA系統(tǒng),還需grldr.mbr)和grub.exe,及menu.lst(此為樣本,需修改)。如果你需要中文支持,就用chinese子目錄中的文件。
安裝方法常見的有下面4種。
1.3.1 通過Windows NT的啟動菜單進入grub4dos
將grldr文件復(fù)制到c:\,去掉boot.ini的只讀屬性,然后修改c:\boot.ini文件,在boot.ini的最后面加一行:
c:\grldr="Start GRUB4DOS"
并將boot.ini中的timeout值設(shè)置為大于0的數(shù)字,如:timeout=5,然后保存boot.ini,改回只讀屬性。
編輯boot.ini前,可在cmd下輸入:
attrib -s -r -h c:\boot.ini
解除boot.ini的只讀屬性,編輯完后輸入:
attrib +s +r +h c:\boot.ini
恢復(fù)boot.ini的原有屬性。
這樣,編輯完重新啟動計算機,在NT的啟動菜單就會出現(xiàn)“Start GRUB4DOS”這一項,選擇該項即可進入grub4dos的環(huán)境!緢D1】
此方法的優(yōu)點是:不需要修改MBR。
初學(xué)者使用grub一般都需要grub菜單,把準備好的menu.lst文件放到C:\下(也可放到其它分區(qū)根目錄或其它指定目錄)。menu.lst的編寫方法可參考readme.txt或者別人提供的menu.lst。在下面的“1.4 如何使用grub4dos”中將作簡單介紹。
1 grub4dos初級教程-入門篇
1.3.2 通過DOS啟動grub
將機器通過任何可能的方式(軟盤,U盤,光盤等)啟動到DOS環(huán)境(最好是純DOS環(huán)境,即不加載任何驅(qū)動程序和TSR程序的DOS環(huán)境),然后在DOS下或者AUTOEXEC.BAT中運行g(shù)rub.exe,即可進入grub4dos。
也可在DOS/Windows9x的CONFIG.SYS中使用下列任一方式啟動grub。
DEVICE=GRUB.EXE
INSTALL=GRUB.EXE
SHELL=GRUB.EXE
此方法的優(yōu)點是:不需要修改MBR;可根據(jù)需要在腳本或者其它DOS程序中啟動GRUB4DOS。
菜單文件menu.lst可保存在grub文件所在目錄或其它指定路徑。
1 grub4dos初級教程-入門篇
1.3.3 通過mbr啟動grub
通過軟件包里的bootlace.com(可運行于DOS/Win9x)安裝GRLDR引導(dǎo)記錄到硬盤或者硬盤映像文件的主引導(dǎo)記錄,或者安裝到軟盤或者軟盤映像的引導(dǎo)扇區(qū)。電腦啟動時,通過擊熱鍵(默認為空格鍵,可自定義)來啟動grub。
比如:
在DOS下安裝GRLDR代碼到主引導(dǎo)記錄:
bootlace.com 0x80
在DOS下安裝GRLDR代碼到軟盤:
bootlace.com --floppy --chs 0x00
在DOS下安裝GRLDR代碼到軟盤映像:
bootlace.com --floppy --chs floppy.img
我所使用的命令為:
bootlace --force-backup-mbr --boot-prevmbr-first --time-out=3 --hot-key=0x3920 --mbr-disable-floppy 0x80
表示安裝GRLDR代碼到MBR時,備份原MBR(--force-backup-mbr),默認啟動原MBR,即啟動原windows xp系統(tǒng)(--boot-prevmbr-first),等待時間3秒(--time-out=3),熱鍵為空格鍵(--hot-key=0x3920), 不搜索軟盤上的GRLDR(--mbr-disable-floppy)。
也就是說啟動時等待3秒,3秒內(nèi)不擊熱鍵的話,啟動windows xp;3秒內(nèi)擊熱鍵則啟動grub4dos。
bootlace的其它參數(shù)及自定義熱鍵用法可參看readme.txt文件。
裝入mbr后,再將grldr和menu.lst文件復(fù)制到某分區(qū)的根目錄(現(xiàn)在支持的文件系統(tǒng)是FAT12,FAT16, FAT32, NTFS,EXT2 or EXT3 的分區(qū)。對于Windows用戶,最好是fat分區(qū)),menu.lst也可保存到其它指定位置。
此方法的優(yōu)點是:不依賴于操作系統(tǒng);能夠自動搜索硬盤上各個分區(qū)的grldr文件。
另外,2000/xp/2003/vista環(huán)境下可用另一軟件grubinst來把GRLDR引導(dǎo)記錄安裝到硬盤的MBR。grubinst具有圖形界面和命令行兩種工作模式供選用,并附有比較詳細的使用說明,很易于使用!緟⒖锤戒 4.1 如何使用grubinst_gui】
1 grub4dos初級教程-入門篇
1.3 如何安裝grub4dos?
1.3.4 通過Windows VISTA/Window 7的啟動菜單進入grub4dos
用批處理自動把grub4dos裝入Vista啟動項(非MBR)。
把grub4dos裝入Vista啟動項,比裝入MBR相對來說要安全。
【對于vista系統(tǒng),不能通過fdisk /mbr來恢復(fù)mbr,這樣會造成vista無法啟動!
關(guān)于手動把grub4dos裝入Vista的啟動項的方法,網(wǎng)上有一些介紹。比起winxp修改Boot.ini來,操作要麻煩不少。
主要就是操作過程中要產(chǎn)生一個ID號【如:b88a2da4-0a4e-11dc-813a-00e04c75ef59】,需要手動輸入3次,實在是麻煩。
下面的批處理自動完成整個裝入操作。
說明:
1,批處理與grldr.mbr在同一目錄時,自動復(fù)制grldr.mbr文件到系統(tǒng)根目錄,否則需自行復(fù)制。
2,啟動項里添加上grub4dos項后,需把準備好的menu.lst和grldr文件復(fù)制到C:\下(也可放到其它分區(qū)根目錄)。
-------------------------------
安裝批處理
@echo off
rem by lianjiang
cls
echo.
echo 請以管理員身份運行。
echo.
pause
set gname=GRUB for DOS
set vid=
set timeout=5
bcdedit >bcdtemp.txt
type bcdtemp.txt | find "\grldr.mbr" >nul && echo. && echo BCD啟動項中已有g(shù)rub4dos的項目,無需再安裝。&& pause && goto exit
bcdedit /export "Bcd_Backup" >nul
bcdedit /create /d "%gname%" /application bootsector >vid.ini
for,/f,"tokens=2 delims={",%%i,In (vid.ini) Do (
set vida=%%i
)
for,/f,"tokens=1 delims=}",%%i,In ("%vida%") Do (
set vid={%%i}
)
echo %vid%>vid.ini
bcdedit /set %vid% device partition=%systemdrive% >nul
bcdedit /set %vid% path \grldr.mbr >nul
bcdedit /displayorder %vid% /addlast >nul
bcdedit /timeout %timeout% >nul
if exist grldr.mbr copy grldr.mbr %systemdrive%\ /y && goto exit
echo.
echo 稍后請自行把grldr.mbr拷貝到%systemdrive%\根目錄
echo.
pause
:exit
del bcdtemp.txt >nul
-------------------------------
卸載批處理
@echo off
rem by lianjiang
cls
echo.
echo 要求存在用安裝批處理安裝時自動保存的臨時文件。
echo.
echo 請以管理員身份運行。
echo.
pause
set vid=
set timeout=5
if exist Bcd_Backup bcdedit /import "Bcd_Backup" >nul&& goto 1
if not exist vid.ini (
echo.
echo 因相關(guān)文件被刪,不能自動刪除啟動項項目,只能手動刪除。
echo.
pause
goto exit
)
for,/f,"tokens=1",%%i,In (vid.ini) Do (
set vid=%%i
)
bcdedit /delete %vid% /cleanup >nul
bcdedit /timeout %timeout% >nul
:1
del vid.ini >nul
if exist %systemdrive%\grldr.mbr (
attrib -h -s -r %systemdrive%\grldr.mbr >nul
del %systemdrive%\grldr.mbr >nul
)
:exit
-------------------------------
此方法的優(yōu)點是:不需要修改MBR。
grub菜單文件的準備同“1.3.1 通過Windows NT的啟動菜單進入grub4dos”。
1 grub4dos初級教程-入門篇
1.4 如何使用grub4dos
對于多數(shù)沒有或很少接觸過linux的windows用戶來說,剛開始使用grub時離不開菜單。也就是說,使用grub前,我們要準備menu.lst文件。
下面是一個menu.lst的例子。(以#開始的行,表示注釋,不執(zhí)行)
# 默認延遲時間(秒)
timeout 30
# 第一項為默認值
default 0
# 設(shè)置圖形背景文件
splashimage (hd0,0)/boot/grub/xp2008.gz
# 設(shè)置中文支持的字體文件
fontfile (hd0,0)/boot/grub/fonts
title 使用map啟動本地硬盤上的瑞星殺毒軟盤鏡像文件
map (hd0,0)/boot/grub/rav.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title 使用memdisk啟動本地 Win98 軟盤鏡像文件
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/win98.img
title 使用memdisk啟動本地硬盤上的瑞星殺毒軟盤壓縮鏡像文件
root (hd0,0)
kernel /boot/grub/memdisk.gz c=80 h=12 s=36 floppy
initrd /boot/rav.zip
title 啟動第一主分區(qū)(hd0,0)上的操作系統(tǒng)
rootnoverify (hd0,0)
makeactive
chainloader +1
title 啟動第二主分區(qū)(hd0,1)上的操作系統(tǒng)
rootnoverify (hd0,1)
makeactive
chainloader +1
title 重啟
reboot
title 關(guān)機
halt
此菜單文件的運行效果如下圖!緢D2】
參考這個例子,我們就可以根據(jù)自己需要對菜單進行修改。
比如從網(wǎng)上下載了效率源的鏡像文件,文件名為XLY.IMG。我們只需把
title 使用memdisk啟動本地 Win98 軟盤鏡像文件
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/win98.img
改成
title 硬盤檢測修復(fù)工具 效率源 (memdisk)
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/xly.img
或者改成
title 硬盤檢測修復(fù)工具 效率源 (map)
map (hd0,0)/boot/grub/xly.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
同時把xly.img文件保存到第一主分區(qū)(一般是C:)的boot\grub目錄下。
當(dāng)然也可以保存到其它路徑。
比如xly.img文件保存到C:\boot下,則menu.lst文件相應(yīng)改為:
map (hd0,0)/boot/xly.img (fd0)
又如xly.img文件保存到D:\test下,則menu.lst文件相應(yīng)改為:
map (hd0,4)/test/xly.img (fd0)
(參看下面的幾點提示d)
從上面的例子可以看出,啟動軟盤鏡象,有兩種方式,即用memdisk或用map。
用memdisk時,img文件可壓縮;在img文件大小為非1.44MB或2.88MB標準鏡像時,需要指定CHS參數(shù)。img文件的CHS參數(shù)可用winimage獲得。
【提示:參數(shù)H, S是關(guān)鍵參數(shù),必須準確無誤;參數(shù)C設(shè)定錯了,也不影響引導(dǎo)。】
注:圖引用自“Grub 簡體中文化版使用方法”
即例子中的:
title 使用memdisk啟動本地硬盤上的瑞星殺毒軟盤壓縮鏡像文件
root (hd0,0)
kernel /boot/grub/memdisk.gz c=80 h=12 s=36 floppy
initrd /boot/rav.zip
另外,菜單文件中的文件路徑可用相對路徑(如:/boot/rav.zip)或絕對路徑(如:(hd0,0)/boot/grub/xly.img)表示。
map方式對軟盤映像大小沒有限制,但要求必須連續(xù)存放。
map --mem則無此限制,但要求有足夠的內(nèi)存(使用超大映像文件時要注意這點)。
此映像將被拷貝到一個內(nèi)存區(qū)域,映像本身可以是非連續(xù)的,甚至可以是被壓縮的。
比如:
map --mem /boot/xxx.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
官方文檔“Grub4dos高級功能”中對map和memdisk的區(qū)別進行了說明:
map是GRUB4DOS內(nèi)置的功能,而memdisk是一個外部的程序
map可以直接映射磁盤上的文件,而memdisk必須要把文件裝載到內(nèi)存里。
map可以把影像文件映射為第二只硬盤,而而memdisk只能映射為第一只硬盤。
map有自動生成MBR的功能,而memdisk沒有。因此memdisk只能使用磁盤影像,不能使用文件系統(tǒng)影像。
幾點提示:
a, 菜單文件中所用的memdisk.gz文件,不包括在grub4dos的發(fā)行包里,需自行準備?蓮腟ysLinux軟件包或從其它基于grub的工具(如本人的GGhost一鍵恢復(fù))中獲得。
b, 菜單中所用的其它文件如xp2008.gz(背景文件)、fonts(中文字體文件)及各種鏡像文件等,均需拷貝到文件中指定路徑。 fontfile命令不可單獨使用,需與splashimage一起使用。
c, 菜單文件中的命令全部使用小寫。
d, 初學(xué)者使用絕對路徑時要注意GRUB對設(shè)備的命名方法。系統(tǒng)的第一個硬盤驅(qū)動器表示成(hd0),其上的第一個分區(qū)表示為(hd0,0),也就是說對于硬盤,采用(hdx,y)的形式來表示,x、y都是從0開始計數(shù)的,x表示硬盤號,y表示分區(qū)號。
由于主分區(qū)只能有四個,所以第一硬盤的四個主分區(qū)分別用(hd0,0)~(hd0,3)來表示;邏輯分區(qū)則從(hd0,4)開始算,即第一邏輯分區(qū)用(hd0,4),第二邏輯分區(qū)用(hd0,5)來表示,依次類推。
一般機子的硬盤都是一個主分區(qū),其余是邏輯分區(qū)。因此C盤用(hd0,0),D盤用(hd0,4)來表示。 光盤用(cd)表示,第一軟驅(qū)用(fd0)表示。
如我的硬盤有兩個主分區(qū),其余為邏輯分區(qū)。用(hdx,y)的方法表示如下圖:
下面是我的“GGhost一鍵恢復(fù)”中使用的菜單效果圖及menu.lst文件,供參考。【圖3】
color white/green yellow/green
timeout 3
find --set-root /ggho/grub/gghost.img
password --md5 $1$5$jsGtVo0c88ndMdo6JZfrJ0
default /ggho/grub/default
title 0. GGhost 2008 [Ghost v11] (map-mem)
find --set-root /ggho/grub/gghost.img
map --mem /ggho/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
savedefault
title 1. GGhost 2008 [Ghost v11] (memdisk)
find --set-root /ggho/grub/gghost.img
kernel /ggho/grub/memdisk.gz c=280 h=2 s=36 floppy
initrd /ggho/grub/gghost.img c=280 h=2 s=36 floppy
savedefault
title 2. Boot /ggho/grub/mytools.img
find --set-root /ggho/grub/mytools.img
map --mem /ggho/grub/mytools.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title 3. Boot /ggho/grub/myiso.iso
find --set-root /ggho/grub/myiso.iso
map --mem /ggho/grub/myiso.iso (0xff)
map --hook
chainloader (0xff)
title 4. Micro Windows XPE
find --set-root --ignore-floppies /setupldr.bin
map --in-situ +1 (hd0)
chainloader /setupldr.bin
title 5. Boot NT/2000/XP/2003
find --set-root /ntldr
chainloader /ntldr
title 6. Boot Vista
find --set-root /bootmgr
chainloader /bootmgr
title 7. Boot from Hard Drive (hd0,0)
root (hd0,0)
chainloader +1
title 8. Boot from First CDROM
cdrom --init
map --hook
chainloader (cd0)
boot
title 9. Reboot
reboot
title 10. Shutdown
halt
源CHM 下載地址