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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过代码将efi应用程序设置为引导加载程序?相关的知识,希望对你有一定的参考价值。

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

但是,如果您实际构建自己的固件,还可以查看创建可引导的EFI映像并将默认引导选项设置为此二进制文件。如果您将二进制文件作为ROM的一部分包含在内,这是非常有用的,但是设置文件系统可能会涉及到它被视为正常启动选项。

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

答案

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

实现bcfg命令的UEFI Shell本身就是UEFI应用程序。由于它的源代码是公开的,你可以查看bcfg命令的实现 - 特别是BcfgAdd()函数。

另一答案

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

以上是关于如何通过代码将efi应用程序设置为引导加载程序?的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统bootx64是怎么引导grub的

黑苹果引导主题基本设置教程补充

Linux系统如何将某一程序设置为开机自启动,linux 小白求详细讲解......

MBR和EFI启动过程

clover如何使用UEFI引导和EFI驱动选择

DELL r720xd 组raid5以后怎么使用EFI引导安装2008并设置GPT分区