0%

更新主板固件导致 Windows 无法启动的经历

最近发现主板厂商发布了新的固件更新,在按照往常习惯更新完 BIOS 固件后,顺手清空了 TPM 并重置了安全启动(Secure Boot)设置。然而,在开启安全启动重启后,正常启动时弹出了 “Security Boot Violation - Invalid signature detected” 的致命错误,无法引导进入 Windows。

经过排查,发现根本原因是微软最近更新了 Windows 的安全启动证书,而主板厂商较旧的默认固件内并未集成,导致安全启动校验失败。最终,通过手动导入微软最新的安全启动证书成功解决了这一问题。

本文详细记录此次故障的发生过程、排查步骤以及最终的解决方案。

环境介绍

在开始前,简单交代一下硬件及系统环境:

  • 系统环境:Windows 11 25H2,已启用 TPM 2.0 与 BitLocker 磁盘加密
  • 主板平台:B760i,固件基于 AMI BIOS
  • 显卡:NVIDIA RTX 5060 Ti 独立显卡,同时还有 CPU 集成的 UHD 730 显卡

在进行任何 BIOS 级安全设置重置前,强烈建议在 Windows 系统中提前 “暂停 BitLocker 保护”,避免因硬件密钥重置导致磁盘永久锁死。
如果刚好遇到类似问题,在原系统有登录微软账户的情况下,可以通过微软账户 查找 BitLocker 恢复密钥 尝试找回密钥。

故障发生与排查过程

下面是完整操作记录:

  1. 固件刷写与重置
    在系统内暂停 BitLocker 后重启,通过主板自带的固件更新工具顺利刷写了最新 BIOS。
    刷写后进入 BIOS 恢复默认设置后 “突发奇想”,手动清空了 TPM 并重置了安全启动设置。

  2. 触发 Signature 错误
    在 BIOS 中重新启用安全启动并重启,系统立刻报错:

    Security Boot Violation
    Invalid signature detected. Check Secure Boot Policy in Setup

    无论点击多少次确认,都只能无限循环退回到 BIOS 界面,无法进入系统。

  3. 交叉验证排查
    为了摸清具体原因,排查时尝试了以下几种配置组合:

    • 关闭安全启动 (Disabled):系统能够成功进入。在系统中运行 msinfo32,显示 “安全启动状态:未启用”。
    • 恢复 BIOS 默认设置 / 切换 Secure Boot 为 Custom 模式并导入默认密钥:只要安全启动处于 Active 状态,依然报错 Invalid signature
    • 清空 EFI 分区并全新安装 Windows:在关闭安全启动的情况下重装系统一切正常,之后重新启用安全启动可以正常引导进入系统,安全中心提示未应用最新的安全启动证书。
      此时基本可以断定:主板自带的 “出厂默认 Secure Boot 密钥” 由于版本过旧,无法通过微软新版操作系统的引导签名验证。

解决方案:手动注入最新 Secure Boot 证书

搜索 “更新安全启动证书操作步骤” 时,找到相关文章,其中提到 microsoft/secureboot_objects 仓库有所需的工具和最新的证书二进制包,要解决此问题,需要借助微软官方提供的 InstallSecureBootKeys.ps1 脚本,将最新的密钥手动导入到主板设置中。

  1. 下载证书及脚本
    我们需要下载微软官方维护的安全启动二进制证书包以及用于写入的 PowerShell 脚本:
  1. 执行导入脚本
    将下载好的 ZIP 压缩包解压到桌面。以管理员身份打开 PowerShell,执行下载的写入脚本。

运行前置条件

  1. 该脚本头部声明了 #Requires -RunAsAdministrator必须以管理员身份运行 PowerShell 才能正常执行。
  2. 执行时,系统必须先在 BIOS 中关闭安全启动(Secure Boot)。如果安全启动处于启用状态,脚本运行后会直接中断并提示错误:
    Secure Boot is already enabled. Please disable Secure Boot and try again.

在准备就绪后,以管理员权限打开 PowerShell 并进入脚本目录,直接运行脚本,PowerShell 会在命令行中交互式地提示输入必填参数 PresignedObjectsPath(预签名安全启动对象的文件夹路径):

1
.\InstallSecureBootKeys.ps1

控制台会输出提示:

1
2
3
位于命令管道位置 1 的 cmdlet InstallSecureBootKeys.ps1
请为以下参数提供值:
PresignedObjectsPath:

此时将解压出的证书文件夹绝对路径(例如 C:\Users\YourUsername\Desktop\edk2-x64-secureboot-binaries\MicrosoftAndThirdParty\Firmware)粘贴进去并按下回车即可。

** 为什么是 MicrosoftAndThirdParty\Firmware 文件夹?**
在实际测试中,如果选择了 MicrosoftAndThirdParty\Firmware 之外的其他证书文件夹,启用安全启动后会无限重启,甚至无法看到 BIOS LOGO。
拔掉 NVIDIA 独显供电线后使用集显输出才可以进入系统,在 BIOS 中关闭安全启动后重新执行导入脚本并选择包含第三方兼容签名的 MicrosoftAndThirdParty\Firmware 文件夹,成功解决了这一问题。

  1. 导入成功的提示信息
    脚本运行后,会依次自动校验并按 DB ➔ DBX ➔ KEK ➔ PK 的倒序方式调用 Set-SecureBootUEFI 命令向主板的 NVRAM 写入证书。导入成功后控制台会显示如下输出:
1
2
3
4
5
6
7
8
9
10
11
Enrolling certificates for Secure Boot...
Enrolling DB...
DB enrolled successfully.
Enrolling DBX...
DBX enrolled successfully.
Enrolling KEK...
KEK enrolled successfully.
Enrolling PK...
PK enrolled successfully.
Enrollment complete.
Script execution finished.
  1. 重启并验证
    完成证书导入后,重启电脑并进入 BIOS 设置界面,重新启用安全启动,保存退出后正常引导进入 Windows 系统。进入系统后打开 “系统信息”(msinfo32),可以看到 “安全启动状态:已启用”,并且在 Windows 安全中心的设备安全页面中提示 “已应用所有必须的证书更新”,至此问题解决。