【教程】fbinst 启动U盘解读(MBR层面).【1楼附录像下载】

一、使用简介(源自百度)

我们知道:

由于种种复杂原因,不同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)

【3】分区表细解:[高明之三]

U盘第1、2扇区分区表位置对比:

1扇区

2扇区

天涯海角1216的理解:

比如上面第一分区起始位置扇区为 8388608(16进制为00 00 80

00),表示距离第一分区有8388608个扇区,如果此时BIOS读入的是第8号扇区,而此处分区表显示8388600(fbinst

将MBR以后扇区的分区表递减),即距离第一分区有8388600个扇区,且是第8号扇区,BIOS便回读至0号扇区(MBR中有 B9 01

00字符,意思是读入0号扇区),便可以非常准确地知道该扇区位置以及分区表详细信息。(其他分区的分区表也是递减,方法类似)

三、各种模式对比:【高明之四】

四、辅助代码细解:【高明之五-UD区】

fbinst 1.6辅助代码为第65-67号扇区,此为67号扇区。(这个是默认 fbinst 格式化基本扇区数为64的,否则依次增加)

主数据区(包括0扇区和fbinst菜单以及文件列表)和扩展数据区大小设定位置。(64号扇区起始处)

从第68号扇区开始为UD内文件列表,下图

五、引导过程分析:

MBR > UD区 >  grldr > PE/IMG/ISO。。。

MBR > UD区 >  buldr > PE/IMG/ISO。。。

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 > PLoP Boot Manager"

menu F11 chain "plpbt.bin"

color red

text "                          ----------[12]----------"

color green

text "                          Press F12 > GMYghost.img"

menu F12 linux "memdisk" "GMYghost.img" "c=142 h=4 s=36 floppy"

也即进入grldr引导后,再加载ISO\IMG\MBR等文件,从而完成你需要的启动过程!

(未完待续,错误之处,请各位批评指正,大家用 winhex 打开磁盘,秘密便真相大白,否则只能跟着别人走。)

录像下载地址:#FBINST_解读MBR.rar

linux c 读取u盘mbr,fbinst 启动U盘解读(MBR层面)相关推荐

  1. Windows的启动u盘linux,如何在linux下制作一个windows的可启动u盘?

    如何在linux下制作一个windows的可启动u盘? 情景是这样的,有一个windows10的iso,现在想通过U盘安装,要求即支持UEFI(启动引导器),又支持Legacy(启动引导器),因为有一 ...

  2. U大师U盘装系统——启动U盘制作(V1.2.0版)

    1.在U大师官网下载最新的U大师U盘启动盘制作工具V1.2.0 2.下载后,在存放目录中双击"U大师-U盘启动制作.exe"运行,如果在运行工具前未插上U盘,在软件界面的" ...

  3. java linux u盘_创建启动U盘或移动硬盘 - 基于Fedora 14搭建高效稳定的Java开发环境_Linux教程_Linux公社-Linux系统门户网站...

    创建启动U盘或移动硬盘 在这里我们选择Fedora 14 x64为例,其它版本安装过程大同小异.因光驱逐渐淘汰,这里我们选择以U盘或移动硬盘作为安装方式(如果选择光驱方式安装,可以跳过此节,直接将下载 ...

  4. linux找不到镜像文件,为什么启动u盘找不到镜像文件_u盘启动找不到映像文件的解决方法...

    现在很多人都喜欢用u盘装系统,可是却有人发现u盘启动找不到iso镜像文件,pe装系统找不到镜像文件是怎么回事呢?相信很多人都遇到过这种情况,那么为什么启动u盘找不到镜像文件呢?其实这是因为U盘只是制作 ...

  5. 【教程】关于各种USB启动模式的解读 MBR、PBR

      1楼MBR介绍,2楼是分区PBR介绍. (转载请注明出处:http://bbs.wuyou.com/viewthread.php?tid=166641&highlight=) 系统开机或者 ...

  6. 制作efi启动u盘linux,手动制作BIOS和EFI多启动U盘

    原文链接:https://www.lainme.com/doku.php/blog/2017/07/%E5%88%B6%E4%BD%9Cbios%E5%92%8Cefi%E5%A4%9A%E5%90% ...

  7. 可以在linux下运行的u盘制作工具,启动U盘创建工具(LiLi USB Creator)

    LiLiUSBCreator有着漂亮的界面,你可以快速创建一个可启动的U盘,通过特制版本的虚拟机可实现直接在Windows下启动Linux,无须安装也不需要设置. 相关软件软件大小版本说明下载地址 u ...

  8. u大师制作linux启动盘制作工具,如何用u大师u盘启动盘制作工具制作启动u盘

    如何用u大师u盘启动盘制作工具制作启动u盘?想要用u盘装系统的前提是要将u盘制作成启动u盘,那么今天小编要跟大家分享的就是制作启动u盘的操作方法,具体的操作方法是什么呢?接下来小编就跟大家讲讲如何用u ...

  9. p2v之clonezilla(1)再生龙启动u盘制作

    2019独角兽企业重金招聘Python工程师标准>>> http://linux.vbird.org/linux_enterprise/0130drbl_clonezilla.php ...

最新文章

  1. 偷梁换柱——揭开多态的面纱
  2. 切换node版本 nvm 的基本使用 -- 以及安装公司特有的镜像源
  3. Spring MVC 4快速入门Maven原型已改进
  4. 性能高1倍,价格低3/4!数据库实时同步新选择!
  5. 线上电商年货节,PSD分层模板,让“年味”触手可及~
  6. LeetCode Week 1:第 1 ~ 10 题
  7. CSS雪碧,即CSS Sprite 简单的例子
  8. 解决getElementsByClassName()在IE8下的兼容问题
  9. “OSPF” 开销值、协议优先级及计时器的修改
  10. 几个学习git的地方
  11. Eclipse的下载Spring Tool Suite(sts)
  12. SMC 如何下载三维及二维图
  13. 软件测试系统主要包括哪几项内容,系统测试包含哪几部分?
  14. andriod手机信号显示G、E、H、T是什么意思?
  15. 关于js join 方法介绍
  16. 给hacke拨乱反正 黑客、红客、蓝客究竟是什么[摘]
  17. 通过距离感应器获取实际距离[FAQ04538][Sensor]java层获得P_sensor距离传感器当前真实值,不止0,1
  18. springboot+旅游网站 毕业设计-附源码211713
  19. 王者荣耀中皮肤和英雄技能java实现
  20. W650DC_DD_CFL_Win64(刷八代CPUBios)

热门文章

  1. 【考研政治】时政(思维导图)
  2. vue使用mintUI踩坑——不显示样式/导入mui.css报错/build不了
  3. 阿里云香港服务器最好的停留动力博客:2018年的顶级帖子
  4. 2019年5月7日公布的全国水质排行榜_全国城市水质排名一览表
  5. 农产品溯源追溯系统(定制企业方案)
  6. CF1604C Di-visible Confusion
  7. Python 中的“多维”字典 (multi-dimension dictionary)
  8. Spring AOP——Spring 中面向切面编程
  9. python基础与爬虫笔记
  10. Linux建立软链接、硬链接