注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

chunwaihome 的博客

 
 
 

日志

 
 

多重啟動程式grub4dos  

2009-09-16 13:56:27|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

GRUB for DOS(GRUB4DOS)是一個以 GNU GRUB 為基礎的功能強大的引導器。它可以在 DOS 和 LINUX下運行,也可以通過其他引導器來運行,還可以作為MBR運行。GRUB4DOS內置了功能完善的 BIOS 級磁盤仿真。

Grub4dos作為硬碟或USB盘多重啟動引導文件的程式,它還能直接引導img/iso 等 floppy/cdrom 的映像檔。

下載地址:http://download.gna.org/grub4dos/

下載後不需要安裝,直接解壓就可以了。解壓後的目錄裏主要有三個核心檔案分別是grldr,grub.exemenu.lst。

安裝Grub4Dos

將grldr檔複制到c盘裏,然後打開boot.ini。這個是唯讀檔,你可以用命令的方式解除它的唯讀讀屬性。

attrib -s -r -h c:\boot.ini

s代表system,r代表read-only,h代表hidden,而-表示消除的意思,而+就恰恰相反。

然後加下面的命令到boot.ini裏

c:\grldr= "啟動grub4dos"

這樣在開機的時候,你會在啟動菜單上看見"啟動grub4dos"這一項。最後把menu.1st複制到c:盘裏,它是grub4dos的設定檔。下面是menu.1st的例子


以#開始的行,表示註釋,不執行

color blue/green yellow/red white/magenta white/magenta
timeout 30
default /default

#默認延遲時間(秒)

title find and load NTLDR of Windows NT/2K/XP
fallback 1
find --set-root --ignore-floppies /ntldr
chainloader /ntldr
savedefault --wait=2

#title後面的文字是出現在grub4dos啟動清單的表題,fallback1這行命令是固定的,即第一個啟動清單是fallback1,第二個啟動清單是fallback如此累推,find --set--root /ntldr這行是嘗試尋找/ntldr的來引導boot.ini。至於什麼是ntldr,可參考註解一


#####################################################################
# write string "cmdcons" to memory 0000:7C03 in 2 steps:
#####################################################################
# step 1. Write 4 chars "cmdc" at 0000:7C03
write 0x7C03 0x63646D63
# step 2. Write 3 chars "ons" and an ending null at 0000:7C07
write 0x7C07 0x00736E6F
savedefault --wait=2

title find and load IO.SYS of Windows 9x/Me
fallback 4
find --set-root /io.sys
chainloader /io.sys
savedefault --wait=2

嘗試尋找在根目錄下的io.sys檔案,它是windows9x的管理開機程序的檔案,相等於在windows XP裏的ntldr。

詳情可參考註解二

title 啟動第一硬盤第一主分區(hd0,0)上的操作系統
rootnoverify (hd0,0)
makeactive
chainloader +1

啟動第一硬盤第一主分區(hd0,0)上的操作系統,(hd0,0)表示在第一塊硬盘的第一個主啟動分區。

至於怎樣定義這些值可參考註解四

title find and boot 0PE.ISO
fallback 5
find --set-root /0PE/0PE.ISO
map /0PE/0PE.ISO (0xff) || map --mem /0PE/0PE.ISO (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2

嘗試在OPE的目錄裏引導OPE.ISO檔案,map命令可理解為平時我們用虛擬光盘軟件例如酒精去掛(mount)

ISO檔案。

title MAXDOS.IMG
find --set-root --ignore-floppies /boot/MAXDOS.IMG
map --mem /boot/MAXDOS.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

嘗試在boot目錄裏以floopy(fd0)的方法掛載maxdos.img的檔案,map --mem表示將掛載的影像檔儲存到內存裏,在這裏你可能同時掛載了很多的img或者iso檔,而導致grub4dos的啟動清單顯得很混亂,那有沒有能夠掛載多個影像檔又不會引致清單混亂的方法?

答案當然是有啦方法看註解三吧

title commandline
commandline

進入命令行

title floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)

title back to dos
quit

回到命令行模式

title reboot
reboot

重新開機

title halt
halt


註解一

NTLDR一般存放於C盤根目錄下,是一個具有隱藏和只讀屬性的系統文件。

它的主要職責是解析Boot.ini文件如果計算機上安裝了多個操作系統,由於NTLDR加載了正確的Boot.ini文件,那麼在啟動的時候將會出現要求選擇操作系統的菜單,NTLDR正是從boot.ini文件中查找到系統文件的分區位置。如果選擇了NT系統,那麼NTLDR將會運行NTDETECT.COM文件,否則NTLDR將加載BOOTSECT.DOS,然後將控制權交給BOOTSECT.DOS。如果Boot.ini文件中只有一個操作系統或者其中的timeout值為0,那麼將不會出現選擇操作系統的菜單畫面,如果Boot.ini文件非法或不存在,那麼NTLDR將會嘗試從默認系統卷啟動系統。

明白了什麼是ntldr,我相信你一定碰過開機時出現以下的錯誤訊息:
NTLDR is missing
Press any key to restart

解決方法:

可以先用開機光碟開機,到DOS模式下。

輸入「copy d:\i386\ntldr c:\」(如果Windows XP安裝碟在d:),及「copy d:\i386\ntdetect.com c:\」,選擇覆寫便可。然後再到C:\WINDOWS\>輸入「fixboot」,系統會要求確定寫入開機磁區,按「Y」確定便可。

如果使用 MS-DOS 進行這項檔案取代作業,您可能需要使用 attrib 命令移除檔案的系統屬性、唯讀屬性以及隱藏屬性。

attrib ntdetect.com -r -s -h

attrib ntldr -r -s -h

註解二

IO.SYS的內部啟動菜單
Win 9X的IO.SYS由原DOS的系統文件IO.SYS、MSDOS.SYS合併而成,提供標準硬件的輸入/輸出接口和DOS的中斷調用它基本上控制著Win 9X的全部啟動過程,是Windows的DOS實模式的核心文件。但它需要根據MSDOS.SYS的設置才能實現正常的啟動過程。
IO.SYS可由啟動功能鍵改變啟動過程,這些功能鍵對應著啟動菜單各選項
對應的啟動菜單項可以按F4,它會出現以下的啟動清單
1)Previous MS-DOS version F5: (啟動到舊有的DOS版本)
2)Safe mode Shift+F5:                 (開啟到安全模式)

3)Command prompt only F6:        (開啟命令行模式)
4)Safe mode with network support F8:(開啟到支援網絡的安全模式)

註解三

可以在啟動grub進入菜單後,選擇「Boot from Floppy image XXX」後,按「e」進入編輯狀態,移動方向鍵,修改xxx.img為需要啟動的文件名,回車,按「b」啟動即可。(img文件保存在其它路徑的話,則改成相應的路徑。)

註解四

初學者使用絕對路徑時要注意GRUB對設備的命名方法。系統的第一個硬盤驅動器表示成(hd0),其上的第一個分區表示為(hd0,0),也就是說對於硬盤,採用(hdx,y)的形式來表示,x、y都是從0開始計數的,x表示硬盤號,y表示分區號。
    由於主分區只能有四個,所以第一硬盤的四個主分區分別用(hd0,0)~(hd0,3)來表示;邏輯分區則從(hd0,4)開始算,即第一邏輯分區用(hd0,4),第二邏輯分區用(hd0,5)來表示,依次類推。
    一般機子的硬盤都是一個主分區,其餘是邏輯分區。因此C盤用(hd0,0),D盤用(hd0,4)來表示。 光盤用(cd)表示,第一軟驅用(fd0)表示。

  评论这张
 
阅读(1154)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017