You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在EDKII EFI应用内启用Secure Boot?写入变量遇写保护错误

Secure Boot模式切换失败(EFI_WRITE_PROTECTED错误)排查

问题概述

已成功读写PK、KEK、DB等Secure Boot密钥变量,且确认系统处于Setup Mode,但调用EDKII的SetVariable修改SecureBoot变量时,返回EFI错误码8(EFI_WRITE_PROTECTED),无法启用Secure Boot。其他Secure Boot变量可正常写入,仅该变量修改失败。

使用的代码片段:

SecureBootMode = 1;

Status = gRT->SetVariable(
    EFI_SECURE_BOOT_MODE_NAME,
    &gEfiGlobalVariableGuid,
    EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | TIME_BASED_AUTHENTICATED_WRITE_ACCESS,
    sizeof(UINT8),
    &SecureBootMode
);

if (EFI_ERROR(Status)) {
  Print (L"Could not write to SecureBoot State. Error Code: %d\r\n", Status);
}

错误原因分析

错误码8对应EFI_WRITE_PROTECTED,核心问题在于变量属性设置不符合Setup Mode下的修改规则:

  • TIME_BASED_AUTHENTICATED_WRITE_ACCESS属性要求写入操作必须经过时间戳签名认证,但在Setup Mode(PK变量不存在/已清除)下,修改SecureBoot变量不需要签名认证,添加该属性会触发固件的写保护校验。

解决方案

1. 修正变量属性

移除TIME_BASED_AUTHENTICATED_WRITE_ACCESS属性,仅保留非易失性、Boot Service访问、Runtime访问属性。修改后的代码:

SecureBootMode = 1;

Status = gRT->SetVariable(
    EFI_SECURE_BOOT_MODE_NAME,
    &gEfiGlobalVariableGuid,
    EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
    sizeof(UINT8),
    &SecureBootMode
);

if (EFI_ERROR(Status)) {
  Print (L"Could not write to SecureBoot State. Error Code: %d\r\n", Status);
}

2. 验证Setup Mode状态

确保系统确实处于Setup Mode,可通过读取PK变量确认:

UINTN PkSize = 0;
EFI_STATUS Status = gRT->GetVariable(
    L"PK",
    &gEfiGlobalVariableGuid,
    NULL,
    &PkSize,
    NULL
);

if (Status == EFI_NOT_FOUND) {
  Print(L"System is in Setup Mode.\r\n");
} else {
  Print(L"System is NOT in Setup Mode. Please clear PK first.\r\n");
}

若返回EFI_NOT_FOUND,说明PK不存在,系统处于Setup Mode;若PK存在,需先清除PK进入Setup Mode。

3. 固件限制处理

若上述操作仍失败,可能是厂商固件限制了直接修改SecureBoot变量:

  • 尝试通过BIOS界面手动开启Secure Boot;
  • 联系设备厂商获取专用的Secure Boot配置工具。

内容的提问来源于stack exchange,提问作者Mabensur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:23:37