|
本帖最后由 baby1277 于 2024-8-26 21:59 编辑
最近的写了个VHD开机还原脚本,http://bbs.wuyou.net/forum.php?m ... 1158&extra=page%3D1
刚开始时没有发现有多大的问题,但后来就发现不对劲了,越到后面使用bcdedit /import 命令时系统直接假死20秒左右。
我一直觉得是bootmgr和系统版本兼容性的问题,也没有纠结,待有时间解决再这个问题。同时也发现开机时间也是越来越长
电脑买回来的时候很高兴特意用秒表测了下,从按开机键到显示桌面一共用了20秒,但自从使用了VHD系统后开机的时间
是越来越长用分钟起步,刚开始是一分钟,慢慢变成两分钟,直到现在开机已经用时三分钟了,实在受不了,于是我重新分区
使用U盘运行Setup.exe安装还是无济于事,开机还是三分钟,我甚至怀疑是我的SSD坏了遇到了奸商,但硬件检查没有问题
我再回头研究下发现一个奇怪的问题,就是我的BCD文件出奇的大 700KB左右, 这个文件我是看着它慢慢的变大。
我记得刚刚接触VHD系统时BCD只有36KB,所以我就怀疑开机速度和BCD文件的大小有关系。
于是我在PE下把ESP分区格式化后修复引导后查看BCD文件只有20KB 然后重启系统查看BCD文件居然又回到了700KB
开机的时间还是三分钟,这时我就怀疑ESP上的BCD文件肯定不是原件,而是副本,正本应该存在于主板上一个独立存储芯片。
我为什么这样怀疑,原因是每次开机是主机都会发出一种呲呲的声音,我猜是在读取或者写入这个独立存储芯片。
因为固态硬盘运行时一般不会发出声音的,而且我每次运行bcdedit命令时也会发出这种呲呲的声音,则更加确定的我想法。
直到我在 UEFI启动区 看得这篇文章http://bbs.wuyou.net/forum.php?m ... 1710&extra=page%3D1
才验证了我的想法,原来它有个名称叫:NVRAM (非易失性随机访问存储)
我怀疑UEFI的工作原理是:当发现bcd和NVRAM不一样时 把bcd增量到NVRAM 然后再同步到ESP分区
我们可以理解为NVRAM为增量正本 bcd为副本 问题就出在这个NVRAM上,这个家伙只会变大不会变小,
BCD文件中包含你每次磁盘硬件引导信息,例如我使用了一次U盘启动系统,BCD文件就会添加一项 固件应用程序
这个U盘的固件应用程序是一次性,用完一次后就像垃圾一样留在BCD文件里面,然后就保存到NVRAM上。
打开cmd控制台执行 bcdedit /enum FIRMWARE 我们就可以发现U盘固件应用程序每次都不一样。上次使用的也留在。
我先查看下BCD文件大小,然后使用U盘启动一次系统,再看下BCD文件的大小,果然BCD文件又增加了几个字节。
这就是我的BCD文件越来越大的原因 频繁的使用U盘启动PE系统 在三个月的时间内原先36KB变成700KB
每次使用U盘添加的固件应用程序信息会不断的保存到NVRAM 所以使用U盘启动PE系统的次数越多开机就越慢 这就是真相
VHD系统的使用U盘启动PE的次数比本地磁盘系统的次数多 开机相对慢也是大概率的事情,VHD系统开机慢就变成事实。
所以我要为VHD系统正名:VHD系统开机不慢 微软只是背锅侠,世界500强的主板厂商才是罪魁祸首。
知道了原理的就想着如何删除NVRAM和BCD中的固件应用程序,这样就能减小BCD文件的大小,回到以前的开机速度。
由于我过于频繁使用U盘启动系统,导出的TXT文件足足有5000多行 一个固件应用程序占用5行,也有1000多个啊
于是写了个脚本运行了70分钟,期间CPU占用30% 风扇疯狂的转,也是无语的很。
重启系统后开机时间用了20秒 心中激动坏了,电脑终于恢复了,和刚买回来的一样。
重新试了下bcdedit /import 命令也不卡了 ,看了下BCD文件恢复为36KB大小。
困扰许久问题终于可以解决,开机还原的脚本又重新安排上岗了。
以下我使用到的脚本,创作不易希望大家回帖支持一波!
我的bcd文件.rar
(116.32 KB, 下载次数: 114)
|
评分
-
查看全部评分
|