当前位置: 首页 > news >正文

解密启动盘UD分区的技术原理 | FBinst 理论+实操手搓全能三分区启动盘

解密启动盘UD分区的技术原理 | FBinst 理论+实操手搓全能三分区启动盘

在PE启动盘领域有一种启动盘制作模式叫做"全能三分区启动".具体来说,这种启动盘制作好后,磁盘分区图大概是这样的:

分区结构

在DiskGenius中查看,这个磁盘的分区结构就像这样:

DG分区结构

你可能会发现,在DG中显示出有300MB的空闲空间.为什么会有空闲空间呢?这些空闲空间存在的意义是什么呢?

今天我们就来揭秘这300MB空闲空间中隐藏的奥秘.


20年前......

2006年,我刚出生不久.那时候的计算机主板BIOS制作的十分狂野.

各路BIOS显神通,对各种类型固件的启动盘启动支持情况可谓千奇百怪,一言难尽.经常出现的情况是一个正常制作的启动盘在一个电脑上可以启动进入PE系统,在另一个电脑上却启动后直接报错.

出现这个情况的原因是什么?要想搞清楚,我们就要了解BIOS固件引导系统启动的流程.

当我们按下开机键后,主板上的BIOS开始运行.首先,它扫描连接到电脑上的磁盘,然后读取这个磁盘的MBR.

MBR是什么?

MBR是在磁盘的0柱面、0磁头、1扇区的二进制代码,总大小为512字节.也就是说MBR是在磁盘的最开头存储的二进制数据.

它不是文件,而是0101010110101.........

MBR看似乱成一锅粥.但是我们要清醒地意识到,MBR被明明确确的分成三个组成部分.

  • 主引导代码.大小:占据MBR的前446字节
    • 作用:引导操作系统启动.
  • 磁盘分区表.大小:占据64字节
    • 作用:记录整个磁盘上的分区情况.一个分区记录占用16字节,总共能记录四个分区(16x4=64).也就是说MBR磁盘最多能有四个主分区.
  • 结束标志.大小:第1扇区的最后2字节
    • 作用:他永远是16进制数据的55 AA.如果这一部分不是55 AA,那么这个硬盘就会被认为是一个无效的硬盘.

了解了MBR的组成成分,我们就对磁盘的引导启动流程有了更清晰的认识.

在按下开机键后,BIOS会找到磁盘第1个扇区的前512字节.然后把这512字节的数据加载到内存中.接着,BIOS会校验这512字节的最后两个字节是否是55 AA.校验通过后,BIOS给CPU发送一个跳转指令,CPU就会去执行前446字节的MBR引导代码.后续的事情就与BIOS关系不大了.

既然如此,前446字节的引导代码就是各路大神的主战场.这446字节编写的好坏,就直接影响引导系统启动的能力.


大厂的沉稳

一般来说,我们安装Windows系统的时候,Windows系统安装工具都会对这512字节的MBR的前446字节的引导代码进行覆盖写入.他们写入的数据便是微软自己开发的启动引导代码.

微软的MBR写的非常简单中规中矩.它的功能只有一个:让CPU找到一个活动主分区,然后执行这个活动主分区的PBR.

那么什么是活动主分区?什么是PBR?

活动主分区,就是MBR磁盘上的一个被标记为"活动"的主分区.一个MBR磁盘只能有一个活动主分区.那他是在哪里被标记的呢?答案是MBR中.还记得那446字节后面的64字节分区表吧?活动主分区的标志就在这64字节中.

比如,一个磁盘有四个主分区.其中第二个分区是活动主分区.那么第二个分区的16字节分区表的最开头16进制数据就是0x80.

其他三个分区的16字节分区表的开头16进制数据是0x00

那么CPU只要看一眼分区表,找到一个0x80的分区就可以了.

那么什么是PBR?

PBR是partition boot record的缩写,即为"分区引导记录".每一个分区都有一个PBR.

顾名思义,PBR是一段代码,和MBR属于同一类东西.PBR的位置就在每一个分区的开头.

PBR记录了分区的信息,分区的各种元数据,分区的属性等等内容.

活动主分区的PBR和普通的主分区的PBR是不同的.活动主分区的PBR代码有一个功能,就是让CPU找到这个分区根目录中一个名为BOOTMGR的程序,然后执行这个程序.

这个BOOTMGR就是大名鼎鼎的Windows启动管理器.

到了Windows启动管理器这一步,大家可能就熟悉了.就是那个黑底白字的界面.我们可以在这里选择可启动的操作系统.

当然,为什么这个PBR就要去找BOOTMGR呢?当然是因为这是微软编写的PBR,找微软自家的启动管理器啦.


到这里,我们先梳理一下BIOS固件搭配微软官方MBR/PBR引导启动操作系统的流程.

BIOS运行→加载MBR→CPU执行MBR的前446字节→找到活动主分区→CPU执行活动主分区的PBR→找到BOOTMGR→运行Windows启动管理器→启动Windows系统.

关于启动BOOTMGR之后的事情,请阅读本公众号置顶精选文章.


草根的灵活

上面的启动流程看起来真的非常完美无瑕.

然而,20年前的BIOS的狂野远超我们的想象.微软的MBR在那时最大的问题在于:太死板.

20 年前老旧 BIOS 只兼容传统 CHS 寻址和简易 DOS 标准 MBR,而微软 XP/2000 官方 MBR 用了LBA 扩展寻址、严格分区校验、更复杂的实模式引导逻辑,软硬件标准不匹配、BIOS 中断实现不规范,所以极易启动失败。

因此,无忧启动论坛的bean大神出手了,FBinst就此诞生.

FBinst就是为了解决这个BIOS启动千奇百怪的痛点而诞生的.他使用了一种智能识别U盘启动模式的技术,让CPU在启动的时候动态识别U盘的启动类型(ZIP,HDD,FDD),完美的解决了不兼容无法启动U盘PE系统的问题.

通过上面知识的学习,我们很容易就想到,bean大神的"终极必杀器"就是MBR代码中的前446字节的引导启动代码.

他完全抛弃了微软的MBR引导代码,自己编写了这446字节MBR,植入第一个磁盘扇区中.

同时,由于只修改磁盘前446字节,这也保证了后面64字节的磁盘分区表不受影响,因此Windows系统能够正常的识别磁盘分区,读取分区内容.


隐藏的UD

UD分区,全名unrecognized data(未识别数据),这个分区就是FBinst创建的.顾名思义,这个分区是完全隐藏的,Windows系统完全无法识别这个分区.

说的直白点,bean大神自己手搓了一种新的文件系统,UD分区就是用了这种文件系统.

只有fbinst能够识别读取这个私有文件系统中的内容.Windows系统看见这里的数据就是一堆无意义的1010101.

就连DiskGenius也认不出这个文件系统,所以显示为"未分配的空间".事实上,这个"未分配的空间"中的数据对于FBinst都是有意义的.

这也比较好理解.比如,Windows系统无法识别Linux系统中常见的ext4文件系统所,苹果的APFS文件系统.UD分区的文件系统也是一样,Windows系统同样无法识别.这是相同的道理.

Windows系统能识别的文件系统类型有:磁盘文件系统:NTFS,exFAT,FAT(FAT16,FAT32),ReFS,光盘文件系统,网络驱动器等


FBinst引导启动原理

首先,BIOS一定会读取第一个扇区中的前446字节的启动引导代码,传送给CPU.CPU执行这段代码,之后进行的动作是:在UD分区中寻找一个文件,这个文件是大名鼎鼎的grldr.

我们先姑且不说grldr这个文件为什么会在UD分区中,也先不管他是从哪里来的.你有没有一个疑惑:连微软Windows都无法识别的UD分区,为什么CPU能认出这里面的数据?

这是因为bean大神写的MBR中有识别UD分区文件系统的代码.CPU执行这些代码的时候就能够解析出UD分区,认出里面的文件,然后找到并运行grldr.

GRLDR是什么?

GRLDR是GRUB4DOS GitHub开源项目的核心引导程序.他的地位就相当于Windows 启动管理器(BOOTMGR).它就是一个系统启动引导器.

GRLDR有一个强大的功能:他能直接引导启动ISO光盘映像文件.

是不是特别像ventoy的功能?但ventoy不是基于grldr的,而是基于grub2.

所以事情变得简单:只要把PE系统的iso文件放在U盘里,让grldr找到它,那么grldr就可以启动这个PE系统了.

根据bean大神的设计,PE系统的ISO光盘映像文件也是放在UD分区中的.


继续深挖FBinst

事实上,grldr和fbinst并不是绑定关系,但是由于他们都出自无忧启动论坛的大佬之手,这些大佬们都在同一个圈子里,那技术上也会互相支持.

grldr也有自己的MBR启动引导代码,可以完全不依赖于fbinst引导直接运行.同时,grldr内置了解析UD分区的能力,这也是他能加载启动位于UD分区内的PE系统的原因.

注意:grldr无法启动PE系统的wim文件,只能启动PE系统的ISO.

对于UD分区,大体上来说,UD分区内部分为两个部分:主分区和扩展分区.

  • 主分区:一般是8MB.里面一般只放一个文件,就是grldr
  • 扩展分区:我们可以自定义大小,但是肯定比U盘总容量小.里面放的是PE系统的ISO文件.

为什么分成这两个部分?分成两部分有什么用?

还是为了兼容性.
因为bean大神考虑到,有的BIOS主板可能过于奇葩,由于兼容性原因导致在原初状态下无法读取一个磁盘8MB之后的容量.所以,这8MB一定是位于磁盘的最开头的8MB.这里面放置grldr,保证grldr在任何极端情况下都可以被CPU识别加载运行.

8MB之后的容量就是扩展分区的容量,一般来说足够装下一个PE系统的iso文件就可以了.比如使用微PE,扩展分区设置为350MB足够用.

我们始终需要牢记:UD分区=主分区+扩展分区.

注意:这里的主分区和扩展分区并不是我们平时说的MBR磁盘的主分区和扩展分区,而是UD分区中的概念.

我们总结一下FBinst的启动流程:

开机→BIOS加载MBR前446字节→CPU找到并运行UD分区中的grldr→grldr找到并启动UD分区中的PE系统ISO文件→启动PE系统


实战操作 | 手动制作一块FBinst启动U盘

学习完上面的理论,我们才有底气实践.(虽然我是边实践边学习理论的)

这一次,我们的目标是制作一个支持FBinst启动的双分区启动盘.

文章开头说"全能三分区"启动盘,是在下面要做的FBinst双分区启动盘的基础上制作的,加入了对UEFI现代固件的支持.

准备所需工具:

  • FBinstTool软件
  • grldr
  • U盘
  • PE系统的iso光盘映像文件

FBinstTool软件是FBinst的图形用户界面.因为FBinst是命令行软件,如果直接使用需要手输代码.

各种纯净无捆绑PE系统的iso可以在我的分享文章中获取.但是建议使用微PE,微PE对老电脑支持较好.

FBinstTool软件和grldr下载链接获取:wx公众号吕社,后台回复fb即可获取不限速下载链接.

  • 首先,我们插入U盘,然后打开FBinstTool.在FBinstTool上方会显示你的U盘的名称.

  • 点击左上角"启动设置"→"格式化"
  • 勾选"强行格式","UD扩展分区",输入UD扩展分区大小.大小略大于PE系统的ISO即可.我使用微PE的ISO,我设置350MB

  • 直接点击"格式化".这里会提示"使用了--force选项,此选项会删除U盘上的所有数据,是否继续!!"点击是.

这会删除U盘上的所有数据!请备份好你的个人数据!

可不可以不格式化U盘呢?其实是可以的!我会在后面深入讲解如何不格式化的情况下制作FBinst.

  • 格式化后,文件列表里出现了一个mbr.pt文件,这是U盘原来MBR的备份文件,可以直接右键它删除.

  • 为U盘导入grldr:右键空白区域,点击"导入文件"(也就是导入到UD的主分区,然后再选择grldr即可.

  • 导入PE系统ISO: 右键空白区域,点击:"导入文件(扩展分区)",选择PE系统的ISO文件,等待导入即可.

  • 编辑grldr菜单:这是唯一涉及代码的地方.但是我们可以直接复制粘贴.

    点击软件上方Grldr菜单,删除里面所有内容,替换为如下内容(不分大小写):

pxe detect
configfile
default 0
timeout 0title WEPE
errorcheck off
map (ud)/wepe.iso (0xff)
map --hook
chainloader (0xff)
errorcheck on
  • default 0:默认启动项为第一项

  • timeout 0:菜单显示时间为0秒

  • map (ud)/wepe.iso (0xff):把UD分区中的wepe.iso文件加载到内存中

  • map --hook:让虚拟磁盘映射立刻生效

  • chainloader (0xff):从虚拟光驱引导启动

  • 右键代码区,点击"保存(UTF-8)"保存代码.

以上,我们就制作完了FBinst启动盘.现在可以拿去电脑上测试.

我们发现,那个用户数据分区的文件系统是FAT32的.FAT32文件系统不能存储单个大于4GB的文件.所以我建议,如果是普通小型U盘,把它重新格式化成为exFAT的,如果是固态U盘USSD或固态硬盘,直接格式化为NTFS的.

放心,格式化用户数据分区不会破坏FBinst.

看看磁盘管理里的磁盘结构:

上图中,358MB的未分配空间就是UD分区,这里面就有一个grldr和微PE的ISO文件.后面49.65GB的E盘就可以存储你的个人文件了.

但是请注意,目前这个启动盘只能启动BIOS固件的电脑,不能启动UEFI固件的现代固件电脑.

下面我们将继续制作这块U盘,让这个U盘同时支持FBinst启动BIOS固件和UEFI固件.也就是传说中的"全能三分区"


制作全能三分区启动盘

我们在上面的FBinst基础上,可以很轻松的制作全能三分区启动盘.

UEFI的启动需求很简单:只要U盘上有一个FAT32文件系统的分区,这个分区里面有一些引导文件就可以了.

操作方法:

  • 打开DiskGenius
  • 右键用户个人数据分区,点击"拆分分区"

  • 保持"分区前部的空间"大小不动,修改"分区后部的空间",要略大于PE系统ISO的大小即可.(比如我设置350MB)
  • 然后右侧选择"保持空闲".我们先把这块空间留出来,然后再把这块空间格式化为FAT32文件系统的分区.
  • 点击下方"开始"然后等待DiskGenius操作.然后点击完成即可.

  • 这时,在U盘的最末端就会出现一块灰色的空闲空间.我们右键这块空间,点击第一个"建立新分区"
  • 选择主磁盘分区,FAT32文件系统,卷标写EFI,其他设置保持默认,直接点确定,然后点软件左上角的"保存更改"

一定别忘了点"保存更改"!

  • 然后点击两次"是"即可.

这样,一个FAT32文件系统的EFI分区就被我们手搓出来了.下面我们为这个EFI分区添加PE系统和引导文件,操作非常简单.

  • 打开此电脑,找到你刚刚创建的EFI分区,打开它.
  • 找到你的PE系统ISO文件,双击这个ISO文件挂载打开它.

如果你使用的是Windows7及Windows7以前的系统,是无法双击打开ISO文件的.

你需要使用解压软件打开ISO文件,操作和打开压缩包是一模一样的.例如7-zip,WinRAR等

  • 将ISO文件中的所有内容直接复制粘贴到你刚刚创建出来的EFI分区中.

这样我们就制作好了一个全能三分区的PE系统启动盘.

这个启动盘可谓上能启动远古古董机,下能启动现代高端机,所向披靡,无所不能.


如何不格式化直接制作全能三分区启动盘?

U盘中数据多,备份速度慢?不格式化也可以制作FBinst全能三分区启动盘!

我们先花一点时间思考一下FBinst的本质:

  • 其实就是把bean大神的MBR代码注入第一扇区的前446字节中替换原来微软的MBR引导代码,然后再在U盘的最最最前端搞出来一块未分配空间,留给UD分区用就可以了!

那么我们可以直接使用DiskGenius手动满足这个要求.把这个U盘前面留出一块空闲空间,后面分出一块EFI分区就行了.

方法也很简单.

操作如下:

  • 插入U盘,打开DiskGenius
  • 右键U盘分区,点击"拆分分区"
  • 在分区前部后部都留一块空间.要求仍然是比PE系统的iso略大即可.比如我使用微PE,那么我在前后都留350MB.
  • 前后都选择"保持空闲"

  • 然后在U盘末尾的那块空闲空间上建立EFI分区.方法和上面建立EFI分区一模一样.
  • 分区前面的空闲空间要用FBinstTool软件配置,写入FBinst的MBR引导代码.
  • 打开FBinstTool软件,在列表里选好你的U盘,然后点击启动设置格式化
  • 不勾选"强行格式",勾选"UD扩展分区",输入大小.(强行格式就是把整个U盘全格式化了的意思)

这里输入多少?比如说我给U盘前面留了350MB空闲空间,那我能在UD扩展分区中输入350吗?

不能,因为UD分区=主分区+扩展分区.扩展分区350MB了,那主分区就没地方放了!

软件默认的UD主分区大小是8MB,所以UD扩展分区这里我最多输入342MB.我这次输入340MB.

扩展分区大小一定要大于你的PE系统ISO.

这样我们没有格式化整个U盘,就获得了一个内置了FBinst的全能三分区启动盘.

后面关于UD分区导入文件和配置引导文件代码的步骤和上文中介绍的完全一致.


事实上,你如果学会了理论,可以玩出更多的花样,尤其是在配置GRLDR的启动代码方面.

你可以尝试为一个U盘安装多个PE系统,让他们同时支持UD分区启动和EFI分区启动,你也可以直接用UD里面的GRLDR链式引导启动EFI分区中的BOOTMGR,用GRLDR启动Windows启动管理器,然后再启动PE系统;你还可以直接把PE系统的ISO文件放在EFI分区中或用户数据分区中,使用GRLDR直接加载这些ISO文件进而启动PE系统........

这些都依赖于正确的编写GRLDR的启动配置代码.利用现在的AI技术,你只要理解了启动引导的原理,让AI帮你编写GRLDR的启动配置代码应该不难.

这些玩法等你自探索吧,我就不详细展开了.(反正我是都试过了)


以上就是完整的手搓制作FBinst全能三分区启动盘的理论知识+教程.

如有不足请见谅.欢迎在评论区批评指正.

我是吕了了,专注于分享科普Windows系统运维计算机知识.关注我,持续获取Windows系统高阶操作指南.

http://www.jsqmd.com/news/789194/

相关文章:

  • 从混沌到可控,AIAgent测试实践指南,SITS2026认证的9步标准化交付流程
  • Linux 基本工具详解
  • 为Home Assistant AI构建持久记忆系统:PERMEAR架构详解与实战
  • ContextMenuManager:让Windows右键菜单变得清爽高效的终极解决方案
  • Docker 私有仓库 Harbor 搭建与镜像推送(系列第六篇:企业私有镜像仓库实战)
  • 探索Noto Emoji:打造跨平台表情符号统一体验的完整指南
  • Xplorer文件属性查看器:从新手到专家的完整指南
  • LinkSwift网盘直链下载助手:九大网盘一键获取真实下载地址的终极解决方案
  • 2026年AI技术大会餐饮安排:3大颠覆性变革、5类参会者精准营养画像、72小时动态餐食推演系统全解析
  • 2026年毕业生必备:论文被AI标记?三招避三大坑,高效降AI率! - 降AI实验室
  • JiYuTrainer终极解析:5步掌握极域电子教室破解与系统控制实战技巧
  • 优选驾考小程序(30276)
  • BB响实战指南:从基础设置到飞行安全的全流程解析
  • 神经网络波函数:AI破解量子多体问题维度灾难的新范式
  • 2026济南钻石回收靠谱商家推荐|专业高价,安全变现不套路 - 奢侈品回收测评
  • Win10任务管理器里那个NVIDIA Display Container LS服务到底是干嘛的?关了它会影响玩游戏吗?
  • 别再死记硬背了!用这个“水管模型”5分钟搞懂三极管电流放大原理
  • K8s 集群快速搭建(系列第八篇:单机/多节点集群实战)
  • 面试拷打:Java 泛型 T / E / K / V / ?——只会用不会讲,答完面试官直接拒绝
  • 元学习在药物虚拟筛选中的应用:MetaScreener项目深度解析
  • Switchyard:AI应用统一运行时层,简化多模型API集成与Web会话管理
  • YOLOv11自然生态鸟类目标分割数据集-3858张-flying-bird-1
  • 构建可穿戴设备ECG AI分析平台:从异构数据到实时推理的工程实践
  • 告别玄学调参:手把手教你为TensorRT INT8量化编写Python校准器(附完整代码)
  • 纯Bash脚本构建轻量级AI助手:架构解析与实战部署
  • 基于MCP协议实现AI安全运维:easypanel-mcp部署与实战指南
  • Adobe-GenP 3.0终极指南:免费解锁Adobe全系列创意软件
  • QMC音频格式终极转换指南:如何快速免费解锁QQ音乐加密文件
  • 5分钟快速掌握Jable视频下载:终极Chrome插件完整教程
  • 极化码ORBGRAND译码算法与FPGA实现研究【附代码】