時(shí)間:2011-06-04 08:34
Grub是Linux的一個(gè)系統(tǒng)載入啟動(dòng)程序,正如NTLDR之于Windows NT/2K/XP。它就是為多重引導(dǎo)而生,而且適用于多種平臺(tái),這里所說(shuō)的Windows下的Grub就是Grub4dos。在NTFS格式下,在boot.ini里添加一個(gè)grldr的選項(xiàng),然后編輯它的啟動(dòng)菜單把類(lèi)似DOS.IMG之類(lèi)的文件加載進(jìn)去,就算不是 FAT32 也沒(méi)問(wèn)題了。大白菜官網(wǎng)
可能是介于DOS不能與時(shí)俱進(jìn),微軟在2002年發(fā)布了WinPE(Windows PreInstallation Environment)預(yù)安裝環(huán)境,相當(dāng)于迷你的急救WinXP系統(tǒng)。目前市面上流傳較廣的有老毛桃撒手不管版、深山紅葉工具箱等……,其實(shí)五花八門(mén)的,雖各有見(jiàn)長(zhǎng),但基本都是大同小異。要么你多個(gè)工具軟件,要么我多個(gè)驅(qū)動(dòng)程序。最主要的應(yīng)用當(dāng)然是市面那些DIY的系統(tǒng)安裝光盤(pán),例如什么番茄花園什么豬豬貓什么深度技術(shù)等。
之前用的是Grub/DOS(grldr),后來(lái)裝了老毛桃WinPE帶加密功能的硬盤(pán)版(mtldr),但是折騰了很久還是無(wú)法識(shí)別NVIDIA的網(wǎng)卡驅(qū)動(dòng),而且一些功能報(bào)錯(cuò)(例如 MMC),外掛又是打包無(wú)法直接編輯;后來(lái)發(fā)現(xiàn)最帥的菜鳥(niǎo)專(zhuān)用啟動(dòng)光盤(pán)(RXPE.LDR)竟然能夠識(shí)別NVIDIA網(wǎng)卡,但這個(gè)版本的其他功能卻是非常簡(jiǎn)陋;所以最后通過(guò)深山紅葉WinPE(drldr)的外掛包把NVIDIA的驅(qū)動(dòng)包加載到老毛桃的硬盤(pán)版里。
不管那個(gè)版本的WinPE,光盤(pán)版也好,硬盤(pán)版也好,啟動(dòng)菜單幾乎都是用grub做的;而且多個(gè)版本都是指定了各自的Loader,像什么mtldr、avldr、pxldr等,特別是很多都在C盤(pán)根目錄放置了很多根本可以不用放到根目錄的東東,容易出錯(cuò)且一但有問(wèn)題難排錯(cuò)。既然都是用Grub來(lái)做,那或許應(yīng)該可以用 Grub來(lái)統(tǒng)一引導(dǎo)啟動(dòng)?
先說(shuō)說(shuō)老毛桃WinPE默認(rèn)的安裝目錄為C:MiniPE,默認(rèn)啟動(dòng)文件為C:mtldr。DIY開(kāi)始:首先,在 C:boot.ini里加上一行:C:grldr="Start WinPE with Grub4DOS",然后,下載最新版的 grub4dos,把解壓縮出來(lái)的grldr放到C盤(pán)根目錄。用grldr內(nèi)置菜單編輯工具,把grldr的啟動(dòng)菜單讀取出來(lái),其代碼為:
default 0
timeout 1
fallback 1
title find /menu.lst
find --set-root --ignore-floppies /menu.lst
configfile /menu.lst
title find /boot/grub/menu.lst
fallback 2
find --set-root --ignore-floppies /boot/grub/menu.lst
configfile /boot/grub/menu.lst
title find /grub/menu.lst
fallback 3
find --set-root --ignore-floppies /grub/menu.lst
configfile /grub/menu.lst
title commandline
commandline
title reboot
reboot
title halt
halt
可以看出grldr會(huì)去幾個(gè)位置找menu.lst,優(yōu)先查找根目錄,若根目錄沒(méi)找到menu.lst,就會(huì)去舊版本的位置/boot/grub/menu.lst查找。用GRUB菜單密碼MD5工具得到某密碼如:123456的MD5 = $1$8$pSqK8hjjgmdb73MJlsrnj1,將上面這段內(nèi)容修改為下面的代碼并保存到剛剛的grldr中:大白菜官網(wǎng)
default 0
timeout 0
fallback 1
title WinPE with Grub4DOS
password --md5 $1$8$pSqK8hjjgmdb73MJlsrnj1
find --set-root --ignore-floppies /menu.lst
configfile /menu.lst
title Back
rootnoverify (hd0,0)
makeactive
chainloader +1
這樣,ntldr加載boot.ini后,當(dāng)我們選擇“Start WinPE with Grub4DOS”時(shí),grldr就會(huì)出現(xiàn)上面我們編輯好的菜單(因?yàn)檠訒r(shí)0秒所以基本不可見(jiàn)),因?yàn)槟J(rèn)是第0個(gè)選項(xiàng),所以來(lái)到輸入密碼的界面;如果密碼輸入錯(cuò)誤或菜單文件放置有誤,則會(huì)fallback回第1個(gè)選項(xiàng)(即回到第一塊硬盤(pán)的第一個(gè)分區(qū)也就是C盤(pán))。當(dāng)正確輸入123456密碼并菜單放置正確后,grldr會(huì)自動(dòng)找到并加載我們編輯好的新的菜單/menu.lst:
color black/cyan yellow/cyan
timeout 20
default 0
title 00. Start WinPE (LaoMaoTao)
find --set-root /boot/winpe.iso
map --mem /boot/winpe.iso (hd32)
map --hook
chainloader (hd32)
boot
title 01. Start Power WinPE (Data/File)
find --set-root /boot/powerpe.iso
map --mem /boot/powerpe.iso (hd32)
map --hook
chainloader (hd32)
boot
title 02. Start WinPE (Network/Kaspersky)
find --set-root /boot/reboot.iso
map --mem /boot/reboot.iso (hd32)
map --hook
chainloader (hd32)
boot
title 03. Start Rescue DOS (MSDOS v7.1)
find --set-root /boot/rdos.img
map --mem /boot/rdos.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title 04. Start Recovery DOS (Ghost/DishGenis)
find --set-root /boot/ghost.img

map --mem /boot/ghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title 05. Start Ram Windows XP
find --set-root --ignore-floppies /boot/ramxp/ramxp.dsk
kernel /boot/ramxp/memdisk raw
initrd /boot/ramxp/ramxp.dsk
title 06. Load MemTest-86 Program
kernel (hd0,8)/boot/memtest.bin
title 07. Load from other Menu.lst
find --set-root /grldr
configfile /boot/menu.lst
title 08. Find/Load Windows NT/2K/XP (NTLDR)
find --set-root /ntldr
chainloader /ntldr
#title Find/Load Windows 9x/Me (IO.SYS)
#find --set-root /io.sys
#chainloader /io.sys
title 09. Boot from CDROM
find --set-root /boot/sbootmgr.dsk
map --mem /boot/sbootmgr.dsk (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title 10. Boot from HardDisk #1 (HD0,0)
root (hd0,0)
chainloader +1
title 11. Boot from HardDisk #2 (HD1,0)
root (hd1,0)
chainloader (hd1,0)+1
#title (?) Grub Command Line
#commandline
title (!) Reboot
reboot
title (x) Shutdown
halt
title <=== Back ====
rootnoverify (hd0,0)
makeactive
chainloader +1
更新一下:
1、把boot目錄放到其他盤(pán)(C盤(pán)根目錄就只有g(shù)rldr和menu.lst兩個(gè)文件了)。預(yù)防萬(wàn)一,若C盤(pán)被誤格等,辛苦制作的硬盤(pán)版啟動(dòng)文件還在。
2、把老毛桃和深山紅葉和最帥菜鳥(niǎo)的ISO直接加載;他們的外置程序則是放置在ISO所在分區(qū):/MiniPE、/BOOT、/RXPF 目錄下 —— 經(jīng)過(guò)多次測(cè)試能完美解決grub加載ISO無(wú)法使用外置程序(其實(shí)無(wú)論外置還是內(nèi)置,現(xiàn)在都是OK的)的問(wèn)題。
3、加了個(gè)RamXP,哈哈,目錄任意,效果挺不錯(cuò)。其實(shí)沒(méi)什么用,就試下效果。dsk格式的文件挺不錯(cuò)。但找不到有什么編輯工具。
菜單的樣子大概如下圖(VMware下的調(diào)試狀態(tài),未一一對(duì)應(yīng)以上菜單代碼):
高級(jí)DIY應(yīng)用:在這個(gè)界面,高亮你要選擇的選項(xiàng)后:按“b”鍵或回車(chē)啟動(dòng);按“e”鍵可以進(jìn)入編輯狀態(tài);按“c”鍵進(jìn)入命令行模式。進(jìn)入選項(xiàng)編輯狀態(tài)后,還可以繼續(xù)“e”進(jìn)入內(nèi)容編輯狀態(tài),按“Esc”取消修改;按“Enter”應(yīng)用修改 —— 其實(shí)這些已經(jīng)是相當(dāng)于Linux/Ubuntu的啟動(dòng)了。
還有一個(gè)問(wèn)題:在boot.ini菜單可以添加C:bootsect.cdr="Boot from CDROM",利用512字節(jié)的光驅(qū)引導(dǎo)文件bootsect.cdr來(lái)啟動(dòng)光驅(qū),但這個(gè)文件在grub4dos無(wú)法應(yīng)用。甚至用“scdrom --install”和“scdrom --bootcd”都無(wú)法解決,報(bào)無(wú)法識(shí)別。留點(diǎn)缺陷美才是完美?。。。?!大白菜官網(wǎng)
愛(ài)華網(wǎng)本文地址 » http://www.klfzs.com/a/25101011/86382.html
愛(ài)華網(wǎng)


