如何将 EFI GOP 驱动程序添加到平台固件以用于安全启动?

如何将 EFI GOP 驱动程序添加到平台固件以用于安全启动?

我正在尝试将 SM750 嵌入式图形芯片的 GOP 驱动程序插入平台固件,以便可以将其与安全启动一起使用。这是制造商提供给我的 .efi 文件的形式,因此它是他们的“官方”GOP 驱动程序。目前,我正在使用此驱动程序的 .rom 版本,方法是使用他们提供的 DOS 中的可执行程序将其加载到连接到 SM750 的 EEPROM 中。我被告知这个 .rom 文件不能与安全启动一起使用,所以我一直在寻找将此驱动程序的 .efi 版本插入固件的方法。

阅读 [EDK2 固件指南] 第 32 节 (https://edk2-docs.gitbooks.io/edk-ii-uefi-driver-writer-s-guide/32_distributing_uefi_drivers/)指出,有3种方式可以插入平台。

  1. PCI 选项 ROM

我相信这是当前加载 .rom 版本的驱动程序的方式,因为它连接到 PCI 总线,这可能是使用 .efi 驱动程序执行此操作的理想方式,但我不知道如何将 .efi 文件放到这个 EEPROM 上

  1. 通过平台 flash

如果可以的话,我宁愿避免使用这种方法,我不想使用制造商的自定义图像

  1. 在硬盘上的 EFI 分区上

我以为这是可行的方法,但经过进一步研究后,我发现这只适用于更新,而不适用于在启动时加载驱动程序。如果我错了,请纠正我,但这也只会在从 EFI 分区加载操作系统时执行(在本例中为 RHEL7)。

CPU 是 Xeon D-1559,目标操作系统是 RHEL7.6

TL;DR 将 efi GOP 驱动程序插入系统以用于安全启动的最佳方法是什么。

答案1

那么制造商为您提供了 rom 文件和 efi 文件吗?通常,“rom”文件是二进制固件文件,可直接刷入附加组件的 BIOS 芯片并驻留在芯片中。它们是独立文件,刷入后会覆盖以前的版本。

OptionROM 是 Legacy/CSM Boot 的 BIOS 驱动程序,是 MB BIOS 芯片中嵌入的一小部分。它们不会作为用户可升级的独立文件分发给最终用户。但高级用户可以升级,但制造商不支持。

据我所知,如果您需要安全启动(高级 UEFI 启动的形式,第 3 类,有时称为真正的 UEFI 启动),GOP 驱动程序必须存在于 MB BIOS 芯片或所连接的外部 PCI 卡的 BIOS 芯片中。当所有“核心设备”在 BIOS 中都有 EFI 驱动程序时,安全启动是可能的。通常在本机 UEFI 启动环境中,“efi”文件是由 UEFI 引导加载程序 (BL) [OS] / 引导管理器 (BM) [如 Grub 或 rEFInd] 加载的驱动程序,用于引导辅助/外围设备功能,而不是用于核心 IO 功能(如显示输出)。

但是我猜想,当您尝试在仅用于传统启动的旧系统上运行模拟 UEFI(如 DuetPkg、tianocore)时,efi 文件也可以用作“可加载驱动程序”。可能有一些聪明的 BM/BL 可以在模拟 UEFI 启动之前注入 rom/efi 文件。但它们只能实现模拟 UEFI 启动,而不能实现安全启动(您的制造商也这么说,所以他们知道一些主板/设备的限制)。我希望我的回复能让您更接近正确的解决方案。

相关内容