fbinst启动U盘解读(MBR层面)汇编.pdfVIP

  • 13
  • 0
  • 约5.64千字
  • 约 13页
  • 2021-12-10 发布于福建
  • 举报
fbinst 启动 U 盘解读( MBR 层面) 一、使用简介(源自百度) 我们知道: 由于种种复杂原因,不同 BIOS 对 U 盘 CHS/LBA 参数处理结果不尽相同,导致同一个 U 盘,在一台机器上 BOOT 成功,在 另一台机器上就可能 BOOT 失败。 【早期硬盘也有类似问题,但最后通过多个工业标准,已经解决。而 USB 是万能接口,且有关标准未得到厂商统一遵守,问 题更复杂】 现在开源社区的 bean 提出了巧妙构 思 ,开 发 出 fbinst ,基本 解决了 BIOS 下 的 CHS/LBA 参数 适应调整 问题, 使 U 盘 BOOT 成功 率大大 提高 。( 除非碰 上了 极度变态 的主板和 BIOS) 。 ——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 现在的 fbinst 版本 已经可 以支持 大 的隐藏 区了,可 以装入 WinPE 或其他 DOS 工具 ,用 grldr 加载引 导 之 。下面 有详细说明 。 二、 MBR 结构解析: 【1】主 引导代码 : 1. 高明之一: 几 乎所 有写入 U 盘的 其他 类 主 引导记录 的都是 占用一个 扇 区 (占用 0 号 扇 区,如 HDD+,ZIP+ ,NT5,NT6 等等) ,而 fbinst 却 是在 前 64 个扇 区的 主 引导代码 都 一样 (稍微 差异 下面 解释 ) ,BIOS 在启动时只 是 读 出一个 扇 区,但是 它可能不是 u 盘的 0 扇 区, 因此引 导代码要 占多个 扇 区。 以前 的测试证明 ,63 个就 基本 够 了,最 大只 需要 255 。 不过我的一个 U 盘启动 电脑 时 ,基本扇 区数 设置 为 20000 才成功 启动 ,否则跳 过 U 盘直 接启动本 机系 统了。 2. 高明之二: c 、h 、s (磁头、柱面、 扇 区 )的检测需要 更多的 空间 ,至少需要 一个 柱面(约 8M ),在 主数 据 区的 每 个扇 区尾部 都 有该扇 区位置 代码( 占用 2 个 字节 ),BIOS 一 读便 知此 位置 。除 了位置 代码外 的其他部分 空间 就 浪费 了,因 此才把它作为 主 数据 区,从 fbinst 1.6 版 开始 最大 30M ,其 间文件 不 连续( 因为每 个扇 区尾部 的绝对 扇 区地址 占用 2 个字节 ) 。其 后再增加 的存储 启动和 维 护文件 的空间 称为 扩展 数 据 区 ,无尾部 的绝 对扇 区地址 ,其 间文件连续 。 最 小 的主数 据 区必须包含 64 个 主 引导代码 和 fbinst 菜 单和 文件 列表 。 (但是 需手 动修改 ) 如 下 图 : 【2 】MBR 细解 ,如 图示 : 下 图中 是 HDD 模式 的 MBR,偏移 00 处是 跳 转指令 ,EB5E 及跳 转至 偏移 0x60 处 执行 ,偏移 18 处表示 每 磁道 扇 区数 为 63 (3F) ,偏移 1A 处 表示 磁头 数 255 (FF)

文档评论(0)

1亿VIP精品文档

相关文档