===================================================================
bean對grub4dos作出的巨大貢獻總結:
一、2005-12-3給grub4dos打上了WinME補丁,這個補丁修正了chainloader 不能啓動WinME的IO.SYS的問題。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=359&extra=page%3D10
2005-12-10新版的WinME補丁
http://bbs.znpc.net/forum.php?mod=viewthread&tid=359&page=1&fromuid=12697#pid2138
二、2007-2-6 grubinst更新:增長對NTFS文件系統的本地支持
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2249&highlight=%2Bbean
2007-2-23grubinst更新:支持grub2和NTFS壓縮文件
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2311&highlight=%2Bbean
2007-8-8grubinst更新:能夠跳過嚴格的mbr測試
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3885&highlight=%2Bbean
三、2007-2-15編寫了通用引導程序grldr.mbr,支持安裝到mbr,支持經過vista和win7中加載。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2300&extra=page%3D10
2007-3-18提出把GRLDR.MBR做爲通用的引導程序的一些想法
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2461&extra=page%3D10
四、2007-3-4創建了GRUB4DOS項目空間@gna.org,https://gna.org/projects/grub4dos/
五、2007-3-9編寫了GRUB4DOS中文文檔@SF.net,增長grub4dos高級功能和grub4dos命令索引說明
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2369&extra=page%3D10
六、2007-4-7編寫了修改內置菜單的命令行工具grubmenu
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2664&highlight=%2Bbean
七、2007-4-18日爲GRUB4DOS增長了PXE網絡啓動功能
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2931&highlight=%2Bbean
八、2007-4-23提出了在GRUB4DOS中實現內存管理和動態模塊的想法
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3117&extra=page%3D10
九、2007-7-8關於grub4dos中啓動代碼分離的想法
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3736&highlight=%2Bbean
2007-10-10提出GRUB4DOS中啓動代碼分離的具體構思,包括採用模塊化的設計,建議把grub4dos分爲啓動模塊、分區模塊、文件系統模塊、格式處理模塊、擴展功能模塊、通用函數模塊、腳本解析模塊
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3736&highlight=%2Bbean
十、2007-10-15 提出了新一代GRUB4DOS的想法,包括啓動管理器分離、使用Unicode,不區分中英文版本、利用gettext實現多語言支持、內存管理器和動態模塊、圖形界面的改進
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4156&highlight=%2Bbean
十一、2007-12-6日編寫了loadbin在不一樣的啓動管理器中啓動grub,grub2,grub4dos 和 ntldr
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4273&extra=page%3D6
十二、2007-12-20日提出了關於迷你grub4dos的想法
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4311&highlight=%2Bbean
並與2007-12-25日發佈了迷你版grub4dos測試版
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4335&highlight=%2Bbean
1三、2007-12-21日使用makerom製做grub,grub4dos,grub2和grldr.mbr的啓動bootrom
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4315&highlight=%2Bbean
1四、2008-3-28grub4dos新功能測試:在不一樣時間段執行不一樣的命令checktime。使用它,你能夠使得某些命令只有在某一時間段內才執行。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4591&highlight=%2Bbean
1五、2009-1-1爲grub4dos增長gfxmenu支持
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5496&extra=page%3D7
1六、2009-5-4日提出關於萬能啓動U盤的想法
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5629&extra=page%3D1
2009-5-6日萬能啓動u盤製做工具fbinst (最新穩定版本1.2)
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5631&extra=page%3D8
2009-5-29日fbinst v1.4:增長文件管理功能
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5664&extra=page%3D8
2009-6-7日fbinst v1.5:分離菜單文件,支持syslinux
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5669&extra=page%3D1&page=1
fbinst啓動問題專用貼
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5663&extra=page%3D1
最新 fbinst 1.6 正式版,2010年8月10日更新,1樓有 FbinstTool 10601正式版
http://bbs.wuyou.com/viewthread.php?tid=169595
==============================================================================================
bean對grub4dos所作的貢獻
http://bbs.znpc.net/forum.php?mod=viewthread&tid=359&extra=page%3D10
bean發表於 2005-12-3 16:43
grub_for_dos 0.4.1 的 WinME 補丁php
這個補丁修正了chainloader 不能啓動WinME的IO.SYS的問題。html
基本原理:
不一樣於Win98以及之前的IO.SYS,WinME的IO.SYS是通過壓縮的,所以在把IO.SYS複製到內存後,要通過解壓後才能使用,其基本過程以下:linux
一、把IO.SYS從0x800開始的數據讀入70:0。(此步同Win98)
二、把70:0的數據移到常規內存的最高處。
三、以塊的形式把數據解壓回70:0
四、把di設爲解壓後數據的長度
五、設置dx的值,而後轉入70:0執行。(此步同Win98)ios
WinME 的IO.SYS的結構:web
0-0x7FF: 4個扇區的BOOT程序
0x800: word 0x4D43 ( 'CM' ) 壓縮IO.SYS的標誌。
從0x802開始是壓縮塊,每塊以3個字節的屬性字段開始。
字節0:
0 - 塊是非壓縮塊
1 - 塊是壓縮塊
對於壓縮塊,從塊開始+5處是一個0x5344的字。
字節1-2:長度字段len
對於壓縮塊,下一個塊的開始位置是本塊位置+1+len
對於非壓縮塊,下一個塊的開始位置是本塊位置+1+2+len算法
若某一塊的長度爲0,則它標誌着數據塊的結束。spring
在數據塊後緊接着的第一個段,是程序塊,它的結構爲:
字節0-1:標誌字節 0x4D43 ( 'CM' )
字節2-3: 解壓程序相對於本塊開始的位移
字節4-結束:解壓程序的代碼和數據shell
我在附件中包含了此補丁的源程序grub-winme-1129,此補丁對應於grub_for_dos-2005-11-29.zip,而且應該在grub-0.97-patch4-emulation後使用。windows
附件中的grub.exe和grldr是編譯後的版本,它應用了補丁patch1 - patch5, 以及grub-winme-1129。api
我所使用的IO.SYS也包含在附件中,它來自於英文版WinME, WinVer是 4.90.3000,你們能夠測試一下其它的版本。
附件
grub_winme_patch.tar.gz (265.54 KB)
2005-12-3 16:43, 下載次數: 237
使用源文件編譯的朋友請注意一下,以上的補丁文件由於忘了使用條件編譯,所以在編譯Grub Shell時會出現變量chain_is_winme沒有找到的錯誤,修正後的補丁文件以下。
附件
grub-winme-1129 (5.18 KB)
http://bbs.znpc.net/forum.php?mod=viewthread&tid=359&page=1&fromuid=12697#pid2138
bean發表於 2005-12-10 08:09
新版的WinME補丁
附件裏包含了新版的WinME補丁,這個版本徹底用C語言編寫,並且增長了解壓的部分(原來版本是使
用IO.SYS裏面的函數來解壓)。
IO.SYS裏面使用了滑動窗口的壓縮(LZ77),而位移和長度字段均使用了變長字節編碼:
位移:
00:後接6位數據,位移範圍 0 - 0x3F
110: 後接8位數據,位移範圍 0x40 - 0x13F
111: 後接12位數據,位移範圍 0x140 - 0x113F
01/10: 後面7位是直接的數據,數據的最高位取0/1
當出現位移0x113F是,代表一個段的結束。解壓後,除了最後一個段外,其餘各個段的長度都應該是
512。
長度:
1:沒有後接位,長度是2
01:後接1位數據,長度範圍 3-1
001:後接2位數據,長度範圍 5-8
0001:後接3位數據,長度範圍 9-0x10
00001: 後接4位數據,長度範圍 0x11-0x20
000001:後接5位數據,長度範圍 0x21-0x40
0000001: 後接6位數據,長度範圍 0x41-0x80
00000001: 後接7位數據,長度範圍 0x81-0x100
000000001: 後接8位數據,長度範圍 0x101-0x200
000000000: 做出錯處理
附件裏還包含一個獨立的應用程序expios,它把關於IO.SYS的處理分離出來,能夠用做測試。其使用
以下:
一、expios io.sys
若是沒有輸出信息,則基本的解壓檢測經過
二、expios io.sys io_out.sys
把解壓後的io.sys寫入io_out.sys中,若是用二進制編輯器打開io_out.sys,應該能夠看到英文的字
符串。解壓後的io_out.sys不能直接做爲IO.SYS,不過能夠使用grub來啓動。
expios.exe是編譯後的Win32命令行程序,其餘系統的用戶能夠用gcc來編譯:
gcc -D__unix -o expios expios.c
grub-winme-c-1129是補丁的源程序,它與前一版本的grub-winme-1129不兼容,請不要同時使用。
附件
grub_winme_c.tar.gz (392.94 KB)
2005-12-10 08:09, 下載次數: 168
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2249&highlight=%2Bbean
bean發表於 2007-2-6
grubinst更新:增長對NTFS文件系統的本地支持
下載地址:
http://grub4dos.sourceforge.net/grubinst-1.1-beta5-bin-w32.tar.gz
http://grub4dos.sourceforge.net/grubinst-1.1-beta5-src.tar.gz
從grubinst 1.1 beta5 起,增長了對NTFS文件系統本地支持的代碼,也就是說,如今在
NTFS上引導GRLDR的時候,再也不要求在分區上有微軟的啓動代碼。把GRLDR.MBR安裝到MBR
後,其啓動代碼能自動搜索和引導硬盤上全部FAT16/FAT32/NTFS/EXT2分區(包括主分區
和擴展分區)上根目錄的GRLDR文件。
GRLDR的NTFS引導代碼也能夠安裝到分區上,不過要注意不要安裝到系統分區上,不然它
將會覆蓋微軟的啓動代碼。
另外,grubinst增長新參數--boot-file,利用它能夠指定在NTFS分區上啓動文件的名字,
缺省值是GRLDR。例如,利用
grubinst --boot=file=grldr.new DEVICE_OR_FILE
安裝後,在啓動時將會在NTFS上引導grldr.new而不是grldr,當前該功能只有在NTFS分區
上實現,在其餘FAT16/FAT32/EXT2分區上,依然只能引導GRLDR。要注意的是,啓動文件
的名字長度最多隻能是11個字符(包括 "." ),而且必須是英文。
利用該功能,你甚至可讓GRLDR.MBR在NTFS分區上引導微軟的啓動管理器:
grubinst --boot-file=ntldr DEVICE_OR_FILE
當前NTFS訪問代碼的限制:
一、不支持壓縮或加密的GRLDR文件,分區的根目錄也不能是壓縮的。
二、不支持$ATTRIBUTE_LIST屬性,也就是說,當根目錄的文件很是多或在硬盤上的分配非
常散的時候,有可能找不到其中的GRLDR。
關於源代碼:
NTFS的啓動代碼是在ntfsbs.S裏,它能夠獨立編譯,編譯後會生成NTFS的啓動扇區代碼
ntfsbs.bin。
grldrstart.S是由不點的Grub4Dos 0.4.2的代碼中修改而來,編譯後會生成GRLDR.MBR。
修改的地方有:
一、用#include "ntfsbs.S" 把NTFS的代碼加入到grldr.mbr中,編譯後,NTFS的啓動
代碼的位置是0xA00,長度爲3個扇區。最終的grldr.mbr爲16個扇區。
二、當搜索到NTFS分區時,直接使用grldr.mbr內的代碼引導,而再也不裝載硬盤上可能
存在的微軟啓動代碼。
三、出錯返回的代碼從0x7e00轉到0x8200,這是因爲如今NTFS啓動扇區爲3個扇區,裝載
到內存後將佔用0x7c00 - 0x8200的空間。
[ 本帖最後由 bean 於 2007-2-6 13:06 編輯 ]
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2249&page=3&fromuid=12697#pid49513
不點發表於 2011-12-26
您使用的 grubinst,屬於比較舊的版本了。bean 已經再也不開發 grubinst 了。因此,不建議採用 grubinst。若是您實在想用 grubinst,建議使用英國人 steve 改造後的版本,或者使用 chenall 改造的版本。
發現您是在 windows 下使用 grubinst,所以,建議用 BOOTICE 這個軟件來代替。
請在搜索引擎裏面找相關的資料和軟件。
關鍵點:老版本的 grubinst 中的引導代碼很舊,不少 bug 未修復。所以建議採用較晚開發的軟件(或者版本)。
用 grub4dos 自帶的 bootlace.com 也是能夠安裝的,您能夠讀一讀 readme。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2311&highlight=%2Bbean
發表於 2007-2-23 17:32
grubinst更新:支持grub2和NTFS壓縮文件
beta7:
* 增長對NTFS壓縮文件的支持
beta6:
* 支持設置啓動文件的名字和裝載的段地址
* 支持導出grldr.mbr文件
* 支持引導grub2內核
* 修正了部分NTFS分區訪問的bug
使用簡介:
一、支持設置啓動文件的名字和裝載的段地址:
grubinst增長了參數--boot-file和--load-seg,能夠用來設置啓動文件的名字和裝載的段地址,例如:
grubinst --boot-file=grldr_1 --load-seg=3000 DEVICE_OR_FILE
引導啓動文件grldr1,裝載的地址是 3000:0000
使用該參數,GRLDR.MBR的啓動代碼可用於裝載ntldr:
grubinst --boot-file=ntldr DEVICE_OR_FILE
注意1:啓動文件名字的最大長度是7,並且不能違反8.3的命名規則
注意2:--load-seg參數對於EXT2分區上的啓動文件無效
二、導出grldr.mbr文件
可用--output參數導出grldr.mbr文件:
grubinst --output C:\grldr.mbr
你能夠使用其它的參數,好比--boot-file等,參數的效果將會保留在導出的GRLDR.MBR文件中,例如:
grubinst --boot-file=grldr_1 --output C:\grldr.mbr
用該GRLDR.MBR啓動時,將會搜索啓動文件grldr_1而不是grldr
注意:某些參數將無效,例如--boot-prevmbr-first
三、支持引導grub2內核
可用參數--grub2指定引導grub2內核:
grubinst --grub2 DEVICE_OR_FILE
grub2內核的缺省名字是g2ldr,你也能夠用--boot-file來改成其餘的名字
要生成grub2內核,首先用mkimage(該程序在grub2源代碼中)來生成core.img,而後加上頭g2hdr.bin:
cat g2hdr.bin core.img > g2ldr
四、修正了部分NTFS分區訪問的bug
修正了某些形成Large Structure的bug
從beta7開始,支持NTFS壓縮文件和稀疏文件
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2300&extra=page%3D10
bean發表於 2007-2-15 10:22
利用NT的啓動管理器引導GRLDR.MBR
通過適當的修改,GRLDR.MBR能夠直接由NT的啓動管理器來引導,
在2000/XP/2003下,在boot.ini的最後加上一行:
C:\GRLDR.MBR="Boot GRLDR.MBR"
在Vista下,能夠使用bcdedit,方法在fujianabc的貼子裏有介紹,摘錄以下:
md a:\boot 建立a:\boot文件夾
bcdedit /createstore a:\boot\bcd 新建一個bcd文件
bcdedit /store a:\boot\bcd -create {bootmgr} /d "Boot Manager" 新建一個用bootmgr加載的啓動項
bcdedit /store a:\boot\bcd /create /d "bootsect" /application bootsector 此項目用bootmgr加載一個bootsector項
執行上面命令後返回一個{ID},而後執行
bcdedit /store a:\boot\bcd /set {ID} device boot 設置啓動設備
bcdedit /store a:\boot\bcd /set {ID} path \grldr.mbr 設置啓動扇區路徑和文件名
bcdedit /store a:\boot\bcd /displayorder {ID} /addlast 加入以上設置項目
固然,你還須要把附件中的grldr.mbr文件拷貝到C:\下。
若是引導正常,GRLDR.MBR運行,它會在硬盤上全部的FAT16/FAT32/NTFS/EXT2分區的根目錄尋找並
裝載GRLDR,其效果就和把GRLDR.MBR安裝到MBR裏同樣。
原理:
我發現NTLDR引導啓動文件的方式很是奇特:
若是文件大小<16扇區(8K),那麼整個文件被裝載到D00:0,不過只有第一個扇區的內容被拷貝
到0:7C00中,並且開始運行的地址是0:7C00。
若是文件大小=16扇區(8K), 那麼整個文件被裝載到D00:0,並且,開始運行的地址是D00:200
文件大小>16扇區(8K)的狀況沒有測試,不過應該和=的狀況是相似的。
請你們在不一樣的系統上測試一下。
更新:根據不點的提示改動了一下grldr.mbr,如今該版本應該能夠適用於XP系統下
更新:修改了NTFS的代碼,如今應該可以解決Large structure的問題
[ 本帖最後由 bean 於 2007-2-22 15:29 編輯 ]
附件
grldr.mbr (8 KB)
2007-2-22 15:29, 下載次數: 1999
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2335&extra=page%3D10
bean發表於 2007-3-4 13:51
GRUB4DOS項目空間@gna.org
在gna.org上的GRUB4DOS頁面:
https://gna.org/projects/grub4dos/
用戶使用的簡單介紹:
一、用web界面瀏覽代碼
直接使用如下的網址:
http://svn.gna.org/viewcvs/grub4dos/trunk/
下載空間:
http://download.gna.org/grub4dos/
之後GRUB4DOS編譯版本可能會上傳到這裏。
二、匿名下載最新代碼
svn co svn://svn.gna.org/svn/grub4dos/trunk grub4dos
或
svn co http://svn.gna.org/svn/grub4dos/trunk grub4dos
下載舊版本:
svn co svn://svn.gna.org/svn/grub4dos/tags/grub-0.97 grub4dos
這是原始版本grub-0.97
svn co svn://svn.gna.org/svn/grub4dos/tags/grub4dos-0.4.2 grub4dos
這是grub4dos 0.4.2正式版
3. 郵件列表
相應於svn有一個郵件列表,能夠在如下網址訂閱:
https://mail.gna.org/listinfo/grub4dos-commits/
填好你的郵箱地址,和任選一個密碼後,即可按subscribe訂閱
訂閱了該郵件列表後,每當svn有新的版本commit時,都會以郵件的形式通知你。
開發者使用簡單介紹:
gna.org上關於項目管理的文檔在這裏:
https://gna.org/cookbook/?group=grub4dos
一、開發者訪問代碼
1) 運行ssh-keygen -t rsa,生成私匙和公匙
該命令生成 ~/.ssh/id_rsa和~/.ssh/id_rsa.pub文件,前者私匙,後者是公匙
該命令還提示你輸入密碼pass phrase,在如下的svn中,在提示輸入pass phrase時使用
假如你以爲每次輸入密碼麻煩,能夠不設密碼,也能夠使用ssh-agent:
ssh-agent $SHELL
ssh-add ~/.ssh/id_rsa
ssh-agent命令調用一個新的shell,在其中運行ssh的私匙由ssh agent控制。
ssh-add把私匙加入ssh agent,命令中要求輸入pass phrase,正確輸入後,之後的svn就再也不須要輸入了
2) 登錄到gna.org,在左邊工具欄點"My Account Conf",而後點"Edit the 1 SSH Public Key
registered", 而後用編輯器打開~/.ssh/id_rsa.pub,把裏面的內容(是很長的一行)拷貝到
Key #1裏,而後點"Update"。注意:在修改了公匙後,須要必定的時間才能生效,在最壞的狀況下,
等待時間是3個小時。
3) 用如下的命令得到代碼:
svn checkout svn+ssh://<membername>@svn.gna.org/svn/grub4dos/trunk grub4dos
<membername>是你在gna.org的用戶名
2. 上傳文件到下載空間
rsync --delete -avr --rsh="ssh" . <membername>@download.gna.org:/upload/grub4dos
或者
scp filename <membername>@download.gna.org:/upload/grub4dos/
ssh的配置和1中是同樣的
三、svn使用簡單介紹
詳細使用手冊在這裏:
英文版:http://svnbook.red-bean.com/en/1.2/
中文版:http://svnbook.subversion.org.cn/1.2/index.html
你也可以使用
svn help commnd
來得到command命令的幫助信息
經常使用的命令簡單介紹以下:
1) 導出/提交代碼
導出代碼用:
svn co svn+ssh://<membername>@svn.gna.org/svn/grub4dos/trunk grub4dos
該命令下載最新的GRUB4DOS代碼到grub4dos目錄下,grub4dos即是當前的工做目錄。
修改代碼後,用
svn commit
命令即可提交。
提交時須要爲當前提交的代碼寫簡單的介紹,有三種方法:
a)用--message 或 -m, 在命令行裏直接指定,如:
svn commit -m "This is a new version"
b)用--file 或 -F, 介紹在外部文件中:
svn commit -F commit_text
c)若是不使用以上的參數,在提交前會調用編輯器,在裏面可臨時添加信息
2) 使本地文件和服務器上的同步
svn update
3) 察看工做目錄的修改狀態
svn status
該命令會顯示當前的工做目錄文件的狀態。
? 該文件不在代碼控制範圍內
A 該文件是新加文件
M 該文件以修改
? 開始的文件是不在代碼控制範圍內的文件,它有多是程序運行中生成的中間文件(如*.o等),
也多是在本版本中新加的文件。對於第一種狀況,不須要理會,由於它們在commit時不會被處理。
對於第二種狀況,須要用svn add命令把它加入代碼控制系統中。這時若是再運行svn status,會發現
該文件的狀態從? 改成 A, 在下一次commit,該文件將會被添加到服務器上。
4) 察看修改紀錄
svn log
該命令能夠加一個參數--revision或-r,用來指定顯示的版本:
svn log -r 5:8
顯示版本5和版本8之間的修改紀錄。
-r的參數除了使用數字外,還能夠使用關鍵字:
HEAD: 系統最新的版本號
BASE: 目錄/文件創建時的版本號
COMMITTED:目錄/文件最新修改的版本號
PREV:目錄/文件對上一次修改的版本號,即COMMITTED-1
也能夠使用日期或時間做爲版本號的參數,如
{2007-03-03} {15:30} {"2007-03-03 15:30"} {20070303T1530} 等等
例子:
svn log -r PREV:COMMITTED
顯示最近一次修改的紀錄
svn log -r "{2007-03-03}":"{2007-03-04}"
顯示從 2007-03-03 到 2007-03-04 的修改紀錄
5) 生成補丁
svn diff > patch.diff
生成當前工做目錄代碼自checkout以來所做的修改的補丁
svn diff -r 5 > patch.diff
生成當前工做目錄代碼相對於版本5的補丁,版本5其實就是grub-0.97
svn diff --old=svn://svn.gna.org/svn/grub4dos/tags/grub-0.97 --new=svn://svn.gna.org/svn/grub4dos/trunk > patch.diff
生成服務器上最新版本相對於grub-0.97的補丁
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2369&extra=page%3D10
bean發表於 2007-3-9 18:04
GRUB4DOS中文文檔@SF.net
在SF.net上創建的wiki空間中增長了中文文檔:
http://grub4dos.sourceforge.net/wiki/index.php/Main_Page
目前僅寫了"相關資源"和"如何啓動grub4dos" 這兩章,近期會增長grub4dos和grubinst的使用介紹。
新增"grub4dos高級功能",裏面介紹了利用map命令做磁盤映射,cdrom功能和腳本支持。
新增"grub4dos命令索引",裏面列出了GRUB4DOS中全部命令的使用語法。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2461&extra=page%3D10
bean發表於 2007-3-18 20:56
GRLDR.MBR做爲通用的引導程序的一些想法
很多的啓動管理器或系統的啓動部分,主要的功能是在一個啓動文件裏實現,而MBR或啓動扇區的功能是把該文件讀入內存並運行。這和GRLDR.MBR引導GRLDR的方式很是類似。不一樣啓動文件使用時的差異在於:
一、啓動文件名字不一樣
二、啓動文件在內存裏存放的地址不一樣
三、啓動文件運行的入口參數的差別
咱們能夠用一箇中間層的啓動程序來處理這些差異,從而使GRLDR.MBR成爲通用的引導程序。其啓動的流程以下:
一、裝載GRLDR.MBR
二、從GRLDR.MBR引導中間啓動層啓動程序
三、中間層啓動程序選擇最終的啓動文件。其選擇能夠經過一個簡單的選擇菜單,或使用嵌入中間層啓動程序中的值。
四、中間層啓動程序把本身移動到較低的內存處,而且,把最終的啓動文件的名字填入啓動扇區適當的位置中。
五、中間層啓動程序跳回7C00:0000,該地址是原來啓動扇區的內容。
六、啓動扇區第二次運行,它從分區中裏裝載新的啓動文件(文件名字在中間層啓動程序裏填入的)。
七、裝載成功後,啓動扇區返回較低的內存處的中間層啓動程序。
八、中間層啓動程序把最終啓動文件的內容複製到恰當的位置,而後設置入口參數,而且運行最終啓動文件中的代碼。
如今的GRLDR.MBR已經能夠直接使用,只須要寫一個處理不一樣啓動文件的中間層的啓動程序就好了。
若是要更好地配合這一方案,GRLDR.MBR的代碼能夠做如下修改:
一、存取分區的代碼分爲初始化,搜索文件和裝載文件三部分。在第二次運行時能夠跳過初始化的代碼。
二、中間層啓動程序能夠調用啓動扇區裏的搜索文件函數。這樣中間層啓動程序能夠對於每種支持的啓動文件都測試一下,而且顯示能夠啓動系統的列表。
使用該方案的好處是可以在不一樣的分區動態搜索啓動文件。並且,GRLDR.MBR也能在Windows NT系列系統的啓動管理器中引導。
該方案適用於GRLDR, GRUB2,NTLDR,io.sys, syslinux.bin, kernel.sys(FreeDOS)等啓動文件。
你們能夠說說,這一方案是否具備實用價值。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2300&page=7&fromuid=12697#pid16199
不點發表於 2007-4-13 15:44
感謝你成爲咱們中的一分子。應該說,你如今比前兩年的許多人都幸運了,由於你來的時機,是在 2007 年。這一年的一開始,bean 就開始大手筆行動了,包括對 VISTA 的支持;對項目空間的創建;對中英文文檔的編寫,等等。今年還出現了另外幾篇好的文章,能夠閱讀,這些都在不斷完善。我能理解你的要求,由於我也是這樣要求其餘優秀軟件的。感謝你的支持。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2931&highlight=%2Bbean
bean發表於 2007-4-18 03:34
GRUB4DOS PXE網絡啓動版 (v3.2)
2該版本可用於PXE無盤啓動。進入grub後,能夠用設備(pd)來訪問服務器上的文件。
v3.2更新:
* 在啓動系統前卸載PXE的運行環境。
v3.1更新:
* 增長內置命令pxe,可用於設置pxe的參數。
v3更新:
* 優化PXE代碼,文件下載速度大大增長
* 顯示進度條。每下載1M的內容,在屏幕上顯示一個"."。
* 修正使用map函數映射網絡上的虛擬影像時出現的問題(主要對應於etherboot的PXE ROM,網卡上內置的ROM通常沒有問題)
v2更新:
* 徹底重寫pxe部分的代碼。
* pxe和網絡部分代碼相互獨立,pxe成爲一個文件系統模塊。
* 再也不須要pxegrub,grldr能夠直接用於無盤啓動。
* 採用相似於pxelinux結構的配置文件。
注意1:v2中,使用設備(pd)來訪問pxe服務器上文件,它不一樣於netboot生成的網絡設備(nd)。netboot支持須要使用特殊的編譯指令,而pxe支持是缺省的。
注意2:v2中,啓動文件所在的目錄成爲文件訪問的根目錄。例如,啓動文件是 tftp/grldr,那麼全部的文件名都是相對於tftp目錄的,好比說,(pd)/aa.img在服務器上相應的文件是 tftp/aa.img。
注意3:v2中,配置文件採用相似於pxelinux的結構,也就是,程序在開始前將會順序搜索如下的文件:
[/mybootdir]/menu.lst/01-88-99-AA-BB-CC-DD
[/mybootdir]/menu.lst/C000025B
[/mybootdir]/menu.lst/C000025
[/mybootdir]/menu.lst/C00002
[/mybootdir]/menu.lst/C0000
[/mybootdir]/menu.lst/C000
[/mybootdir]/menu.lst/C00
[/mybootdir]/menu.lst/C0
[/mybootdir]/menu.lst/C
[/mybootdir]/menu.lst/default
(88:99:AA:BB:CCD是網卡MAC,C000025B是IP地址192.0.2.91)
若是以上的文件都不存在,那麼grub會使用內置菜單。
注意4:從v3.1開始,增長內置命令pxe,用於在menu.lst中設置pxe的參數。
pxe
沒有任何參數時,顯示當前的blksize和basedir設置
pxe blksize N
設置包的大小。N最大值是1432,最小值是512,缺省值是1432。某些很舊的tftp服務器可能不支持大於512的包,這時須要手動把包的大小設置爲512。
pxe basedir path
設置tftp的基礎目錄。好比說,使用命令
pxe basedir /tftp
後,(pd)設備中的文件名都是相對於/tftp目錄的:(pd)/aa.img相對於服務器上的 /tftp/aa.img文件。
基礎目錄的初始值是啓動文件所在的目錄。好比說,啓動的文件是/tftp/grldr,那麼basedir的初始值就是/tftp/
注意5:從v3.2開始,增長兩個pxe命令,用於管理PXE的運行環境
pxe keep
不卸載PXE的運行環境
pxe unload
馬上卸載PXE的運行環境
程序缺省的處理方式是在boot的時候卸載PXE的運行環境。若是你須要保留PXE(例如須要經過startrom引導PE),能夠使用pxe keep。若是須要在boot命令以前卸載PXE,則使用pxe unload。
使用介紹:
一、把grldr文件拷貝到服務器。
二、創建目錄 /menu.lst/,在裏面存放菜單文件。
三、設置dhcp和tftp服務器,把grldr做爲啓動文件。
四、啓動客戶端,PXE ROM會自動從服務器上下載grub並啓動。
在Windows平臺下,能夠使用tftpd32,它同時提供了dhcp和tftp兩種服務。網址:
示範的menu.lst:
title Create ramdisk using map
map --mem (pd)/floppy.img (fd0)
map --hook
rootnoverify (fd0)
chainloader (fd0)+1
title Create ramdisk using memdisk
kernel (pd)/memdisk
initrd (pd)/floppy.img
[ 本帖最後由 bean 於 2007-5-26 17:33 編輯 ]
http://bbs.znpc.net/forum.php?mod=viewthread&tid=2664&highlight=%2Bbean
發表於 2007-4-7 03:02
修改內置菜單的命令行工具grubmenu
grubmenu是grubutil工程中的新增工具,利用它能夠修改grldr/grub.exe/stage2中的內置菜單。
用法:
grubmenu info grldr
顯示grldr的內置菜單相關的信息
grubmenu print grldr
打印grldr中的內置菜單
grubmenu export grldr menu.lst
把grldr中的內置菜單保存到外部文件 menu.lst
grubmenu import grldr menu.lst
之外部文件menu.lst的內容設置grldr的內置菜單。
grldr可分爲兩類,4-3前的版本是舊版本,以後的是新版本。舊版本的內置菜單的大小是固定的,新設置菜單的長度不能大於原來的菜單長度(能夠少於,這時程序自動用空格來填充)。新版本的內置菜單的長度能夠增長,但最大長度不能超過4K。
grubmenu能夠在Windows,Linux和其餘Unix平臺下運行。(Linux和Unix版本須要利用源代碼來編譯)
更新:
* r10版本的grubmenu能夠自動轉換菜單文件。在導出時會把菜單轉爲本地系統格式的文本文件(Windows是\r\n,UNIX是\n),而在導入時會把文本文件轉換爲UNIX格式。在導入時還會去掉註釋和空行,以及去掉每行結尾處多餘的空格。這些轉換不影響使用,但能夠節省存儲的空間,這對於舊版的grldr來講比較重要。
[ 本帖最後由 bean 於 2007-4-22 16:05 編輯 ]
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3117&extra=page%3D10
bean發表於 2007-4-23 21:29
在GRUB4DOS中實現內存管理和動態模塊的想法
儘管GRUB4DOS使用的是GRUB Legacy的架構,但並不表明GRUB4DOS中不能實現內存管理和動態模塊的功能。
對於內核來講,因爲受原來的結構的限制,要實現模塊化比較困難,這裏就暫且無論了。
內核使用最高內存到常規內存頂部,以及擴展內存,則統一使用內存管理器來進行管理。要使用內存時,必須向內存管理器申請,而不是隨意使用。在使用完畢後要及時釋放。
有了內存管理後,動態模塊也能夠實現。模塊裝載時須要向內存管理器申請一塊常規內存的空間,而後把模塊讀入內存,在模塊卸載後則能夠釋放所佔的內存。
模塊的結構能夠有不少,如下是比較簡單的一種,可供參考。
模塊開始是某一標示,接着是函數表。如下是一些示範的函數
int init(struct *grub_api);
這是入口函數,模塊在這裏進行初始化的工做,若是由於某些緣由不能繼續運行,函數返回出錯代碼,那麼模塊就自動被卸掉。
grub_api是grub主程序傳遞給模塊的一個結構,裏面包含一些重要的API的入口地址,以供模塊使用。
grub_api中也能夠包含擴展命令表,當模塊須要添加新的內置命令或者取代原有的內置命令時,能夠把相應的項目增長到該表裏。
int unload(struct *grub_api);
模塊在這裏實現卸載前清理功能,若是由於某些緣由沒法卸載,函數返回出錯代碼,該模塊就不會被卸掉。
實現了內存管理和動態模塊後,有如下的好處:
一、把一些比較大的數據結構放到擴展內存中
背景圖片,字體等均可以利用內存管理器的功能在擴展內存中分配
二、網絡驅動
這部分能夠轉爲動態模塊,在啓動時只需裝入適合本身網卡的驅動就能夠了
三、其餘的擴展
一些不太經常使用的功能能夠作成模塊的形式,在有須要時才調入內存。並且,把結構定下來之後,其餘的用戶也能夠根據規範爲grub4dos編寫擴展。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3949&page=1&fromuid=12697#pid23381
不點發表於 2007-8-26 16:43
已經實現了,上載爲 2007-08-26,是按照上述「照顧 Ago」 的方案來作的。
我身體不行,準備退出開發 grub4dos。
之後 bean 就全權代勞了。
真抱歉我曾經答應作的幾個工做,未能「說話算數」。1. ISO 仿真。2. 嵌入 MBR 上的 GRUB。3. bootlace 的 --install-partition 參數實現。4. 把 grub4dos 同 linux kernel 進行密切配合(二次開發),使得 linux kernel 成爲一個引導管理器。請多多包涵!
我對我在這段時間的工做也表示滿意。只是,在將來的一段時間要把工做負擔都壓在 bean 一人身上,我感到遺憾。但願儘快有新人和 bean 一塊兒工做。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3751&extra=&page=1
bean發表於 2007-7-10 23:41
關於GRUB4DOS文檔,不點請進
Jyothsna 終於有回覆了,他說不在Wipro的辦公室裏,所以好久沒有檢查郵件了。看來他仍是有意思參與grub4dos的文檔開發的。
但文檔的編寫究竟如何進行,你們討論一下。
其實官方的grub文檔對於grub legacy的命令介紹已經很詳細了,只是缺少中文文檔。而對於咱們的grub4dos,只須要按照官方的文檔格式書寫grub4dos有關的新功能便可。另外,我建議增長一個使用技巧部分,經過實例來演示如何使用grub4dos的新功能。
我以爲文檔這個工做量確實也不小。不知道 Jyothsna 有何打算?
我先來猜想一下。他多是要用 man page 的形式來作這個文檔了。
無論他是什麼打算,我都支持。由於我對此沒有任何經驗、看法。
我就擅長於,在別人創建好的基礎之上,修修補補。
因此,這基礎的工做,得大家兩個商量着作才行。這時候,先不要考慮個人意見,由於我原本就沒有主意。
等大家作好了,我有時間的話,會補充資料進去的。
我以爲,我可能補充的地方,包括 map 的命令選項,新增的 root 命令語法,default 語法,以及 parttype 用法等細節部分。
另外,他彷佛應該在 gna 註冊一個用戶,以便管理 grub4dos,由於咱們的源代碼已經在 GNA 了,而不是在 sarovar 了。在中國,咱們訪問 sarovar 比較成問題,經常很不順利。這一點,你也能夠告訴他。若是他已經在 sarovar 有了帳戶,或者他打算在 sarovar 註冊帳戶,那麼我能夠直接把他添加爲 sarovar 上的管理者。
正式文檔,最好使用texinfo格式。texinfo能夠轉換爲多種格式,如info,txt, 單頁html,多頁html,PDF等,grub legacy的官方在線文檔:
http://www.gnu.org/software/grub/manual/
就是使用grub.texi自動生成的。
另外,關於交流平臺的問題,英文論壇還能夠,不過如今論壇的狀態的確使人擔心。我想或者能夠使用郵件列表,你們認爲如何。
郵件列表是一個羣發地址,全部發向該地址的郵件會自動轉發給訂閱了該郵件列表的用戶。新的郵件是一個thread,回覆的郵件被添加到同一個thread裏。郵件列表系統會保留全部郵件,可供查閱和搜索。
就拿GRUB Legacy的郵件列表做爲例子。
訂閱界面是
http://lists.gnu.org/mailman/listinfo/bug-grub
訂閱了之後,能夠向 bug-grub@gnu.org發郵件,該郵件會轉發給全部訂閱的用戶。
即便沒有訂閱,也能夠到
http://lists.gnu.org/archive/html/bug-grub/
裏查看保存的郵件,例如點2007-06,按照Thread瀏覽:
* Where can I get the files stage1 and stage2?, Dallas Clement, 2007/06/30
o Re: Where can I get the files stage1 and stage2?, Gregg Levine, 2007/06/30
+ Re: Where can I get the files stage1 and stage2?, Dallas Clement, 2007/06/30
# RE: Where can I get the files stage1 and stage2?, Gregg C Levine, 2007/06/30
# RE: Where can I get the files stage1 and stage2?, Dallas Clement, 2007/06/30
* compile_error grub-1.95, harri brunk, 2007/06/25
* Which device did I boot from?, Dallas Clement, 2007/06/22
o RE: Which device did I boot from?, Gregg C Levine, 2007/06/22
+ RE: Which device did I boot from?, Dallas Clement, 2007/06/22
o Re: Which device did I boot from?, Felix Miata, 2007/06/22
+ Re: Which device did I boot from?, Benoit Donnette, 2007/06/22
# Re: Which device did I boot from?, Dallas Clement, 2007/06/22
o Message not available
+ Re: Which device did I boot from?, Dallas Clement, 2007/06/22
o Re: Which device did I boot from?, Dallas Clement, 2007/06/23
+ Re: Which device did I boot from?, Gregg Levine, 2007/06/23
o RE: Which device did I boot from?, Brown, Beverly, 2007/06/22
+ RE: Which device did I boot from?, Dallas Clement, 2007/06/22
# Re: Which device did I boot from?, adrian15, 2007/06/25
* [bug #18619] default not saved with trailing white-space on "default saved" line in menu.lst, Ryan Stutsman, 2007/06/21
* Grub and disk images, Eric S. Johansson, 2007/06/06
o Re: Grub and disk images, adrian15, 2007/06/07
+ Re: Grub and disk images, Eric S. Johansson, 2007/06/07
* Re: triple boot sys, adrian15, 2007/06/01
* Re: Problems with Grub and booting to WinXP, adrian15, 2007/06/01
用起來和論壇差很少,郵件就至關於帖子,只是不能編輯。
如今不少GNU軟件的支持都是經過郵件列表的。並且,郵件列表系統是gna/sf提供的,咱們不須要進行維護。
郵件列表已經開通,訂閱頁面:
https://mail.gna.org/listinfo/grub4dos-devel/
我在google groups也爲grub4dos申請了一個郵件列表:
http://groups.google.com/group/grub4dos
郵件地址:grub4dos@googlegroups.com
並且,這個郵件列表能夠自動接收gna.org上的郵件列表的內容。挺爽吧!
郵件系統使用的篩選規則:
一、附件中不能包含後序名爲exe,bat,cmd,com,pif,scr,vbs,cpl的文件
二、郵件內容不能爲空
三、郵件中MIME type中必須包含multipart/mixed,multipart/alternative,text/plain中的一個。純文本郵件通常都符合這個要求。
不符合規則的郵件會被系統拒絕。
不點也試試發封郵件到grub4dos-devel@gna.org,看可否收到。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3736&highlight=%2Bbean
bean發表於 2007-7-8 13:39
關於grub4dos中啓動代碼分離的想法
grub4dos能夠當作由兩部分組成,一部分是grub4dos的運行代碼,grub4dos的功能在這裏實現。另外一部分
是啓動代碼,它的任務是把以上所說的運行代碼從啓動介質上裝載到內存裏。這兩部分實際上是相對獨立的,
啓動代碼能夠從grub4dos的主體中分離開來。
grub4dos的啓動代碼能夠做爲通用的引導程序,它不僅能夠引導grub4dos,還能夠引導其餘的一些啓動文
件,例如grub2, io.sys, ntldr 等。這些文件的共同點是隻須要把它們裝載到內存的某一個地方,而後
轉到入口地址運行就能夠了。其實,不少啓動文件也採用相似的方法,不一樣的只是裝載地址,入口地址和
入口參數而已。把啓動代碼分離後,能夠成爲一個相似於syslinux的通用引導程序。
grub4dos的啓動代碼能夠使用多種方法啓動:
一、從MBR中啓動
大部分的引導程序都支持從MBR中啓動。
二、從NT啓動管理中啓動
目前彷佛沒有引導程序支持從啓動管理中啓動。
三、從DOS裏直接啓動
在DOS裏啓動目前好像只有ldlin,但它只能引導linux內核格式的文件。
四、做爲linux內核啓動
這能夠用於在其餘的啓動管理器中引導。
五、從光盤中啓動
目前grub4dos的啓動代碼已經實現了這一功能。
六、從PXE中啓動
目前grub4dos的啓動代碼還不支持這個功能,但須要增長的話也不是很複雜。
目前大部分的啓動管理器只實現了1,就算是啓動方式比較多的syslinux,也只是實現了1, 5 和6。而
grub4dos目前已經實現了1-5,在我看來,這就是grub4dos的精粹,它是其餘軟件所沒有的。而grub4dos
的主體部分,儘管做了不少的改進,但它們不是獨有的。這些改進基本上均可以在grub2中實現。
啓動代碼的分離也不是很複雜:
一、MBR和從NT啓動管理中啓動的代碼,其實如今已經分離了,就在grldr.mbr中。
二、從DOS裏啓動的grub.exe,能夠把grub.exe後面緊貼的stage2代碼去掉。啓動文件能夠利用INT 21從
硬盤中讀取。
三、做爲linux內核格式的grub.exe,能夠利用initrd來傳遞啓動文件,而不須要把它綁定在grub.exe中。
四、從光盤和PXE啓動時,能夠從啓動介質中讀取文件,就像syslinux同樣。
另外,若是要做爲通用的引導程序,須要使用配置文件來進行設置。命令行參數能夠放到一個固定的內存
地址,啓動文件能夠自行到相應的地址中讀取。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4146&highlight=%2Bbean
bean發表於 2007-10-10 13:00
GRUB4DOS中啓動代碼分離的構思
這個想法我之前也曾經提過,如今把它總結一下:
一、啓動代碼和GRUB4DOS分離
啓動代碼的主要功能是把pre_stage2的代碼裝載到內存的某一位置,而後進行調用。除此以外,啓動代碼和GRUB4DOS的交互是不多的。而把文件裝載到內存這一功能,能夠用於啓動其餘一些文件,如io.sys, ntldr, kernel.sys, grub2等等。所以,啓動代碼能夠獨立於GRUB4DOS而存在,做爲一個通用的啓動管理器。
二、採用模塊化的設計
目前啓動代碼比較混亂,不適合於未來的擴展。主要體如今:
a、多功能集合致使代碼複雜度提升
如今grub.exe和grldr都是集合了多個功能於一身。這看上去好像很方便,但其實使得代碼的複雜度大大提升,增長了修改和調試的難度。我想應該對於每種不一樣的啓動環境使用不一樣的啓動文件,而代碼的共用經過子模塊來實現。
b、存在過分優化的現象
我看過一篇名爲 Optimization: Your Worst Enemy 的文章:
http://www.codeproject.com/tips/optimizationenemy.asp?msg=2259746
我以爲啓動代碼裏也存在過分優化的現象。優化的確是須要的,可是它應該侷限於子模塊內,不一樣模塊間的交互應該是簡單和明確的。
我想啓動代碼應該儘量細分爲模塊,每一個模塊只實現單一的功能,最終把不一樣的模塊鏈接起來而成爲最終的啓動文件。模塊能夠粗略分爲如下幾類:
一、啓動模塊
這至關於啓動文件的頭部,不一樣的啓動方式對應於不一樣的頭部。啓動模塊還能夠根據具體的啓動方式,導出啓動設備。例如,若是從光驅裏啓動,則可導出光驅設備(cd),從pxe啓動,則可導出設備(nd)。而通用的設備(hdN)和(fdN)在獨立的模塊裏實現,它們用於讀取硬盤和軟盤。
二、分區模塊
這部分模塊處理不一樣的分區格式。它們經過讀取底層的設備(hdN),分析裏面存在的分區,從而生成新的設備(hdN,M)
三、文件系統模塊
這部分模塊處理不一樣的文件系統。它們使用(hdN,M)來訪問底層的設備,並導出文件讀取的函數。特殊設備(cd)和(nd)跳過這一步驟,直接導出文件讀取的函數。
四、格式處理模塊
不一樣的啓動文件,其啓動的方式略有不一樣,這些差別在這些模塊裏進行處理。
五、擴展功能模塊
這部分模塊提供擴展的功能。它們相似於GRUB4DOS裏的命令。每一個命令對應於一個模塊。
六、通用函數模塊
這部分模塊提供公用的函數。好比說,開啓/關閉A20的代碼,訪問擴展內存的代碼,等等。
七、腳本解析模塊
啓動管理器能夠使用配置文件的形式來設置啓動選項,因而在啓動時就須要解析執行。還有一個比較簡單的方式,就是
利用外部程序把配置文件轉化爲容易使用的二進制形式,而後把它添加到啓動文件中。
若是使用配置文件,其格式能夠參照GRUB4DOS,例如:
timeout 10
title Windows XP
root (hd0,0)
ntldr /ntldr
title DOS
root (hd0,1)
msdos /io.sys
title Grub
root (hd0,0)
grub /boot/grub/stage2
title Grub 2
root (hd0,0)
grub2 /boot/grub2/core.img
在這裏,不一樣的啓動文件使用不一樣的格式處理模塊進行處理。
至於這個啓動管理器的名字,我原本想使用miniboot,但這名字好像已經有人使用了。我想是否是能夠使用tinyboot,這和miniboot的意思差很少,並且和不點的名字有點像,呵呵。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=3885&highlight=%2Bbean
bean發表於 2007-8-8 12:47
grubinst更新:能夠跳過嚴格的mbr測試
在缺省狀況下,程序進行嚴格的測試,若是發現問題,會把mbr表的內容和分區列表顯示出來。若是用戶以爲沒有問題,能夠使用--skip-mbr-test來跳過嚴格的測試,從而順利
的進行安裝。
另外,新版本在缺省狀況下不會把第一個分區的bpb拷貝到mbr。若是想拷貝的話,須要使用--copy-bpb選項。
新版本調整了ntfs中啓動文件的空間,如今能夠支持全部符合8.3規則的文件名。
--copy-bpb 應該是默認選項。若是不想這樣作,能夠加入 --no-copy-bpb 選項。
--copy-bpb 不會帶來反作用。
拷貝bpb不是隻對某些有問題的U盤才使用的嗎?正常的硬盤應該不須要的吧。
其實我只是怕它會有反作用。好比說,若是有多個分區的話,會不會只能認出第一個分區。並且還有一個隱藏的問題。若是用戶的mbr表出了問題,不能正確的認出,那麼因爲mbr中有FAT的結構,這個硬盤會被認爲是軟盤映像。但若是用戶使用--floppy來安裝的話,就會覆蓋了mbr表,那麼只有第一個分區能用了。這是一個比較嚴重的問題。所以,我以爲在沒有必要的時候,最好不要複製bpb。
bootlace 是這麼操做的:
當 MBR 上的分區表被確認是正確的時候,才進行如下操做,不然,拒絕操做。
只有當磁道 1 的第一扇區含有 FAT 格式的 BPB 時,才構造 MBR 上的 BPB。
所以,MBR 上有 BPB 的時候,分區表必定是正確的。
固然,也許後續的某個軟件從新創建了分區表,致使分區表錯誤。
此時使用 --floppy 是危險的。
不過咱們能夠這樣改進,來增強安全性檢查:當用戶使用 --floppy 時,咱們就先按照寬鬆的條件來檢查分區表的存在性,若是發現分區表,則拒絕操做。
grubinst如今是這樣操做的:
先進行嚴格的測試,成功後做爲MBR處理
再進行通常的測試,成功後做爲有問題的MBR處理,若是有--skip-mbr-test,則順利安裝,不然出錯退出
而後再進行FAT,NTFS和EXT2的測試
這樣的話,誤判的概率比較小,固然,也不是徹底不可能。個人想法是,若是沒有必要的話,儘可能不要複製bpb,這樣至少能夠減小一種誤判的情形。
我是這麼想的:--floppy 是明確要毀掉分區表的,有經驗的人是不會這麼用的。
剩下的人多是誤操做而用了 --floppy,不過,正如你所說,分區表的特徵是比較容易發現的,因此,咱們的程序也很容易拒絕對分區表進行寫入。能夠說,只要有分區表,咱們老是能夠檢測出來的,一個都不會漏掉:
1. 四個表項的 boot indicator 要麼是 80 要麼是 00
2. CHS的扇區號不能是0, 分區起始扇區號和分區長度也不能是0
知足以上條件的,不必定都是分區表,但都被咱們拒絕了。這沒關係。關鍵是全部的分區表,都在拒絕之列,無一遺漏。因此,--floppy 的安全性就絕對有保證了。
既然這裏沒問題了,那麼默認時寫入 BPB 就一樣安全了。
一些用戶每每不知道須要將 BPB 寫入 U 盤的 MBR。若是咱們默認時不寫入,他本身也不容易發現須要寫入。這樣,他一般會放棄使用 grub4dos 的。
U 盤和硬盤很難區分,因此,默認時,應該寫 BPB,無論它是 U 盤,仍是硬盤。
用 bootlace --read-only 0x80 看看是否成功。
若是不成功,那麼分區表必定是錯誤的。
假如分區表是錯誤的,用 fdisk /mbr 是無濟於事的。這條 fdisk /mbr 的目的是用來修復主引導記錄上的引導代碼的,不是用來修復分區表的。這點請必定要注意了。
MBR 是硬盤的引導扇區,位於硬盤最開頭,共 512 字節。開頭的 446 字節是引導代碼(是程序),結尾的 66 字節是分區表(是數據)。
FDISK /MBR 僅僅把 446 字節的引導代碼強行變成了微軟的引導代碼,而結尾的 66 字節的分區表,根本不會改動。
因此,若是用 fdisk /mbr,那麼原來正確的分區表,仍然正確,而原來是錯誤的分區表,仍舊是錯誤的。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4156&highlight=%2Bbean
bean發表於 2007-10-15 18:23
關於新一代GRUB4DOS的想法
目前0.4.*系列GRUB4DOS已經基本上穩定,功能比較完善了,除了A20的兼容問題外,其他須要改動的地方不是不少了。但在結構上而言,GRUB4DOS仍是存在必定的問題,不容易進行擴展。我想在新一代的GRUB4DOS裏能夠做如下的改動:
一、啓動管理器分離
把啓動管理器的代碼從GRUB4DOS裏分離出去,造成軟件tinyboot。而在GRUB4DOS裏,生成單一的二進制代碼文件stage2,在不一樣環境裏啓動GRUB4DOS是經過tinyboot裏實現。
二、使用Unicode,不區分中英文版本
摒棄如今打中文補丁的方法,採用統一的代碼。配置文件裏使用UTF-8的編碼,這樣能夠兼容ascii的菜單,也能夠在一個菜單裏同時使用不一樣的語言。
三、利用gettext實現多語言支持
如今顯示中文幫助須要在源代碼基礎上進行補丁,這個方法使得修改變得困難,並且很難支持多種語言。一個較爲簡單的方法是使用gettext進行轉換,把英文轉爲相應的語言。文本的映射從外部載入,這樣能夠節省內存空間,也使得語言的動態改變成爲可能。
四、內存管理器和動態模塊
使用內存管理器能夠更好的利用內存空間,特別是擴展內存。動態模塊是在GRUB4DOS啓動後加載的模塊,它們能夠和GRUB4DOS的主體進行通訊,實現擴展的功能。模塊的設計能夠參考syslinux裏的comboot api:
http://syslinux.zytor.com/comboot.php
五、圖形界面的改進
修改目前圖形顯示的一些問題,實現可定製的圖形界面,支持更多的圖片格式。
固然,要徹底實現以上的功能是一個很漫長的過程,但不管如何,須要有一個起點。我想能夠啓動一個新的分支,0.5.*,來逐漸實現以上的功能。而目前的代碼,則做爲 0.4.* 分支,繼續進行維護。不知道你們的意見如何。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4273&extra=page%3D6
bean發表於 2007-12-6 20:57
利用loadbin在不一樣的啓動管理器中啓動grub,grub2,grub4dos 和 ntldr
loadbin是grubutil裏的一個新加工具,它能夠把各類系統文件轉化爲Linux內核的格式,從而達到在多個啓動管理器裏啓動的目的。
對於不一樣的啓動文件,loadbin提供相應的頭文件,
能夠用三種方式啓動系統文件,以ntldr爲例:
1,直接使用頭文件ldntldr.bin。以頭文件做爲內核,ntldr做爲initrd:
kernel ldntldr.bin
initrd ntldr
boot
2,利用mkimage工具把頭文件和系統文件結合起來,生成單一的啓動文件:
mkimage ldntldr.bin ntldr ntldr.bin
而後把ntldr.bin做爲內核就好了:
kernel ntldr.bin
boot
因爲很多的啓動管理器在啓動Linux內核時不會傳遞正確的DL值,所以須要在頭文件裏進行設置,你能夠使用-x參數在生成單一的啓動文件時指定DL值,例如:
mkimage -x 0x80 ldntldr.bin ntldr ntldr.bin
有些系統,例如grub2,還支持分區參數,你能夠用如下方式來指定:
mkimage -x 0x80,0 ldgrub2.bin core.img grub2.bin
這樣啓動後grub2會自動把根設備設爲第一隻硬盤第一個主分區(hd0,1)。
若是是在CDROM裏啓動,能夠使用設備號0xe0,好比
mkimage -x 0xe0 ldgrub.bin stage2 grub.bin
這樣,grub啓動後就能夠利用(cd)設備來訪問文件了。
3,同2同樣,先生成單一的啓動文件ntldr.bin,而後能夠利用grldr.mbr啓動:
安裝到mbr:
grubinst -b=ntldr.bin DEVICE
生成相應的ntldr.mbr,在boot.ini裏啓動:
grubinst -o -b=ntldr.bin ntldr.mbr
目前支持的啓動文件格式:
1,GRUB Legacy
頭文件ldgrub.bin,對應的系統文件是stage2
2,GRUB2
頭文件是ldgrub2.bin,對應的系統文件是core.img
3,GRUB4DOS和NTLDR
頭文件是ldntldr.bin,對應的系統文件是ntldr和grldr
至於啓動管理器,只要它支持Linux內核格式,就能夠使用loadbin,這其中包括grub legacy, grub2, grub4dos, syslinux/isolinux/pxelinux, lilo等等。
下載地址:
http://download.gna.org/grubutil/
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4311&highlight=%2Bbean
bean發表於 2007-12-20 22:09
關於迷你grub4dos的想法
grub4dos中有很多的功能是不多會用到的。若是把它們去掉的話,就能夠在很大程度上減小grub4dos的大小,從而能夠包含在64K的boot rom裏。如下是一些想法:
1,在configure裏增長--mini選項,當使用該選項時,生成迷你grub4dos。
2,使用一個文件來存儲迷你grub4dos使用的編譯參數,這樣修改起來比較容易。
3,grub4dos中最大的模塊是builtins.c,我想能夠對每一個命令定義一個宏,經過它來進行條件編譯,好比說:
#ifndef DISABLE_CMD_CMP
static int
cmp_func ...
static struct builtin builtin_cmp = ...
#endif
我大概試了一下,使用如今svn上的版本,利用參數:
./configure --enable-preset-menu=../preset_menu.lst --disable-ffs --disable-ufs2 --disable-minix --disable-reiserfs --disable-vstabs --disable-jfs --disable-xfs --disable-graphics --disable-hercules --disable-serial
進行編譯,生成的stage2是149K,若是使用lzma來壓縮,獲得的文件73K,這和64K的目標已經比較接近了。只要稍微精簡一些,應該能夠放到boot rom裏了。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4311&page=1&fromuid=12697#pid25764
不點發表於 2007-12-21 10:24
象徵意義和實在乎義。
ffs, ufs2, vstabs, jfs, xfs,等等,這些文件系統的支持能力,被看做是 grub 的優勢。可是,在我看來,它們的象徵意義大於實在乎義。實際上,它們佔用了 grub 內核的大量代碼,而不多有人須要這些文件系統的支持。
是的,grub4dos 如今在咱們手上,咱們徹底能夠按照本身的意願去改造,而沒有任何約束。
bean 能夠大膽地改,改什麼均可以,不怕改壞了,改壞了還能夠再改回來。我已經刪掉了 builtins.c 中的四條命令。稍候我把代碼上載到 jot 上。
咱們能夠吸取 grub2 裏面的一些有價值的東西進來。可是,grub4dos 彷佛很難與 grub2 融合在一塊兒,也只能各自獨立發展了。
如下是我不成熟的考慮,關於內存的使用。
GRUB legacy 的內存使用,在常規內存部分,幾乎都用光了,這個結構(即內存使用佈局)咱們仍是保留它吧。GRUB legacy 對常規內存的使用彷佛不夠經濟,可是,咱們仍是能夠忍受的,就認了吧。在 grub 中,經常要切換到實模式使用 BIOS 來訪問硬件。常規內存只能給這些實模式程序保留。
對於 1M 以上的內存,咱們相對來講有比較自由的發揮空間(使用空間)。有些已經被咱們使用了,好比 2M 處是保存 DOS 使用內存的地方。
如今內存很便宜,機器每每有不少內存。因此,16M 如下的內存,均可以被咱們的 grub4dos 內核保留,好比存放字體字模等。
爲了確保 A20 不會發生問題,咱們還能夠在 grub4dos 中儘可能不使用「奇數兆」的內存。 grub4dos 的內核中的程序代碼,必定要放在「偶數兆」的地址空間。grub 要不停地在實模式和保護模式之間切換,當切換到實模式執行 BIOS 調用時,有些 BIOS (的有些功能調用)可能會自動把 A20 關閉。所以爲了保險起見,咱們須要把 grub4dos 內核的代碼(和數據)控制在「偶數兆」的地址空間範圍。這樣,16M中實際上只有8M可用。
在此基礎上,咱們能夠爲 grub4dos 增添運行用戶程序的功能(固然先得創建內存管理機制)。那些不常常用到的命令,均可以以用戶程序的形式存在於磁盤上。這部分 bean 就考慮考慮吧(對我來講這很複雜)。我只把那個 A20 問題解決了,就完成任務了。
對了,幾何參數自適應功能已經所有完成。12月14日的就是此功能的完整版本。
最終咱們彷佛須要把代碼都改爲彙編。
不點,新版本的代碼已經改了很多了,若是沒有什麼問題的話,能夠上傳到gna.org。
上傳到 gna,你來作吧,diff 文件已經上傳到 jot,你可先看看有無問題,再上載到 gna。我以爲它仍然屬於 0.4.3 的後續版。當開始測試新的 A20 功能時,才改變版本號。我在 unbuntu 論壇上曾經說,0.4.4pre 是 A20 新功能,人家看到以後,有可能參與 A20 的測試。因此,如今咱們還不能用 0.4.4 這個版本號。
補充:在 changelog 裏面,能夠寫上被刪除的四條命令。
試了一下新版的makerom來製做grub 0.97的bootrom,直接使用./configure,沒有特殊指令。這樣生成的stage2有98K,生成的grub.bin有53K,若是去掉3K的頭和lzma解壓程序,那麼壓縮後grub有50K,大約有50%的壓縮率。
不點,jot上的grub4dos_r54.diff上的應該就是最新版本的補丁吧,若是沒有問題的話我就傳到gna上了。還有,上傳時使用的標題,最好也寫一寫。
從這個版本開始,我打算另起一個分支,以進行mini grub的研究。由於改動的地方會比較多,中文補丁很難跟上,所以會暫時去掉中文支持。何況,mini grub裏空間原本就很緊,中文看來沒有什麼用處。
好的,就照這麼辦吧。
grub4dos_r54.diff 就是最新的了,我這段時間很忙,不會再有更新了。
r55 的變動消息能夠提兩點:1. cdrom 仿真支持,2. bios 幾何參數自適應,或者再加上 3. 其餘一些調整、變通、修復。哦,也許還應該提到刪除了 4 條命令這件事。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4315&highlight=%2Bbean
bean發表於 2007-12-21 18:50
使用makerom製做grub,grub4dos,grub2和grldr.mbr的啓動bootrom
makerom是grub-mkrom的改進版本,使用它能夠很容易地製做bootrom:
下載:
http://download.gna.org/grubutil/
1. grub legacy/grub4dos
makrom rom_xxx.img stage2 grub.bin
2. grub2
makerom rom_xxx.img core.img grub2.bin
3. grldr.mbr
makerom -s 0 rom_xxx.img grldr.mbr grldr.bin
rom_xxx.img表明如下的其中一個映像:
rom_isa.img: isa rom
rom_pci.img: pci rom
rom_zisa.img:支持lzma壓縮的isa rom
rom_zpci:支持lzma壓縮的pci rom
當使用壓縮時,須要加上-z參數,而且須要使用lzma兼容的rom,例如:
makerom -z rom_zisa.img stage2 grub.bin
另外,grubutil發佈的版本里不包含lzma.exe,你能夠到如下打包裏找:
http://grub4dos.sourceforge.net/grub2/makerom.zip
makerom還支持如下的參數:
-m message
啓動時顯示的信息
-t timeout
倒計時,缺省值2秒
-k key
熱鍵,缺省值是SPACE
-d edx
啓動前設置的edx值,缺省值是0
-s skip
在輸入文件開頭裏跳過必定數量的字節,缺省值是512,這適合於stage2和core.img,但當輸入文件grldr.mbr時,須要把該值設爲0。
-z
使用lzma壓縮輸入文件
-p parm
在調用lzma時,使用的擴展參數。在缺省狀況下,程序使用
lzma e -si -so
來運行lzma,若是使用須要其餘選項,能夠在這裏進行設置。
-v
顯示詳細信息
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4335&highlight=%2Bbean
bean發表於 2007-12-25 22:35
測試:迷你版grub4dos
下載:
http://grub4dos.sourceforge.net/grub4dos/grub4dos-test-mini-2007-12-25.zip
新版的build腳本支持參數mini,使用它能夠生成迷你grub4dos:
./build mini
mini版本使用mini.lst裏的選項進行配置,你能夠修改該文件,以增長或減小須要的功能。mini.lst裏的選項說明以下:
--disable-ntfs-comp
去掉NTFS模塊裏對壓縮文件的支持。
--disable-ffs
--disable-ufs2
--disable-minix
--disable-reiserfs
--disable-vstafs
--disable-jfs
--disable-xfs
--disable-pxe
去掉相應的文件系統模塊。只保留了fat,ntfs,ext2fs和iso9660的支持。
--disable-md5-password
去掉md5密碼的支持
--disable-graphics
去掉圖形模式的支持
--disable-hercules
--disable-serial
這兩個是用於終端模擬的,基本上不會用到
--disable-cmd-testload
--disable-cmd-testvbe
--disable-cmd-setkey
--disable-cmd-setup
--disable-cmd-module
這裏去掉一些不經常使用的命令
--disable-boot-bsd
--disable-boot-multi
去掉啓動bsd內核和multiboot內核的代碼
--enable-preset-menu=../preset_menu.lst
這是缺省菜單
使用這些參數編譯後,獲得的stage2能夠使用makerom生成bootrom:
makerom -z rom_zisa.img stage2 grub.bin
這裏是製做好的版本:
http://grub4dos.sourceforge.net/grub4dos/grub.bin
http://bbs.znpc.net/forum.php?mod=viewthread&tid=4591&highlight=%2Bbean
bean發表於 2008-3-28 16:23
grub4dos新功能測試:在不一樣時間段執行不一樣的命令
這個補丁增長一個新的命令checktime。使用它,你能夠使得某些命令只有在某一時間段內才執行。
命令格式以下:
checktime * * * * *
checktime後面的五個參數分別表示分鐘,小時,日期,月份和星期幾。*表示全範圍,你也能夠使用數字,用-表示某一範圍,用/表示每隔必定數字取一個值,具體的用法能夠查看一下crontab的語法。例子:
1-4
2,5-6
1-2,4-5,7
*/2
checktime自己只是一個測試函數,它判斷當前時間是否符合參數的指定。但把它和&&相結合,你就能夠使得某些命令只有在必定的條件下才會執行,例如:
上午使用第一項做爲缺省項,下午使用第二項
checktime * 0-12 * * * && default 0
checktime * 13-23 * * * && default 1
四季使用不一樣的背景圖片
checktime * * * 1-3 * && splashimage /spring.xpm
checktime * * * 4-6 * && splashimage /summer.xpm
checktime * * * 7-9 * && splashimage /fall.xpm
checktime * * * 10-12 * && splashimage /winter.xpm
附件裏包含補丁文件和英文版的grldr。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5496&extra=page%3D7
bean發表於 2009-1-1 01:57
測試:grub4dos 的 gfxmenu 支持 (更新v3)
如下的補丁爲grub4dos增長gfxmenu支持(對應於svn r63)。使用時,在menu.lst里加上這句(message文件在附件裏):
gfxmenu (hd0,0)/message
注意這命令只能用在配置文件裏,在命令行是無效的。
不過,使用gfxmenu須要的內存不少,須要定製grub4dos以去掉不須要的模塊,附件裏的grldr是使用如下的命令來設置的:
../configure --disable-ffs --disable-ufs2 --disable-minix --disable-reiserfs --disable-vstafs --disable-jfs --disable-xfs --disable-graphics --disable-hercules --disable--serial --disable-iso9660 --disable-ext2fs --disable-md5-password --disable-pxe --disable-gunzip --enable-preset-menu=../preset_menu.lst
文件系統只保留fat和ntfs,其餘能禁止的選項都禁止了。
附件裏的文件在linux下編譯,在msys裏編譯的也能用,只是略爲大一些,message文件也能裝載。
其實,能夠按照minigrub的作法,把一些不多使用的功能禁止掉,須要的話在configure裏打開。這樣能節省很多的空間,即可以支持更大的message文件。
v2更新:
新版的grldr基本解決了大小的限制,啓動的問題也解決了。並且,grub4dos原有的功能全在,再也不須要簡化。不過,我在configure.ac腳本里仍是把一些不多用的文件系統的缺省值改成禁止(ffs, ufs2, minix, vstafs, jfs 和 xfs)。編譯參數:
./configure --enable-preset-menu=preset_menu.lst
make
v3更新:
支持新版3.3.x系列的message文件。舊版的也照舊能使用,程序會自動檢測message的版本。
grub4dos的內容沒有改動,原有的功能所有包含。
漂亮的gfxboot文件能夠在如下網址找到:
http://gnome-look.org/content/search.php?xsortmode=new&search=1&type=0&name=gfxboot&user=&text=&sort=0&scorefilter=0&license=99&page=0
http://kde-look.org/content/search.php?xsortmode=new&search=1&type=0&name=gfxboot&user=&text=&sort=0&scorefilter=0&license=99&page=0
附件
grub_gfxmenu_v2.zip (201.95 KB)
2009-1-1 23:23, 下載次數: 1786
grub_gfxmenu_v3.zip (220.5 KB)
2009-1-4 23:46, 下載次數: 3339
message-3.2.zip (115.8 KB)
2009-1-5 02:21, 下載次數: 1289
3.2 系列中文菜單,包含500個經常使用漢字
message-3.3.zip (878.45 KB)
2009-1-5 02:21, 下載次數: 4088
3.3系列中文菜單,包含3500個經常使用漢字
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5629&extra=page%3D1
bean發表於 2009-5-4 15:48
關於萬能啓動U盤的想法。
U盤啓動的最大問題在於磁盤的參數,自動檢測也不是萬能的。其實,咱們能夠在存儲方面作些功夫,就能夠迅速而正確地得到參數。
基本結構:
扇區0:MBR,第一個分區開始於16065扇區。
扇區1-16064:在固定的位置裏保存標識和當前扇區序號。
扇區16065:第一個分區開始
讀取磁道0,磁頭1,扇區1,得到序號,便獲得每磁道的扇區數
讀取磁道1,磁頭0,扇區1,若是沒有序號,磁頭數255,不然根據序號能夠算出磁頭數。
扇區1-16064裏還有不少空間的,用來存放grub4dos或者grub2的payload。
這個方案的缺點是在u盤開始須要騰出大約8m的空間。不過這對於如今的u盤容量來講根本不算什麼。並且,從外部看來,u盤使用的是單分區mbr結構,應該不會和其餘工具發生衝突。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5631&extra=page%3D8
bean發表於 2009-5-6 02:32
分享:萬能啓動u盤製做工具fbinst (最新穩定版本1.2)
萬能啓動U盤的原理在如下帖子裏有說明和討論:
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5629&extra=page%3D1
新人注意:
對於新加入測試fbinst技術的新人,咱們推薦你只下載和使用頂樓帖子(也就是本帖子)推薦的fbinst發佈版本(其它版本都是有bug的或者是僅用於調試的版本)。同時,在使用fbisnt製做啓動U盤時,咱們推薦你使用457# 的grldr(保持原樣不要修改),測試時要儘可能簡單化(從參數簡單化入手),不復制文件到U盤,啓動時能看到grub命令行就算成功了,若是成功了通常狀況下就不須要彙報了。咱們更想看到啓動不成功的狀況(尤爲是那些用其它技術能夠成功但fbinst不成功的狀況),反饋失敗時請反饋儘可能詳細的信息,例如你的啓動U盤製做步驟及相應的命令行,失敗時的現象等,同時,若是你以爲沒有能力及時按照bean的指示下載專門的測試版本並及時反饋狀況,請事先註明,省得浪費你們尤爲是bean的時間。
457#的grldr(英文)下載:http://bbs.znpc.net/attachment.php?aid=3281
注意:該grldr只能用於1.2版本,它和最新的1.3不兼容
目前寫了一個測試版本,具備基本的引導功能,有興趣的能夠測試一下。
目前已經出了數十個測試版本,推薦你使用下面的最新穩定版進行測試:
最新的1.2版本能夠在gna下載:
http://download.gna.org/grubutil/
#438:增長--nand和--raw選項。下載連接:http://bbs.znpc.net/attachment.php?aid=3279
#408(408樓):1.2穩定版本。下載這個附件也能夠:
fbinst_v1.2#408.zip (13.7 KB)
下面的內容由Climbing根據408# 1.2版本的fbinst功能進行了適當的補充和糾錯,這些內容會用標藍或者粗體的形式顯示出來。2009.05.11 23:00
製做步驟:
1,插入u盤,並使用fbinst列出磁盤信息:
fbinst --list
或
fbinst -l
屏幕上會顯示硬盤設備(hdN)和對應的大小,不要弄錯了。
2,格式化
如下假定u盤在(hd1),用如下命令格式化:
fbinst (hd1) format --force
它會自動創建mbr和一個fat分區,mbr裏預留8m左右的空間,其他的都分到fat裏。這一步會破壞u盤原來的信息,切記!你能夠使用--fat16或者--fat32選項來設置fat分區的類型,若是沒有指定的話,會根據u盤大小自動選擇,512m如下的缺省使用fat16,512m以上的缺省使用fat32.另外,能夠使用的參數爲--unit-size N,用來設置U盤分區的簇大小,其中N以扇區(512字節)爲單位,例如,設置成N=32就是每簇16K,原理上講,將U盤的簇設置的跟U盤寫入頁面大小接近時能夠提升U盤的寫入效率,還有一個--align參數,就是將簇與U盤內部頁對齊,目的也是爲了提升U盤的寫入性能。還有一個--base參數,在1.2版本中該參數固定爲63,通常不須要乞改動。格式化時還有一個--zip參數用於將U盤格式化成USB-ZIP格式。
格式化後,由於改動了mbr,最好把u盤彈出來再從新接入。
3,導入grldr
fbinst (hd1) load C:/grldr
上面命令是將c:盤根目錄下的grldr文件導入U盤前面8M的隱藏空間內。
或
fbinst (hd1) load grldr
上面命令是導入當前目錄下的grldr文件。
也能夠導入ntldr。
4,還有一些其餘命令:
fbinst (hd1) info
顯示mbr裏的信息
fbinst (hd1) clear
清除原來load的映像,因而能夠使用load載入新的映像。也即,在load新的映像前,須要先使用clear清除原來的映像。
fbinst (hd1) update
更新mbr代碼,調試比較好用。只更新mbr代碼,不改動映像和其餘參數。
fbinst (hd1) format
更新mbr代碼,同時兼有clear的功能。
fbinst (hd1) sync
sync用於將第一分區的bpb參數同步到mbr中或者從中清除
--copy-bpb 用於將U盤第一個分區的bpb參數複製到mbr中。
--clear-bpb 用於清除mbr中的bpb參數
原則上,咱們不建議你複製bpb參數到mbr中。
複製內容到剪貼板
代碼:
fbinst 命令語法:
D:\fbinst>fbinst -V
fbinst version : 1.2
D:\fbinst>fbinst -h
Usage:
fbinst [OPTIONS] DEVICE_OR_FILE COMMANDS [PARAMETERS]
Global Options:
--help,-h Display this message and exit 幫助
--version,-V Print version information and exit 版本
--list,-l List all disks in system and exit
--verbose,-v Print verbose messages 更詳細的輸出信息
Commands:
format Format disk
--raw Format with normal layout (not bootable) (格式化爲一般模式,能夠用於回收8m空間,不過fbinst的代碼就清空了)
--force Force the creation of data partition
--zip Format as USB-ZIP
--align Align to cluster boundary
--fat16 Format data partition as FAT16
--fat32 Format data partition as FAT32
--unit-size NUM Unit size for FAT16/FAT32 in 512 bytes block
--base,-b NUM Set base boot sector
--size,-s NUM Set size of data partition 指定數據分區的大小
sync Synchronize disk information
--copy-bpb Copy bpb from the first partition
--clear-bpb Clear bpb in the boot sector
info Show disk information
update Update boot code
load FILE Load image file
clear Clear image file
常見問題:
1,USB-HDD/USB-ZIP模式
在缺省狀況下,fbinst會把u盤格式爲HDD模式,在format里加了--zip參數後,會格式爲ZIP模式。不過,fbinst所作的只是在MBR裏設置必定的數值以影響bios的判斷,但不一樣bios的檢測算法有很大差異,所以很難保證必定能夠檢測爲某個模式。
通常來講,ZIP模式的兼容性更好一些。有些bios就不能識別格式爲HDD的u盤。不過,ZIP模式啓動後根設備是(fd0),數據分區爲(fd0,0)。目前grub4dos裏使用(fd0,0)的一些限制,所以沒有(hd0,0)來的方便。並且,聽說ntldr也不能處理(fd0,0)分區。不過,其實能夠用grub4dos裏的map命令把(fd0)映射爲(hd0),這樣使用起來就沒有問題了。
有些bios是根據數據分區裏的微軟標誌MSWIN4.1和文件系統標誌FAT16/FAT32來識別ZIP的。若是把數據分區格式化爲NTFS,就可能跳過這兩個標誌而變爲HDD模式。不過,格式化爲NTFS後,mbr裏的文件系統id改變了。fbinst缺省狀況下會在0-63扇區裏都保存啓動扇區。要把0扇區裏的id更新到其餘啓動扇區裏,能夠使用如下命令:
fbinst (hd1) sync
sync命令還能夠把第一個分區的bpb複製到mbr裏,只要加上--copy-bpb選項:
fbinst (hd1) sync --copy-bpb
其實,複製bpb的效果和--zip基本上同樣,都會使u盤被檢測爲ZIP模式。不過,我不太同意複製bpb,緣由有兩個。一是bios裏對於bpb的檢測,通常是按照FAT16的方式來進行的,若是數據分區是FAT32或者NTFS,複製bpb反而可能有反作用。二是,--zip不依賴於數據分區,只要在format裏指定就好了。而複製bpb依賴於數據分區,分區結構改變後都須要使用sync同步。所以,建議先試試--zip,真的不行時才試試複製bpb。
2,如何更新fbinst引導代碼。
更新有兩種方法,一是format而後從新裝載grldr文件。二是使用update命令。update只更新代碼,比較方便,不過有時候不太完全。format從新創建mbr裏結構,就和初始化時同樣。
另外,不帶--force命令時,format命令只會改動mbr的結構,不會格式化數據分區,是比較安全的方法。建議只在第一次創建u盤結構時使用--force,之後用普通的format命令來格式化。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5664&extra=page%3D8
bean發表於 2009-5-29 19:50
fbinst v1.4:增長文件管理功能
format命令增長選項--primary和--extended,能夠用於設置主數據區和擴展數據區的大小。取消了--reserve選項,由於--reserve其實就是--primary和--extended的總和。例子:
fbinst (hd1) format --primary 10m --extended 20m --force
因爲文件不能跨越主數據區和擴展數據區。若是映像比8m稍大的話,之前版本必須再預留一樣大小的擴展空間,如今則能夠經過調整主數據分區的大小來解決。
增長/更新文件:
fbinst (hd1) add c:/aa.img "aa.img"
另外,能夠加上選項--extended,表示把文件保存在擴展數據區。--extended選項是對每一個文件而言的,取消了config裏的--extended-data。
fbinst (hd1) add --extended c:/aa.img "aa.img"
導出文件:
fbinst (hd1) export "aa.img" c:/aa.img
刪除文件:
fbinst (hd1) remove "aa.img"
#2更新:
info命令能夠顯示空閒空間。
增長命令rename,能夠重命令文件。如何目標文件已經存在,則先刪除目標文件再進行重命令。
fbinst (hd1) rename "aa_old.txt" "aa_new.txt"
增長命令pack,用於壓縮空閒空間。刪除文件後留下空塊。新加的文件會自動尋找合適的空間。不過增長和刪除操做比較多後,會形成碎片。這個命令壓縮空間,把空塊都鏈接起來。
fbinst (hd1) pack
#3更新:
保存文件建立時間,在info裏能夠看到。info裏還顯示文件是在主數據區或者擴展數據區(file後的數字0/1)。
增長命令resize,能夠用於改變文件大小/建立新文件,例如:
fbinst (hd1) resize aa.txt 1024
有兩個選項,一是--extended,意義同add命令。不過,它只有建立新文件時有效,舊文件維持在原來的區域。另外一個是--fill,當建立新文件/擴大文件時,缺省用0填充,用--fill能夠指定填充字符的ascii碼。例如:
fbinst (hd1) resize --fill 32 aa.img 1024
32就是空格。
增長命令copy,能夠複製文件。
fbinst (hd1) copy aa_old.txt aa_new.txt
複製的文件和原來文件在同一區域。
rename命令更名爲move。
grub4dos也更新了,支持最新的fbinst,並且優化了(ud)設備,如今主數據區域裏的文件也能夠用write寫入了。
#4更新:
clear命令增長選項--menu和--file,表示只清除菜單項(text, menu, boot)或者文件項。不帶參數時所有清除。
增長check命令,用於檢查主數據區的完整性。
#5更新:
正確檢測u盤容量,自動調整lba讀取的扇區數。
更新:
增長--max-sectors參數。1.4正式版,下載在:
http://download.gna.org/grubutil/
附件
fbinst.zip (17.87 KB)
2009-5-29 19:50, 下載次數: 702
#1
grldr.zip (114.68 KB)
2009-5-29 19:50, 下載次數: 627
#1對應的grldr
fbinst.zip (18.31 KB)
2009-5-29 21:53, 下載次數: 298
#2
fbinst.zip (19.12 KB)
2009-5-30 13:15, 下載次數: 356
#3
grldr.zip (114.58 KB)
2009-5-30 11:10, 下載次數: 937
#3對應的grldr
fbinst.zip (19.46 KB)
2009-5-30 22:29, 下載次數: 423
#4
fbinst.zip (19.55 KB)
2009-6-2 23:04, 下載次數: 630
#5
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5669&extra=page%3D1&page=1
bean發表於 2009-6-7 03:14
fbinst v1.5:分離菜單文件,支持syslinux
1.5版本里,菜單項在文件裏指定。增長菜單文件的命令是:
fbinst (hd1) add-menu fb.cfg c:\fb.txt
該命令會解析菜單文件c:\fb.txt,生成二進制的菜單文件,並保存爲ud設備的文件fb.cfg。
fb.cfg是缺省的菜單文件,啓動時會自動調用fb.cfg裏的菜單。
外部的菜單文本的命令有:
default N
設置缺省菜單項
timeout N
設置缺省等待時間
text TEXT
顯示文本
menu KEY sub_sys ..
菜單項,key是熱鍵,sub_sys是啓動子系統,目前只支持grldr,能夠啓動grldr/g2ldr/ntldr。grldr後面的參數是文件名字。這裏是指fb設備內部的文件,你須要用add命令把實際的文件加到ud設備裏。
還有一點,新的add命令順序改變了。第一個參數是內部文件名字,第二個參數是外部文件名,這樣是爲了和其餘的文件管理命令更加統一:
fbinst (hd1) add grldr c:\grldr
這是一個完整的例子:
fbinst (hd1) format
fbinst (hd1) add grldr c:\grldr
fbinst (hd1) add ntldr c:\ntldr
fbinst (hd1) add-menu fb.cfg c:\fb.txt
fb.txt內容以下:
default 0
timeout 5
text "Please choose menu"
text "F1. grldr"
menu F1 grldr grldr
text "F2. ntldr"
menu F2 grldr ntldr
另外,新加命令cat,能夠顯示ud裏的文本文件的內容:
fbinst (hd1) cat aa.txt
要顯示菜單文件的內容,能夠使用cat-menu:
fbinst (hd1) cat-menu fb.cfg
另外,新版本整合了通常版本和調試版本,使用--debug可選擇調試版。update命令能夠用於在通常版本和調試版本之間切換:
切換到調試版:
fbinst --debug (hd1) update
切換到通常版:
fbinst (hd1) update
更新#2
add-menu增長兩個選項--append和--direct,--append用於向已有的菜單添加新項而不是從新建立。而--direct用於在命令行裏傳遞參數而不是經過外部文件。例子:
fbinst (hd1) add-menu --append --direct fb.cfg "text grldr_2" "menu F2 grldr grldr_2"
支持syslinux。首先,下載syslinux代碼包並解壓裏面的ldlinux.bin,把它加到ud設備,而後使用如下的菜單:
text "F2. syslinux"
menu F2 syslinux ldlinux.bin
ldlinux.bin必須放在擴展數據區,不然出錯。並且,在導入菜單時會自動修改ud裏的ldlinux.bin使得它能夠正常啓動。若是更新了ldlinux.bin文件,必須再次導入菜單。
我測試時利用syslinux-3.81,其餘版本也應該能夠。
更新#3
add命令增長--syslinux選項,在加入文件的同時就修改ldlinux.bin文件。在導入菜單時就再也不修改了。改進了一下syslinux的處理,不須要從新讀取文件。
add-menu命令的--direct選項改成--string,短形式是-s。如今不少選項都有短形式,不須要輸入不少字符了。
text命令能夠支持多個參數,在參數間自動加入空格,好比,如下的命令是等價的:
text "aaa bbb ccc"
text "aaa bbb" ccc
text aaa bbb ccc
text命令還加了參數-n,表示在輸出後不換行,例如:
text -n "aaa"
text "bbb"
輸出是 aaabbb
fb.txt裏增長color命令,以選擇文字顏色,顏色名字和grub4dos裏相同:black, blue, green, cyan, red, magenta, brown, light-gray, dark-gray, light-blue, light-green, light-cyan,
light-red, light-magenta, yellow, white。前景和背景色間用/分割。背景色是黑色時能夠省略。例如:
color red/blue
前景紅色,背景藍色。顏色還能夠使用normal,表示正常顏色,至關於light-gray/black 前景白色,背景黑色。
如下是一個例子:
timeout 5
color red
text -n "F1. "
color normal
text syslinux
menu F1 syslinux ldlinux.bin
更新#4
能夠保存/恢復存檔文件。
創建存檔文件利用save命令:
fbinst (hd1) save aa.fba
須要恢復時,使用load命令:
fbinst (hd1) load aa.fba
load命令不會刪除原有的文件,不過有重名的狀況下存檔裏的文件會覆蓋原來的版本。若是想要(hd1)裏的文件和aa.fba裏如出一轍,能夠在load前運行format或者clear。
保存時和恢復時,fb的結構不須要相同。主數據和擴展數據區的大小均可以不同,只要保證空間足夠就好了。並且文件的建立參數將會被保留。好比說,原有文件使用了--syslinux的,在恢復時也會加上--syslinux參數。
fbinst裏的大部分命令也能做用於存檔文件,能夠用它們來參看和編輯存檔文件。如下命令是有效的:info,clear,add,add-menu,resize,remove,copy,move,export,cat,cat-menu,pack, save, load。例如:
fbinst aa.fda info
fbinst aa.fda cat-menu fb.cfg
另外,修改了菜單按鍵的處理過程,不相關的鍵將被忽略而不是出錯結束。
刪除了config命令。default和timeout參數須要在菜單裏設置。
format裏--menu-size改成--list-size,由於如今菜單的大小沒有限制了,--list-size設置的是文件列表的大小。
更新#5
format命令增長參數--archive,使用存檔文件裏的數據來格式化,例如:
fbinst (hd1) format --archive aa.fba
注意,若是在新u的盤裏創建mbr結構,須要加上--force,不過這樣的話也會從新格式化數據分區,慎用!
格式化後主數據區和擴展數據區的大小和原來相同。
另外,新版存檔文件格式有所改動,和使用#4製做的不兼容。
更新#6
支持裝載linux內核,好比說,你能夠使用memdisk來虛擬磁盤:
text "F3. memdisk"
menu F3 linux "memdisk" "floppy.img" ""
linux的三個參數分別是內核,initrd和命令行參數。
更新#7
增長msdos的支持。使用時,把io.sys加入ud設備,其餘文件如CONFIG.SYS, COMMAND.COM 和 AUTOEXEC.BAT放在數據分區。菜單:
text "F4. msdos"
menu F4 msdos io.sys
更新#8
在裝載linux內核時,顯示裝載進度。每隔512k打印一個點。
http://bbs.znpc.net/forum.php?mod=viewthread&tid=5663&extra=&page=1
發表於 2009-5-28
fbinst啓動問題專用貼
目前1.5版本已經基本穩定,如何遇到還不能啓動的主板,請用如下的方法進行測試。
1,下載附件裏的fbinst.exe和test.fba,用如下命令能夠製做u盤(該命令會刪除原有u盤的內容,務必留意,並且,須要把(hd9)改成正確的設備名):
fbinst --debug (hd9) format --archive test.fba --force
2,啓動成功的標準是能夠進入grldr命令行,grub4dos使用以及PE相關的問題請不要在這裏報告。
3,如何不能啓動,能夠試一下fat16 + copybpb的方式。
4,新版的format增長--max-sectors參數,用來設置最大讀取的扇區數。數值爲1時兼容性最高,不過速度也最慢。前面步驟都不成功建議試試用 --max-sectors 1 格式化:
fbinst --debug (hd9) format --archive test.fba --force --max-sectors 1
5,以上步驟都不能成功時,若是屏幕上沒有任何顯示,就是說u盤mbr徹底被跳過,那樣也沒有什麼辦法。不然的話,把屏幕上的信息抄下來。
附件
test.zip (114.81 KB)
2009-6-19 23:28, 下載次數: 7800
存檔文件
fbinst.zip (24.31 KB)
2009-6-19 23:28, 下載次數: 7329
1.5
http://bbs.wuyou.com/viewthread.php?tid=169595&highlight=fbinst%2B1.6
最新 fbinst 1.6 正式版,8月10日更新,1樓有 FbinstTool 10601正式版
詳細可看http://www.burgloader.com/bbs/index.php?topic=54.0 註冊後反饋!
趁如今 bean 一直在關注 fbinst ,你們多多反饋,不然極可能又要等很久了!
請你們把握這個可貴的機會!
例如:成功率?兼容性?文件列表?啓動速度?各類模式?。。。。。。。
也別光用了,不反饋!
請你們詳細測試,及時反饋,以便於 bean 大師及時更新,製做成功的 fbinst 爲你們使用!
我沒有完整的測試環境,因此沒法作更詳細的報告!拜託你們..........................
fbinst 菜單:
1. menu HOTKEY SUBCOMMAND
啓動內核的命令都以menu開始,HOTKEY是對應的熱鍵,子命令有
a) grldr FILENAME
啓動grldr/ntldr文件
b) syslinux FILENAME
啓動ldlinux.bin文件
c) msdos FILENAME
啓動io.sys文件
d) freedos FILENAME
啓動kernel.sys文件
e) chain FILENAME
加載啓動扇區文件
f) linux KERNEL INITRD PARAM
啓動linux內核
2. text STR
顯示一行文字
3. timeout NUM
設置自動啓動的時間
4. default NUM
設置自動啓動的menu項
5. color FG/BG
設置顏色,前景/背景的格式,顏色值有
暗色:black, blue, green, cyan, red, magenta, brown, light-gray,
亮色:dark-gray, light-blue, light-green, light-cyan, light-red, light-magenta, yellow, white
背景只能使用暗色。也能夠用normal來表示普通色,它至關於light-gray/black。
舉例:
timeout 1
default 0
color red
text " fbinst v1.6 menu by bean"
text " ----------[01]----------"
color green
text " Press F1 > GRLDR"
menu F1 grldr "grldr"
color red
text " ----------[02]----------"
color green
text " Press F2 > WDC-SYSLINUX"
menu F2 syslinux "ibmlinux.bin"
color red
text " ----------[03]----------"
color green
text " Press F3 > MSDOS 7.1"
menu F3 msdos "io.sys"
color red
text " ----------[04]----------"
color green
text " Press F4 > SKTQB"
menu F4 grldr "SKTQB"
color red
text " ----------[05]----------"
color green
text " Press F5 > MaoTao WinPE"
menu F5 grldr "LDRXPE"
color red
text " ----------[06]----------"
color green
text " Press F6 > XORLDR"
menu F6 chain "XORLDR.MBR"
color red
text " ----------[07]----------"
color green
text " Press F7 > BULDR"
menu F7 grldr "BULDR"
color red
text " ----------[08]----------"
color green
text " Press F8 > CJJJP"
menu F8 grldr "CJJJP"
color red
text " ----------[09]----------"
color green
text " Press F9 > NTLDR"
menu F9 grldr "NTLDR"
color red
text " ----------[10]----------"
color green
text " Press F10 > BOOTMGR"
menu F10 grldr "BOOTMGR"
color red
text " ----------[11]----------"
color green
text " Press F11 > GMYghost.img"
menu F11 linux "memdisk" "GMYghost.img" "c=142 h=4 s=36 floppy"
U盤製做fbinst啓動方法請見:
http://bbs.wuyou.com/viewthread.php?tid=142426&extra=page%3D1
http://bbs.wuyou.com/viewthread.php?tid=175985&extra=page%3D1
http://bbs.wuyou.com/viewthread.php?tid=170034&extra=page%3D2
更新歷史:
v11d:
bean 大師測試此版沒什麼問題,就將此版定爲正式版。
【8月10日更新】
* format命令增長參數--nalign,能夠指定數據分區開始扇區的對齊,例如:
fbinst DISK format --nalign 512
* 增長命令create,能夠用於建立空的存檔文件,例如:
fbinst ARFILE create
v11c:【7月26日更新】
* 在-l列表裏,用*來表示fb設備
v11b :【7月16日更新】
* 當數據大於20m時, add, export, save, load, format等命令顯示進度。每一個點表明5%。
* 修正了進度條的一個bug
* 在XP下強制格式化後更新u盤內容。
v11: 【7月13日更新】
* 當數據大於20m時, add, export, save, load, format等命令顯示進度。每一個點表明5%。
v10b 【7月9日更新】
* 調整了一下chs檢測了代碼。之前須要--chs選項才能啓動的用戶能夠測試一下這個版本,看在沒有--chs的狀況下是否正常。
v10:
* 修改了一下chs模式的測試
* initrd裝載地址改成32m
v9b:
* sync命令增長選項--reset-bpb
* info命令顯示bpb的三種狀態,copy, init和zero
* 在搜索文件時忽略大小寫
v9:
* sync命令增長選項--reset-bpb
* info命令顯示bpb的三種狀態,copy, init和zero
v8:
* 修正了linux命令的問題
* 支持最新的syslinux 4
* 增長菜單命令chain,能夠啓動mbr文件,例如:
text "F4. chainload MBR"
menu F4 chain mbr.bin
v7:
* 修正了菜單文件fb.cfg超過512時出問題的bug
* export和add命令裏的FILE參數能夠省略,這時,將從標準輸入和輸出讀取數據,例如:
cat aa | fbinst DISK add aa
fbinst DISK export aa > aa
* sync命令增長--max-sectors, --chs和--zip參數,不須要format命令就能夠修改這些參數。
* export命令會自動建立輸出文件的父層目錄
* info命令增長debug version和copy bpb的信息
* 修正了FAT32格式化的bug,如今最大能夠支持2T
v5:
* 在沒有--force時不鎖定磁盤
v4:
* 能夠讀取編輯過的fba文件
* 增長fba文件的format option輸出
* 根據fb mbr沒有初始化和被覆蓋顯示不一樣的信息:fb mbr not initialized, fb mbr corrupted。後者能夠用restore命令恢復。
v3:
* 缺省列表使用最大值456960。
* format命令增長參數--chs,強制使用chs模式。這能夠用於某些不能自動檢測模式的bios。
* info命令新增輸出format options,顯示格式化參數。
格式化參數只有-p,-e,-l,--zip, --chs, --max-sectors的值,沒有數據分區格式化的參數(它們沒法自動檢測)。並且,若是某一數值和缺省值相同時,將不會顯示。-l裏顯示的數值將上調到510的倍數(實際保存的數值是以扇區爲單位的)。
chenall :新的GRUB4DOS已經上傳,有條件的朋友請測試一下。
下載地址:
http://grub4dos-chenall.googlecode.com/files/grub4dos-0.4.5b-2010-06-21.zip
2010-06-21 applied bean's patch(supported new (ud) device created with fbinst1.6).
V2:
(2010年6月19日更新)
* 支持大的文件列表。當前缺省值是32640,最大可支持456960。
(天涯海角1216注:這個對與UD區放入多個文件頗有效,防止出現文件列表不夠)
* 增長缺省啓動文件。若是fb裏沒有配置菜單fb.cfg,則自動啓動buldr。
* 支持使用盤符來表示設備,好比:
fbinst F: info
fbinst F: format
(hdx)的形式依然支持,不過使用盤符更加直觀。
這個版本里磁盤存儲結構有較大改變,之前的grldr和buldr都用不了。測試時請用附件裏文件。
bean 用最新版本的fbinst製做了一個burg的fba,裏面包含了全部的風格:
http://grub4dos.sourceforge.net/burg_fba_v2.zipfbinst編譯腳本說明:首先,須要下載burg的編譯包,而後把附件grubutil_scripts.zip解壓到msys的bin目錄裏。grubutil_dirs這個文件設置路徑。SRCDIR是源碼的存放目錄,OBJDIR是編譯文件目錄。grubutil_update下載最新代碼grubutil_compile編譯代碼V1:(2010年6月17日更新)支持windows vista/7(須要提高至管理員權限),如今格式化後會remount分區,不須要彈出u盤。將新版 fbinst.exe 與 FbinstTool 放在同一個目錄下,再選外置FBINST便可。或例子:fbinst (hdx) format --force --primary 10m --extended 40m --menu-size 4096 --align --zip