无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 202989|回复: 499
打印 上一主题 下一主题

[原创] 全球首发!【技术实战】在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。

顺便给大家分享一下这个由我制作好现成的可启动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

NTFS

相关的其他测试帖: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上一直不停地转圈没有任何反应也不会蓝屏。

而就在前段时间我有一次在研究Vista PE的时候突然想起了还没有用它测试过在exFAT卷上运行,于是就开始尝试去做这个测试,结果与在Win7及更高版本的PE系统启动时都会一直卡Logo的表现不同,它在启动过程中居然直接蓝屏了。

这是一条很重要的线索,看到了0xED这个蓝屏代码我顿时有一种很熟悉的感觉,我当年在研究exFAT+VHD(X)模式启动时使用外NTFS+里exFAT组合启动系统就遇到了同样的蓝屏代码,看来事情没这么简单我觉得有戏。
http://bbs.wuyou.net/forum.php?m ... 14354&mobile=no
Windows的所有文件系统类驱动策略都是按需加载,也就是说只有在设备使用该文件系统时才会加载所对应的驱动。
这时我怀疑难道是因为WBM启动器无法检测到exFAT的存在导致其文件系统驱动没有成功加载?随后我尝试修改了一下注册表中的exFAT驱动启动键值使其在WBM阶段就强制加载,结果在测试启动PE时居然成功地进入了桌面!

不过我又有了一个问题,为什么我那次测试除了NTFS外只有ReFS系统盘能启动PE而其他的文件系统则都不行?随后我就去看了一下ReFS的注册表服务项,终于发现了之所以ReFS能成功启动原来是因为它默认带有一个叫做BootFlags的启动键值,所以真得吐槽一句微软挖的这个坑实在是太......了。

分析到这里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的文件属性是有明显区别的。

经测试发现桌面版本的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, 下载次数: 529) ISO WIM编辑工具.zip (3.75 MB, 下载次数: 512)
http://bbs.wuyou.net/forum.php?mod=attachment&aid=NDYyNjY2fGM4Yzk4ZDk4Zjk0YzUzNjM5ODU2NWEzNmQ1ZmUwOWRmfDE3MzIyNDUzMTE%3D&request=yes&_f=.zip,http://bbs.wuyou.net/forum.php?mod=attachment&aid=NDYyMzQ0fGMzYTBkMTEyM2MwNTllZTk1NjU2MjU5OTQzYzBlMjBmfDE3MzIyNDUzMTE%3D&request=yes&_f=.zip

腾讯微云下载:http://share.weiyun.com/JasMEhWK

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

操作步骤
1、下载“bootsdi28KB+FBWF驱动.zip”与“ISO+WIM编辑工具.zip”(如已有此软件可忽略)并准备好你想要操作的Windows PE.iso系统镜像。

2、使用系统自带zip提取工具或者第三方解压缩软件直接解压下载的这些压缩包文件。

3、本次以使用系统自带的zip解压模块为例,解压路径随意只要你能找得到这些文件即可。

4、解压后得到的文件如下。

5、打开“UltraISO.exe”ISO镜像处理工具。

6、定位到左上角的“文件(F)”菜单,点击“打开”按钮。

7、在弹出的“打开 ISO 文件”窗口中找到PE系统的ISO镜像文件并点击“打开”按钮。

8、寻找“.wim”格式的映像文件,原版的PE系统映像的默认存放路径为“.iso\sources\boot.wim”,本次以官方原版的路径为例,双击“sources”文件夹即可进入。

9、右键找到的“.wim”映像文件,点击“提取到...”按钮。

10、在弹出的“浏览文件夹”窗口中选择只要你能找得到文件的任意位置并点击“确定”按钮完成文件提取。

11、新建一个空的文件夹,存放位置和文件名随意,本次以WinPE命名为例。

12、打开“WimTool.exe”WIM映像处理工具。

13、在“选择要挂载或解开的WIM文件”处点击“浏览”按钮,选择之前提取出来的PE系统WIM映像文件并点击“打开”按钮。

14、在“选择挂载或解开的目标文件夹”处点击“浏览”按钮,选择之前新建的那个空文件夹并点击“确定”按钮。

15、选择好后如果检查了没有问题就点击“解开映像”按钮,这里以解压WIM操作为例,当然你也可以通过点击“挂载映像”的方式来热修改WIM。

16、当绿色进度条为“100%”并在提示信息框内显示“解开映像文件:完成”时即可进行下一步操作。

17、打开并进入到“解压PE系统的文件夹\Windows\System32\Drivers”目录中,找到“fbwf.sys”文件并右键点击“属性”按钮,在“详细信息”选项卡里查看“文件版本”和“产品名称”这两个属性,如果你看到的分别是“Windows系统本身的版本号”和没有“Embedded”字样,则代表该PE系统使用的是原版FBWF驱动在接下来需要手动替换为此驱动;如果你看到的分别是“非Windows系统本身的版本号”和有“Embedded”字样,则代表该PE系统已经使用了嵌入式版的FBWF驱动在接下来无需再替换此驱动。

18、根据此PE系统的位数来选择对应的驱动文件,64位系统请用“x64”文件夹里的文件,32位系统请用“x86”文件夹里的文件。
将“fbwf.cfg”文件复制粘贴到“解压PE系统的文件夹\Windows”文件夹内;再将“fbwf.sys”文件复制粘贴到“解压PE系统的文件夹\Windows\System32\Drivers”文件夹内。

19、点击“替换目标中的文件(R)”按钮完成替换文件操作。

20、按下“Windows徽标键+R键”快速打开“运行”窗口,输入“regedit”不包含引号并点击“确定”按钮即可打开注册表编辑器。

21、单击选中“HKEY_LOCAL_MACHINE”根键。

22、定位到左上角的“文件(F)”菜单,点击“加载配置单元(L)...”按钮。

23、在弹出的“加载配置单元”窗口中定位到“解压PE系统的文件夹\Windows\System32\Config”文件夹内,找到“SYSTEM”(无扩展名)文件并点击“打开”按钮。

24、在弹出的“加载配置单元-项名称(K):”窗口中输入的文本不限,这里以SYS命名为例,然后点击“确定”按钮。

25、左侧定位到“HKEY_LOCAL_MACHINE(可简写为HKLM)\挂载名(以SYS为例)\ControlSet001\Services\exfat”项,右侧双击“Start”键值在编辑框内将其由默认的3修改为0,该值对于十六进制和十进制都相同,点击“确定”按钮完成修改。

26、另外在服务项中关于设置文件系统驱动的启动相关键值也可以不修改“Start”键值而采用添加“BootFlags”键值来实现,但在无特殊情况下还是建议通过修改“Start”键值这种更稳定的方式来实现。此外除了ReFS文件系统默认具有“BootFlags”键值之外,其他文件系统默认都没有此键值,
如果你一定要使用添加“BootFlags”键值的方法来为exFAT驱动设置启动键值,那么在空白处右键将鼠标悬停在“新建”按钮上然后点击“DWORD (32 位)值(D)”按钮来新建一个键值。

27、右键“新值 #1”点击“重命名(R)”,输入“BootFlags”不包含引号后点击空白处完成重命名。

28、双击“BootFlags”键值并在编辑框内将其修改为十六进制的80或十进制的128,该值也是ReFS文件系统的默认值,点击“确定”按钮完成修改。

29、修改完毕后在左侧导航窗格中找到并单击选中HKLM\SYS(即之前挂载注册表时输入的项名)项。

30、点击“文件(F)”菜单,再点击“卸载配置单元(U)...”按钮。

31、在弹出的“确认卸载配置单元”对话框中点击“是(Y)”按钮即可保存注册表设置。

32、回到WimTool,如果之前使用的是“挂载映像”,那么直接点击“卸载映像”按钮并在弹出的“选择卸载WIM映像的方式”对话框中点击“是(Y)”按钮直接保存映像即可。
对于之前使用的是“解开映像”,那么则点击“新制和追加”选项卡,在“选择要制作成WIM映像的源目录”处点击“浏览”按钮,选择解压PE系统的文件夹并点击“确定”按钮。

33、在“选择保存WIM映像的文件名”处点击“浏览”按钮,选择点击之前提取的PE系统WIM映像并点击“保存”按钮。

34、在选项[1]区域中的“压缩类型”和“系统标志”下拉菜单里分别选择为“最大压缩”和“WindowsPE”。在选项[2]区域中的四个“文本框”内可以自由设置备注信息或者直接留空即可。选择好后如果检查了没有问题就点击“新建映像”按钮继续下一步操作。

35、如图所示如果弹出“请选择你的操作。”对话框则点击“是(Y)”按钮以继续操作。

36、当绿色进度条为“100%”并在提示信息框内显示“制作映像文件:完成”时即可进行下一步操作。

37、回到UltraISO,可点击左上角导航窗格中的ISO卷标名返回到根目录。

38、在左上角的导航窗格中点击“boot”文件夹,然后在左下角的导航窗格中找到之前解压出来的“boot.sdi”文件路径,再从右下角的预览窗格中右键“boot.sdi”文件并点击“添加”按钮。

39、在弹出的“替换文件”对话框中点击“是”按钮完成替换。

40、在左上角的导航窗格中点击“sources”文件夹,然后在左下角的导航窗格中找到之前新建好的PE系统WIM映像文件路径,再从右下角的预览窗格中右键PE系统WIM映像文件并点击“添加”按钮。

41、在弹出的“替换文件”对话框中点击“是”按钮完成替换。

42、定位到左上角的“文件(F)”菜单,点击“保存”按钮。

43、最后成功生成新的ISO镜像文件,此时可以拿去测试启动PE系统了。


多版本PE系统测试运行截图
exFAT运行VistaPE


exFAT运行Win7PE


UDF运行Win7PE


exFAT运行Win8PE


exFAT运行Win8.1PE


exFAT运行Win10v1507PE

点评

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

评分

参与人数 55无忧币 +250 收起 理由
sweetsea + 5 很给力!
yyz2191958 + 2 赞一个!
ko20010214 + 5 很给力!
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 淡定

查看全部评分

477#
发表于 4 天前 来自手机 | 只看该作者
厉害
回复

使用道具 举报

476#
发表于 5 天前 来自手机 | 只看该作者
厉害
回复

使用道具 举报

475#
发表于 2024-11-13 21:48:39 | 只看该作者
学习
回复

使用道具 举报

474#
发表于 2024-11-7 15:59:59 | 只看该作者
谢谢分享
回复

使用道具 举报

473#
发表于 2024-11-7 15:10:46 | 只看该作者
感谢分享,试试
回复

使用道具 举报

472#
发表于 2024-11-7 12:05:00 | 只看该作者
感谢分享!
回复

使用道具 举报

471#
发表于 2024-11-7 10:01:10 | 只看该作者
谢谢分享
回复

使用道具 举报

470#
发表于 2024-11-6 20:56:14 | 只看该作者
支持支持
回复

使用道具 举报

469#
发表于 2024-11-6 20:46:12 | 只看该作者
谢谢分享
回复

使用道具 举报

468#
发表于 2024-10-25 11:08:38 | 只看该作者
感谢楼主分享
回复

使用道具 举报

467#
发表于 2024-10-25 09:44:17 | 只看该作者
感谢分享
回复

使用道具 举报

466#
发表于 2024-10-25 08:01:25 | 只看该作者
支持,支持
回复

使用道具 举报

465#
发表于 2024-10-25 07:04:41 | 只看该作者
技术大伽,只能膜拜
回复

使用道具 举报

464#
发表于 2024-10-21 01:03:14 | 只看该作者
感谢分享
回复

使用道具 举报

463#
发表于 2024-10-20 09:07:25 | 只看该作者
感谢分享
回复

使用道具 举报

462#
发表于 2024-10-19 23:17:34 | 只看该作者
赞一个
回复

使用道具 举报

461#
发表于 2024-10-19 21:25:57 | 只看该作者
膜拜大佬,感觉在看天书
回复

使用道具 举报

460#
发表于 2024-10-13 21:21:27 | 只看该作者
膜拜大佬
回复

使用道具 举报

459#
发表于 2024-9-29 14:32:51 | 只看该作者
exfat快还是ntfs快

点评

exFAT  发表于 2024-9-29 21:04
回复

使用道具 举报

458#
发表于 2024-9-29 12:53:59 | 只看该作者
技术贴啊。不错收藏下
回复

使用道具 举报

457#
发表于 2024-9-28 09:35:43 | 只看该作者
谢谢分享
回复

使用道具 举报

456#
发表于 2024-9-28 00:32:16 | 只看该作者
学习一下过程。
回复

使用道具 举报

455#
发表于 2024-9-27 10:16:49 | 只看该作者
楼主好强大
回复

使用道具 举报

454#
发表于 2024-9-26 12:42:10 | 只看该作者
跟高手学习
回复

使用道具 举报

453#
发表于 2024-9-22 11:22:03 | 只看该作者
感谢分享
回复

使用道具 举报

452#
发表于 2024-9-21 11:56:38 | 只看该作者
支持一波
回复

使用道具 举报

451#
发表于 2024-9-20 16:43:24 | 只看该作者
感谢分享
回复

使用道具 举报

450#
发表于 2024-9-20 09:46:40 | 只看该作者

原创作品坚决支持!
回复

使用道具 举报

449#
发表于 2024-9-6 10:04:15 | 只看该作者
原创作品坚决支持!
回复

使用道具 举报

448#
发表于 2024-9-6 09:13:36 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-22 11:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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