无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)最好用的系统一键装机工具广告联系 QQ:184822951 微信:wuyouceo
查看: 3737|回复: 71

[原创] 全球首发!【技术实战】在exFAT分区上运行Windows PE系统

    [复制链接]
发表于 2020-7-25 02:54:59 | 显示全部楼层 |阅读模式
本帖最后由 朱玛12345678 于 2020-8-8 15:19 编辑

继上次我发布了【新突破】在ReFS分区上运行Windows PE系统后:
http://bbs.wuyou.net/forum.php?m ... 21202&mobile=no

现在我已经成功地实现了在exFAT分区上运行Windows Vista及以上任意版本的PE系统,截图中展示的系统版本是Windows 10 PE。
截图20200723194605.jpg
顺便给大家分享一下这个由我制作好现成的可启动exFAT版Win10PE镜像文件
腾讯微云下载:http://share.weiyun.com/i2Phfazq

百度网盘下载:http://pan.baidu.com/s/1a5eDrwRAMJ9v7sMtZl8i0g

首先WIM版Windows PE系统盘X盘的文件系统类型属性是由boot.sdi这个文件决定的,与PE启动盘本身的格式无关。
boot.sdi这个文件是一个存放有文件系统的微型镜像,在wim启动时将其虚拟为X盘并让wim挂载到该文件系统上作为WinPE的系统盘使用。
而在PE系统内X盘的实际容量则取决于FBWF配置文件或其注册表的设置,在绝大多数情况下与boot.sdi的文件大小无关。

Windows PE系统盘使用exFAT文件系统的优势有
更小的boot.sdi文件体积:
相比微软原版3MB的NTFS格式boot.sdi文件,exFAT格式boot.sdi文件可极限精简到令人难以置信的28KB超小体积且依然能够正常启动PE系统。
更快的系统启动速度:
由于boot.sdi的文件体积变得更小,因此在引导阶段启动PE系统的速度会显著加快。
更高的内存盘性能:
如图所示,exFAT的PE系统盘相比NTFS的PE系统盘有着更强的读写性能。
exFAT
截图20200723143515.jpg
NTFS
截图20200723142249.jpg
相关的其他测试帖:Primo Ramdisk v6.3.1性能测试之文件系统篇
http://bbs.wuyou.net/forum.php?m ... 18171&mobile=no

技术解析
与正常系统的启动原理不同,Windows PE的启动本质上属于RAMOS的WimBoot类技术,要想深入了解它就要知道它的启动过程是什么。
Windows PE系统的启动流程(以BIOS启动为例,UEFI大致相同):
bootmgr内置基本ram和wim驱动→加载bcd配置文件读取winpe的启动项→将boot.sdi文件加载到内存→将boot.wim文件加载到内存→bootmgr开始解析boot.sdi文件头数据执行内存盘初始化工作→bootmgr移交控制权给winload.exe→winload.exe内置基本ram和wim驱动直接在内存中加载ntoskrnl.exe等其他系统核心文件......→winload.exe移交内存盘控制权给ramdisk.sys→winload.exe移交文件系统控制权给对应文件系统驱动→wimfsf.sys开始解析boot.sdi镜像里的文件系统并将boot.wim只读挂载到该文件系统中→fbwf.sys将该文件系统可写装载并根据fbwf.cfg设置的值来扩大到指定的卷容量→其他地方大致等同于正常系统→PE系统完成启动阶段......
启动流程解析:
Windows PE与正常系统启动流程的最大区别就是系统文件的加载过程并不依赖磁盘文件系统的支持而是直接在内存中加载到最后再挂载WIM映像到文件系统上,也就是说即使对于ReFS这种目前不可引导的文件系统也依然可以作为WinPE的系统盘使用。

注意事项
由于Windows桌面版本的FBWF驱动不支持将exFAT卷可写装载,因此要想使exFAT格式的PE系统盘处于可读写状态必须要将其替换为Windows嵌入式版本的FBWF驱动。
由于Windows启动管理器的WimBoot功能被硬编码了在引导阶段只会加载NTFS的文件系统驱动,因此要想用exFAT作为系统盘启动PE系统必须要修改PE注册表的相关启动键值使其在引导阶段就加载exFAT的文件系统驱动。

研究分析
关于在exFAT分区上运行Windows PE系统我也研究了很久,这个重大发现还是我在最近的一次研究测试中偶然得到的。
很早以前我曾尝试过将NTFS的boot.sdi挂载为虚拟盘再手动格式化为exFAT保存后用于测试启动WinPE系统,但经过多次测试均以失败告终。早期的时候我一致认为这是微软人为地限制了不能在非NTFS卷上挂载WIM映像导致的,其中具体表现为系统在启动时卡在Logo上一直不停地转圈没有任何反应也不会蓝屏。
截图20200720223450.jpg
而就在前段时间我有一次在研究Vista PE的时候突然想起了还没有用它测试过在exFAT卷上运行,于是就开始尝试去做这个测试,结果与在Win7及更高版本的PE系统启动时都会一直卡Logo的表现不同,它在启动过程中居然直接蓝屏了。
截图20200720223725.jpg
这是一条很重要的线索,看到了0xED这个蓝屏代码我顿时有一种很熟悉的感觉,我当年在研究exFAT+VHD(X)模式启动时使用外NTFS+里exFAT组合启动系统就遇到了同样的蓝屏代码,看来事情没这么简单我觉得有戏。
http://bbs.wuyou.net/forum.php?m ... 14354&mobile=no
Windows的所有文件系统类驱动策略都是按需加载,也就是说只有在设备使用该文件系统时才会加载所对应的驱动。
这时我怀疑难道是因为WBM启动器无法检测到exFAT的存在导致其文件系统驱动没有成功加载?随后我尝试修改了一下注册表中的exFAT驱动启动键值使其在WBM阶段就强制加载,结果在测试启动PE时居然成功地进入了桌面!
截图20200720224157.jpg
不过我又有了一个问题,为什么我那次测试除了NTFS外只有ReFS系统盘能启动PE而其他的文件系统则都不行?随后我就去看了一下ReFS的注册表服务项,终于发现了之所以ReFS能成功启动原来是因为它默认带有一个叫做BootFlags的启动键值,所以真得吐槽一句微软挖的这个坑实在是太......了。
截图20200720224242.jpg
分析到这里exFAT系统盘无法成功启动Windows PE的真正原因就已经找到了,正常系统在启动时WBM可以检测到系统盘用的是exFAT文件系统而去自动加载对应的驱动,而WinPE在启动时WBM不能检测到boot.sdi里用的是exFAT文件系统便导致其无法正确加载对应的驱动。这时如果不更改注册表中相应的启动项键值,在PE启动时系统就无法识别该文件系统导致其WIM一直无法被挂载,那么系统自然也就会一直卡在开机界面上了。

当exFAT运行WinPE的问题成功解决后,我换了一个不同版本的PE系统进行测试也能成功启动,但却发现它的X盘居然是只读的,这跟我那次测试ReFS运行WinPE的表现一模一样。
这就很奇怪了,低版本的PE都能读写exFAT的系统盘,高版本的PE也没道理不能读写exFAT的系统盘啊,莫非是FBWF驱动版本的问题?
经研究表明FBWF驱动有两类版本,一类是Windows桌面系统版本,另一类则是Windows嵌入式系统版本,如图这些fbwf.sys的文件属性是有明显区别的。
截图20200720225907.jpg
经测试发现桌面版本的FBWF驱动都不支持以可写形式装载exFAT卷,而嵌入式版本的FBWF驱动则都能支持以可写形式装载exFAT卷,其中嵌入式版FBWF驱动可扩展的容量更大且IO性能更高,是在各版本Windows PE中最理想的选择。
更换FBWF驱动可以直接替换文件无需修改注册表,那个PE能正常读写exFAT的系统盘也正是因为用了嵌入式版的FBWF驱动,这样exFAT启动WinPE的所有已知问题就全都完美解决了。

准备工具
bootsdi28KB+FBWF驱动和ISO+WIM编辑工具:
其中使用exFAT格式化的这个boot.sdi镜像文件已制作好可以直接拿来使用,同时此FBWF驱动可适用于Vista到Win10系统全通用。
其中包含UltraISO和WimTool绿色版工具可直接运行,同时下面的操作教程将以使用这两款软件为例。
论坛直接下载: bootsdi28KB FBWF驱动.zip (136.85 KB, 下载次数: 57)

点评

这让我想起了ahci改ide蓝屏,本质就是驱动服务没有开启, 感谢研究,  发表于 4 天前

评分

参与人数 26无忧币 +122 收起 理由
lookerJ + 3 淡定
wowfans + 5 很给力!!
foolst + 5 很给力!
施王争霸 + 5 很给力!
rengrancunzai + 5 很给力!
feihe + 5 赞一个!
易广白 + 5 赞一个!
hoder + 5 很给力!
xxymgg + 1 很给力!
qrd8008 + 5 很给力!
qq791938110 + 5 神马都是浮云
hs_32 + 5 神马都是浮云
jianghui2010 + 3 神马都是浮云
xq8751 + 5 赞一个!
z10056 + 5 神马都是浮云
whyme22 + 5
yigeren + 5 测试成功,感谢分享
xlshn + 5 很给力!
paulan + 5 很给力!
JinPei + 5 很给力!
落雪无痕 + 5 很给力!
立帮电子 + 5 赞一个!
xxkknn + 5 赞一个!
吉毛桃 + 5 很给力!
826773297 + 5 支持一下
怪怪怪怪i + 5 很给力!

查看全部评分

 楼主| 发表于 2020-7-25 02:55:00 | 显示全部楼层
本以为是微软人为地限制了不能在非NTFS分区上运行PE系统,没想到压根就毫无限制。
如果没有那个蓝屏代码和这段相关经历,或许我永远也找不到解决这个问题的真正方法。
回复

使用道具 举报

发表于 2020-7-25 06:56:05 | 显示全部楼层
版主技术强大,纯膜拜,看到一大串的操作步骤直接望而却步了
回复

使用道具 举报

发表于 2020-7-25 07:41:36 | 显示全部楼层
exFAT分区上原本是不能运行pe的?居然一直不知道,感谢楼主的分享了!
辛苦了,这么多图。
支持你!
回复

使用道具 举报

发表于 2020-7-25 08:11:00 | 显示全部楼层
厉害了
回复

使用道具 举报

发表于 2020-7-25 08:15:00 | 显示全部楼层
感谢楼主分享知识,写了这么多,辛苦。
回复

使用道具 举报

发表于 2020-7-25 08:23:03 | 显示全部楼层
这下齐活了,系统分区、VHD和PE里面都可以选用exFAT文件系统了,赞!
回复

使用道具 举报

发表于 2020-7-25 08:36:43 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2020-7-25 08:50:32 | 显示全部楼层
感觉好强大,楼主真是技术男
回复

使用道具 举报

发表于 2020-7-25 08:52:09 | 显示全部楼层
祝贺成功!谢谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2020-8-9 16:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表