日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GRUB4DOS使用大全

發(fā)布時(shí)間:2023/12/16 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GRUB4DOS使用大全 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

GRUB4DOS使用大全

聲明:大部分內(nèi)容摘自網(wǎng)絡(luò)加上親自試驗(yàn)而總結(jié)的,過程真辛苦,重啟電腦N次測(cè)試效果!在我之前的文章里教大家制作USB-CDROM及USB-ZIP+的超級(jí)啟動(dòng)盤中提到用GRUB打造個(gè)性化的啟動(dòng),現(xiàn)在就詳細(xì)的說明。這費(fèi)了我兩天多的時(shí)間去弄明白,哎,真笨啊!

前提介紹:U+是一種新的U盤啟動(dòng)技術(shù),它包括USB-HDD+和USB-ZIP+兩種新的啟動(dòng)方式,在最近發(fā)布的UltraISO 9.2 PE (下載:http://cn.ezbsystems.com/ultraiso/download.htm?) 中首次引入。根據(jù)UltraISO的文檔 (?http://cn.ezbsystems.com/ultraiso/history.htm?),U+啟動(dòng)技術(shù)可以實(shí)現(xiàn)USB-HDD/USB-ZIP雙模式啟動(dòng),從而極大地提高啟動(dòng)U盤的兼容性。

第一講Grub4dos 簡介

相信許多l(xiāng)iunxer初次聽到“GRUB FOR DOS”這個(gè)名字,第一感覺就是:這個(gè)對(duì)我沒用,因?yàn)槲也挥肈OS,即使用也不會(huì)去通過它啟動(dòng)GRUB。先別急,再問一句:您是否用過grldr呢?是否用過MaxDos、一鍵ghost、矮人DOS工具盤?如果答案是肯定的,那您已經(jīng)在用GRUB FOR DOS了。


首先搞清楚與 GNU GRUB 的關(guān)系。 GNU GRUB 分為 GNU GRUB Legacy 和 GNU GRUB2 兩代 。GNU GRUB Legacy 其實(shí)就是原來的 GNU GRUB 0.xx ,最新版是 2005 年發(fā)布的 GNU GRUB 0.97 。目前已停止開發(fā),并改名為 GNU GRUB Lagecy 。GNU GRUB2 是第二代 GRUB,它將取代原來的 GNU GRUB (例如0.9x版),但目前還處于開發(fā)階段,尚未發(fā)布正式版。


而 GRUB4DOS 則是對(duì) GNU GRUB Lagecy 的二次開發(fā)。該項(xiàng)目最早由 不點(diǎn) 在2003年發(fā)起,目前主要由他、bean 和另外幾位中國人維護(hù),很多人貢獻(xiàn)了代碼,再加上廣大網(wǎng)友熱心幫助,使得 GRUB4DOS 不斷完善。在當(dāng)前 新的 GRUB2 沒有到位、老的 GNU GRUB Lagecy 又有諸多不完善 的情況下,GRUB4DOS 受到越來越多人的歡迎。不少人已經(jīng)把 GRUB4DOS 當(dāng)作仍然處于活躍開發(fā)當(dāng)中的 grub legacy 了,當(dāng)他們給 grub 0.XX 的補(bǔ)丁被擱淺時(shí),他們又把補(bǔ)丁投遞給了 GRUB4DOS。


GRUB4DOS 對(duì) GNU GRUB 0.97 的改進(jìn)
A20代碼 和 bug修正
對(duì)A20的處理歷來就是一個(gè)棘手問題。當(dāng)初IBM引入這一設(shè)計(jì),本意是為了讓以往那些BUGGY軟件能夠運(yùn)行,結(jié)果造成后世無窮無盡的隱患。當(dāng)然不能全怪IBM,真正應(yīng)當(dāng)責(zé)怪的是那些不遵守IBM標(biāo)準(zhǔn)的硬件廠商,它們生產(chǎn)的系統(tǒng)無法用常規(guī)的幾種方法來控制A20,使得軟件開發(fā)者可能在很多意想不到的地方碰上A20這個(gè)妖魔,除了造成死機(jī)之外,還導(dǎo)致執(zhí)行效率的極度降低。在微軟的XMS規(guī)范中就明確寫著,A20的控制在有些機(jī)器上是非常耗時(shí)的一個(gè)操作。


GNU GRUB 0.97中的A20代碼很明確是有問題的,這在GNU GRUB郵件列表檔案中就有提到。很多用戶報(bào)告在使用gnu grub 0.97時(shí)鍵盤失去響應(yīng)。grub開發(fā)組在grub2中對(duì)A20代碼打了補(bǔ)丁,以解決這些問題,但是這個(gè)補(bǔ)丁并沒有打到我們目前廣泛使用的0.97版上。為此GRUB4DOS用取自Linux內(nèi)核的A20代碼替換了原代碼,并參考其他一些開源代碼做了很多改進(jìn),基本上解決了這一問題。


A20只是改造的一個(gè)方面,在GRUB4DOS的開發(fā)過程中修復(fù)的GNU GRUB 0.97的bug還有很多,有些在Changelog中并沒有提到。到目前為止,已經(jīng)把那些嚴(yán)重的BUG排解殆盡了,應(yīng)該可以比較平滑地使用GRUB4DOS了。


磁盤仿真(虛擬磁盤)
這是GRUB4DOS的一大特色功能,開發(fā)者下了不少功夫。這一功能是將 軟盤鏡像或硬盤鏡像甚至某個(gè)硬盤分區(qū) 虛擬成 軟驅(qū)或硬盤,進(jìn)而運(yùn)行其中的操作系統(tǒng)(DOS、win98),類似于以前流行的“虛擬軟驅(qū)”(vfloppy),但功能要強(qiáng)得多。用SYSLINUX中的memdisk也可實(shí)現(xiàn)虛擬磁盤。比較而言,GRUB4DOS功能更強(qiáng),限制更少,用法更靈活,同時(shí)對(duì)bios的要求也要高那么一點(diǎn)點(diǎn),在一些BIOS有缺陷的機(jī)子上可能會(huì)出問題(不過不用太擔(dān)心,實(shí)踐表明這種情況極其罕見)。


多種方式進(jìn)入grub環(huán)境
通過dos?
在dos下運(yùn)行g(shù)rub.exe即可進(jìn)入純粹的grub環(huán)境,并部分地支持退回到DOS。也可把grub.exe作為 CONFIG.SYS 里的設(shè)備驅(qū)動(dòng)文件而運(yùn)行。?

通過Windows啟動(dòng)菜單
這是被廣泛使用的一種用法。MaxDos、一鍵ghost硬盤版、矮人DOS工具盤之類的軟件就是以這種方式啟動(dòng)grldr,再通過磁盤仿真虛擬出一個(gè)軟驅(qū),進(jìn)而啟動(dòng)DOS的。?
將GRUB4DOS引導(dǎo)代碼寫入硬盤MBR,開機(jī)直接進(jìn)入grub環(huán)境
乍一看這不算什么改進(jìn)——GNU GRUB本來就可以這樣引導(dǎo),但實(shí)際上在這里 GRUB4DOS 有相當(dāng)大的革新。GNU GRUB lagecy的傳統(tǒng)安裝方法是: root (xxx,x) setup (xxx) 第一句是指定一個(gè)分區(qū),該分區(qū)須存放有/boot/stage1和/boot/stage2文件,第二句是將引導(dǎo)代碼寫入硬盤MBR。這樣安裝的GRUB,其MBR引導(dǎo)代碼被設(shè)置為從固定的分區(qū)加載stage2。假如我們某一天因?yàn)槟承┰?#xff0c;需要?jiǎng)h除或格式化該分區(qū),或者做一些會(huì)引起該分區(qū)序號(hào)變化的操作(比如用 pqmagic 在該分區(qū)前添加或刪除分區(qū)),就需要預(yù)先重裝一次grub,重新指定存放stage2文件的分區(qū),否則將無法引導(dǎo)。這一點(diǎn)上 GNU GRUB 顯得不夠靈活。


而 GRUB4DOS 采取了新的策略:其MBR引導(dǎo)代碼并非固定地指向某個(gè)分區(qū),而是搜索所有分區(qū),查找并加載 grldr,只要某分區(qū)上存有一份 grldr,就能啟動(dòng)。而且安裝時(shí)可以將原微軟的MBR備份,啟動(dòng)時(shí)如果找不到grldr,便自動(dòng)加載備份的MBR。顯然這種方式更加靈活、穩(wěn)健,所以 GRUB4DOS 雖然保留了 GNU GRUB 的全部命令和功能(包括 setup 命令),但不推薦使用傳統(tǒng)的安裝方式。?
當(dāng)然 GRUB4DOS 方式也不是十全十美,因?yàn)槠湟龑?dǎo)代碼還不能識(shí)別所有的文件系統(tǒng),目前支持僅 NTFS/FAT12/FAT16/FAT32/EXT2/EXT3(也不少了 ,以后將支持更多的格式),所以可能需要專門設(shè)一個(gè)分區(qū)來存放 grldr 。不過在我看來這是值得的,一點(diǎn)小麻煩換來了更多的方便和穩(wěn)定。


圖片背景支持
可用?640x480@14位色 的圖片做背景。圖片制作請(qǐng)參考這里:?點(diǎn)擊
中文支持
GRUB4DOS 發(fā)布有中文版,大大方便了中文用戶。
光驅(qū)支持
該功能使得用戶可以在GRUB環(huán)境下訪問光驅(qū),并可由光驅(qū)啟動(dòng),很實(shí)用。?
結(jié)束
現(xiàn)在我用的硬盤包括u盤都安裝了GRUB4DOS,既可啟動(dòng)windows,又能啟動(dòng)linux,還可通過磁盤仿真來啟動(dòng)dos或IMG鏡像文件等等,放上自己喜歡的圖片做背景,全中文界面,HOHO,感覺很不錯(cuò),您不想試試嗎?

第二講GRUB的安裝

2.1 如何獲得grub4dos最新版

可從以下網(wǎng)址下載GRUB4DOS最新版及較早版本。
http://download.gna.org/grub4dos/?
http://download.gna.org/grubutil/?
http://grub4dos.jot.com/WikiHome?
https://gna.org/projects/grub4dos/?
http://grub4dos.sourceforge.net/wiki?(官方說明文檔)

2.2 如何安裝grub4dos?

下載grub4dos后,解壓縮后就可以了。核心文件有下面這幾個(gè):grldr和grub.exe,及menu.lst(此為樣本,需修改)。如果你需要中文支持,就用chinese子目錄中的文件。

安裝方法常見的有下面3種。

2.2.1 通過Windows NT的啟動(dòng)菜單進(jìn)入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的原有屬性。

這樣,編輯完重新啟動(dòng)計(jì)算機(jī),在NT的啟動(dòng)菜單就會(huì)出現(xiàn)“Start GRUB4DOS”這一項(xiàng),選擇該項(xiàng)即可進(jìn)入grub4dos的環(huán)境。【圖1】


此方法的優(yōu)點(diǎn)是:不需要修改MBR。

初學(xué)者使用grub一般都需要grub菜單,把準(zhǔn)備好的menu.lst文件放到C:\下(也可放到其它分區(qū)根目錄或其它指定目錄)。menu.lst的編寫方法可參考readme.txt或者別人提供的menu.lst。在下面的“1.4 如何使用grub4dos”中將作簡單介紹。

2.2.2 通過DOS啟動(dòng)grub

將機(jī)器通過任何可能的方式(軟盤,U盤,光盤等)啟動(dòng)到DOS環(huán)境(最好是純DOS環(huán)境,即不加載任何驅(qū)動(dòng)程序和TSR程序的DOS環(huán)境),然后在DOS下或者AUTOEXEC.BAT(文件里只留grub四個(gè)字母即可)中運(yùn)行g(shù)rub.exe,即可進(jìn)入grub4dos。
也可在DOS/Windows9x的CONFIG.SYS中使用下列任一方式啟動(dòng)grub。
DEVICE=GRUB.EXE
INSTALL=GRUB.EXE
SHELL=GRUB.EXE

此方法的優(yōu)點(diǎn)是:不需要修改MBR;可根據(jù)需要在腳本或者其它DOS程序中啟動(dòng)GRUB4DOS。

菜單文件menu.lst可保存在grub文件所在目錄或其它指定路徑。

2.2.3 通過mbr啟動(dòng)grub

通過軟件包里的bootlace.com(可運(yùn)行于DOS/Win9x)安裝GRLDR引導(dǎo)記錄到硬盤或者硬盤映像文件的主引導(dǎo)記錄,或者安裝到軟盤或者軟盤映像的引導(dǎo)扇區(qū)。電腦啟動(dòng)時(shí),通過擊熱鍵(默認(rèn)為空格鍵,可自定義)來啟動(dòng)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時(shí),備份原MBR(--force-backup-mbr),默認(rèn)啟動(dòng)原MBR,即啟動(dòng)原windows xp系統(tǒng)(--boot-prevmbr-first),等待時(shí)間3秒(--time-out=3),熱鍵為空格鍵(--hot-key=0x3920), 不搜索軟盤上的GRLDR(--mbr-disable-floppy)。

也就是說啟動(dòng)時(shí)等待3秒,3秒內(nèi)不擊熱鍵的話,啟動(dòng)windows xp;3秒內(nèi)擊熱鍵則啟動(dòng)grub4dos。

bootlace的其它參數(shù)及自定義熱鍵用法可參看readme.txt文件。

裝入mbr后,再將grldr和menu.lst文件復(fù)制到某分區(qū)的根目錄(現(xiàn)在支持的文件系統(tǒng)是FAT12,FAT16, FAT32, NTFS,EXT2 or EXT3 的分區(qū)。對(duì)于Windows用戶,最好是fat分區(qū)),menu.lst也可保存到其它指定位置。

此方法的優(yōu)點(diǎn)是:不依賴于操作系統(tǒng);能夠自動(dòng)搜索硬盤上各個(gè)分區(qū)的grldr文件。

另外,2000/xp/2003/vista環(huán)境下可用另一軟件grubinst來把GRLDR引導(dǎo)記錄安裝到硬盤的MBR。grubinst具有圖形界面和命令行兩種工作模式供選用,并附有比較詳細(xì)的使用說明,很易于使用。
在Windows NT/2000/XP 下,用以下的步驟可以快速地把Grub4Dos安裝到MBR或分區(qū)中
前提:你必須擁有FAT16/FAT32的分區(qū)。如果全部分區(qū)均為NTFS,請(qǐng)仔細(xì)看。

1、下載grubinst,解壓
2、雙擊grubinst_gui.exe
3、在"磁盤"右面的列表中選擇需要安裝Grub4Dos的硬盤/軟盤,如果你有多個(gè)磁盤(包括USB移動(dòng)硬盤&),請(qǐng)留意[]中顯示的磁盤大小,以便選擇正確的磁盤。
4、若需要安裝到分區(qū),可點(diǎn)擊"分區(qū)列表"右面的"刷新"按鈕,然后從下拉列表中選擇需要的分區(qū)(支 持FAT12/FAT16/FAT32/EXT2/EXT3)。若需要安裝到MBR,這一步可省略。
5、若想以后能恢復(fù)原來的MBR/BS,則在"保存文件"中輸入用于保存的文件名字。
6、點(diǎn)"安裝",出現(xiàn)命令窗口,如果看到"The MBR/BS has been successfully installer", 則說明安裝成功。

當(dāng)然,以上步驟只是安裝啟動(dòng)代碼,要能正常啟動(dòng)Grub4Dos,還需要以下的步驟:

7、從?http://grub4dos.jot.com/WikiHome?或?http://download.gna.org/grub4dos/?中下載最新版的Grub4Dos。
8、在壓縮包中找到grldr,把它放到FAT16/FAT32分區(qū)的根目錄中。
9、編輯menu.lst文件(應(yīng)該放在和GRLDR一樣的目錄里),以配置啟動(dòng)菜單。

若沒有FAT16/FAT32分區(qū),則不能把Grub4Dos安裝到MBR/BS,而只能利用NT的啟動(dòng)管理器啟動(dòng)Grub4Dos:
1、下載Grub4Dos,把GRLDR解壓到系統(tǒng)盤的根目錄里(C:\)
2、編輯C:\boot.ini(此文件是隱藏的),在文件的最后加上“ C:\GRLDR="Load Grub4Dos"這樣一行
3、編輯C:\menu.lst文件,以配置啟動(dòng)菜單。
4、下次啟動(dòng)Windows時(shí),會(huì)增加"Load Grub4Dos"一項(xiàng),選擇它便能進(jìn)入Grub4Dos

ps: grubinst_gui使用指南

1、安裝Grub4Dos到硬盤/軟盤映像中。
在"文件"右面的輸入框中輸入映像文件名,則按"安裝"時(shí)會(huì)安裝到指定的映像中。
當(dāng)修改的是軟盤映像時(shí),需要勾上選項(xiàng)"軟盤映像"。

2、選項(xiàng)設(shè)置

只讀模式:
模擬所需的操作,但不真正地把MBS/BS寫到硬盤/映像中。

輸出詳細(xì)信息:
讓后臺(tái)程序grubinst輸出更詳細(xì)的信息,建議使用。

不保存原來的MBR (適用于安裝到MBR時(shí))
在修改原來的MBR前,grubinst會(huì)把原來的MBR保存到第二個(gè)扇區(qū)中。若選了這個(gè)選項(xiàng),則屏蔽這一功能。

啟動(dòng)時(shí)不搜索軟盤 (適用于安裝到MBR時(shí))
啟動(dòng)時(shí),若在硬盤上找不到GRLDR,Grub4Dos會(huì)試圖到軟盤上去尋找。若選了這個(gè)選項(xiàng),則屏蔽這一功能。

不引導(dǎo)原來的MBR (適用于安裝到MBR時(shí))
若原來的MBR保存在第二個(gè)扇區(qū)里,則當(dāng)Grub4Dos找不到GRLDR時(shí),會(huì)用原來的MBR來啟動(dòng)。若選了這個(gè)選項(xiàng),則屏蔽這一功能。

優(yōu)先引導(dǎo)原來的MBR (適用于安裝到MBR時(shí))
若選了這個(gè)選項(xiàng),則優(yōu)先使用原來的MBR來啟動(dòng)。
注意1: Grub4Dos只保留了一個(gè)扇區(qū)的空間來存儲(chǔ)原來的MBR,若原來的MBR超過一扇區(qū),則只有第一扇區(qū)被保存,因此不能用原來的MBR來啟動(dòng)。
注意2: 若使用了這一選項(xiàng),則在啟動(dòng)時(shí)會(huì)有5秒的等待時(shí)間,若你在5秒內(nèi)按了空格鍵,則啟動(dòng)Grub4Dos,按其他鍵或5秒超時(shí)的話便引導(dǎo)原來的MBR。等待時(shí)間和按鍵可以定制。

軟盤映像
當(dāng)你把Grub4Dos安裝到軟盤映像時(shí),請(qǐng)勾上這一選項(xiàng)
注意1: 安裝到物理軟盤時(shí),并不需要點(diǎn)這一選項(xiàng)
注意2:當(dāng)你選擇了映像文件,并刷新了分區(qū)列表時(shí),程序會(huì)根據(jù)映像文件的類型自動(dòng)設(shè)置這一參數(shù)。
注意3:安裝到軟盤映像或分區(qū)時(shí),以上的適用于安裝到MBR的各參數(shù)將不起作用

等待時(shí)間:
設(shè)置當(dāng)優(yōu)先引導(dǎo)原來的MBR時(shí),啟動(dòng)的等待時(shí)間,缺省值是5

熱鍵:
設(shè)置當(dāng)優(yōu)先引導(dǎo)原來的MBR時(shí),啟動(dòng)Grub的熱鍵,缺省值是空格。
注意:原來版本的grubinst(bootlace.com也一樣)利用掃描碼來代表按鍵,比如說,空格是 0x3920。但新版的grubinst允許用字符串來表示按鍵。比如說,a , ctrl-a , shift-a, alt-a, F1, home, end, space, key-5 (小鍵盤上的5鍵) 等等。

額外參數(shù):
你可以在這里輸入其他傳給后臺(tái)程序grubinst.exe的參數(shù)

3、恢復(fù)功能

保存文件:
指定用于保存/恢復(fù)的外部文件

從文件中恢復(fù)
沒有使用了這一選項(xiàng)時(shí),"安裝"按鈕是正常的安裝操作,若保存文件框不是空,則指定用于保存原來的MBR/BS的文件
使用了這一選項(xiàng)時(shí),"安裝"按鈕的操作變?yōu)閺闹付ǖ谋4嫖募谢謴?fù)原來的MBR/BS

從原來的MBR中恢復(fù)
使用了這一選項(xiàng)時(shí),"安裝"按鈕的操作是從第二個(gè)扇區(qū)中恢復(fù)原來的MBR
注意1: 原來的MBR必須是單扇區(qū),否則恢復(fù)后不能啟動(dòng)
注意2: 使用這一功能時(shí),"保存文件"應(yīng)該為空,并且不能選擇"從文件中恢復(fù)"

4、"測(cè)試"按鈕
用于顯示傳給grubinst的參數(shù),但并不真正地調(diào)用grubinst。
注意: 這和"只讀模式"是不同的。使用"只讀模式"時(shí)調(diào)用了后臺(tái)的grubinst,只是grubinst 不進(jìn)行修改MBR/BS的操作。


2.2.4 通過Windows NT的啟動(dòng)菜單進(jìn)入grub4dos

用批處理自動(dòng)把grub4dos裝入Vista啟動(dòng)項(xiàng)(非MBR)。

把grub4dos裝入Vista啟動(dòng)項(xiàng),比裝入MBR相對(duì)來說要安全。
【對(duì)于vista系統(tǒng),不能通過fdisk /mbr來恢復(fù)mbr,這樣會(huì)造成vista無法啟動(dòng)。】

關(guān)于手動(dòng)把grub4dos裝入Vista的啟動(dòng)項(xiàng)的方法,網(wǎng)上有一些介紹。比起winxp修改Boot.ini來,操作要麻煩不少。

主要就是操作過程中要產(chǎn)生一個(gè)ID號(hào)【如:b88a2da4-0a4e-11dc-813a-00e04c75ef59】,需要手動(dòng)輸入3次,實(shí)在是麻煩。

下面的批處理自動(dòng)完成整個(gè)裝入操作。

-------------------------------
@echo off
rem by lianjiang
cls
echo.
echo 請(qǐng)以管理員身份運(yùn)行。
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啟動(dòng)項(xiàng)中已有g(shù)rub4dos的項(xiàng)目,無需再安裝。&& 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 boot >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 稍后請(qǐng)自行把grldr.mbr拷貝到%systemdrive%\根目錄
echo.
pause
:exit
del bcdtemp.txt >nul
-------------------------------

此方法的優(yōu)點(diǎn)是:不需要修改MBR。

grub菜單文件的準(zhǔn)備同“(上)通過Windows NT的啟動(dòng)菜單進(jìn)入grub4dos”。


第三講grub使用

1.4 如何使用grub4dos

對(duì)于多數(shù)沒有或很少接觸過linux的windows用戶來說,剛開始使用grub時(shí)離不開菜單。也就是說,使用grub前,我們要準(zhǔn)備menu.lst文件。
先講一些最為常用的命令?
help
用來顯示其它命令的用法,例子:?
help root?
default
指定缺省的菜單項(xiàng),由0開始算起,例子: default 0 該命令必須在第一個(gè)title之前指定?
timeout
缺省的等待時(shí)間,如果在指定的時(shí)間(以秒為單位)不按任何鍵,則會(huì)啟動(dòng)缺省的菜單項(xiàng),例子: timeout 10該命令必須在第一個(gè)title之前指定?
root
用來指定根設(shè)備,例子: root (hd0,0)?
rootnoverify
該命令也可以用來指定根設(shè)備。root在設(shè)置根設(shè)備前,先測(cè)試一下該分區(qū)的文件系統(tǒng)是否可以識(shí)別,而rootnoverify則省略這一測(cè)試。rootnoverify (hd0,0)?
chainloader
把啟動(dòng)扇區(qū)的內(nèi)容裝入內(nèi)存,參數(shù)+1指的是把分區(qū)的第一個(gè)扇區(qū),例子: chainloader +1?
boot
啟動(dòng)操作系統(tǒng)。在使用該命令前,必須用kernel或者chainloader把系統(tǒng)內(nèi)核或者啟動(dòng)扇區(qū)/啟動(dòng)文件裝入內(nèi)存。例子: boot?
在配置文件中不需要使用這個(gè)命令。這是因?yàn)镚RUB在執(zhí)行了菜單項(xiàng)的所有命令后,會(huì)自動(dòng)加上boot。該命令一般在命令行界面里使用。


Grub4dos高級(jí)功能
虛擬磁盤
GRUB4DOS中的虛擬磁盤是由map命令實(shí)現(xiàn)的。map命令的功能介紹如下:?
磁盤交換
map命令在GRUB Legacy中的也存在,它是用作磁盤交換。?
比如說,你有兩只硬盤,但兩只硬盤上均有可啟動(dòng)的系統(tǒng)。在第一只硬盤上啟動(dòng)時(shí),不需要特殊的處理,直接用chainloader裝載啟動(dòng)扇區(qū)就可以了。不過,如果要從第二只硬盤上啟動(dòng),那么單單用chainloader是不夠的,這是因?yàn)楹芏嗖僮飨到y(tǒng)都缺省地從第一只硬盤上裝載啟動(dòng)所需的文件,如果文件不在其上,系統(tǒng)便不能順利地讀取,從而導(dǎo)致啟動(dòng)失敗。?
一個(gè)原始的解決方法是在BIOS中修改啟動(dòng)順序,把需要啟動(dòng)的硬盤放到最前面。那么,重啟計(jì)算機(jī)后該硬盤便會(huì)成為第一只硬盤,從而可以正常啟動(dòng)。?
GRUB中的map命令便是為了解決這個(gè)問題而設(shè)計(jì)的,它可以在運(yùn)行時(shí)交換磁盤,而無需修改BIOS。例如:?
title Boot First Partition on Second Disk map (hd0) (hd1) map (hd1) (hd0) chainloader (hd1,0)+1 boot???
在該例子中,使用了map命令實(shí)現(xiàn)了(hd0)和(hd1)的交換。要注意的是,交換是在命令boot后才生效的。因此在chainloader命令中,讀取的仍然是第二只硬盤。?
建立虛擬磁盤
在GRUB4DOS中,大大地?cái)U(kuò)展了map命令的用法。利用該命令可以建立虛擬磁盤,例子:?
把(hd0,0)根目錄下的aa.dsk文件映射為第二只硬盤,并且使用原來硬盤上的系統(tǒng)啟動(dòng):?? title Create Virtual Disk map (hd0,0)/aa.dsk (hd1) root (hd0,0) chainloader +1 boot???
把(hd0,0)根目錄下的aa.dsk文件映射為第一只硬盤,原來的第一只映射為第二只硬盤,并且從aa.dsk里虛擬出來的磁盤中啟動(dòng):?? title Boot From Virtual Disk map (hd0,0)/aa.dsk (hd0) map (hd0) (hd1) map --hook root (hd0,0) chainloader +1 boot?? 在上面提到,map命令的映射不是馬上起作用的。但是,要從虛擬磁盤中啟動(dòng),就必須從中讀取數(shù)據(jù),因此需要使映射提前起效。在以上的例子中,map --hook的作用便是使前面map命令指定的映射立刻生效。?
把(hd0,0)根目錄下的aa.img文件映射為第一只虛擬軟盤,并從中啟動(dòng):?? title Boot From Virtual Floppy map (hd0,0)/aa.img (fd0) map --hook root (fd0) chainloader +1 boot???
使用這種方式進(jìn)行映射后,虛擬磁盤的內(nèi)容和影像文件的內(nèi)容是同步的,也就是說,如果你修改了虛擬磁盤的內(nèi)容,影像文件也同樣被更新。如果你重啟了機(jī)器,該修改的效果仍然存在。?
在使用這種方式進(jìn)行映射時(shí),影像文件在磁盤上的存放必須是連續(xù)的。?
GRUB4DOS中建立的虛擬磁盤,包括以下所說的內(nèi)存盤,都是通過截取INT 13來實(shí)現(xiàn)的。因此在啟動(dòng)了操作系統(tǒng)后,如果該系統(tǒng)是通過INT 13來訪問磁盤的,例如各類的DOS,那么在進(jìn)入系統(tǒng)后仍然可以訪問虛擬盤。如果系統(tǒng)是采用其它方式來訪問磁盤,例如Linux,各類Unix和Windows NT系列的操作系統(tǒng),那么在進(jìn)入系統(tǒng)后便不能訪問虛擬盤。Windows 9X系列的操作系統(tǒng)比較特殊,它通常是使用保護(hù)模式的驅(qū)動(dòng)來訪問磁盤,但當(dāng)它找不到合適的驅(qū)動(dòng)時(shí),會(huì)依舊使用INT 13來訪問磁盤,因此,在Windows 9X下也可以訪問虛擬磁盤。?
建立虛擬內(nèi)存盤
用map也可以建立虛擬內(nèi)存盤,其用法和以上的很相似,你只需要在map建立虛擬盤的命令中加上--mem參數(shù)就行了。例子:?
把(hd0,0)根目錄下的aa.dsk文件映射為第一只硬盤,原來的第一只映射為第二只硬盤,并且從aa.dsk里虛擬出來的磁盤中啟動(dòng):?? title Boot From Virtual Disk map --mem (hd0,0)/aa.dsk (hd0) map (hd0) (hd1) map --hook root (hd0,0) chainloader +1 boot???
把(hd0,0)根目錄下的aa.img文件映射為第一只虛擬軟盤,并從中啟動(dòng):?? title Boot From Virtual Floppy map --mem (hd0,0)/aa.img (fd0) map --hook root (fd0) chainloader +1 boot???
使用了該映射方式,影像文件的內(nèi)容是裝載到內(nèi)存后才進(jìn)行映射。這意味著,你必須有足夠的內(nèi)存來存放影像和啟動(dòng)系統(tǒng)。而且,虛擬磁盤和影像文件是分離的,對(duì)虛擬磁盤所作的修改不會(huì)被更新到影像文件中。?
在這種映射方式中,影像文件在磁盤上的存放不需要是連續(xù)的。?
自動(dòng)生成MBR
影像文件有兩種類型。一種是文件系統(tǒng)影像,它里面只包含某一個(gè)文件系統(tǒng)的數(shù)據(jù)。另一種是磁盤影像,它里面包含了類似于物理硬盤的結(jié)構(gòu),也就是,影像以MBR開始,然后才是文件系統(tǒng)的數(shù)據(jù)。對(duì)于虛擬內(nèi)存盤,其結(jié)構(gòu)是類似于真實(shí)硬盤的,因此在使用map命令進(jìn)行映射時(shí),應(yīng)該使用磁盤影像。?
GRUB4DOS考慮到了這個(gè)問題。為了讓用戶使用更加方便,GRUB4DOS作了如下的改進(jìn):當(dāng)把磁盤影像讀入內(nèi)存時(shí),程序會(huì)檢測(cè)其結(jié)構(gòu),如果發(fā)現(xiàn)是文件系統(tǒng)影像,那么在它前面自動(dòng)生成MBR,把它變?yōu)榇疟P影像。因此,無論用戶選擇使用文件系統(tǒng)影像還是磁盤影像,裝載到內(nèi)存后都會(huì)變成正確的格式。?
自動(dòng)生成MBR還有一個(gè)應(yīng)用,就是直接從硬盤上的裝載分區(qū),從而生成虛擬磁盤。例如:?
title Load Partition From Disk map --mem (hd0,0)+1 (hd0) map (hd0) (hd1) map --hook root (hd0,0) chainloader +1 boot???
該菜單的功能是把硬盤上第一個(gè)分區(qū)的內(nèi)容裝載到內(nèi)存,并且自動(dòng)在其前面加上MBR而生成虛擬磁盤。然后,把該虛擬磁盤映射為第一只硬盤,原來的硬盤映射為第二只硬盤。最后,從虛擬磁盤中啟動(dòng)。?
在使用該菜單啟動(dòng)后,系統(tǒng)分區(qū)的內(nèi)容和好像和原來一樣,但這時(shí)實(shí)際是使用在內(nèi)存里的虛擬磁盤。對(duì)分區(qū)的修改在重啟機(jī)器后便會(huì)消失。?
該菜單是把整個(gè)分區(qū)的內(nèi)容裝載到內(nèi)存,要確定內(nèi)存足夠大,否則命令不會(huì)成功。?
在map命令中,(hd0,0)+1是指整個(gè)(hd0,0)分區(qū),而不是(hd0,0)的第一個(gè)扇區(qū)。這種表示只是在map命令中適用,在其它的地方,(hd0,0)+1 還是原來的意義。?
虛擬設(shè)備(md)
在GRUB4DOS中,你可以用設(shè)備(md)來訪問整個(gè)內(nèi)存,就和用(nd)訪問網(wǎng)絡(luò)設(shè)備,用(cd)來訪問光盤類似。?
GRUB4DOS也擴(kuò)展了cat命令,它可以用--hex來以十六進(jìn)制輸出,也可以用--locate=STRING來在文件中搜索字符串。?
例子:?
cat --hex (hd0)+1?? 以十六進(jìn)制形式顯示第一只硬盤的MBR。?
cat --hex (hd0,0)+1?? 以十六進(jìn)制形式顯示第一只硬盤第一個(gè)分區(qū)的啟動(dòng)扇區(qū)?
cat --hex (md)+2?? 以十六進(jìn)制形式顯示內(nèi)存開始1K的內(nèi)容,這里其實(shí)是中斷向量表。?
cat --hex (md)0x800+1?? 以十六進(jìn)制形式顯示內(nèi)存從0x800 * 512 = 1M 開始512字節(jié)的內(nèi)容,也就是從擴(kuò)展內(nèi)存開始的512字節(jié)。?
虛擬設(shè)備(rd)
用虛擬設(shè)備(md)可以訪問從地址0開始的物理內(nèi)存,而使用(rd)則可以訪問從某一地址開始的內(nèi)存。?
map --rd-base=ADDR?? 用來設(shè)置(rd)內(nèi)存設(shè)備的開始地址(以字節(jié)為單位)。?
map --rd-size=SIZE?? 用來設(shè)置(rd)內(nèi)存設(shè)備的長度(以字節(jié)為單位)。?
當(dāng)把grub.exe作為linux內(nèi)核啟動(dòng)時(shí),可以用指定初始盤。進(jìn)入grub后,(rd)設(shè)備的開始地址和長度自動(dòng)設(shè)置為初始盤的地址和長度。因此,可以在grub中用(rd)設(shè)備來訪問初始盤。?
map --ram-drive=RD???
用來設(shè)定訪問(rd)內(nèi)存設(shè)備的BIOS設(shè)備名。缺省值是0x7F,表示(rd)對(duì)應(yīng)的虛擬盤是軟盤設(shè)備。如果(rd)對(duì)應(yīng)的虛擬盤是硬盤設(shè)備,那么需要設(shè)置RD, 使得 0x80< RD < 0xFF。?
map的其他參數(shù)
* --status?
用于顯示當(dāng)前的磁盤映射。?? map --status???
* --floppies=M, --harddrives=N?
指定軟盤/硬盤的數(shù)目。?? map --harddrvies=2?? 使用該命令后,本地硬盤的數(shù)目設(shè)為2。?
* --memdisk-raw=RAW?
RAW取值0或1(缺省是1)。RAW=0時(shí),使用int15/ah=87h讀擴(kuò)展內(nèi)存。RAW=1時(shí),使用內(nèi)部的函數(shù)來讀擴(kuò)展內(nèi)存。?? map --memdisk-raw=0???
* --safe-mbr-hook=SMH ,--int13-scheme=SCH?
這兩個(gè)參數(shù)是為了在Windows 9X下能正常使用虛擬盤而設(shè)的。?
SMH取值0或1(缺省是1),當(dāng)你在Windows 9X下使用虛擬盤時(shí)出現(xiàn)問題時(shí),可以試試使用以下的命令:?? map --safe-mbr-hook=0???
SCH取值也是0或1(缺省是1),當(dāng)你在Windows 9X下使用虛擬盤時(shí)出現(xiàn)問題時(shí),也可以試試使用以下的命令:?? map --int13-scheme=0???
* --read-only?
使用了該參數(shù)后,當(dāng)前進(jìn)行映射的磁盤被設(shè)為只讀模式。?? map --mem --read-only (hd0,0)/aa.dsk (hd1)???
* --fake-write?
使用了該參數(shù)后,當(dāng)前進(jìn)行映射的磁盤看似可寫,但寫入的內(nèi)容均被丟棄。?? map --mem --fake-write (hd0,0)/aa.dsk (hd1)???
* --heads=H, --sectors-per-track=S?
一般來說,map命令可以正確地計(jì)算出影像文件中使用的磁盤參數(shù)。如果你想手動(dòng)設(shè)置,那么可以使用這兩個(gè)選項(xiàng)。?? map --mem --heads=63 --sectors-per-track=255 (hd0,0)/aa.dsk (hd1)???
利用memdisk生成虛擬內(nèi)存盤
memdisk是syslinux中的一個(gè)工具,利用它也可以生成虛擬內(nèi)存盤:?
title Create virtual disk using memdisk kernel (hd0,0)/memdisk initrd (hd0,0)/aa.dsk boot???
該命令把a(bǔ)a.dsk裝入內(nèi)存生成虛擬內(nèi)存盤,該虛擬盤作為第一只硬盤,原來硬盤的序號(hào)向后移動(dòng)。最后,從虛擬盤中啟動(dòng)。這一系列的操作都是在memdisk內(nèi)完成的,GRUB的任務(wù)只是把a(bǔ)a.dsk裝入內(nèi)存,然后把裝載的地址傳遞給memdisk。?
如果只有一只硬盤,那么以上的操作可以用以下的命令完成:?
title Create virtual disk using map map --mem (hd0,0)/aa.dsk (hd0) map (hd0) (hd1) map --hook root (hd0,0) chainloader +1 boot???
map和memdisk的區(qū)別:?
* map是GRUB4DOS內(nèi)置的功能,而memdisk是一個(gè)外部的程序?
* map可以直接映射磁盤上的文件,而memdisk必須要把文件裝載到內(nèi)存里。?
* map可以把影像文件映射為第二只硬盤,而而memdisk只能映射為第一只硬盤。?
* map有自動(dòng)生成MBR的功能,而memdisk沒有。因此memdisk只能使用磁盤影像,不能使用文件系統(tǒng)影像。?
光驅(qū)相關(guān)
在GRUB4DOS中使用光驅(qū)
用以下的命令可以初始化光驅(qū):?? cdrom --init?? 初始化后,接著使用map --hook,那么就可以用(cd0),(cd1)等來訪問光驅(qū)。?
GRUB中支持的光驅(qū)設(shè)備是(cd),它代表用可啟動(dòng)光盤啟動(dòng)GRUB時(shí)(光盤的制作方法在下一節(jié)介紹),用于啟動(dòng)的光驅(qū)設(shè)備。該設(shè)備可直接使用,而不需要使用以上的命令來初始化。?
用以下的命令可以停止化光驅(qū):?? cdrom --stop?? 在停止光驅(qū)后,還需要用map --unhook來取消map --hook的效果。?
用以下的命令可以指定搜索的端口:?? cdrom --add-io-ports=0x03F601F0???
以下是缺省的搜索端口:0x03F601F0, 0x03760170, 0x02F600F0, 0x03860180, 0x6F006B00, 0x77007300。?
在初始化光驅(qū)后,可以用blocklist的方式來訪問其內(nèi)容:?
cat --hex (cd0)16+2?? 光驅(qū)中使用的扇區(qū)大小是2048。?
另外,iso9660文件系統(tǒng)驅(qū)動(dòng)程序支持Rock-Ridge擴(kuò)展,但不支持Joliet擴(kuò)展,在讀取Joliet擴(kuò)展的光盤是可能會(huì)出現(xiàn)問題。?
另外,你可以以用chainloader命令來從光驅(qū)中啟動(dòng):?
chainloader (cd0) boot???
一個(gè)完整的從第一只光驅(qū)啟動(dòng)的例子:?
title Boot From First CDROM cdrom --init map --hook chainloader (cd0) boot???
利用GRUB4DOS制作可啟動(dòng)光盤
在GRUB中,可以利用 stage2_eltorito 來制作啟動(dòng)光盤:?
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso?
stage2_eltorito和menu.lst應(yīng)該放在光盤的/boot/grub目錄里。?
在GRUB4DOS中,可以利用 grldr 來制作啟動(dòng)光盤。制作方法有兩種:?
mkisofs -R -b grldr -no-emul-boot -boot-load-seg 0x1000 -o bootable.iso iso_root?
mkisofs -R -b grldr -no-emul-boot -boot-load-size 4 -o grldr.iso iso_root?
grldr和menu.lst應(yīng)該放在光盤的根目錄里。?
第一種方法告訴 BIOS,希望它能夠裝入整個(gè) GRLDR 文件到內(nèi)存。裝入內(nèi)存后,BIOS 還應(yīng)該正確設(shè)置堆棧,使得不至于把堆棧設(shè)置到 GRLDR 的程序體內(nèi),造成沖突。一般情況下,BIOS 做到這一點(diǎn)很容易,因?yàn)樗梢栽O(shè)置堆棧指針為裝入的起始地址。但也不排除存在 BUGGY BIOS 的可能性。?
有些 BIOS 不完全符合可啟動(dòng)的 CDROM 規(guī)范,比如 VirtualPC 的就是的。這類 BIOS 只是裝入了一部分 GRLDR 扇區(qū)到內(nèi)存,典型的可能只裝入了一個(gè)扇區(qū)(2048 字節(jié)的大扇區(qū))到內(nèi)存。不過我們的代碼已經(jīng)替這些 BUGGY BIOS 打了補(bǔ)丁。只要這些 BIOS 能夠設(shè)置正確的堆棧,不至于和裝入內(nèi)存中的 GRLDR 扇區(qū)數(shù)據(jù)產(chǎn)生沖突就 OK 了。?
也就是說,上述第一種制作光盤的方法,應(yīng)該沒有多大問題了。這種方法很有可能適應(yīng)于所有的 BIOS。?
第二種方法本身就只要求 BIOS 裝入一個(gè) CDROM 扇區(qū)到內(nèi)存(等同于 4 個(gè) 512 字節(jié)的小扇區(qū))。這種方法是最保守的,沒有理由會(huì)失敗了。微軟的 win2000 啟動(dòng)光盤就是這么做的,isolinux 和 stage2_eltorito 也都是這么做的。如果這種方法失敗了,那么 win2000,isolinux 和 stage2_eltorito 應(yīng)該都會(huì)失敗的。?
對(duì)于第二種方法,我們不需要 -boot-info-table 這個(gè)參數(shù)。但是允許你用這個(gè)參數(shù)(用了和沒用是一樣的,我們的引導(dǎo)代碼將忽略由這個(gè)參數(shù)所傳遞的數(shù)據(jù)結(jié)構(gòu))。?
對(duì)于第一種方法也一樣,不需要 -boot-info-table 這個(gè)參數(shù),同時(shí)也是允許你用這個(gè)參數(shù)(用了和沒用是一樣的,我們的引導(dǎo)代碼將忽略由這個(gè)參數(shù)所傳遞的數(shù)據(jù)結(jié)構(gòu))。?
這樣,stage2_eltorito 就可以完全用 grldr 來代替了。?
腳本支持
GRUB4DOS中有實(shí)現(xiàn)了簡單的腳本支持。目前實(shí)現(xiàn)了 && 和 || 兩種操作:?
command1 && command2?? 只有當(dāng) command1 的返回值是真時(shí),command2 才被執(zhí)行?
command1 || command2?? 只有當(dāng) command1 的返回值是假時(shí),command2 才被執(zhí)行?
目前不支持操作符的嵌入使用。?
例子:?
is64bit && default 0 is64bit || default 1???
如果is64bit命令返回值是真,那么缺省的菜單項(xiàng)是0,否則,缺省的菜單項(xiàng)是1。?

ps:
下面是一個(gè)menu.lst的例子。(以#開始的行,表示注釋,不執(zhí)行)

# 默認(rèn)延遲時(shí)間(秒)
timeout 30

# 第一項(xiàng)為默認(rèn)值
default 0

# 設(shè)置圖形背景文件
splashimage (hd0,0)/boot/grub/xp2008.gz

# 設(shè)置中文支持的字體文件
fontfile (hd0,0)/boot/grub/fonts

title 使用map啟動(dòng)本地硬盤上的瑞星殺毒軟盤鏡像文件
map (hd0,0)/boot/grub/rav.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title 使用memdisk啟動(dòng)本地 Win98 軟盤鏡像文件
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/win98.img

title 使用memdisk啟動(dòng)本地硬盤上的瑞星殺毒軟盤壓縮鏡像文件
root (hd0,0)
kernel /boot/grub/memdisk.gz c=80 h=12 s=36 floppy
initrd /boot/rav.zip

title 啟動(dòng)第一主分區(qū)(hd0,0)上的操作系統(tǒng)
rootnoverify (hd0,0)
makeactive
chainloader +1

title 啟動(dòng)第二主分區(qū)(hd0,1)上的操作系統(tǒng)
rootnoverify (hd0,1)
makeactive
chainloader +1

title 重啟
reboot

title 關(guān)機(jī)
halt

此菜單文件的運(yùn)行效果如下圖。【圖2】


參考這個(gè)例子,我們就可以根據(jù)自己需要對(duì)菜單進(jìn)行修改。

比如從網(wǎng)上下載了效率源的鏡像文件,文件名為XLY.IMG。我們只需把
title 使用memdisk啟動(dòng)本地 Win98 軟盤鏡像文件
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/win98.img

改成
title 硬盤檢測(cè)修復(fù)工具 效率源 (memdisk)
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/xly.img

或者改成
title 硬盤檢測(cè)修復(fù)工具 效率源 (map)
map (hd0,0)/boot/grub/xly.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

同時(shí)把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)

從上面的例子可以看出,啟動(dòng)軟盤鏡象,有兩種方式,即用memdisk或用map。

用memdisk時(shí),img文件可壓縮;在img文件大小為非1.44MB或2.88MB標(biāo)準(zhǔn)鏡像時(shí),需要指定CHS參數(shù)。img文件的CHS參數(shù)可用winimage獲得。

即例子中的:
title 使用memdisk啟動(dòng)本地硬盤上的瑞星殺毒軟盤壓縮鏡像文件
root (hd0,0)
kernel /boot/grub/memdisk.gz c=80 h=12 s=36 floppy
initrd /boot/rav.zip

另外,菜單文件中的文件路徑可用相對(duì)路徑(如:/boot/rav.zip)或絕對(duì)路徑(如:(hd0,0)/boot/grub/xly.img)表示。

map方式對(duì)軟盤映像大小沒有限制,但要求必須連續(xù)存放。改進(jìn)的map --mem則無此限制。

比如:
map --mem /boot/xxx.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

注意:
a, 菜單文件中所用的memdisk.gz文件,不包括在grub4dos的發(fā)行包里,需自行準(zhǔn)備。可從gnu grub軟件包或從其它基于grub的工具(如一鍵ghost,本人的gghost)中獲得。

b, 菜單中所用的其它文件如xp2008.gz(背景文件)、fonts(中文字體文件)及各種鏡像文件等,均需拷貝到文件中指定路徑。 fontfile命令不可單獨(dú)使用,需與splashimage一起使用。

c, 菜單文件中的命令全部使用小寫。

d, 初學(xué)者使用絕對(duì)路徑時(shí)要注意GRUB對(duì)設(shè)備的命名方法。系統(tǒng)的第一個(gè)硬盤驅(qū)動(dòng)器表示成(hd0),其上的第一個(gè)分區(qū)表示為(hd0,0),也就是說對(duì)于硬盤,采用(hdx,y)的形式來表示,x、y都是從0開始計(jì)數(shù)的,x表示硬盤號(hào),y表示分區(qū)號(hào)。
由于主分區(qū)只能有四個(gè),所以第一硬盤的四個(gè)主分區(qū)分別用(hd0,0)~(hd0,3)來表示;邏輯分區(qū)則從(hd0,4)開始算,即第一邏輯分區(qū)用(hd0,4),第二邏輯分區(qū)用(hd0,5)來表示,依次類推。
一般機(jī)子的硬盤都是一個(gè)主分區(qū),其余是邏輯分區(qū)。因此C盤用(hd0,0),D盤用(hd0,4)來表示。 光盤用(cd)表示,第一軟驅(qū)用(fd0)表示。

如我的硬盤有兩個(gè)主分區(qū),其余為邏輯分區(qū)。用(hdx,y)的方法表示如下圖:

下面是我現(xiàn)在使用的菜單效果圖及menu.lst文件,供參考。【圖3】

color white/green yellow/green
default 1
timeout 3
#fontfile /boot/grub/fonts
#splashimage /boot/grub/bg.xpm.gz
#password --md5 $1$8$D0mfzTIQXv2Ma2b5bWH0b.
title 0, Boot from Hard Drive (hd0,0)
root (hd0,0)
chainloader +1

title 1, GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
map --mem /boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title 2, GreenGhost [Ghost v8.3/v11] (MEMDISK)
kernel /boot/grub/memdisk.gz c=200 h=2 s=36 floppy
initrd /boot/grub/gghost.img

title 3, GreenGhost [Ghost v8.3/v11] (MAP-HOOK) [disable a20]
map --mem /boot/grub/gghost.img (fd0)
map --hook
chainloader --disable-a20 (fd0)+1
rootnoverify (fd0)

title 4, Microsoft Windows NT/2K/XP
find --set-root /ntldr
chainloader /ntldr

title 5, Microsoft Windows Vista
find --set-root /bootmgr
chainloader /bootmgr

title 6, Boot from Hard Drive (hd0,1)
root (hd0,1)
chainloader +1

title 7, Reboot
reboot

title 8, Shutdown
halt

1.5 結(jié)言

Grub4dos具有強(qiáng)大的功能,上面介紹的只是grub4dos的一些最基本用法,更多的用法可在掌握基本用法的基礎(chǔ)上,自己查閱資料了解。


2.1 硬盤上應(yīng)用

硬盤上應(yīng)用grub,首先要進(jìn)行安裝,安裝/啟動(dòng)方式主要有3中,即通過Windows NT的啟動(dòng)菜單進(jìn)入grub4dos;通過DOS啟動(dòng)grub;通過mbr啟動(dòng)grub。【參看1.3 如何安裝grub4dos】

安裝完grub后,需要準(zhǔn)備菜單文件menu.lst。

2.1.1 加載軟盤鏡像

對(duì)于Windows用戶,用grub加載軟盤鏡象是最常用的功能之一。由于windows2k/xp已脫離了dos,因此進(jìn)行包括系統(tǒng)備份/恢復(fù)在內(nèi)的一些dos下操作,成為初學(xué)者的一個(gè)難題。以前我們可能就需要用啟動(dòng)光盤等才能進(jìn)入dos,光盤的特性決定了很難及時(shí)方便地更新光盤上的工具。grub的出現(xiàn)與應(yīng)用,解決了這個(gè)難題。我們不僅無需借助其它的介質(zhì)就能進(jìn)入dos環(huán)境,而且能及時(shí)更新工具。網(wǎng)上下載的各種系統(tǒng)維護(hù)工具,很多都是img形式,無需把文件提取出來,稍微修改menu.lst就能使用,各種工具也能和諧共處,使用非常方便。

如何把下載的xxx.img加入grub啟動(dòng)菜單呢?
你只要把xxx.img保存到C:\boot\grub目錄下,編輯menu.lst,加入下面內(nèi)容就行了。

title Boot from Floppy image XXX
map --mem /boot/grub/xxx.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

注意:
a, 這幾行內(nèi)容不能加在最前面,因?yàn)榍懊媸且恍?duì)全局有效的設(shè)置。?
b, 你需要的工具都可以這種方式加進(jìn)去。
c, 也許你有很多工具,都加進(jìn)menu的話,顯得很亂。平時(shí)常用的可能也就一兩個(gè)工具,不少只是偶爾一用。對(duì)于這種情況,可以采取下面的方法。即:把常用的寫入菜單,同時(shí)在菜單中寫一個(gè)通用啟動(dòng)img文件的內(nèi)容。

比如上面的:

title Boot from Floppy image XXX
map --mem /boot/grub/xxx.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

可以在啟動(dòng)grub進(jìn)入菜單后,選擇“Boot from Floppy image XXX”后,按“e”進(jìn)入編輯狀態(tài),移動(dòng)方向鍵,修改xxx.img為需要啟動(dòng)的文件名,回車,按“b”啟動(dòng)即可。(img文件保存在其它路徑的話,則改成相應(yīng)的路徑。)

2.1.2 啟動(dòng)WinPE

有些系統(tǒng)維護(hù)操作在dos下操作不太方便,甚至不能進(jìn)行。WinPE的出現(xiàn),給我們帶來了很多方便。

下面以廣受好評(píng)的“老九 WinPE 老毛桃修改版_1111 版”為例,介紹如何用grub啟動(dòng)WinPE。 (ISO中已帶有安裝程序,我這里介紹的是在menu.lst中加入通用的winpe選項(xiàng)。)

步驟:

1, 下載“老九 WinPE 老毛桃修改版_1111 版”,解壓后得到BootCD.ISO。

2, 用虛擬光驅(qū)或UltraISO等提取iso中的WINPE.IS_,WINNT.XPE和WXPE\SETUPLDR.BIN,把這3個(gè)文件拷貝到C:\,并把SETUPLDR.BIN改名為ldrxpe。需要外置程序的,還需把XPEMENU.INI和“外置程序”目錄一起拷貝到任一盤符的根目錄。【圖4】【圖5】

3,在menu.lst中加入

title Micro Windows XPE (by LaoMaotao)?
chainloader /ldrxpe

啟動(dòng)grub時(shí)選擇“Micro Windows XPE (by LaoMaotao)”就能啟動(dòng)WinPE了。這樣就能在windows界面下進(jìn)行系統(tǒng)維護(hù)、安裝等操作。【圖6】【圖7】【圖8】

2.1.3 啟動(dòng)系統(tǒng)

對(duì)于單一硬盤裝了多系統(tǒng)及多硬盤裝了多系統(tǒng)的,用grub可以方便地對(duì)各系統(tǒng)進(jìn)行啟動(dòng)管理。

比如在menu.lst中可加入下面的選項(xiàng):

title 啟動(dòng)第一硬盤第一主分區(qū)(hd0,0)上的操作系統(tǒng)
rootnoverify (hd0,0)
makeactive
chainloader +1

title 啟動(dòng)第一硬盤第二主分區(qū)(hd0,1)上的操作系統(tǒng)
rootnoverify (hd0,1)
makeactive
chainloader +1

title 啟動(dòng)Windows NT/2000/XP/2003
find --set-root /ntldr
chainloader /ntldr

title 啟動(dòng)Microsoft Windows Vista
find --set-root /bootmgr
chainloader /bootmgr

title 啟動(dòng)DOS/Windows 95/98/Me
find --set-root /io.sys
chainloader /io.sys

2.2 光盤上的應(yīng)用

下面介紹兩種在光盤上應(yīng)用grub的方法。

2.2.1 grub引導(dǎo)的可啟動(dòng)光盤

以grldr作為光盤的啟動(dòng)文件引導(dǎo)光盤,加載menu.lst,通過menu菜單選擇啟動(dòng)項(xiàng)目。

步驟:

1) 準(zhǔn)備必要的img文件,及grldr,menu.lst(根據(jù)需要準(zhǔn)備字體,背景圖片,memdisk.gz等文件)。

2) 編輯menu.lst。引導(dǎo)光盤上的img文件的格式如下:

title GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
map --mem (cd)/boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

菜單中也可引導(dǎo)硬盤上的img文件,比如:

title GreenGhost [Ghost v8.3/v11] (MEMDISK)?
kernel (hd0,4)/boot/grub/memdisk.gz c=200 h=2 s=36 floppy
initrd (hd0,4)/boot/grub/gghost.img

3) 組織文件。比如在E:\3333下建個(gè)grubcd目錄,把menu.lst拷貝到此目錄下,menu.lst文件將在光盤根目錄下。在grubcd目錄下建boot\grub目錄,保存各種img,字體等文件(也可以保存到其它路徑,與menu.lst中的指定的路徑要一致)。注意:menu.lst文件中引用的所有文件的文件名在硬盤上顯示的需是小寫,大寫的要改成小寫。【圖9】

4) 制作ISO。用UltraISO新建一個(gè)ISO文件,把E:\3333\grubcd目錄下的所有文件加入iso文件;執(zhí)行“啟動(dòng)光盤”-“加載引導(dǎo)文件”,選擇grldr(需把grldr改名為grldr.bin或grldr.bif等)文件。再執(zhí)行“文件”-“屬性”,選上“允許小寫字母”選項(xiàng),保存ISO文件。【圖10】【圖11】【圖12】


也可使用mkisofs.exe或CDIMAGE.EXE等工具制作啟動(dòng)iso(grldr不需改名)。

比如我用CDIMAGE制作iso的批處理是:
cdimage -lgrubcd -t01/01/2007,00:00:00 -h -n -o -d -m -bgrldr grubcd grubcd.iso

5) 用nero等把制作的可啟動(dòng)ISO刻盤。有條件的可先在虛擬機(jī)上測(cè)試通過后刻盤,或用CD-RW/DVD+RW刻盤。

2.2.2 BCDW引導(dǎo)GRUB的可啟動(dòng)光盤

此法是用BCDW制作啟動(dòng)光盤,通過BCDW執(zhí)行g(shù)rldr來加載menu.lst菜單。

步驟:

1) 首先下載BCDW軟件包,解壓后獲取所需文件。

2)組織文件。比如在E:\3333下建個(gè)bcdwcd目錄,此目錄下文件將在光盤根目錄下,下面建boot\grub目錄和bcdw目錄,把軟件包中bcdw目錄下的bcdw.bin,bcdw.ini和loader.bin拷貝到所建的bcdwcd\bcdw目錄下;把grldr、各種img、字體等文件拷貝到bcdwcd\boot\grub目錄。menu.lst文件的編輯方法與上面2.1中介紹的相同。

3) 編輯bcdw.ini文件。打開bcdw.ini,找到[MenuItems]部分,比如:

[MenuItems]
C:\ ; Boot from drive C:?
\I386\setupldr.bin ; Microsoft Windows XP Setup


上面的就是BCDW啟動(dòng)菜單的例子。在其中加上grub等項(xiàng),變成:

[MenuItems]

\images\gghost.img ; GGhost v6.0 (Ghost8.3/11)?
\images\mynet.img ; My net (Ghost8.3)(tcp/ip,cd/usb)?
\boot\grub\grldr ; Grub4dos?
\WXPE\SETUPLDR.BIN ; Micro Windows XPE (by LaoMaotao)?
C:\ ; Boot from drive C:?
\I386\setupldr.bin ; Microsoft Windows XP Setup

4)制作ISO文件與刻錄ISO的方法與2.1中的基本相同。所不同的只是在制作ISO文件時(shí),要把loader.bin(或bcdw.bin)作為ISO的引導(dǎo)文件。【圖13】

也可使用mkisofs.exe或CDIMAGE.EXE等工具制作啟動(dòng)iso。

比如我用CDIMAGE制作iso的批處理是:
cdimage -lbcdwcd -t01/01/2007,00:00:00 -h -n -d -o -m -bload.bin bcdwcd bcdwcd.iso

運(yùn)行后bcdw界面與grub界面的效果如下圖。【圖14】【圖15】


2.3 軟盤上的應(yīng)用

在軟盤上應(yīng)用grub,主要有兩種方式,即通過DOS啟動(dòng)grub和把GRLDR引導(dǎo)記錄安裝到軟盤的引導(dǎo)扇區(qū)。【參看1.3 如何安裝grub4dos】

2.3.1 通過DOS啟動(dòng)grub的軟盤應(yīng)用

先把軟盤制作成啟動(dòng)盤,最簡單的一種,軟盤中只需io.sys,msdos.sys和command.com三個(gè)文件。
再把grub.exe和menu.lst拷貝到軟盤根目錄。
新建一個(gè)autoexec.bat文件,里面只需寫上4個(gè)字母。
grub

然后編輯menu.lst,由于軟盤容量所限,一般很難直接在menu中調(diào)用軟盤上的img文件,因此,主要可用來啟動(dòng)硬盤上的img文件,還可用于對(duì)各系統(tǒng)進(jìn)行啟動(dòng)管理。菜單文件中使用的指定路徑的文件(如字體,img文件等),應(yīng)預(yù)先準(zhǔn)備好,否則該選項(xiàng)不能運(yùn)行。(網(wǎng)上也有在軟盤有限的容量里,包括眾多維護(hù)工具的實(shí)例,感興趣的可自行搜索。)
menu.lst文件的例子:

timeout 10

default 0

splashimage (fd0)/boot/grub/xp2008.gz

fontfile (fd0)/boot/grub/fonts

title GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
map --mem (hd0,4)/boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title 尋找硬盤上的/menu.lst
find --set-root /menu.lst
configfile /menu.lst

title 啟動(dòng)第一硬盤第一主分區(qū)(hd0,0)上的操作系統(tǒng)
rootnoverify (hd0,0)
makeactive
chainloader +1

title 啟動(dòng)第一硬盤第二主分區(qū)(hd0,1)上的操作系統(tǒng)
rootnoverify (hd0,1)
makeactive
chainloader +1

title 重啟
reboot

title 關(guān)機(jī)
halt

2.3.2 引導(dǎo)扇區(qū)安裝了GRLDR引導(dǎo)記錄的軟盤應(yīng)用

GRLDR引導(dǎo)記錄安裝后,在軟盤上只需保留有g(shù)rldr和menu.lst及menu.lst中引用到的文件。menu.lst文件與“2.3.1 通過DOS啟動(dòng)grub”的軟盤中使用的是一樣的。

2.4 優(yōu)盤上的應(yīng)用(硬盤上的應(yīng)用不難,而軟盤上的應(yīng)用不流行,所以也重點(diǎn)講講U盤上的應(yīng)用)

在優(yōu)盤上應(yīng)用grub,與軟盤類似,主要有兩種方式,即通過DOS啟動(dòng)grub和把GRLDR引導(dǎo)記錄安裝到優(yōu)盤的引導(dǎo)扇區(qū)。【參看 前 如何安裝grub4dos】

首先把U盤用優(yōu)盤自帶工具或usboot,flashboot等制作成dos啟動(dòng)盤,同時(shí)設(shè)置電腦的cmos里相應(yīng)的選項(xiàng),看優(yōu)盤能否啟動(dòng)進(jìn)入dos,能的話,可繼續(xù)往下閱讀;不能啟動(dòng)的話,可嘗試不同模式、用其它制作工具等,能啟動(dòng)后再往下閱讀。


Ps:由于我的電腦只支持USB-ZIP,USB-FDD,USB-CDROM,不支持USB-HDD,所以第一次我是用ZIP制作U盤的,能在DOS下用bootlace.com –floppy –chs 0x00寫入grub到U盤的MBR,也能用AUTOEXEC.BAT的方法,但想到U+技術(shù)的兼容性,于是又改用UltraISO制作USB-ZIP+,但不能用bootlace.com了,于是想到用grubinst_gui來寫入MBR,但依然不行引導(dǎo)啟動(dòng),不知是主板支持問題還是USB-ZIP+格式的問題,但又為了保證兼容性,最后還是采用AUTOEXEC.BAT的啟動(dòng)方式。

不同的啟動(dòng)模式,U盤啟動(dòng)進(jìn)入dos后,在你的電腦上可能是A盤,也可能C盤。
由于u盤容量大,在u盤上就可以存放各種工具及WinPE。

當(dāng)顯示為A盤時(shí),使用方法類似于軟盤。

menu.lst文件中啟動(dòng)img鏡像文件的用法如:

title GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
map --mem (fd0)/boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

當(dāng)顯示為C盤時(shí),使用方法類似于硬盤。

menu.lst文件中啟動(dòng)img鏡像文件的用法如:

title GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
map --mem (hd0,0)/boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

在上面的例子里,menu.lst中引用文件使用的是絕對(duì)路徑,即(fd0)/boot/grub/gghost.img和(hd0,0)/boot/grub/gghost.img,這種用法對(duì)于特定的機(jī)子是沒有問題的。但在同一U盤,要使用到不同機(jī)子時(shí),可能帶來一個(gè)問題。也就是可能不同的機(jī)子,要用不同的menu.lst文件,否則不能正常啟動(dòng)工具。那么,能否用什么辦法,不用這么麻煩呢?答案是肯定的,那就是使用"find --set-root"和相對(duì)路徑來實(shí)現(xiàn)。這樣就不必為U盤被識(shí)別為fd還是hd煩惱了。

比如,你可以在u盤根目錄建一個(gè)特征文件,如myudisk.txt

這樣在啟動(dòng)u盤上的img鏡像文件就可用下面的方法來實(shí)現(xiàn):

title GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
find --set-root /myudisk.txt
map --mem /boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

啟動(dòng)u盤上的WinPE就可用:

title Micro Windows XPE (by LaoMaotao)?
find --set-root /myudisk.txt
chainloader /ldrxpe

參考其它示例,通過編輯你的menu.lst,你就能夠充分發(fā)揮U盤的效能。

2.5 結(jié)言

本文寫的僅僅是grub4dos的一些最基本應(yīng)用,Grub4dos更多的功能有待你去嘗試和挖掘。
希望這篇文章能有助于你更快地把grub4dos使用起來。
更期待能分享你的成果。


GRUB的文件名字是在設(shè)備名字的基礎(chǔ)上加上文件的路徑,例子:硬盤0上第一個(gè)主分區(qū)根目錄里的aa.img文件:(hd0,0)/aa.img

軟盤0上boot目錄里的aa.img文件: fd0)/boot/aa.img

注意:目錄的分隔符是 / ,而不是Windows/DOS下常用的 \ 。

另外,你還可以用扇區(qū)的位移和數(shù)量來指定數(shù)據(jù),比如:

hd0,0)0+100,200+1,300+300

表示硬盤0上第一個(gè)主分區(qū)里,從扇區(qū)0起的100個(gè)扇區(qū),然后是從扇區(qū)200起的1個(gè)扇區(qū),最后是從扇區(qū)300起的300個(gè)扇區(qū)。當(dāng)位移為零時(shí),可以省略不寫,因此,

hd0,0)+1

表示的是硬盤0上第一個(gè)主分區(qū)里從扇區(qū)0起的1個(gè)扇區(qū),也就是分區(qū)的第一個(gè)扇區(qū)。

GRUB中紀(jì)錄了一個(gè)根設(shè)備,它由root命令來指定,例如: root (hd0,0)

根設(shè)備上的文件可以省略設(shè)備名,例如,使用了以上的root命令后,文件名 +1 就等同于 (hd0,0)+1。

注意:在GRUB4DOS的擴(kuò)展中,map命令中使用的文件名的意義和以上所說的有所不同。在map命令里,(hd0,0)+1表示的不是硬盤0上第一個(gè)主分區(qū)的第一個(gè)扇區(qū),而是整個(gè)分區(qū)。

啟動(dòng)操作系統(tǒng)

啟動(dòng)一般系統(tǒng)

一般來說,操作系統(tǒng)會(huì)在其所在分區(qū)的第一個(gè)扇區(qū)里放入啟動(dòng)代碼。因此,用以下的一組命令一般可以啟動(dòng)硬盤0第一主分區(qū)上的操作系統(tǒng):

rootnoverify (hd0,0) chainloader +1 boot

對(duì)于不同的分區(qū),只要修改設(shè)備名(hd0,0)就可以了。

注意:大部分的操作系統(tǒng)需要在第一只硬盤的主分區(qū)里才能正常啟動(dòng)。

注意:當(dāng)把該組命令作為menu.lst里某一菜單項(xiàng)的內(nèi)容時(shí),最后的命令boot可以省略。

注意:該方法是通用的,它可以用來啟動(dòng)以下提到的系統(tǒng),只要分區(qū)的第一個(gè)扇區(qū)中存在啟動(dòng)代碼。

啟動(dòng)DOS/Windows 95/98/Me

在GRUB4DOS中,chainloader命令可以裝載DOS/Windows 95/98/Me中的io.sys。因此,可以使用類似于以下的一組命令來啟動(dòng)這些系統(tǒng):

rootnoverify (hd0,0) chainloader (hd0,0)/io.sys boot

啟動(dòng)Windows NT/2000/XP/2003/Vista

在GRUB4DOS中,chainloader命令也可以裝載Windows NT/2000/XP/2003中的ntldr和Windows Vista中的bootmanager。因此,可以使用類似于以下的一組命令來啟動(dòng)這些系統(tǒng):

啟動(dòng)Windows NT/2000/XP/2003: rootnoverify (hd0,0) chainloader (hd0,0)/ntldr boot

啟動(dòng)Windows Vista: rootnoverify (hd0,0) chainloader (hd0,0)/bootmanager boot

啟動(dòng)Linux

可以用kernel指令裝載Linux內(nèi)核:

rootnoverify (hd0,0) kernel (hd0,0)/vmlinuz boot

在內(nèi)核(hd0,0)/vmlinuz后可以加上啟動(dòng)的參數(shù)。

當(dāng)啟動(dòng)Linux內(nèi)核時(shí),可以使initrd指令來裝載初始的內(nèi)存盤。

rootnoverify (hd0,0) kernel (hd0,0)/vmlinuz initrd (hd0,0)/initrd boot

注意:chainloader用于裝載啟動(dòng)扇區(qū)和特定的啟動(dòng)文件如io.sys和ntldr,而kernel用于裝載Linux內(nèi)核和符合其標(biāo)準(zhǔn)的啟動(dòng)文件。在一組啟動(dòng)命令中,兩者不能同時(shí)使用。

修改界面的顏色

GRUB界面的顏色可以用color指令來指定。color中指定了兩組顏色,第一組是正常文本的顏色,第二組是加亮文本(當(dāng)前選擇的菜單項(xiàng))的顏色。對(duì)應(yīng)于每組顏色,又需要指定兩種顏色。第一種是前景的顏色,第二種是背景的顏色。因此,在color總共需要指定四種顏色,分別是,正常文本前景,正常文本背景,加亮文本前景和加亮文本背景。

顏色代碼:

black (黑色) red (紅色) green (綠色) brown (棕色) blue (藍(lán)色) magenta (紫色) cyan (青色) light-gray (灰色)

dark-gray (暗灰) light-red (亮紅) light-green (亮綠) yellow (黃色) light-blue (亮藍(lán)) light-magenta (亮紫) light-cyan (亮青) white (白色)

前景色可以使用全部16種顏色,而背景色只能使用前面8種顏色。

例子:

color cyan/blue white/magenta

正常文本前景: cyan (青色) 正常文本背景: blue (藍(lán)色) 加亮文本前景: white (白色) 加亮文本背景: magenta (紫色)

以上例子的顏色在運(yùn)行時(shí)的畫面:

你也可以在顏色矩陣中直觀看到各前景/背景顏色搭配的效果。

color命令一般是作為全局命令,在第一個(gè)title前使用。

使用背景圖片

可以用splashimage命令來加載背景圖片:

spashimage (hd0,0)/spash.gz

圖片必須是640x480,14色的XPM格式,可以用gzip來進(jìn)行壓縮。

使用了該命令后,GRUB啟動(dòng)時(shí)將進(jìn)入圖形模式。這時(shí),color命令指定的文本顏色將會(huì)無效。圖形模式下顏色的設(shè)置應(yīng)該使用foreground命令:

foreground ffff00

以上命令設(shè)置字體的顏色。顏色用RGB值來表示,ffff00是黃色。

如果沒有使用foreground命令,缺省的文本顏色是白色。

以上兩個(gè)命令在啟動(dòng)時(shí)的效果:

該例子中使用的背景圖片可以在這里下載。

常用顏色的RGB值對(duì)應(yīng)表:

000000c0c0c0 800000 ff0000
000080 0000ff 800080ff00ff
00800000ff00 808000ffff00
00808000ffff 808080ffffff

splashimage和foreground命令一般在第一個(gè)title前使用。

使用中文界面

首先,你必須使用支持中文的版本。并且,要正常顯示中文的菜單,你需要使用fontfile命令來裝載中文字體:

fontfile (hd0,0)/fonts.gz

fonts.gz是字體文件,并且使用了gzip來壓縮。例子中使用的fonts.gz可以在這里下載。

fontfile命令可以和splashimage,foreground一起使用。例如:

splashimage (hd0,0)/splash.gz foreground ffff00 fontfile (hd0,0)/fonts.gz

title 啟動(dòng)第一個(gè)分區(qū) root (hd0,0) chainloader +1

title 啟動(dòng)第二個(gè)分區(qū) root (hd0,1) chainloader +1

附一:Grub4dos命令大全

附二:背景圖片的制作方法


總結(jié)

以上是生活随笔為你收集整理的GRUB4DOS使用大全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。