早前微软发布的 2024-08 例行安全更新导致 Windows-Linux 双系统无法启动引起关注,该问题实际上在 7 月份微软已经发现并且添加到已知问题列表中,但可能很多用户没注意结果安装更新后 Linux 系统无法正常启动。
问题根源在原本微软发布的补丁不应该针对双系统,但检测机制由于未能识别到 Linux 系统,导致补丁错误部署安全启动高级定位并导致 Linux 无法启动。
但这个问题也不是影响所有 Linux 系统,对于较新的 Linux 系统不受影响,如果用户使用的版本比较老旧则会出现无法启动,现在微软也发布了详细的解决方案。
以下是完整的操作指南:
禁用安全启动:进入 BIOS 设置先禁用安全启动,如不会设置可以联系主板制造商客服咨询
删除 SBAT 更新:
在禁用安全启动后用户可以进入 Linux 系统,此时重启系统进入 Linux 并打开终端管理器并执行如下命令
sudo mokutil --set-sbat-policy delete
此操作需要 root 权限因此在执行时可能会提示输入你的账号密码,请按提示操作,操作完成后重启 Linux 系统 (此时仍然不要开启安全启动)
验证 SBAT 删除和撤销:
再次进入 Linux 系统后进入终端并执行如下命令:
mokutil --list-sbat-revocations
如果提示没有任何可以撤销的内容则代表已经完成设置,此时再次重启系统进入 BIOS 并开启安全启动,开启安全启动后重新进入 Linux 系统并打开终端应用执行如下命令:
mokutil --sb-state
此命令用来检查安全启动是否已经正常开启,如果输出结果显示 SecureBoot enabled 则代表开启成功,如未成功请重复前面的开启步骤。
禁用 Windows 更新:
再次重启并进入 Windows 系统,打开管理员模式的命令提示符执行以下命令即可禁用有关 SBAT 的相关应用:
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecureBootSBAT /v OptOut /d 1 /t REG_DWORD
最后完成以上操作后建议转到 Linux 系统并检查最新更新,目前微软也在和 Linux 开发商们合作解决该问题,后续再安装更新应该不会再出现类似问题。