首先,我希望我来对地方了。我相信它与硬件配置和固件有关。
我将向您介绍我的问题背景:
几周以来,我一直在我的工作笔记本电脑(联想军团 Y520)上使用 UEFI 编程和 EDK2 环境,并且我编写了一个 UEFI 应用程序来搜索特定的 .efi 文件,如果找到它,它会将其添加到 NVRAM 中,作为新的启动条目。我们称之为“加载程序”,这样会更容易。经过几天的工作,加载程序就可以正常工作了。我也有删除条目、从 NVRAM 打印所有启动条目的例程。
要使用我的应用程序并检查它是否有效,我会在 USB 密钥上启动,其中有一个 EFI Shell 应用程序文件和 Loader .efi 文件。一旦我进入 EFI Shell,我只需运行 Loader,新的启动条目就会被创建。我还使用 EFI Shell 中的 bcfg 命令再次检查一切是否正常。事实上,一切看起来都很好:Loader 和 bcfg 命令都显示我已添加新的启动条目。
我的问题如下:我可以重新启动、关机、在 Windows 上启动然后重新启动……所有这些操作都不会更改启动项。但是,一旦我拔下启动时使用的 USB 密钥,(我猜)NVRAM 就会重置,因为新的启动项已经消失。我相信我的程序不会失败,因为使用 bcfg 添加新条目会导致相同的行为。
有人知道这里发生了什么吗?我认为联想固件是造成这种行为的原因,但我不能确定,而且我不知道应该在哪里搜索信息。任何帮助都会受到欢迎。