【4 月 3 日更新】 新的 BOOTGRUB 和 GRLDR 可以在以下網頁得到【如果不能訪問,請在第二天重試】:
http://www.ipdown.com/grub4dos/
【2 月 18 日更新】 pre3 漏掉了磁盤仿真部分的出錯信息, 本次的 pre4 糾正了這個 BUG。
請全面測試這個版本.
看看 spalsh 目錄下的 spalshimage 版本的文件是否可以顯示背景畫面。
仍然借用中國 DOS 聯盟 聯合 DOS 論壇 之“啟動盤室”報告 BUG。
下載 grub for dos 0.2.0pre4:
FTP://211.100.7.71/incoming/grub_for_dos-0.2.0pre4.tar.gz
ftp://ftp.cosoft.org.cn/incoming/grub_for_dos-0.2.0pre4.tar.gz
另外注意(Linux伊甸園首頁)以下網址的消息:
http://www.linuxeden.com/download/softdetail.PHP?softid=1026
GRUB for DOS 0.2.0 中文文檔在這裡: GRUB for DOS 磁盤仿真命令簡介 。
grub_for_dos 版本 0.1.x 是一個開發版的系列,在 GNU GRUB 原有的基礎上實現了引導 1.44M floppy.img 的功能。從這裡得到這個軟件:
ftp://ftp.cosoft.org.cn/incoming/grub_for_dos-0.1.4.tar.gz
也可進入目錄查看:
ftp://ftp.cosoft.org.cn/incoming/
感謝 Wengier 兄在 中國DOS聯盟 成員 新DOS時代 為 grub_for_dos 建立 鏡像下載和英文推介網頁 : http://newdos.yginfo.net/grubdos.htm
〖順便說:FreeDOS ——GNU/Linux 的一個極好的補充,有著旺盛的生命力。在需要用到實模式的時候(正如運行 GRUB for DOS 所要求的那樣),我們就想起來 DOS 的好處了。某個著名的 DOS 公司正在努力讓 DOS 消亡,但 DOS 是不會消亡的。那個公司不想要 DOS 了,但是我們還要;DOS 的未來是我們的,不是那個公司的。〗
下載解壓後, 在純 DOS 下 運行 grub.exe 文件即可。不要被“for DOS”這個後綴嚇壞了,實際上你完全可以在 Linux 下正常編譯生成通常的 grub 引導管理器文件,這樣,你的 grub 同樣可以把 軟盤映象文件 模擬成 啟動軟盤 。整個 grub_for_dos 項目就是對 GNU GRUB 的豐富和加強,你可以認為 grub_for_dos 不過就是 GNU GRUB 的補丁而已(源程序就是以補丁的形式出現的)。再次說明,grub_for_dos 是 GNU GRUB 的功能擴展(起初只是讓 GRUB 能夠從 DOS 運行,所以取了“for dos”這樣的名字),不是“只能用於 DOS 環境”的意思。正常編譯之後,安裝在(例如) MBR 中,當然是可以的。
0.1.2 修正了一個讀取軟盤扇區的 BUG;增加了從 menu.lst 菜單安裝 GRUB 到 MBR 的菜單項。使用方法是,將解包後的 boot 目錄拷貝到 C:\ 也就是根目錄下(於是就有了這個文件 C:\boot\grub\menu.lst)。這需要在 Windows 下操作(或者在一個可以創建長文件名的 DOS 下操作),因為在 C:\boot\grub 目錄下有很多長文件名,而你所用的 DOS 或許不能建立長文件名。拷貝完成後,進入純 DOS,運行 grub.exe,當看到菜單後,選擇“install GRUB on (hd0,0) to MBR (hd0) and reboot”這個菜單項就行了。這裡假定你的 C: 盤是 FAT32 格式的,並且分區號是 (hd0,0) 也就是第一塊硬盤上的第一個主分區。
0.1.4 優化了 FreeDOS 的相關代碼,可望能夠在未來的任何 FreeDOS 版本中運行。謝謝 wengier 兄快速的消息。
在“虛擬的” DOS 環境下運行 grub.exe,會出現以下錯誤信息:
Cannot run in protected mode. Must run in real mode.
Windows Me/2000/XP 的用戶獲得“純 DOS”的一個方法是,在資源管理器中格式化一張——有啟動能力的——軟盤,把 grub.exe 拷貝到軟盤上,然後用這個軟盤引導機器,就可進入實模式的 DOS 了。在這個實模式 DOS 的 A:> 提示符下敲入 grub 並回車,就可以看到 grub> 提示符了。
有關 grub_for_dos 的用法和注意事項,請看裡面的 README 和 ChangeLog 文件。這裡摘錄其主要部分:
以下命令集可以引導 Windows 98 SE
map (hd1,0)/dos98se.img (fd0)
chainloader (hd1,0)/dos98se.img
rootnoverify (fd0)
boot
另外一個例子,用 hd.img 文件引導 Mandrake 的安裝程序
map (hd0,0)/hd.img (fd0)
chainloader (hd0,0)/hd.img
rootnoverify (fd0)
boot
軟盤映象的大小必須是 1440KB, 即 1474560 字節。映象文件必須是連續的磁盤塊,不能有碎片。
如果你用 ext2 之類的分區,恐怕無法生成 1.44M 的連續文件。解決的辦法是采用 FAT32 分區。
在 FAT32 分區中將一個文件拷貝成 10 個或 20 個文件,看看哪個文件是連續的,就采用哪個。
在 grub 的提示符下敲入
grub> blocklist (hd0,0)/hd.img
可以看到該 hd.img 文件是由幾個不連續的塊組成。如果沒有逗號,表示是連續的(只有一塊)。逗號越多,表示碎片越多。在敲入 blocklist (hd0,0)/hd.img 命令之後,應當顯示出類似下面這樣的結果:
(hd0,0)879328+2880
879328 是起始扇區號,這個數可以隨便,沒有任何影響。而那個 2880 就是 1.44M 的意思(2880個扇區就是 1440K)。這說明 hd.img 是硬盤上的一個連續的扇區序列,因此你可以把它仿真成軟盤了,好!
如果顯示成類似下面這樣的結果:
(hd0,0)879328+96,880000+2784
你注意到 96 和 2784 加起來正好等於 2880。但是,這個 hd.img 文件不能用來仿真軟盤,因為它在硬盤上是不連續的,它被放置在兩個區域,一個區域是連續的 96 個扇區,第二個區域是連續的 2784 個扇區。要想使用 grub_for_dos 的軟盤仿真(將來還有硬盤和光盤仿真)功能,必須要求——用來仿真的那個區域——是連續的磁盤塊!!我們的實現方法是接管 int13 中斷,是用硬盤區域而不是用內存區域來仿真(將來仿真大硬盤,本來就不可能用內存來仿真的),因而不用接管像 int15 這樣的調整內存大小的中斷。連續的硬盤區域減輕了編程的負擔,也使得仿真之後的硬盤 BIOS 底層操作效率不受到影響。
grub.exe 文件放在任何目錄都一樣,無關緊要,只要你能運行它就行。
hd.img 放在哪裡也是無關緊要。但是,如果不是在根目錄,你需要在上述命令中指出所在的位置,例如 (hd0,0)/somewhere/else/hd.img
如果你的機器沒有軟驅,而你又需要運行某個 floppy.img 上的安裝程序(或者引導程序),那麼這個軟件正是你所需要的。
如果你有軟驅,但想節約軟盤介質(軟盤容易壞掉啊!),也可以試試。
還要說明,map 命令定義了磁盤仿真的映射,如果你不需要從仿真磁盤上引導啟動你的操作系統,你當然可以 chainloader 別的某個引導扇區,並非一定得是這個軟盤的映像文件。