标题：fbinst
使U盘引导成功率大大提高的Fbinst
  FbinstTool 1.604由于种种复杂原因，不同BIOS对U盘CHS/LBA参数处理结果不尽相同，导致同一个U盘，在一台机器上BOOT成功，在另一台机器上就可能BOOT失败。
[wuwuzz注:早期硬盘也有类似问题，但最后通过多个工业标准，已经解决。而USB是万能接口，且有关标准未得到厂商统一遵守，问题更复杂]
现在开源社区的bean提出了巧妙构思，开发出fbinst，基本解决了BIOS下的CHS/LBA参数适应调整问题，使U盘BOOT成功率大大提高。(除非碰上了极度变态的主板和BIOS)。
[wuwuzz注:bean老大同时也是grub4dos和grub2开源项目在我国的开发/维护者]
目前最新的FbinstTool版本是FbinstTool 1.606。
注：上图所示的是FbinstTool
FbinstTool是Fbinst的GUI程序 
Fbinst 作者 Bean FbinstTool 作者jianliulin
fbinst的巧妙构思
预留8M(1-16064扇区)隐藏区，在每个扇区固定位置都写入该扇区在WIN下的LBA值，并在1-63扇区都写入boot code。BIOS启动时，通过boot code读取预先写入的LBA值，并与BIOS识别的LBA值进行比较，找出差距，倒推出当前BIOS对U盘的识别和访问情况，根据这个情况来调整纠正对U盘的访问。
fbinst隐藏区空闲空间的利用
fbinst对付BOOT兼容性问题的开发已经完成，目前新版本的开发重点已转向隐藏区的利用。由于8M隐藏区的每个扇区记录LBA时只用了几个字节，且boot code占据空间也不是很大，所以大量扇区空间是空闲的。在这个区域里可以嵌入：
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处理的U盘冷启时，屏幕无提示，只有光标闪烁。此时，应重新制作，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制作启动 完成U盘系统安装 但是过老的主板 还是不能
据说 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 --mem ()/BOOT/IMGS/XYLYGHOST.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 】重新启动计算机
reboot
title 【 S 】关闭计算机
halt
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"
更新历史
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已经上传,有条件的朋友请测试一下。
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，里面包含了所有的风格：
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即可。
或
例子：
fbinst (hdx) format --force --primary 10m --extended 40m --menu-size 4096 --align --zip
无忧启动论坛Fbinst的大大：jianliulin、百草霜(plantsoot)、pseudo、足迹、zxw等等。