问题标签 [gnu-efi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
693 浏览

c - 使用 gnu-efi 读取文件

找不到任何使用“gnu-efi”库编程 EFI 的文档。只是一个演示标准“Hello, world!”的示例。如果我知道有两个 FAT32 分区,我需要执行哪些步骤来打开和读取文件?我需要初始化哪些协议?

0 投票
2 回答
8736 浏览

uefi - 如何使用 gnu-efi 编译 uefi 应用程序?

我尝试使用gnu-efi. 但我不明白如何编译我的 uefi 应用程序代码。

我得到gnu-efi3.0.2,解压缩并输入make && make install. 我写你好世界代码:

我的操作系统是 Ubuntu 15.04。

0 投票
1 回答
2082 浏览

gnu - 如何使用 gnu-efi 读取 EFI 分区的文件

我使用了 gnu-efi。
我不明白如何简单地读取文件。
我了解使用 BlockIOProtocol。

你能告诉我们一个简单的例子吗?

0 投票
1 回答
4153 浏览

qemu - UEFI 使用 ExitBootServices 的简单示例(使用 gnu-efi)

我正在尝试使用 gnu-efi 编写一个 hello world 类型的程序,但没有引导服务,因为它们在 ExitBootServices 之后变得不可用。在调用 ExitBootServices 之前直接写入视频内存不会显示任何内容。

出于这个原因,我需要调用 ExitBootServices,它需要一个 Mapkey。MapKey 由 GetMemoryMap 函数提供。但是当我调用它时,我的应用程序崩溃了(我正在使用 qemu)。

这是我的代码:

即使在执行 ExitBootServices 之前,qemu 也会因错误而崩溃:

谁能告诉我在做什么有什么问题?谢谢你。

0 投票
3 回答
468 浏览

c - How to dump raw memory into a struct fast?

I'm in an identity-mapped memory context (UEFI on x86_64 platform) and I want to dump some contiguous memory content into a structure. Say my structure has this shape:

Supposing I have in mem_ptr the address to the requested memory's offset 0, what's the best way to copy its content into a mystr instance? Is there a way to do that without iterating through memory with a loop (which seems super boring)?


EDIT: Nicolas Jean suggested the use of memcpy but unfortunately in an EFI developing context the use of a C standard library makes little sense. However, efilib.h from gnu-efi has CopyMem(IN VOID * dst, IN CONST VOID * src, IN UINTN len) which carries out the same task.

0 投票
0 回答
172 浏览

gcc - 英特尔伽利略 (i586) 的 UEFI 应用程序

我正在开发一个简单的应用程序,它将作为 UEFI 应用程序在 Intel Galileo 的板上运行。我从一个“Hello, World”应用程序开始,并在下面进行了测试qemu-system-i386,它运行良好。然后,我在 Galileo EFI Shell 下运行它,它卡住了(什么也没发生,也没有返回任何东西——就像一个永无止境的循环)。我知道 Intel Galileo 的 Quark 处理器是 i586 架构。由于向后兼容性,在 i586 下运行为 i386 编译的应用程序应该没有问题,对吗?还是我错过了什么?

我正在使用 Ubuntu 14.04(32 位)和 GCC 5.4.0(默认)进行开发。另外,我在 3.0.4 版中使用 gnu-efi。

我应该构建一个交叉编译器吗?它会解决我所有的问题吗?有必要吗?

这是一个示例代码:

这是我的Makefile:

0 投票
1 回答
1684 浏览

c - UEFI 解析完整路径

我正在使用 GNU-EFI 开发各种引导加载程序。到目前为止,我已经能够读取Boot####NVRAM 变量,所以我有一个半填充的FilePathList[],看起来像这样(用 打印DevicePathToStr):

HD(Part2, SigCD0400E6-54F3-49F4-81F2-65B21E8278A8)/\EFI\Microsoft\Boot\bootmgfw.efi

当传递给LoadImage它时,它会失败EFI_NOT_FOUND。据我了解(UEFI 文档第 3.1.2 节),我需要在已有的路径之前添加完整路径。我发现正确的路径是PciRoot(0x0)/Pci(0x1, 0x1)/Ata(0x0),但我不确定如何根据我所拥有的以编程方式找到该路径,以便将其添加到前面。

到目前为止我的代码如下,请原谅质量低下,到目前为止我一直在努力让一些东西工作。

我需要哪些功能和流程才能完全限定它,FilePathList以便它可以与 一起使用LoadImage

0 投票
1 回答
1172 浏览

c - UEFI 使用 RT->GetVariable 读取变量

我是编码新手。所以我尽量保持简单。我的目标是读取 uefi 变量(如供应商/序列号)并将其打印回来。我的代码将无法正常工作。我正在使用 gnu-efi。

我收到了一堆编译器警告,但它会被编译:

如果我在设备上执行它,屏幕会变为正确的红色,但不会打印来自变量的数据。只有“->”

0 投票
0 回答
583 浏览

c - 简单的 UEFI 引导加载程序 Windows 10

我基本上处于与以下完全相同的情况: UEFI Resolve full path

我遵循了他的解决方案,但EFI_NOT_FOUND在 LoadImage 方法中总是出错。

这是我的(质量差)代码...:

}

完整路径是:PciRoot(0)/Pci(0x1D,0x2)/Pci(0x0,0x0)/Path(131,23,0x01000000002538B771B549D984012C00)/HD(Part2,SigD1377E10-FFDE-4CFB-B28D-D78CFDA52ECD)/\EFI\Microsoft\Boot\bootmgfw.efi

对我来说看起来不错...

这是我在屏幕上看到的:

这是我在屏幕上看到的

我错过了什么?加载一些驱动程序或协议?如您所见,我是 UEFI 开发的新手...

0 投票
1 回答
258 浏览

linux - hello efi 的 UEFI 安全启动问题

我创建了一个 efi 并使用文档用 pesign 签名 -

UEFI 安全启动:

https://en.altlinux.org/UEFI_SecureBoot_mini-HOWTO

https://en.opensuse.org/openSUSE:UEFI_Secure_boot_using_qemu-kvm

https://en.opensuse.org/openSUSE:UEFI_Image_File_Sign_Tools

https://wiki.ubuntu.com/SecurityTeam/SecureBoot

http://tomsblog.gschwinds.net/2014/08/uefi-secure-boot-hands-on-experience/

并启动:

uefi 磁盘包含签名的 efi 文件

但是为了安全启动我需要有

这样我就可以注册 OVMF 安全启动 但是在教程中,从来没有得到这些如何生成。请建议