问题标签 [edk2]

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 回答
282 浏览

openssl - Confused about how to set up OpenSSL for UDK2018

I'm trying to set up a UDK2018 environment. Step 3 of the instructions refers to a text file in the OpenSSl with instructions below, but then says to download a zip and extract it. None of the commands in the instructions seem to work, because the directory isn't a git depository. I'm not very experienced at this, just trying to develop a UEFI script for a test. Any help on how to set up the environment would be great. Here are the instructions from the text file I referred to above:

"HOW to Install OpenSSL for UEFI Building

OpenSSL repository was added as one submodule of EDKII project.

The user can use the following commands to clone both main EDKII repo and openssl submodule: 1) Add the "--recursive" flag to the git clone command: $ git clone --recursive https://github.com/tianocore/edk2 or 2) Manually initialize and update the submodules after the clone operation on main project: $ git clone https://github.com/tianocore/edk2 $ git submodule update --init --recursive

And use the following combined commands to pull the remote submodule updates (e.g. Updating the new supported OpenSSL release tag): $ git pull --recurse-submodules && \ git submodule update --recursive --remote"

Thank you, Simon

0 投票
1 回答
526 浏览

uefi - EDK2 中的指南与协议

我试图了解 EDK2 模块的包声明文件 (.dec) 中的不同部分,但是我似乎无法弄清楚为什么某些 GUID 定义在 [GUIDs] 部分下,而有些则在 [Protocols] 下部分或 [Ppis] 部分。有没有理由不应该将它们放在同一个部分下,尤其是从 EDK2 构建过程的角度来看?

0 投票
1 回答
393 浏览

linux-kernel - ACPI 定义块:系统总线的 _SB 和 _SB_ 之间的区别

我正在调查 edk2 (UEFI)。所以,我对 DSDT 表中定义的设备路径有些担心。在此表中,我们使用/_SB系统总线的根,但它/_SB_在 Linux 上。例如,我通过命令检查

有时,我还看到一些 ACPI 表/_SB_用于引用设备路径。

你知道它有什么不同吗?怎么用?

非常感谢!

0 投票
1 回答
1338 浏览

c - 加载 UEFI 协议的正确方法是什么?

如果这不符合 StackOverflow 格式,我们深表歉意。我目前正在学习编写 UEFI 应用程序。我一直在阅读 UEFI 标准以及大量在线教程,但我似乎无法弄清楚加载 UEFI 协议的正确方法是什么。所有教程的使用方法似乎都不同。

在许多情况下,教程遵循定位句柄然后遍历句柄缓冲区以打开协议的方法。示例如下所示:

或者,您似乎可以直接使用该LocateProtocol函数加载协议。例子:

以上两个例子都有效。我不确定我是否理解在加载协议之前获取句柄缓冲区的重要性,如一些教程和在线材料中所见。通过在 Github 上搜索示例,看起来两者都可以互换使用,到目前为止,我发现两者都可以正常工作。我知道在前一种方法中,我需要释放缓冲区,因为它是从池中分配的,而在后一种方法中,对此不承担任何责任。

谁能指出加载 UEFI 协议的理想方法是什么?两种方法都有问题吗?这里的任何帮助将不胜感激。

0 投票
1 回答
488 浏览

debugging - How to load debug symbols for the whole OVMF UEFI image in gdb?

I am trying to debug a driver in UEFI firmware (OVMF) via gdb as described here:

https://github.com/tianocore/tianocore.github.io/wiki/How-to-debug-OVMF-with-QEMU-using-GDB

It works well, but I discovered that just having debug symbols for my driver is not enough. I also need debug symbols for the whole OVMF image to properly see what's going on. I have a lot of .debug files after OVMF is built with edk2, but I don't understand which ones I need to load into gdb, and what addresses I should use.

0 投票
1 回答
499 浏览

linker - 如何将对象文件链接到 UEFI DXE/EFI 驱动程序?

我正在构建一个 UEFI DXE/EFI (UDK2018) 驱动程序(在 Windows 上,使用 VS2017),我需要将现有对象 ( .obj) 文件链接到该驱动程序中。我相当肯定这应该从INF文件中完成,但我没有看到任何关于 EDK2 文档中包含的目标文件的具体内容。我确实找到了这两个示例供参考:

https://github.com/tianocore/edk2/blob/UDK2018/StdLib/LibC/LibC.inf#L96

https://github.com/veracrypt/VeraCrypt-DCS/blob/master/Library/VeraCryptLib/VeraCryptLib.inf#L79

但是,即使将这些作为参考(我认为这是可行的),我也无法找出正确的方法来配置INF文件以object_files.lst包含.obj. (实际的错误,当然是一个未解决的外部。--我已经验证如果我手动添加.obj文件到object_files.lst,驱动的链接.efi成功。)

没有.obj,我的INF看起来像这样:

我尝试在[Sources]和部分之间插入以下部分[Packages],但没有成功:

.obj与源文件一起放置)

我还将 INF_VERSION 修改为更高的版本(0x0001001A、1.25 等),尽管不是上面各节的所有组合。

我也相信我可以创建一个中间.lib文件,但如果我要这样做,还有其他更直接的选项对我来说是有意义的。使用独立的目标文件会更可取,更简单,并且与更大项目的其他部分更合作,上面的例子肯定表明这应该是可能的。

谁能告诉我如何让一个预先存在的目标文件链接到 DXE/EFI(大概是通过将它添加到 DXE/EFI 中object_files.lst)?

0 投票
0 回答
256 浏览

protocols - 如何使用新协议封装 UEFI 驱动程序 (EDK II)

我正在尝试从第 3 方获取 UEFI 驱动程序并将其包装在我自己的不同协议 GUID 中,以简化示例应用程序使用的接口。

我不想对LocateHandleBuffer()最初绑定到我自己的驱动程序(不是第 3 方)的示例应用程序进行更改(请求时可能更改 GUID 除外),我不必进行任何包装。

鉴于我无法真正将包装器与控制器句柄相关联或使用 USB IO 协议,看来这不再符合驱动程序的条件。

有没有办法做到这一点,以便我仍然可以提供一个抽象的可加载图像供示例应用程序使用,还是我最终必须在演示应用程序中将这个包装在源代码中?

0 投票
1 回答
1192 浏览

uefi - 构建 EmulatorPkg 时出现如下错误如何解决?

当我运行时build -p EmulatorPkg\EmulatorPkg.dsc -t VS2019 -a X64,它显示以下错误

但是在构建 MdeModulePkg/MdeModulePkg.dsc 时,它没有任何错误。

0 投票
1 回答
61 浏览

openssl - 从 UEFI 创建签名证书请求和验证证书的最佳方式

我正在尝试从 UEFI 中的 C 代码创建签名证书请求(我使用 edk2)。

我知道如何在 Linux C 代码中使用 openssl 来做到这一点。我知道 edk2 中有CryptoPkg。但我没有找到创建请求和检查证书的功能。

有没有办法使用CryptoPkgX509_REQ创建和检查X509证书?我该怎么做?

如果我不能这样做:如何创建创建请求并检查证书?创建我自己的 openssl 包装器的最佳方法是什么?

0 投票
1 回答
522 浏览

openssl - RSA_generate_key_ex 函数调用中的 RSA 密钥生成错误

我正在尝试使用 openssl 生成 RSA 密钥。我有错误,RSA_generate_key_ex不知道为什么会发生错误。

我结合了ERR_get_error()并且ERR_error_string()我收到了下一条消息:error:2506906C:lib(37):func(105):reason(108)。我还发现 108 错误代码意味着RSA_R_DATA_GREATER_THAN_MOD_LEN

我正在尝试使用下面的 C 代码生成 RSA 密钥。为了简洁起见,我减少了免费调用和错误输出

问题是错误是什么意思,我该如何解决?

编辑:我使用 OpenSSL 1.1.0e 2017 年 2 月 16 日。我将其用作EDK II 项目的一部分