概述
在过去一篇博文《如何科学卸载 Ubuntu?》中曾提到 Ubuntu 启动引导的删除,其中先后通过 EasyUEFI 与 diskpart 工具删除了 Ubuntu 的启动引导条目以及 Ubuntu 的 EFI 分区,但是仍有可能出现启动引导的残留,最直接的表现就是在开机的时候依旧没有正常进入系统而是进入了 GRUB 界面。本文以清理 Ubuntu 启动引导残留为例,演示如何借助 Bcdedit 移除固件应用程序,进而彻底清理启动引导残留,同理亦可以移除多系统下不需要的启动引导。
一、找到固件GUID
在 PowerShell 中输入命令:
1 | Bcdedit /enum firmware |
输出:
1 | 固件启动管理器 |
其中固件应用程序(101ffff)为我们要删除的 Ubuntu 启动引导:
1 | 固件应用程序(101fffff) |
记下其标识符:{8729d185-7270-11e7-bd79-850bbbb583d1}
二、删除对应固件条目
1.通过 Bcdedit 保存一份电脑上现行的 bcd 文件副本:
1 | Bcdedit /export savebcd |
2.拷贝一份 savebcd 文件的副本用于协助 bcdedit 删除操作:
1 | Copy savebcd newbcd |
3.枚举系统BCD存储中的固件命名空间对象并将输出结果保存到文本文件:
1 | Bcdedit /enum firmware > enumfw.txt |
4.使用记事本打开 enumfw.txt 文件,可以看到里面的内容与在 “一、找到固件GUID” 中是一致的,在输出的文本文件中找到要删除的 Ubuntu 启动引导对应的固件应用程序标识符:{8729d185-7270-11e7-bd79-850bbbb583d1},复制备用。
5.在任意位置创建一个文本文档 RemoveDups.txt
6.使用记事本打开 RemoveDups.txt 并写入以下内容(其中GUID替换为你在上一步中复制的标标识符):
1 | Bcdedit /store newbcd /delete GUID |
特别地,如果有多个要删除的固件应用程序的话,就将上面一行拷贝添加多行,例如:
1 | Bcdedit /store newbcd /delete GUID1 |
注意:在EFI固件为本地设备初始化NVRAM条目的计算机上,如果需要,可以删除所有GUID条目。但不要删除的条目 {bootmgr}!
7.在 RemoveDups.txt 的最后一行写入以下命令,通过使用/clean选项删除导入操作中的所有NVRAM条目来导入新的BCD文件:
1 | Bcdedit /import newbcd /clean |
8.保存 RemoveDups.txt 文件,并将其重命名为 RemoveDups.cmd,使其成为命令行文件。
9.将 RemoveDups.cmd 文件复制到 C:\Windows\system32 目录下,并在 PowerShell 中执行它:
1 | RemoveDups.cmd |
10.重新启动系统。在重新启动期间,EFI固件将使用与连接到系统的设备对应的固件对象 GUID 重新初始化 NVRAM。进入系统后,可使用 bcdedit /enum firmware 命令进一步验证是否已删除所有需要删除的固件条目。