删除BCD和NVRAM中的重复固件对象
前言:在某些基于统一可扩展固件接口(UEFI)的计算机上,固件会在计算机启动时为本地设备(如CD-ROM或硬盘驱动器)创建非易失性随机存取存储器(NVRAM)条目。Bcdedit将NVRAM中的固件命名空间对象与系统引导配置数据(BCD)同步。执行bcdedit / set或/ enum命令时,Bcdedit会打开系统BCD存储。当bcdedit打开BCD时,它会将NVRAM中的条目与BCD中的条目进行比较。NVRAM中由BCD中不存在的固件创建的条目将添加到系统BCD中。当bcdedit关闭系统BCD,BCD中不在NVRAM中的任何引导管理器条目都会添加到NVRAM中。
简单的说我遇到的情况就是使用EasyUefi的时候提示nvram空间不足,提示我清理空间。
操作步骤如下:
1.管理员权限运行cmd,输入
Bcdedit /enum firmware
以下示例类似于bcdedit / enum firmware命令的输出:
Firmware Boot Manager
---------------------
identifier {fwbootmgr}
displayorder {bootmgr}
{93cee840-f524-11db-af62-aa767141e6b3}
{93cee841-f524-11db-af62-aa767141e6b3}
{93cee842-f524-11db-af62-aa767141e6b3}
{93cee844-f524-11db-af62-aa767141e6b3}
{93cee843-f524-11db-af62-aa767141e6b3}
timeout 2
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume1
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Firmware Application (101fffff)
-------------------------------
identifier {93cee840-f524-11db-af62-aa767141e6b3}
description Primary Master CDROM
Firmware Application (101fffff)
-------------------------------
identifier {93cee841-f524-11db-af62-aa767141e6b3}
description Harddisk 4
Firmware Application (101fffff)
-------------------------------
identifier {93cee842-f524-11db-af62-aa767141e6b3}
description Internal EFI Shell
Firmware Application (101fffff)
-------------------------------
identifier {93cee843-f524-11db-af62-aa767141e6b3}
description Floppy
Firmware Application (101fffff)
-------------------------------
identifier {93cee844-f524-11db-af62-aa767141e6b3}
description Acpi(PNP0A03,0)/Pci(1F|1)/Ata(Primary,Master)/CDROM(Entry1)
您将看到bcdedit / enum固件输出,其中包含与以下示例类似的固件条目:
Firmware Boot Manager
---------------------
identifier {fwbootmgr}
displayorder {bootmgr}
{93cee840-f524-11db-af62-aa767141e6b3}
{93cee841-f524-11db-af62-aa767141e6b3}
{93cee842-f524-11db-af62-aa767141e6b3}
{93cee844-f524-11db-af62-aa767141e6b3}
{93cee843-f524-11db-af62-aa767141e6b3}
{8b87c5a0-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a1-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a2-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a3-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a4-f2f2-11db-9717-f87ee6ea6002}
timeout
可能存在具有不同GUID的每个设备的两个或更多条目。例如,Primary Master CDROM可能包含多个条目:
Firmware Application (101fffff)
-------------------------------
identifier {93cee840-f524-11db-af62-aa767141e6b3}
description Primary Master CDROM
Firmware Application (101fffff)
-------------------------------
identifier {8b87c5a0-f2f2-11db-9717-f87ee6ea6002}
description Primary Master CDROM
2.删除重复的条目
使用以下Bcdedit命令保存当前系统存储的副本:
Bcdedit /export savebcd
您可以稍后使用此文件进行恢复。
制作SaveBCD文件的副本以用于Bcdedit删除操作:
Copy savebcd newbcd
枚举系统BCD存储中的固件命名空间对象,并将输出结果保存到文本文件中:
Bcdedit /enum firmware > enumfw.txt
使用Notepad.exe打开Enumfw.txt以查看要删除的重复GUID条目的列表。查看计算机上的GUID条目列表。
使用记事本创建新的命令文件。将文件另存为RemoveDups.cmd。
在RemoveDups.cmd文件中添加命令行以删除Firmware Boot Manager显示顺序下列出的重复固件GUID:
Bcdedit /store newbcd /delete {93cee840-f524-11db-af62-aa767141e6b3}
对要删除的每个GUID重复该命令。对于前面的示例,将以下命令添加到RemoveDups.cmd:
Bcdedit /store newbcd /delete {93cee841-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete {93cee842-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete {93cee843-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete {93cee844-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete {8b87c5a1-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete {8b87c5a2-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete {8b87c5a3-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete {8b87c5a4-f2f2-11db-9717-f87ee6ea6002}
在EFI固件初始化本地设备的NVRAM条目的计算机上,您可以根据需要删除所有GUID条目。
不要删除{bootmgr}的条目
添加最后一个命令到RemoveDups.cmd以导入新的BCD文件,使用/ clean选项删除所有NVRAM条目作为导入操作的一部分:
Bcdedit /import newbcd /clean
保存文件,并在命令提示符下运行RemoveDups.cmd从删除所有重复的条目newbcd存储和导入newbcd商店系统BCD。
重新启动系统。