如何从 grub2 代码中 运行 shim?

How to run shim from inside grub2 code?

我是 grub 新手。我正在尝试从 grub 启用 UEFI 安全启动。我决定使用 shim 来验证内核的签名。可以从 UEFI 验证 Grub。

我已经从 Ubuntu 的 grub git 存储库中提取了补丁。 Grub 使用 grub_efi_locate_protocol() 函数定位 shim,目前无法找到 shim 和 returns NULL.

我有以下疑问:

  1. 我应该把shim.efi二进制文件放在哪里(我已经把它放在/boot分区)
  2. grub_efi_system_table 变量在哪里填充,grub_efi_locate_protocol 如何使用它?

谢谢

我能够解决这个问题。执行 shim 时,它会安装 shim 协议。 Shim 协议仅在启用安全启动时安装。我试图在没有安全引导的情况下使用 shim 协议,因此 grub 无法找到 shim 协议。 shim 的完整解释在这里 https://mjg59.dreamwidth.org/19448.html