无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 149712|回复: 423

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

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

继上次我发布了【新突破】在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

对于在exFAT分区中安装并启动Windows系统,请参考此教程:http://bbs.wuyou.net/forum.php?m ... 88226&mobile=no
注意本帖是将PE系统里的X:内存盘更改为exFAT文件系统,不是把U盘本身制作成exFAT格式来启动WinPE。
首先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, 下载次数: 483)

点评

这让我想起了ahci改ide蓝屏,本质就是驱动服务没有开启, 感谢研究,  发表于 2020-8-5 10:31

评分

参与人数 52无忧币 +238 收起 理由
gfsyip + 5
lmxhn + 1 很给力!
ulisang + 5 很给力!
1016969444 + 1 很给力!
新空气 + 5 很给力!
zlk2099 + 5 很给力!
zst + 5 赞一个!
北极的企鹅 + 1 很给力!
鼎针皮艺 + 5 赞一个!
cyclonebaby + 5 很给力!
wanghang008 + 15 很给力!
ayu1808 + 1 很给力!
afen + 5 很给力!
8858 + 1
ZXGU + 1 很给力!
心零 + 5 赞一个!
行者武松 + 5 很给力!
2012chenyuwen + 5 很给力!
赤酱 + 5 赞一个!
netants2011 + 5 很给力!
610100 + 5 很给力!
weiisusu + 5 赞一个!
anythingsky + 5 很给力!
kkocdko + 5 很给力!
parsons + 5 赞一个!
a465186962 + 5 ok
lookerJ + 3 淡定
wowfans + 5 很给力!!
foolst + 5 很给力!
施王争霸 + 5 很给力!

查看全部评分

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

评分

参与人数 1无忧币 +5 收起 理由
8858 + 5 赞一个!

查看全部评分

回复

使用道具 举报

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

点评

04年注册的 你这是才是老鸟  详情 回复 发表于 2024-1-10 10:39
回复

使用道具 举报

发表于 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 | 显示全部楼层
祝贺成功!谢谢分享!
回复

使用道具 举报

发表于 2020-7-25 09:12:30 | 显示全部楼层
ReFS分区上运行Windows PE系统,是不是也要替换boot.sdi和fbwf.sys,并修改注册表system文件\ControlSet001\Services\ReFS的Start由3改为0 ???

点评

已更新,现在将提供由我制作好已使用ReFS文件系统格式化的现成boot.sdi镜像文件可直接拿来使用 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=421202&mobile=no  发表于 2020-7-26 10:30
只替换boot.sdi就可以了,其他的不需要改了也没用。 但要注意由于微软人为地限制了ReFS能格式化的最小卷容量是512MB,因此需要使用512MB或更大的boot.sdi文件才行。  详情 回复 发表于 2020-7-25 11:10
回复

使用道具 举报

发表于 2020-7-25 09:21:14 | 显示全部楼层
学习了,楼主很牛的实践能力
回复

使用道具 举报

发表于 2020-7-25 09:59:02 | 显示全部楼层
根据楼主的教程,已成功启动本人自制的win10PE x64以exfat格式启动。。。
回复

使用道具 举报

发表于 2020-7-25 10:36:35 | 显示全部楼层
谢谢!!! 谢谢!!! 谢谢!!!
回复

使用道具 举报

 楼主| 发表于 2020-7-25 11:10:13 | 显示全部楼层
foxfirefox 发表于 2020-7-25 09:12
ReFS分区上运行Windows PE系统,是不是也要替换boot.sdi和fbwf.sys,并修改注册表system文件\ControlSet001\ ...

只替换boot.sdi就可以了,其他的不需要改了也没用。
但要注意由于微软人为地限制了ReFS能格式化的最小卷容量是512MB,因此需要使用512MB或更大的boot.sdi文件才行。
回复

使用道具 举报

发表于 2020-7-25 11:25:04 | 显示全部楼层
好多图,感谢分享
回复

使用道具 举报

发表于 2020-7-25 11:34:12 | 显示全部楼层
PE内核是10586,是基于微PE改的,还是全新制作的?

点评

当然是基于微PE改的,全新制作恐怕这个月都出不来这篇教程。  详情 回复 发表于 2020-7-25 12:03
回复

使用道具 举报

发表于 2020-7-25 11:41:50 | 显示全部楼层
楼主真正牛比,对win系统のdiy确实玩透了。。。
回复

使用道具 举报

 楼主| 发表于 2020-7-25 12:03:39 | 显示全部楼层
Liberation 发表于 2020-7-25 11:34
PE内核是10586,是基于微PE改的,还是全新制作的?

当然是基于微PE改的,全新制作恐怕这个月都出不来这篇教程。

点评

谢谢分享,试一下DISM等功能有没有修复  详情 回复 发表于 2020-7-25 12:52
回复

使用道具 举报

发表于 2020-7-25 12:38:43 | 显示全部楼层

感谢楼主分享知识
回复

使用道具 举报

发表于 2020-7-25 12:46:45 | 显示全部楼层
向舍得折腾的精神致敬
回复

使用道具 举报

发表于 2020-7-25 12:52:43 | 显示全部楼层
朱玛12345678 发表于 2020-7-25 12:03
当然是基于微PE改的,全新制作恐怕这个月都出不来这篇教程。

谢谢分享,试一下DISM等功能有没有修复

点评

这个PE我主要是用于测试的,没改太多地方。  详情 回复 发表于 2020-7-25 13:12
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2020-7-25 13:12:20 | 显示全部楼层
Liberation 发表于 2020-7-25 12:52
谢谢分享,试一下DISM等功能有没有修复

这个PE我主要是用于测试的,没改太多地方。
回复

使用道具 举报

发表于 2020-7-25 13:18:30 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2020-7-25 13:19:05 | 显示全部楼层
感觉楼主好强大,技术大佬啊
回复

使用道具 举报

发表于 2020-7-25 13:46:27 | 显示全部楼层
向楼主的精神致敬!!!
回复

使用道具 举报

发表于 2020-7-25 15:04:39 | 显示全部楼层
本帖最后由 20121010168 于 2020-7-25 15:40 编辑

根据LZ的方法成功更改了自用的19041PE;另有一个小疑问,PE里面的exfat.sys 没有更换,居然也可以正常使用。
实体机测试,存在多PE时,更换成修改过的boot.sdi后会导致其它PE系统(未作处理的)卡在转圈处,换回正常boot.sdi不影响使用,只是文件系统从exfat变回了ntfs.


准备使用双boot.sdi ;结果发现bootice更改SDI文件那的配置,别的选项菜单也跟着变了

点评

对于PE系统都不需要替换我制作的那个已签名exFAT驱动文件,Windows PE的加载系统文件工作是在内存里进行的速度极快,即使是用.cat外置签名也几乎不影响PE的启动时间。而且就算是正常的10.0.19041版本系统,微软也已  详情 回复 发表于 2020-7-25 15:45
回复

使用道具 举报

发表于 2020-7-25 15:14:13 | 显示全部楼层
原创作品坚决支持!
回复

使用道具 举报

 楼主| 发表于 2020-7-25 15:45:08 | 显示全部楼层
本帖最后由 朱玛12345678 于 2020-7-25 15:51 编辑
20121010168 发表于 2020-7-25 15:04
根据LZ的方法成功更改了自用的19041PE,
另有一个小疑问,PE里面的exfat.sys 没有更换,居然也可以正常使 ...

对于PE系统都不需要替换我制作的那个已签名exFAT驱动文件,Windows PE的加载系统文件工作是在内存里进行的速度极快,即使是用.cat外置签名也几乎不影响PE的启动时间。而且就算是正常的10.0.19041版本系统,微软也已经为exfat.sys加入了内置数字签名都不再需要替换驱动了。
其他PE你不做修改注册表相关启动键值处理,那在启动时当然会卡Logo。
一个.ISO内放双Boot.sdi文件是可行的,我在帖子里提供的那个WINPE.ISO镜像就是用的双Boot.sdi。

点评

恩,谢谢,现在是用的双boot.sdi了  详情 回复 发表于 2020-7-25 17:21
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-28 23:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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