如何通过代码将efi应用程序设置为引导加载程序?

时间:2018-04-24 22:46:43

标签: operating-system boot bootloader uefi

通过遵循这个tutorial,我能够创建一个简单的efi应用程序,当从执行uefi shell 时打印hello world。但是,我想知道如何创建可启动的EFI映像。我尝试在shell中使用bcfg命令,并将我的efi二进制文件添加为启动序列之一。但是,无论如何都不需要进入shell吗?

  

但是,如果您实际构建自己的固件,也可以   查看创建可启动的EFI映像并设置默认启动选项   这个二进制文件。如果您将二进制文件包括在内,这将非常有用   你的ROM的一部分,但设置它可能有点参与   文件系统,以便它被视为正常启动选项。

this question中,Nicholas Embry给出了一个很好的答案,但我无法找到任何资源来进一步探讨他提到的主题。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

bcfg,就像Linux中的efibootmgr一样,最终使用GetVariable()SetVariable()运行时服务(在启动时也可用)来修改系统启动配置。

实现bcfg命令的UEFI Shell本身就是一个UEFI应用程序。由于其源代码是公开的,因此您可以查看bcfg命令的实现 - 尤其是BcfgAdd()函数。

答案 1 :(得分:0)

添加到unixsmurf的答案,我认为UEFI会自动查找位于EFI / BOOT / bootx64.efi的文件名。在制作要在引导时由机器自动加载的UEFI应用程序时,只需将应用程序放在指定的路径上即可。结合unixsmurf提到的内容,我可以让计算机在启动时自动加载任何UEFI应用程序。