无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
无忧启动论坛唯一网址:bbs.wuyou.net系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
查看: 9491|回复: 118

[分享] 完美解决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驱动自然也就无法识别该类型分区。
截图20190110093913.jpg
回到正题这时发现了一个很奇怪的现象就是32位系统在启动阶段加载系统文件和包括exfat.sys在内的驱动时速度很快且不会卡住,而64位系统在启动阶段时加载其他系统文件和驱动也没有问题,但一到加载exfat.sys这个驱动时就会卡住很长一段时间才能加载完成,即使当我通过修改注册表键值的方式让exFAT驱动的加载顺序提前也几乎没有差别。既然不管怎么设置在启动时依然都会卡住一段时间就足以说明64位系统启动慢的原因很明显就是这个驱动的问题。
截图20190504102058.jpg
那么接下来就要着手在这里面继续分析其中的差异,其中在这个地方也曾走过不少弯路。后来在一次思考中偶然想到了64位系统在启动时和32位系统有一个明显的差别就是 微软为了安全起见特别在64位系统中加入了 强制数字签名验证 特性。也就是说32位系统在启动时可以直接加载所需的系统文件,但64位系统在加载系统文件的同时还多了一个要验证文件的数字签名是否有效。
举个简单的例子来表示的话:
32位:winload.exe→ntoskrnl.exe→hal.dll→其他系统文件等;64位:winload.exe→检查数字签名→ntoskrnl.exe→检查数字签名→hal.dll→检查数字签名→其他系统文件等→逐一检查数字签名。其中的规则是 在检查数字签名过程中如果条件为真(签名有效),则通过验证继续加载后面的系统文件;如果条件为假(签名无效),则验证失败拒绝加载并在WBM界面返回0xc0000428无法验证文件数字签名的错误代码提示。
截图20190504104633.jpg
然后我自然就去看了一下发现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}
截图20190504110025.jpg

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

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

评分

参与人数 31无忧币 +160 收起 理由
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 赞一个!
mtx95 + 5 很给力!
cchessbd + 5 很给力!
不知 + 5 很给力!
sleet + 5 赞一个!
新空气 + 5 神马都是浮云

查看全部评分

 楼主| 发表于 2019-5-9 18:48:06 | 显示全部楼层
研究了这么长时间,总算把最大的问题解决了。。

点评

回复chishingchan:对于所有语言的系统都适用  发表于 2019-5-10 15:08
我喜欢收集各版本系统的多语言的。附件中的文件属于英文并适用于所有语言系统吗?  发表于 2019-5-10 09:57
回复

使用道具 举报

发表于 2019-5-9 19:52:10 | 显示全部楼层
总算有结果了
回复

使用道具 举报

发表于 2019-5-9 20:27:05 来自手机 | 显示全部楼层
这个exFat比起ntfs有什么优点?

点评

简单点来说就是在SSD上用exFAT性能会提高,而且没有日志记录可以延长U盘寿命。  详情 回复 发表于 2019-5-9 20:51
回复

使用道具 举报

发表于 2019-5-9 20:27:59 来自手机 | 显示全部楼层
佩服佩服,这个推断过程和解决方法都很棒
回复

使用道具 举报

发表于 2019-5-9 20:29:33 来自手机 | 显示全部楼层
不知道那个要追赶windows的开源系统ReactOS是否也支持在exFat安装运行?

点评

这个系统我只听说过但没用过,所以能不能exFAT启动我也就不得而知了。 不过有兴趣的话你可以自行测试  详情 回复 发表于 2019-5-9 20:55
回复

使用道具 举报

发表于 2019-5-9 20:31:03 来自手机 | 显示全部楼层
重大突破,感谢分享。
回复

使用道具 举报

发表于 2019-5-9 20:36:42 | 显示全部楼层
exfat以后会是大趋势吧

点评

FAT32、exFAT这类走的是兼容路线,NTFS、ReFS这类走的是功能路线。 它们各有各的优缺点呈互补关系,不同路线之间都不会被任意一方完全替代。 对于U盘来说会从FAT32逐渐转向exFAT,对于硬盘来说会从NTFS逐渐转向ReF  详情 回复 发表于 2019-5-10 15:28
回复

使用道具 举报

发表于 2019-5-9 20:44:29 | 显示全部楼层
很好的技术贴
回复

使用道具 举报

发表于 2019-5-9 20:47:49 来自手机 | 显示全部楼层
勇于探索,坚持不懈,佩服!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-12-8 12:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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