fbinst

fbinst對付BOOT兼容性問題的開發已經完成,新版本的開發重點已轉向隱藏區的利用。由於8M隱藏區的每個扇區記錄LBA時只用了幾個位元組,且bootcode占據空間也不是很大,所以大量扇區空間是空閒的。

基本介紹

  • 外文名:fbinst
  • 開發重點:對隱藏區的利用
  • 主機板支持:幾乎所有主機板
  • 性質:硬碟最佳化方案
成功率,巧妙構思,空間利用,注意事項,主機板支持,所有命令,用法:,全局選項:,命令:,格式化磁碟,選單,1. menu HOTKEY SUBCOMMAND,2. text STR,3. timeout NUM,4. default NUM,5. color FG/BG,更新歷史,

成功率

由於種種複雜原因,不同BIOS對隨身碟CHS/LBA參數處理結果不盡相同,導致同一個隨身碟,在一台機器上BOOT成功,在另一台機器上就可能BOOT失敗。
FbinstTool 1.604FbinstTool 1.604
[wuwuzz注:早期硬碟也有類似問題,但最後通過多個工業標準,已經解決。而USB是萬能接口,且有關標準未得到廠商統一遵守,問題更複雜]
開源社區的bean提出了巧妙構思,開發出fbinst,基本解決了BIOS下的CHS/LBA參數適應調整問題,使隨身碟BOOT成功率大大提高。(除非碰上了極度變態的主機板和BIOS)。
[wuwuzz注:bean老大同時也是grub4dos和grub2開源項目在我國的開發/維護者]
目前最新的FbinstTool版本是FbinstTool 1.606。
:上圖所示的是FbinstTool
FbinstTool是Fbinst的GUI程式
Fbinst 作者
Bean
FbinstTool 作者
jianliulin

巧妙構思

預留8M(1-16064扇區)隱藏區,在每個扇區固定位置都寫入該扇區在WIN下的LBA值,並在1-63扇區都寫入bootcode。BIOS啟動時,通過bootcode讀取預先寫入的LBA值,並與BIOS識別的LBA值進行比較,找出差距,倒推出當前BIOS對隨身碟的識別和訪問情況,根據這個情況來調整糾正對隨身碟的訪問。

空間利用

f在這個區域裡可以嵌入:
1,不同版本的grub4dos
2, grub2
3, ntldr
4, 1.44M/2.88M啟動盤映像
5, 微型Linux
在最新的V1.3,有隱藏區擴大參數。例如,-r 20M,就是將隱藏區擴大到20M。其中8M是基本區,後12M是擴展數據區。擴展數據區延伸了fbinst的套用,可以放進體積較大的XP PE的ISO、其他IMG等。

注意事項

1、有些機器的主機板/BIOS有bug,fbinst處理的隨身碟冷啟時,螢幕無提示,只有游標閃爍。此時,應重新製作,format步驟調整為: fbinst (hd1) format –force –align –fat16即增加–fat16參數。
同時,在3-4步驟中間(呵呵,步驟3.5),增加
fbinst (hd1) sync –copy-bpb命令,
這條命令的作用是將第1分區的bpb表複製到隱藏區MBR,影響BIOS的識別。
2、fbinst支持構造選單選擇不同的loader,只支持grub和ntldr,這已經足夠了。由於選單構造命令比較複雜,就不再介紹了。

主機板支持

2008年後半年之後的主機板基本都可以使用fbinst製作啟動 完成隨身碟系統安裝 但是過老的主機板還是不能
據說 USB-CDROM量產鏡像】對老主機板的支持更好
關於 量產參照 下文拓展閱讀
fbinst的目錄 及相關作用 參照 下文拓展閱讀部分
fbinst丶列表-
timeout 6 #此處默認選擇等待時間
default 7 #此處默認選擇項
calc *0x60200=*0x82a0 #改加電自檢引導方式的記憶體位置,無論是(fdX)還是(hdY)還是(cdZ),實質上都是對應設備的BIOS標識號(drive number),例如(fd0)對應(0x0),(hd0)對應(0x80),而(cd)應該對應(0xA0),也就是(hd32)。一般來說,0x80開始屬於硬碟,而從(0xA0)開始就對應光碟機了(直到0xFF)。
calc *0x60300=*0x829c #類似上面
gfxmenu ()/BOOT/MESSAGE || find --set-root /BOOT/MESSAGE && gfxmenu ()/BOOT/MESSAGE #背景檔案調用
title 【 1 】 (此處編輯項目名)
map --mem ()/BOOT/IMGS/XYLYGHOST.IMG (fd0) #打開路徑 || find --set-root /BOOT/IMGS/GHOST.IMG (fd0) #檢索檔案 && #黃色字部分為自己準備的鏡像
map --hook
chainloader (fd0)+1 #改變啟動扇區啟動項所在磁碟位置
rootnoverify (fd0) #用來改變當前路徑的,在某些情況下不更改當前路徑為要啟動的設備可能出會錯
title 【 2 】(此處編輯項目名)
map --mem ()/BOOT/IMGS/XGHOST.IMG (fd0) || find --set-root /BOOT/IMGS/XGHOST.IMG (fd0) && map --mem ()/BOOT/IMGS/XGHOST.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title 【 R 】重新啟動計算機
title 【 S 】關閉計算機
halt

所有命令

用法:

fbinst [OPTIONS] DEVICE_OR_FILE COMMANDS [PARAMETERS]
fbinst [選項] DEVICE_OR_FILE命令[參數]
Global Options:

全局選項:

--help,-h Display this message and exit
- 幫助,- H顯示此訊息,並退出
--version,-V Print version information and exit
- 版本,- V列印版本信息並退出
--list,-l List all disks in system and exit
- 列表,- l列出所有磁碟的系統並退出
--verbose,-v Print verbose messages
使用 - verbose,- v列印詳細信息
--debug,-d Use the debug version of mbr
- 調試,- d使用MBR的調試版本
Commands:

命令:

format Format disk

格式化磁碟

--raw,-r Format with normal layout (notbootable)
未格式化的磁碟,格式化無引導的磁碟
--force,-f Force the creation of data partition
-強制格式化,- f強制建立數據分區
--zip,-z Format as USB-ZIP
- ZIP,格為USB - ZIP格式
--fat16 Format data partition as FAT16
- FAT16格式的數據分區為FAT16
--fat32 Format data partition as FAT32
- FAT32格式的數據分區為FAT32
--align,-a Align to cluster boundary
--nalign,-n NUM NAND alignment
--unit-size,-u NUM Unit size for FAT16/FAT32 in sectors
--base,-b NUM Set basebootsector
--size,-s NUM Set size of data partition
--primary,-p NUM Set primary data size
--extended,-e NUM Set extended data size
--list-size,-l NUM Set size of file list
--max-sectors NUM Set maximum number of sectors per read
--chsForce chs mode
--archive FILE Initialize fb using archive file
restore Try to restore fb mbr
update Updatebootcode
sync Synchronize disk information
--copy-bpb Copy bpb from the first partition
--reset-bpb Reset bpb to inital state
--clear-bpb Clear bpb
--max-sectors NUM Set maximum number of sectors per read
--chsForce chs mode
--zip,-z Format as USB-ZIP
info Show disk information
clear Clear files
add NAME [FILE] Add/update file item
--extended,-e Store the file in extended data area
--syslinux,-s Patch syslinuxbootfile
add-menu NAME FILE Add/update menu file
--append,-a Append to existing menu file
--string,-s The menu items are passed as command argument
resize NAME SIZE Resize/create file item
--extended,-e Store the file in extended data area
--fill,-f NUM Set fill character for expansion
copy OLD NEW Copy file item
move OLD NEW Move file item
export NAME [FILE] Export file item
remove NAME Remove file item
cat NAME Show the content of text file
cat-menu NAME Show the content of menu file
pack Pack free space
check Check primary data area for inconsistency
save FILE Save to archive file
--list-size,-l NUM Set size of file list
load FILE Load from archive file
create Create archive file
--primary,-p NUM Set primary data size
--extended,-e NUM Set extended data size
--list-size,-l NUM Set size of file list

選單

1. menu HOTKEY SUBCOMMAND

啟動核心的命令都以menu開始,HOTKEY是對應的熱鍵,子命令有
a) grldr FILENAME
啟動grldr/ntldr檔案
b) syslinux FILENAME
啟動ldlinux.bin檔案
c) msdos FILENAME
啟動io.sys檔案
d)freedosFILENAME
啟動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"

更新歷史

v11d:
bean 大師測試此版沒什麼問題,就將此版定為正式版。
* format命令增加參數--nalign,可以指定數據分區開始扇區的對齊
* 增加命令create,可以用於創建空的存檔檔案
* 在-l列表里,用*來表示fb設備
* 修正了進度條的一個bug
* 在XP下強制格式化後更新u盤內容。
* 當數據大於20m時, add, export, save, load, format等命令顯示進度。每個點代表5%。
* 調整了一下chs檢測了代碼。以前需要--chs選項才能啟動的用戶可以測試一下這個版本,看在沒有--chs的情況下是否正常。
v10:
* 修改了一下chs模式的測試
* initrd裝載地址改為32m
v9b:
* sync命令增加選項--reset-bpb
* 在搜尋檔案時忽略大小寫
v9:
* sync命令增加選項--reset-bpb
* info命令顯示bpb的三種狀態,copy, init和zero
v8:
* 修正了linux命令的問題
* 支持最新的syslinux 4
* 增加選單命令chain,可以啟動mbr檔案
v7:
* 修正了選單檔案fb.cfg超過512時出問題的bug
* export和add命令里的FILE參數可以省略,這時,將從標準輸入和輸出讀取數據
* 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已經上傳,有條件的朋友請測試一下。
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。
* 支持使用盤符來表示設備
(hdx)的形式依然支持,不過使用盤符更加直觀。
這個版本里磁碟存儲結構有較大改變,以前的grldr和buldr都用不了。測試時請用附屬檔案里檔案。
bean 用最新版本的fbinst製作了一個burg的fba,裡面包含了所有的風格:
fbinst編譯腳本說明:
首先,需要下載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即可。

相關詞條

熱門詞條

聯絡我們