通过遵循这个tutorial,我能够创建一个简单的efi应用程序,当从执行uefi shell 时打印hello world。但是,我想知道如何创建可启动的EFI映像。我尝试在shell中使用bcfg命令,并将我的efi二进制文件添加为启动序列之一。但是,无论如何都不需要进入shell吗?
但是,如果您实际构建自己的固件,也可以 查看创建可启动的EFI映像并设置默认启动选项 这个二进制文件。如果您将二进制文件包括在内,这将非常有用 你的ROM的一部分,但设置它可能有点参与 文件系统,以便它被视为正常启动选项。
在this question中,Nicholas Embry给出了一个很好的答案,但我无法找到任何资源来进一步探讨他提到的主题。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:2)
bcfg
,就像Linux中的efibootmgr
一样,最终使用GetVariable()
和SetVariable()
运行时服务(在启动时也可用)来修改系统启动配置。
实现bcfg
命令的UEFI Shell本身就是一个UEFI应用程序。由于其源代码是公开的,因此您可以查看bcfg
命令的实现 - 尤其是BcfgAdd()函数。
答案 1 :(得分:0)
添加到unixsmurf的答案,我认为UEFI会自动查找位于EFI / BOOT / bootx64.efi的文件名。在制作要在引导时由机器自动加载的UEFI应用程序时,只需将应用程序放在指定的路径上即可。结合unixsmurf提到的内容,我可以让计算机在启动时自动加载任何UEFI应用程序。