如何从grub2代码中运行shim?

问题描述:

我是grub的新手。我试图从grub启用UEFI安全启动。我决定使用shim来验证内核的签名。 Grub可以从UEFI验证。如何从grub2代码中运行shim?

我从Ubuntu的grub git存储库中提取了补丁。 Grub使用grub_efi_locate_protocol()函数来定位匀场,目前它无法找到匀场并返回NULL

我有以下疑问:

  1. 我应该在哪里放置shim.efi二进制(我已经把它的/ boot分区)
  2. 哪里grub_efi_system_table变量得到填充,以及它是如何使用grub_efi_locate_protocol

感谢

+0

Holy sh -t ...标签为'grub'的问题实际上是关于编程和开发。这是粗糙的钻石,我认为我们应该培养它。你能提供一些'grub_efi_locate_protocol'和'grub_efi_system_table'的代码吗? – jww

我能解决这个问题。执行填充程序时,将安装匀场协议。 Shim协议仅在安全引导启用时才安装。我试图使用没有安全启动的shim协议,所以,grub无法找到shim协议。垫片的完整解释在这里 https://mjg59.dreamwidth.org/19448.html