Grub4dos 硬盤引導 iso 文件


一、第一次成功
  網上有成功地用grub4dos引導iso文件的案例,我試圖引導winpe的iso文件卻一直未能成功。
在虛擬機xp上安裝了廢客dos工具箱,從安裝目錄中提取出isogrub.iso文件,放到任意盤的根目錄下,在menu.lst文件寫入如下命令:

============================
title find and boot isogrub.iso
fallback 1
find --set-root /isogrub.iso
map /isogrub.iso (0xff) || map --mem /isogrub.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2
============================
重啟電腦,用grub4dos居然成功引導。並且成功地啟動了里面的winpe。於是進真實機上試驗,在進入桌面的時候藍屏。看來原因在於,這個winpe與我的硬件不兼容。
不過畢竟用grub4dos成功引導了iso文件,這一實事表明了這種方式的可行性。

 

二、既然直接引導下載的winpe的iso文件不成功,原因應該是這些iso文件本身不適合於用grub4dos引導。抱着試試看的心態,用grub4dos來引導自帶winpe的ghost系統光盤的iso文件。menu.lst中寫入的命令是:

==============================
title find and boot winxp.ISO
fallback 1
find --set-root /winxp.iso
map /winxp.iso (0xff) || map --mem /winxp.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2
===============================
居然一次就獲得了成功。
用ghostxp電腦公司版的獲得了成功,用雨林木風版的同樣的獲得了成功。
並且,這個iso文件並不一定要放在windows分區,放在linux分區下同樣的獲得了成功。我的linux分區是ext4文件系統。

 

三、意外地成功直接引導啟動了win7安裝光盤的iso文件。
在menu.lst中寫了兩段引導菜單:

======================================

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


ttitle installwin7
find --set-root /7600.16385.090713-1255_x86fre_client_zh-cn_Retail_Ultimate-GRMCULFRER_CN_DVD.iso
map /7600.16385.090713-1255_x86fre_client_zh-cn_Retail_Ultimate-GRMCULFRER_CN_DVD.iso (0xff) || map --mem /7600.16385.090713-1255_x86fre_client_zh-cn_Retail_Ultimate-GRMCULFRER_CN_DVD.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2

==================================================

第一段是可以直接引導一個xp的ghost光盤鏡象的。
后面這一段意在引導win7的安裝光盤鏡象,只是誤把title寫成了ttitle,這樣后面的一段與前面的一段就混在了一起了。在啟動菜單中點擊find and boot winpe.ISO,啟動的居然不是那個ghost光盤,而是直接啟動了win7的光盤鏡象。我把這個錯誤改正過來,點擊installwin7的時候,居然報錯。啟動不了。暈!看來是誤打誤撞解決了一個多少高人未能解決的難題。
不要以為這樣就可以安裝win7了,這樣啟動的win7光盤,其實只是啟動了win7安裝光盤所自帶的winpe系統而已。也無法進入這個安裝光盤中的sources文件夾,因而仍然無法直接從iso文件中啟動安裝程序。需要先把win7光盤解壓后,然后再在這個winpe下,運行sources下的setup.exe程序。

另外,通過引導iso文件啟動的winpe,一般也不能加載外置程序(這主要是一些winpe沒有考慮到用這種方式進行啟動),需要先把一些外置程序放在可以訪問的windows分區里面。

grub4dos引導加載iso是一次性的,因而也不可能直接用它引導winxp和win7的安裝光盤進行系統安裝。前面引導win7安裝光盤的成功,其實也不過是引導加載了win7安裝光盤中自帶的winpe而已。

還需特別說明一點,這種方式要想引導成功,要求文件在硬盤上必須是連續存放的。

由於這種方式引導啟動的也不過是光盤中自帶的pe而已,並且要求文件是連續存放的,所以這樣的一種引導並沒有實際意義。網上有現成的win7pe的iso文件下載。可以下載來直接引導。另外可以自己制作,用Ultraiso打開win7光盤鏡象,只保留bootmgr文件,boot文件夾以及里面的所有文件。保留sources文件夾以及里面的boot.wim文件。其余的全部刪除掉。另存為標准iso文件即可。


四、引導安裝ubuntu9.10,把下載的映象文件放在任意盤的根目錄上,在menu.lst中寫入如下命令:

title Install ubuntu
find --set-root /ubuntu-9.10-desktop-amd64.iso
map    /ubuntu-9.10-desktop-amd64.iso (hd32)
map --hook
kernel (hd32)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-9.10-desktop-amd64.iso
initrd (hd32)/casper/initrd.lz
boot

不過,這里有一個要點,我這里所用的寫法是
map    /ubuntu-9.10-desktop-amd64.iso (hd32)
這種寫法要求文件在硬盤上是連續存放的。
采用下面的寫法:
map --mem    /ubuntu-9.10-desktop-amd64.iso (hd32)
這種寫法並不要求文件在硬盤上是連續存放着的,它是把整個的文件讀入內存了。這個文件不過700m左右而已,我的內存是1.5G,正常來說,應該能夠成功的。但我的實踐卻是失敗的。這有兩種可能,一種是內存還不夠大。另一種是,並不是因為內存的原因。而是因為這種辦法引導啟動后,由於不能繼續讀取文件。所以安裝程序不能繼續。看來基本上可以確認是第二種原因造成的。

如何知道文件在硬盤上是連續存放的呢?在grub4dos下輸入命令:
blocklist filename
比如:
blocklist /ubuntu-9.10-desktop-amd64.iso
我的顯示的結果是:
(hd0,8)640+1414752
這表明只有一個塊,如果后面還跟着逗號,比如:
(hd0,8)640+1414752,1515752+8
這就是兩個塊,不是連續存放的。
我的試驗表明,只要文件在硬盤上不是連續存放的,用map而不加--mem參數,是必會失敗的。所以這樣的一種引導安裝ubuntu的辦法並不好。


五、未能成功的可能原因。
網上找到的資料是這樣說的:

=============================
倘若引導不成功,通常可能的原因有:

(1)光盤鏡像的CD-ROM文件系統是Joliet CD格式,GRUB4DOS不支持這種格式。你需要通過工具轉換一下鏡像文件的文件系統格式。
(2)BIOS中激活了SATA的AHCI模式。GRUB4DOS可能無法兼容AHCI模式,應在BIOS中將SATA模式設置為IDE。
==============================

后來的試驗表明了,我把一個不能成功引導的winpe的iso文件,用UltraISO工具轉為標准的iso文件,果然成功得以引導。
最新的grub4dos已經能夠兼容AHCI模式了,這在我的機器上得到了證明。所以如果iso文件不能成功引導,問題基本上出在這個iso文件的文件系統格式不為grub4dos支持,用UltraISO把它轉為標准的iso文件即可吧。


另:把menu.lst中寫入的命令中的0xff換成hd32也能成功引導,比如:

title winpeboot.iso
#fallback 1
find --set-root /winpeboot.iso
map --mem /winpeboot.iso (hd32)
map --hook
chainloader (hd32)
savedefault --wait=2

 


最后特別說明一點,由於可以輕松實現用grub4dos引導iso文件的winpe,使得在linux下硬盤引導安裝windows變得毫無障礙。


ps:由於要實現文件在硬盤上是連續存放的有較大的難度。所以不得不把文件完全地讀入內存,這就要求如果內存不是很大的話,用來引導的iso文件也不能很大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM