无忧启动论坛

标题: 为VHD系统正名,开机启动慢的原因终于找到了。 [打印本页]

作者: baby1277    时间: 2024-8-25 12:44
标题: 为VHD系统正名,开机启动慢的原因终于找到了。
本帖最后由 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, 下载次数: 45) 删除BCD和NVRAM中无效的固件对象.rar (494 Bytes, 下载次数: 112)
作者: baby1277    时间: 2024-8-25 12:45
本帖最后由 baby1277 于 2024-8-26 22:07 编辑

但愿我的情况是少数情况,如果开机时间慢的话也自查下BCD文件的大小。
作者: yyz2191958    时间: 2024-8-25 12:56
回复看看
作者: 123hope    时间: 2024-8-25 13:07
看看,多个参考
作者: 481416322    时间: 2024-8-25 13:19
支持baby1277
作者: Iam用户    时间: 2024-8-25 13:21
支持原创
作者: zlq_hysy    时间: 2024-8-25 13:24
宝贵经验,值得学习和借鉴
作者: 2013ertert    时间: 2024-8-25 13:25
感谢分享,技术高手!是删除存在主板的文件?还是引导文件?
作者: baby1277    时间: 2024-8-25 13:29
本帖最后由 baby1277 于 2024-8-25 13:31 编辑
2013ertert 发表于 2024-8-25 13:25
感谢分享,技术高手!是删除存在主板的文件?还是引导文件?

bcdedit命令可以直接编辑主板上NVRAM的文件
作者: ddnflier    时间: 2024-8-25 13:38
为楼主点赞
作者: 2012andyle113    时间: 2024-8-25 13:42
感谢分享吧,没碰到过这么变态的事情
作者: 9zhmke    时间: 2024-8-25 13:47
好文章,释疑性强
作者: 2011relei    时间: 2024-8-25 13:51
为VHD系统正名
作者: shangxiaobing    时间: 2024-8-25 14:06
学习学习
作者: shangxiaobing    时间: 2024-8-25 14:06

作者: xujinhong    时间: 2024-8-25 14:14
学习学习,谢谢!
作者: 2011wolfsina    时间: 2024-8-25 14:35
学习一下!
作者: 进士小站    时间: 2024-8-25 14:45
佩服楼主的钻研精神
作者: 6684538    时间: 2024-8-25 14:49
感谢分享
作者: wang1126    时间: 2024-8-25 14:58
谢谢分享
作者: wbs1997    时间: 2024-8-25 15:00

回复看看
作者: JHW    时间: 2024-8-25 15:10
支持原创.为你点赞
作者: hanchuanpeng    时间: 2024-8-25 15:13

支持原创
作者: 13325531750    时间: 2024-8-25 15:26
为VHD系统正名,开机启动慢的原因终于找到了。感谢分享!
作者: frfgddddee    时间: 2024-8-25 15:30
佩服楼主的钻研精神
作者: mrzhonghb    时间: 2024-8-25 15:38
支持楼主的钻研精神
作者: likeyouli    时间: 2024-8-25 15:42
本帖最后由 likeyouli 于 2024-8-25 16:04 编辑

看看隐藏再说,,   以下为啥我也不知道,大家都看楼主...
@echo off
:: 删除BCD和NVRAM中无效的固件对象 (baby1277)
for /f "delims=" %%i in ('bcdedit /enum FIRMWARE^|find "标识符"^|findstr /i /v "bootmgr default current"') do for /f "tokens=2" %%a in ('echo %%i') do bcdedit /delete  %%a
解析一下 :         bcdedit /enum FIRMWARE|find "标识符"|findstr /i /v "bootmgr default current"  : 貌似输出不含"bootmgr default current"的,也就是后边的  ('echo %%i')的内容,我的电脑输出完为这样:
标识符                  {1dd104f1-0c3a-11ef-8634-806e6f6e6963}
标识符                  {1dd104f2-0c3a-11ef-8634-806e6f6e6963}
标识符                  {4726f0c4-0477-11ef-9ad6-806e6f6e6963}
标识符                  {4b950bd6-5d4e-11ef-8655-806e6f6e6963}
标识符                  {67107b64-5d6a-11ef-8658-806e6f6e6963}
标识符                  {67107b65-5d6a-11ef-8658-806e6f6e6963}
标识符                  {67107b66-5d6a-11ef-8658-806e6f6e6963}
标识符                  {d758d7a0-5d45-11ef-8651-806e6f6e6963}
标识符                  {d758d7a2-5d45-11ef-8651-806e6f6e6963}
标识符                  {d758d7a3-5d45-11ef-8651-806e6f6e6963}
   然后再用do for /f "tokens=2" %%a in, 提取到{}里的内容,也就是把前边的标识符几个字截去掉,最后再用 do bcdedit /delete  %%a 删除。
       如有解析错误,在所难免,敬请指正。




作者: bj520    时间: 2024-8-25 15:46

作者: 20121010168    时间: 2024-8-25 16:13
赶紧看了下自己的,电脑和U盘上的BCD文件没有增大。
嗯,还未曾遇到过LZ这样的问题。
作者: baby1277    时间: 2024-8-25 16:15
likeyouli 发表于 2024-8-25 15:42
看看隐藏再说,,   以下为啥我也不知道,大家都看楼主...
@echo off
:: 删除BCD和NVRAM中无效 ...

对,是这个解释。
bcdedit /enum FIRMWARE|find "标识符"|findstr /i /v "bootmgr default current"
输出包含 “标识符”  但不包含 "bootmgr default current" 三个字样的内容
然后用 for /f "tokens=2" %%a in () 截取第二行 do  bcdedit /delete  %%a

作者: likeyouli    时间: 2024-8-25 16:23
baby1277 发表于 2024-8-25 16:15
对,是这个解释。
bcdedit /enum FIRMWARE|find "标识符"|findstr /i /v "bootmgr default current"
输 ...

我是论坛的无名小卒,,你放心就行,你帮了别人,别人肯定会记住你的,尤其你前边还有一大段解释。只要你有技术,又愿意分享,记住你是早晚的事。任何人都搅不了你的局。2年来,我都记住论坛上好几个人了,他们帮了我不少。
   这个回复算解释,也算帮顶回复。
作者: fgwei    时间: 2024-8-25 16:24
谢谢分享!!!!!!
作者: 红毛樱木    时间: 2024-8-25 16:31
bootice是不是可以干这种事
作者: baby1277    时间: 2024-8-25 16:46
红毛樱木 发表于 2024-8-25 16:31
bootice是不是可以干这种事

bootice干不了这种事,bootice读取当前系统的BCD都困难。
要先运行bcdedit命令后才能读取当前系统的BCD

作者: likeyouli    时间: 2024-8-25 16:49
本帖最后由 likeyouli 于 2024-8-25 16:57 编辑
红毛樱木 发表于 2024-8-25 16:31
bootice是不是可以干这种事

bootice肯定能行啊
命令行的bootice还能增加uefi序列呢,(gui的bootice肯定更能行)
  见:” 有没有命令行工具添加UEFI引导序列 http://bbs.wuyou.net/forum.php?m ... 18717&extra=&page=1
作者: mrzhonghb    时间: 2024-8-25 17:01
为啥我的电脑输入命令后提示:无法打开启动配置数据存储,是主板不支持吗

微信图片_20240825165441.png (7.65 KB, 下载次数: 0)

微信图片_20240825165441.png

作者: baby1277    时间: 2024-8-25 17:01
likeyouli 发表于 2024-8-25 16:49
bootice肯定能行啊
命令行的bootice还能增加uefi序列呢
  见:” 有没有命令行工具添加UEFI引导序列  ...

想要删除BCD添加过的历史固件程序,bootice最多只能删除一条,然而并没什么用。
我的BCD文件里面有超过1000多条历史固件程序,bootice真的删除不了。
作者: likeyouli    时间: 2024-8-25 17:09
baby1277 发表于 2024-8-25 17:01
想要删除BCD添加过的历史固件程序,bootice最多只能删除一条,然而并没什么用。
我的BCD文件里面有超过1 ...

bootice的 uefi序列里,与bcdedit /enum firmware 显示的不一样吗 ?

..png (20.05 KB, 下载次数: 1)

..png

作者: baby1277    时间: 2024-8-25 17:10
mrzhonghb 发表于 2024-8-25 17:01
为啥我的电脑输入命令后提示:无法打开启动配置数据存储,是主板不支持吗

权限不够的原因   要Administrator用户 或者 最高管理员权限  
实在不行进入PE系统试下
作者: Climbing    时间: 2024-8-25 17:15
这个必须得支持一下,我的vhd系统启动也在变慢。
作者: baby1277    时间: 2024-8-25 17:17
likeyouli 发表于 2024-8-25 17:09
bootice的 uefi序列里,与bcdedit /enum firmware 显示的不一样吗 ?

肯定不一样
bcdedit /enum firmware会显示所有添加过历史固件程序
bootice的uefi序列里只会显示一个
比如我插U盘3次启动了3次系统  bcdedit /enum firmware  显示有3个  固件程序
                                              但bootice的uefi序列里只会显示1个  固件程序
这就是不一样的地方,你实验下。

作者: likeyouli    时间: 2024-8-25 17:23
baby1277 发表于 2024-8-25 17:17
肯定不一样
bcdedit /enum firmware会显示所有添加过历史固件程序
bootice的uefi序列里只会显示一个

记忆中我的貌似一样,,刚清理完,没法核实了,只能过断时间再看看了。  
作者: likeyouli    时间: 2024-8-25 17:29
本帖最后由 likeyouli 于 2024-8-25 17:30 编辑
Climbing 发表于 2024-8-25 17:15
这个必须得支持一下,我的vhd系统启动也在变慢。

老大您先别清理,看看bootice里uefi序列 与 bcdedit /enum firmware 显示的是否一样 ?
   如果不一样,我认为是不是bug? 那bootice读取的uefi是哪里来的呢 ?
作者: 2011yaya2007777    时间: 2024-8-25 17:43
  1. 我怀疑UEFI的工作原理是:当发现bcd和NVRAM不一样时   把bcd增量到NVRAM  然后再同步到ESP分区
复制代码

如果是这样的话,那这个主板也太离谱了吧。
通常情况下,启动时是不会往NVRAM里写东西的吧。
作者: baby1277    时间: 2024-8-25 17:50
2011yaya2007777 发表于 2024-8-25 17:43
如果是这样的话,那这个主板也太离谱了吧。
通常情况下,启动时是不会往NVRAM里写东西的吧。

不然实在解释不了原先20KB的BCD文件重启后是怎么变成700KB的,我的主板是dell H370 。

作者: liujun2000    时间: 2024-8-25 17:58
厉害厉害心细如发啊
作者: h2bx86    时间: 2024-8-25 18:10
谢谢分享,收藏备用,。
作者: 金雕    时间: 2024-8-25 18:12
我也学习学习,看看电脑里的记录是不是也一样。
作者: 2012zcsh    时间: 2024-8-25 18:15

支持原创 ,谢谢分享。
作者: yelangwy    时间: 2024-8-25 18:24
谢谢🙏,学习了!
作者: 土著007    时间: 2024-8-25 18:28
看看,收藏先,目前ventoy加载vtoy并不慢,暂时测试不了
作者: wn168cn@163.com    时间: 2024-8-25 18:29
感谢分享
作者: promrhxq    时间: 2024-8-25 18:52
感谢分享好东东
作者: wangziqiang    时间: 2024-8-25 19:07
支持楼主辛苦了
作者: 2011lerv    时间: 2024-8-25 19:25
支持原创,让大家少走弯路!
作者: Ventoy真滴牛    时间: 2024-8-25 19:29
让我康康
作者: chairmansu    时间: 2024-8-25 19:44
支持原创!
作者: 假大空    时间: 2024-8-25 19:47
重建bcd?
作者: a66    时间: 2024-8-25 20:10
回复不见
作者: k72006    时间: 2024-8-25 20:24
看了本地ESP里的BCD,48K。
作者: qsc_01    时间: 2024-8-25 20:35
使用到的脚本,
作者: mooning    时间: 2024-8-25 20:37
佩服楼主的钻研精神
作者: hsc    时间: 2024-8-25 20:45
謝謝樓主的分享
作者: wjzj    时间: 2024-8-25 20:47
我的也有100多kb
作者: hbwgz2009    时间: 2024-8-25 20:48
不错的文章顶一下
作者: qq27722    时间: 2024-8-25 21:20
谢谢宝贵经验
作者: afti    时间: 2024-8-25 21:26
学习楼主的开机还原脚本
作者: yc2428    时间: 2024-8-25 21:38
谢谢分享
作者: 1801403    时间: 2024-8-25 21:49
UEFI启动,会自动生成启动菜单的。这个菜单用工具可以删除的,但是不删除,开机也没觉得慢啊。
作者: baqdn    时间: 2024-8-25 22:28

支持原创
作者: 新空气    时间: 2024-8-25 23:15
研究研究,实践实践
作者: freesoft00    时间: 2024-8-25 23:40
看看内容
作者: fxxxzjk    时间: 2024-8-26 00:12
厉害了
作者: yzyd110    时间: 2024-8-26 01:23
谢谢分享
作者: zengxibiao    时间: 2024-8-26 06:43
感谢LZ分享,收藏备用了
作者: 879792799    时间: 2024-8-26 07:48
杠杠滴!
作者: gutaiping2006    时间: 2024-8-26 07:58
学习楼主的脚本
作者: zhulinhua    时间: 2024-8-26 08:05

感谢分享
作者: ykdnwxb    时间: 2024-8-26 08:37
谢谢楼主分享,值得收藏!!
作者: fanchenwen    时间: 2024-8-26 08:51
赞,楼主解决了我等从没遇到过的问题
作者: Climbing    时间: 2024-8-26 09:59
likeyouli 发表于 2024-8-25 17:29
老大您先别清理,看看bootice里uefi序列 与 bcdedit /enum firmware 显示的是否一样 ?
   如果不一样, ...

然后我突然发现我根本就没有使用UEFI启动,我的机器比较老,一直在使用grub4dos启动。所以,这个问题跟我无关。而且,我估计楼主遇到的问题也是小概率事件,可能只是他使用的那个主板有这个问题。而且,只需要比较一下这两个列表有没有太大的差别就可以了:
bcdedit /enum
bcdedit /enum firmware
作者: 2012huguoliang    时间: 2024-8-26 10:47
这都被你发现了 哈哈
作者: zzmzzm    时间: 2024-8-26 11:05
支持原创

作者: snakegao    时间: 2024-8-26 12:28
这个要支持,谢谢楼主,辛苦
作者: 2011matrixvexx    时间: 2024-8-26 12:55
感谢楼主分享
作者: 蛮牛士    时间: 2024-8-26 17:42
技术贴啊

作者: baolizhu    时间: 2024-8-26 20:33
谢谢楼主分享

作者: I.S.P.O    时间: 2024-8-26 23:46
学习了!
作者: 孟仁飞    时间: 2024-8-27 14:27
学习
作者: fxssj    时间: 2024-8-27 15:29
支持原创,谢谢分享
作者: nange    时间: 2024-8-28 12:28
都是高手
作者: lyrgcy    时间: 2024-8-28 15:41
楼主真厉害啊,这也给发现!顶了,好贴
作者: hc7616    时间: 2024-8-28 15:56
优秀,必需支持一下
作者: Weren    时间: 2024-8-30 16:22
为您的无私奉献大大点赞!
作者: ponl    时间: 2024-9-1 01:09
支持原创 很常见的问题
作者: szwp    时间: 2024-9-1 08:51
没慢过,pe不放U盘的,放硬盘的
作者: zmlxh168    时间: 2024-9-1 17:51
宝贵经验,值得学习和借鉴
作者: elise    时间: 2024-9-12 06:49
学习一下
作者: leitian72853    时间: 5 天前
谢谢分享
作者: wsdyleon    时间: 4 天前
知道那个一次性启动的,但不知道还有垃圾清理不掉




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3