Time: 2014-09-14 Tag: fbinst命令行详细介绍

2014-09-14

以下几种类型的XD不用看本文了,以免浪费您的宝贵时间:

1、对USB启动无兴趣,只愿意用内置光驱、网络启动的XD;
2、fbinst.exe是Win下的命令行工具,搞不定命令行的XD;
      [wuwuzz注:虽然有fans写了相应的GUI外壳fbinst_tool,但尚待完善,不推荐用]
3、fbinst要求使用者熟悉grub或ntldr,对两者都不熟悉的XD;

警告:
1、fbinst工具要进行format操作,会删除U盘所有数据! 请事前做好备份!
2、fbinst需要指定设备名,如果错把本机硬盘指定为U盘format,将会造成硬盘数据丢失! 请一定小心,不要搞错! 也请做好硬盘数据备份。
3、使用者要明白自己的每一步操作都是在干什么,不要轻易format!
4、本文只是介绍,不对误操作造成的数据丢失负责。请注意!


------------------正文开始
由于种种复杂原因,不同BIOS对U盘CHS/LBA参数处理结果不尽相同,导致同一个U盘,在一台机器上BOOT成功,在另一台机器上就可能BOOT失败。
[wuwuzz注:早期硬盘也有类似问题,但最后通过多个工业标准,已经解决。而USB是万能接口,且有关标准未得到厂商统一遵守,问题更复杂]

现在开源社区的bean提出了巧妙构思,开发出fbinst,基本解决了BIOS下的CHS/LBA参数适应调整问题,使U盘BOOT成功率大大提高。(除非碰上了极度变态的主板和BIOS)。
[wuwuzz注:bean老大同时也是grub4dos和grub2开源项目在我国的开发/维护者]

------------------fbinst的巧妙构思
预留8M(1-16064扇区)隐藏区,在每个扇区固定位置都写入该扇区在WIN下的LBA值,并在1-63扇区都写入bootcode。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等。

-------------------fbinst的一般用法:
0、fbinst   -h 帮助,列出命令选项
1、fbinst   -l 列出当前U盘设备名,输出样例:
(hd0)  40G   本机硬盘40G,设备名hd0
(hd1)  1G    第一U盘大小是1G,设备名hd1
(hd2)  4G    第二U盘大小是4G,设备名hd2

2、fbinst   (hd1)  format   --force   --align
   对U盘hd1进行格式化,创建前述fbinst结构。其中:
   (hd1)是根据1中容量列示,对应找到的U盘设备名,注意:不要把本机硬盘错认成U盘!
   format是fbinst的内置命令
   --force是format参数,表示强制格式化,全新建立fbinst结构;
   --align表示进行数据对齐;
   其他format参数还有
   --fat16 格式成fat16
   --fat32 格式成fat32
   --unit-size 指定单元分块大小,主要是用于尝试U盘提速
   --zip   设置某些参数,影响BIOS识别,尝试ZIP。不保证BIOS一定能识别成ZIP。

3、重新插拔U盘
   由于强制format刷新了MBR,所以必须重新插拔,让Win重新识别

4、fbinst    (hd1)  load   grldr
   将当前目录下的grub引导器grldr安装到U盘hd1的隐藏区

至此,fbinst的基本操作已经完成,选择USB启动后,应进入grub的提示符grub>

---------其他注意事项:
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,这已经足够了。由于菜单构造命令比较复杂,就不再介绍了。