我可以从 EDKII EFI 应用程序中启用安全启动吗?

问题描述 投票:0回答:1

我想写入密钥(PK、KEK、DB)以启用安全启动,然后从 EFI 应用程序中启用安全启动。

我可以成功读取这些变量,也可以成功写入 PK、KEK 和 DB。但每当我尝试更改安全启动变量时,我都会收到 EFI 错误:

Write Protected (EFI_ERROR = 8)

那么,我可以禁用此保护并启用安全启动,还是无法更改此变量?

这是在 TianoCore EDKII 上使用的代码:

  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);
  }

我使用相同的函数写入其他 SecureBoot 变量。此外,在尝试这些操作之前,我还要确保系统处于设置模式。

当代码到达此函数时,它会打印

Could not write to SecureBoot State. Error Code: 8

firmware uefi edk2
1个回答
0
投票

来自 UEFI 2.10,表 3.3:

SecureBoot
BS, RT
Whether the platform firmware is operating in Secure
boot mode (1) or not (0). All other values are reserved. Should be
treated as read-only.

即该变量仅用于识别您所处的状态。

UEFI 规范中描述了切换安全启动模式的机制,但您需要注意它们的含义。寻找主题:

  • 转换到部署模式 (32.3.4)
  • 转换到审核模式 (32.3.3)
© www.soinside.com 2019 - 2024. All rights reserved.