无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 151825|回复: 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 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 12:03:39 | 显示全部楼层
Liberation 发表于 2020-7-25 11:34
PE内核是10586,是基于微PE改的,还是全新制作的?

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

点评

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

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

 楼主| 发表于 2020-8-7 15:28:52 | 显示全部楼层
834772509 发表于 2020-8-7 10:29
楼主,换成了exFAT之后,打开DISM++就提示“Dism++发现已知兼容性问题:Wof驱动存在异常, 无法使用Comapct ...

那是因为Dism++还没适配在非NTFS系统盘上获取Wof驱动的工作状态,WimBoot和ComPact需要NTFS压缩API的支持,在exFAT中不存在这个API自然就不受支持,而且exFAT本身也没有文件系统级压缩功能。
当然实际上Wof驱动在exFAT系统盘上依然可以工作,只不过不会起到任何压缩作用而已。此外WB和CP都是用的同一种压缩算法,就算两者同时使用也只会有其中一种的效果。
不过ComPact对PE系统来说也没有用处,WinPE本来就是已经用WIM压缩过的,本质上属于WimBoot类技术,所以再用ComPact压缩一遍完全就是零作用没有实际意义。

点评

这个算Dism++的Bug,只能找开发者提交Bug。  发表于 2021-4-23 11:36
哦哦,了解了  详情 回复 发表于 2020-8-7 20:20
回复

使用道具 举报

 楼主| 发表于 2020-9-16 11:07:09 | 显示全部楼层
610100 发表于 2020-9-15 19:06
请问这样操作之后,是否还支持在NTFS之类的分区上启动

没影响,想用啥就能用啥。

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-10-7 19:47:13 | 显示全部楼层
赤酱 发表于 2020-10-4 12:34
能和楼主谈谈么?我在网上找的很多刻录软件把.iso烧录进U盘里都是只有FAT32和NTFS两种格式,就没见过exFA ...

你是没看懂这个帖子的内容吧?PE系统的X盘格式跟U盘启动盘的格式完全没关系的。

点评

我不是问这个帖子的事 我是问U盘用什么软件能刻录exfat,像rufus只有NTFS和fat32  详情 回复 发表于 2020-10-16 13:46
楼主的PE启动成功后,查看PE系统中的系统盘X:盘的文件系统,应该是exFAT类型。不是存储PE的优盘采用的文件系统是exFAT类型。  详情 回复 发表于 2020-10-15 16:30
回复

使用道具 举报

 楼主| 发表于 2020-10-17 02:11:14 | 显示全部楼层
赤酱 发表于 2020-10-16 13:46
我不是问这个帖子的事
我是问U盘用什么软件能刻录exfat,像rufus只有NTFS和fat32

你是万年没更新软件吧?Rufus从v3.9开始就已经支持exFAT UEFI方案了。

点评

哦,好吧 那您知道还有别的刻录软件支持exFAT 么?  详情 回复 发表于 2020-10-17 12:21
回复

使用道具 举报

 楼主| 发表于 2020-10-17 12:32:23 | 显示全部楼层
赤酱 发表于 2020-10-17 12:21
哦,好吧
那您知道还有别的刻录软件支持exFAT 么?

那现在的Ventoy它不香吗?
回复

使用道具 举报

 楼主| 发表于 2021-2-16 19:04:20 | 显示全部楼层
2012fengxi 发表于 2021-2-16 15:16
楼主能否弄一个fat32的sdi文件?我觉得fat32也能启动PE

X盘用FAT32文件系统是可以的,当然注册表fastfat服务项的启动键值肯定也要改。

不过由于FAT的系统盘会放不了>4G单文件,因此boot.sdi用FAT32基本没有实际意义。
截图20210216184108.jpg

点评

FAT32也可以啦  详情 回复 发表于 2021-2-17 00:57
回复

使用道具 举报

 楼主| 发表于 2021-4-21 21:01:06 | 显示全部楼层
hhh333 发表于 2021-4-21 19:36
哈哈,超强,这个技术的核心是X盘使用exFAT格式,有几个问题请教一下:
1、32位嵌式FBWF只能支持X盘1G,有 ...

1、可以,slore大神会破解这个限制。
2、wintoflash大神提供过boot.sdi的制作方法:http://bbs.wuyou.net/forum.php?m ... 21193&mobile=no
回复

使用道具 举报

 楼主| 发表于 2021-4-22 00:07:39 | 显示全部楼层
hhh333 发表于 2021-4-21 21:17
刚才试了一下,限制较多
1、exfat的start改为0,应该对于原来用NTFS的boot.sdi来启动的没什么影响
2、改 ...

1、这个本来就没影响
2、挂载VHD(X)的问题用高版本的Win10PE就可以解决了,具体可参考:http://bbs.wuyou.net/forum.php?m ... 14354&mobile=no
3、Win8.1PE在帖子1楼有测试截图,不能启动那就是有地方没改好再仔细检查一下吧。
回复

使用道具 举报

 楼主| 发表于 2021-4-22 00:25:24 | 显示全部楼层
hhh333 发表于 2021-4-21 21:17
刚才试了一下,限制较多
1、exfat的start改为0,应该对于原来用NTFS的boot.sdi来启动的没什么影响
2、改 ...

再不济就直接把VhdMount驱动整合进PE系统里:
http://bbs.wuyou.net/forum.php?m ... 22355&mobile=no
不管什么版本的PE都能无限制随便挂载VHD文件
回复

使用道具 举报

 楼主| 发表于 2021-4-23 11:35:30 | 显示全部楼层
xiaojinglf 发表于 2021-4-23 05:42
一些搜索软件要导致系统卡死。dism++启动会报wof驱动错误

第一个问题你不说具体是什么软件那等于没说,Everything我试过没问题。
第二个问题在59楼发过,就不重复回答了。
回复

使用道具 举报

 楼主| 发表于 2021-4-23 15:43:41 | 显示全部楼层
hhh333 发表于 2021-4-22 07:03
新的win10pe使用嵌入版fbwf不能顺利从system转administrator
经过测试,桌面版双内存占用的问题应该只在大 ...

我试了嵌入式版本的FBWF驱动并不会影响到PE系统的System与Administrator用户相互切换,如果转不了那就是你PE系统的问题。
PE.gif
桌面版本的FBWF驱动向X盘写入文件会占用双倍内存的问题一直都有,只是在文件体积不大的时候没那么明显而已。

点评

我的19043用嵌入式的切换后不能自动建立Administrator用户目录,进而出现问题。Slore也说有这个限制。换成桌面版的一切正常  详情 回复 发表于 2021-4-25 08:31
回复

使用道具 举报

 楼主| 发表于 2021-5-10 11:55:07 | 显示全部楼层
jmjmbj 发表于 2021-5-10 11:03
操作好复杂,是要重新制作PE,还是修改现在的PE?
感觉目前基于NTFS运行的PE速度也很快了

都可以啊,教程是以修改现有的PE系统为例,实际上核心步骤也就替换文件和改注册表键值这两个地方,你这都嫌麻烦那用WimBuilder2工具一键制作就完事了。
截图20210510113921.jpg

评分

参与人数 1无忧币 +5 收起 理由
jmjmbj + 5 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-7-25 01:48:53 | 显示全部楼层
lywy 发表于 2021-7-19 23:34
楼主高手!教程详细!热心分享,谢谢啦

还有一个PE普遍存在的问题,将U盘的PE启动分区以外部分式格式化 ...

Win10 v1703之前的系统本来就不支持对可移动磁盘设备类型多分区,能多分区的都是本地磁盘设备类型。所以要解决这个问题也很简单,给U盘装个cfadisk驱动就可以了。
http://bbs.wuyou.net/forum.php?m ... 22139&mobile=no
回复

使用道具 举报

 楼主| 发表于 2021-7-25 01:50:11 | 显示全部楼层
lywy 发表于 2021-7-19 23:46
26、另外在服务项中关于设置文件系统驱动的启动相关键值也可以不修改“Start”键值而采用添加“BootFlags” ...

第25步就是,一看就知道你没认真看帖。
回复

使用道具 举报

 楼主| 发表于 2022-7-8 00:20:38 | 显示全部楼层
bnn17 发表于 2022-7-7 23:49
windows 11 работает в exfat штатно. win10 только с этими файлами

Если у вас возникнут проблемы, пожалуйста, объясните подробно.
回复

使用道具 举报

 楼主| 发表于 2023-7-30 20:08:27 | 显示全部楼层
本帖最后由 朱玛12345678 于 2023-7-30 21:36 编辑
kokozzz123 发表于 2023-7-30 16:45
请教一个问题

以前在网上买的装机pe u盘,里面是老版本的easyu,里面有一个10pe,一个03pe,因为新电脑 ...

不影响,03PE用的是.wim里面的boot.sdi文件。

点评

好的,谢谢  详情 回复 发表于 2023-7-30 20:11
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-16 22:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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