歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

用 GRUB 來引導軟盤映象——節約軟盤介質了

   【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 別的某個引導扇區,並非一定得是這個軟盤的映像文件。

已知的問題: 正如上面所說,GRUB 對於磁盤的仿真是基於 BIOS 的 int13。那些使用 BIOS 的操作系統,在 GRUB 仿真之下能夠很好地運轉。這些系統有:各種各樣的 DOS;Windows Me 以前的系統(Wengier 說包括 Windows Me)。(Wengier 說)只有 Windows NT 系列才脫離了 BIOS。已知 LINUX 也不使用 BIOS。 ——那些使用 BIOS 的操作系統都能正常使用 GRUB 的磁盤映射功能嗎?

——是的。磁盤映射一旦由 map 命令定義,這個映射從操作系統的引導開始就有效,一直持續到操作系統退出為止。如果你在 grub 中用 map 命令定義了軟盤的映射,此後你用 chainloader 命令引導了 Windows 98,則在 Windows 98 之下,你訪問到的軟盤,就是你的 img 文件的內容。相反,如果你用 chainloader 命令引導了 windows 2000,則在 Windows 2000 中你有可能看不到仿真後的軟盤,你可能發現,軟盤操作總是指向你的真實軟驅。 ——那些不使用 BIOS 的操作系統就不能用 GRUB 的磁盤映射功能了嗎? ——在這些操作系統引導的時候,磁盤映射還是起作用的。但是,當這類操作系統的內核引導完畢之後,它就不再使用仿真了。例如,你用一個軟盤映象文件引導了 Linux,在 Linux 內核開始運行之後,Linux 就不使用仿真了。假如這時你訪問 /dev/fd0 ,可以看到軟盤驅動器的燈亮了。此時假如你還想找回你的軟盤映象 img 文件



——在這些操作系統引導的時候,磁盤映射還是起作用的。但是,當這類操作系統的內核引導完畢之後,它就不再使用仿真了。例如,你用一個軟盤映象文件引導了 Linux,在 Linux 內核開始運行之後,Linux 就不使用仿真了。假如這時你訪問 /dev/fd0 ,可以看到軟盤驅動器的燈亮了。此時假如你還想找回你的軟盤映象 img 文件



Copyright © Linux教程網 All Rights Reserved