无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 90768|回复: 171
打印 上一主题 下一主题

[分享] 完美解决64位系统在exFAT分区中启动时间过长的问题

    [复制链接]
跳转到指定楼层
#
发表于 2019-5-9 18:47:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 朱玛12345678 于 2019-5-11 18:06 编辑

前言
作为全网研究exFAT启动各版本Windows的第一人,我曾经为研究这个专门写过一个测试帖:http://bbs.wuyou.net/forum.php?m ... 88226&mobile=no
其中一直以来都困扰着我的一个问题就是 高版本的64位系统在exFAT分区中的启动时间非常长,而导致这个问题的真正原因在很长一段时间内我也一直没能搞清楚,同时也因为这个问题导致我始终无法将其正式应用于日常使用环境。不过在经过我后来的不懈努力之下此问题最后终于得到解决,同时我也打算分享这段奇妙而又未知的探索旅程。

原因
关于exFAT启动的问题在继我上一次的研究到至今已有近半年之久,但我也曾说过日后一定会解决这个问题,所以这几天我本着不将就的原则毅然决定去寻找最终的解决方案,于是这个研究的始末还是要从我前几天的探究和测试说起:
我在当时最初的想法与起点是分别使用同版本的32位和64位系统来测试启动,同时仔细对比并分析其中的差异。

分析
首先我在这里也简单说明一下Windows系统运行在各种不同文件系统上是怎么来控制驱动加载启动的(以BIOS启动为例,UEFI大致相同):
Bootmgr(+内置基本文件系统驱动)→BCD(依靠Bootmgr提供相应的文件系统驱动来加载)→Bootmgr移交文件系统控制权给→Winload.exe(+内置基本文件系统驱动)→ntoskrnl.exe(依靠Winload.exe提供相应的文件系统驱动来加载)→hal.dll(同左)→其他系统核心文件......(+1)→Winload.exe移交文件系统控制权给→系统盘使用的文件系统名.sys(最终加载的完整文件系统驱动)→其他系统文件......(整个系统的加载和运行由系统盘使用的文件系统名.sys管理与控制)→完成启动阶段......
顺便补充一句看到这里应该就能知道Win7SP1及以前版本的系统不支持从exFAT分区中启动的真正原因,因为它的WBM和WLD都没有内置最基本的exFAT驱动自然也就无法识别该类型分区。

回到正题这时发现了一个很奇怪的现象就是32位系统在启动阶段加载系统文件和包括exfat.sys在内的驱动时速度很快且不会卡住,而64位系统在启动阶段时加载其他系统文件和驱动也没有问题,但一到加载exfat.sys这个驱动时就会卡住很长一段时间才能加载完成,即使当我通过修改注册表键值的方式让exFAT驱动的加载顺序提前也几乎没有差别。既然不管怎么设置在启动时依然都会卡住一段时间就足以说明64位系统启动慢的原因很明显就是这个驱动的问题。

那么接下来就要着手在这里面继续分析其中的差异,其中在这个地方也曾走过不少弯路。后来在一次思考中偶然想到了64位系统在启动时和32位系统有一个明显的差别就是 微软为了安全起见特别在64位系统中加入了 强制数字签名验证 特性。也就是说32位系统在启动时可以直接加载所需的系统文件,但64位系统在加载系统文件的同时还多了一个要验证文件的数字签名是否有效。
举个简单的例子来表示的话:
32位:winload.exe→ntoskrnl.exe→hal.dll→其他系统文件等;64位:winload.exe→检查数字签名→ntoskrnl.exe→检查数字签名→hal.dll→检查数字签名→其他系统文件等→逐一检查数字签名。其中的规则是 在检查数字签名过程中如果条件为真(签名有效),则通过验证继续加载后面的系统文件;如果条件为假(签名无效),则验证失败拒绝加载并在WBM界面返回0xc0000428无法验证文件数字签名的错误代码提示。

然后我自然就去看了一下发现exfat.sys本身果然没有数字签名,这更加确定了就是数字签名的问题。后来经确认exfat.sys本身在所有版本的Windows中都没有数字签名,所以要提前说一句这个锅请务必让微软来背。
这时肯定又会有一个奇怪的问题,既然exFAT驱动本身并不包含数字签名,那Windows还能在启动时通过签名验证使其正常加载也不会报错?其实这里就涉及到数字签名的保存方式问题了:
实际上数字签名有两种存储方式,一种是文件数字签名,它将数字证书和文件哈希内置在单个PE类型文件的尾部,这样就可以直接通过查看此文件属性进入数字签名选项卡看到其状态信息;而另一种就是目录数字签名,它将数字证书和文件哈希等信息作为一个外置的.cat安全编录文件给独立出来,并可支持保存多个文件的签名信息,比如.inf驱动程序安装文件就是要通过这种方式来验证数字签名。
这样对于exfat.sys这个文件来说它也是有数字签名的。不同于ntfs.sys使用内置签名,exfat.sys显然使用的是外置签名,而且这样签名的文件在系统里也有不少(如notepad.exe),而这些用于数字签名.cat文件的存放位置在:C:\Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}


思路
分析到这里那么这个问题也就有办法解决了,很明显64位系统在启动过程中加载exFAT驱动慢的罪魁祸首就是数字签名。因为exfat.sys本身没有内置数字签名,所以Windows在启动时要加载它就会改为从整个系统盘中逐个寻找到相应的.cat文件来校验比对,由于Windows的系统文件数量众多,因此搜索文件所用的时间也会相当长,这也就直接导致了从exFAT分区中启动时间长到离谱的真正原因。那么最终的解决方案自然就是自己给这个驱动文件做一个内置的数字签名就解决问题了。
当然这个数字签名用哪家的工具和证书都没有问题,只要签名有效就能通过64位系统的启动验证。


实践
这次分享的exFAT驱动均从原版系统镜像中提取并由我添加内置数字签名可快速通过64位系统签名验证,解压缩包后根据你的系统版本选择对应的驱动文件并直接放到C:\Windows\System32\Drivers文件夹内替换掉原文件再测试启动即可。
文件下载链接
论坛直接下载: exFAT驱动.zip (1.77 MB, 下载次数: 879)

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

百度网盘下载:http://pan.baidu.com/s/11DIj4vTvE6lA-Ah7NhZKdQ


当exFAT驱动添加内置数字签名后再测试64位系统的启动时间果然由原来的几个小时缩短为和32位系统一样十几秒就进入了桌面,至此该问题圆满解决!


后记
写到这里我想说的是:
每一个问题在探索与研究的过程中都会有着不一样的发现,也许有时候这可能会很难,但也坚持不放弃寻找其中的奥秘,最后成功冲破迷雾取得终有的收获。

评分

参与人数 36无忧币 +175 收起 理由
2010qqzwc + 1 很给力!
2011unknown + 3 很给力!
fc2010fc + 1
foolst + 5 很给力!
123456dj + 5 赞一个!
yynq + 10 很给力!
hxd9724 + 5
xujinbiao + 5 很给力!
Zyx2003123 + 5 赞!给力!
lookerJ + 5 先收藏以示敬仰,明天再好好看
rengrancunzai + 5
addaadda + 5 钻研精神值得表扬
xq8751 + 5 赞一个!
palm777qqq + 5
2012andyle113 + 5 神马都是浮云
nbzx + 5 赞一个!
月亮河岸 + 5 神马都是浮云
hnwsdz + 5 很给力!
liuzhaoyzz + 5 很给力!
zts59 + 5 很给力!
hua_wuxin + 5 赞一个!
2012yjgsz + 5 很给力!
tony_lam + 5 赞一个!
2010feicool + 5 收藏了,有空就试试
saiz + 5 很给力!
sghihor + 5 淡定
叮叮咚咚 + 5 赞一个!
netants2011 + 5 很给力!
20090101 + 5 赞一个!
chishingchan + 5 赞一个!

查看全部评分

160#
发表于 2024-6-14 14:18:23 | 只看该作者
EXFAT在移动设备上有优势,但怕设备系统格式的不兼容啊
回复

使用道具 举报

159#
发表于 2024-6-14 14:16:36 | 只看该作者
辛苦,感谢
回复

使用道具 举报

158#
发表于 2024-6-14 14:16:20 | 只看该作者
感谢,辛苦
回复

使用道具 举报

157#
发表于 2024-6-14 14:05:21 | 只看该作者
看看
回复

使用道具 举报

156#
发表于 2024-4-8 11:16:13 | 只看该作者
谢谢分享,辛苦了
回复

使用道具 举报

155#
 楼主| 发表于 2024-3-19 23:59:59 | 只看该作者
alakee 发表于 2024-3-19 15:14
另外还想知道,这个 exFAT.sys 是 Win8 以上的系统都通用?还是限定了系统版本呢?最新的 Win10 22H2 以及  ...

可以向下兼容,不过无特殊需求最好使用同版本驱动。
由于20H1及以后的exfat.sys已经自带签名,因此不需要再替换驱动。
回复

使用道具 举报

154#
发表于 2024-3-19 15:14:49 | 只看该作者
另外还想知道,这个 exFAT.sys 是 Win8 以上的系统都通用?还是限定了系统版本呢?最新的 Win10 22H2 以及 Win11 23H2 可以用吗?

点评

可以向下兼容,不过无特殊需求最好使用同版本驱动。 由于20H1及以后的exfat.sys已经自带签名,因此不需要再替换驱动。  详情 回复 发表于 2024-3-19 23:59
回复

使用道具 举报

153#
发表于 2024-3-19 15:10:15 | 只看该作者
楼主好毅力,必须点个赞
回复

使用道具 举报

152#
发表于 2024-1-17 12:52:56 | 只看该作者
非常NICE,感谢
回复

使用道具 举报

151#
发表于 2024-1-6 18:30:19 | 只看该作者
赞一个!
回复

使用道具 举报

150#
发表于 2024-1-5 21:42:37 | 只看该作者
觉得很深奥
回复

使用道具 举报

149#
发表于 2024-1-5 21:33:29 | 只看该作者
感谢分享
回复

使用道具 举报

148#
发表于 2023-12-25 14:31:18 | 只看该作者
感谢分享
回复

使用道具 举报

147#
发表于 2023-6-25 17:01:33 | 只看该作者
牛人
回复

使用道具 举报

146#
发表于 2023-6-6 19:25:32 | 只看该作者
可以的
回复

使用道具 举报

145#
发表于 2023-5-15 11:02:14 | 只看该作者
#在这里快速回复#得终有的收获
回复

使用道具 举报

144#
发表于 2023-5-4 17:53:20 | 只看该作者
使用过期证书签名,还是需要一点点技巧的
回复

使用道具 举报

143#
发表于 2022-10-14 18:19:54 | 只看该作者
看看楼主分享的教程,学习一些新知识啊
回复

使用道具 举报

142#
发表于 2022-10-11 12:21:47 来自手机 | 只看该作者
辛苦了,学习一下
回复

使用道具 举报

141#
发表于 2022-9-19 14:15:32 | 只看该作者
赞一个!
回复

使用道具 举报

140#
发表于 2022-9-14 21:12:11 | 只看该作者
多谢楼主提供的教程,正在学习中
回复

使用道具 举报

139#
发表于 2022-8-27 20:56:53 | 只看该作者
感谢分享
回复

使用道具 举报

138#
发表于 2022-8-12 13:44:04 | 只看该作者
很好的技术贴
回复

使用道具 举报

137#
发表于 2022-7-28 14:03:25 | 只看该作者
研究了这么长时间,总算把最大的问题解决了。。
回复

使用道具 举报

136#
发表于 2022-7-25 22:04:36 | 只看该作者

楼主果然够拼的,这个研究竟然搞了这么久,支持下,不容易呀!!!!
回复

使用道具 举报

135#
发表于 2022-2-25 16:07:49 | 只看该作者
顶,谢谢楼主的劳动和分享。
回复

使用道具 举报

134#
发表于 2021-12-2 16:12:18 | 只看该作者
tdqk003 发表于 2021-12-1 13:55
大神  win11pe是不是对exfat支持不好啊,U盘双分区,第一个分区FAT32,第二个分区exfat,在win11pe下从新插 ...

谢谢大神回复,我用19043pe的驱动替换后就好了,我已经格盘无数次了
回复

使用道具 举报

133#
 楼主| 发表于 2021-12-2 10:50:48 | 只看该作者
placeholder 发表于 2021-12-2 01:58
您好楼主,我发现19044的exfat.sys默认有数字签名了,是不是意味着19044可以直接使用exfat启动而无需修改驱 ...

是的
回复

使用道具 举报

132#
发表于 2021-12-2 01:58:37 | 只看该作者
您好楼主,我发现19044的exfat.sys默认有数字签名了,是不是意味着19044可以直接使用exfat启动而无需修改驱动?


点评

是的  详情 回复 发表于 2021-12-2 10:50
回复

使用道具 举报

131#
发表于 2021-12-1 13:55:26 | 只看该作者
大神  win11pe是不是对exfat支持不好啊,U盘双分区,第一个分区FAT32,第二个分区exfat,在win11pe下从新插拔U盘会出现系统卡顿,在疯狂的扫描U盘,然后我的电脑里看不U盘,卡顿严重

点评

谢谢大神回复,我用19043pe的驱动替换后就好了,我已经格盘无数次了  详情 回复 发表于 2021-12-2 16:12
应该不会,U盘重新分区试一下。  发表于 2021-12-2 10:50
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-30 19:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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