更新时间:2023-10-12 20:12
fbinst对付BOOT兼容性问题的开发已经完成,新版本的开发重点已转向隐藏区的利用。由于8M隐藏区的每个扇区记录LBA时只用了几个字节,且bootcode占据空间也不是很大,所以大量扇区空间是空闲的。
由于种种复杂原因,不同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程序
预留8M(1-16064扇区)隐藏区,在每个扇区固定位置都写入该扇区在WIN下的LBA值,并在1-63扇区都写入bootcode。BIOS启动时,通过bootcode读取预先写入的LBA值,并与BIOS识别的LBA值进行比较,找出差距,倒推出当前BIOS对U盘的识别和访问情况,根据这个情况来调整纠正对U盘的访问。
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处理的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盘系统安装 但是过老的主板还是不能
关于 量产参照 下文拓展阅读
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 】重新启动计算机
reboot
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
color green
color red
color green
color red
color green
color red
color green
color red
color green
color red
color green
color red
color green
color red
color green
color red
color green
color red
color green
color red
color green
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即可。