tianocore/edk2
GitHub: tianocore/edk2
TianoCore EDK II 是跨平台 UEFI 固件开发的开源参考实现,提供完整的固件开发环境和虚拟机 OVMF 固件支持。
Stars: 5825 | Forks: 3076
# EDK II 项目
一个现代化、功能丰富、跨平台的固件开发环境,适用于来自 www.uefi.org 的 UEFI 和 PI 规范。
.. image:: https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Ftianocore%2Fedk2-pytool-extensions%2Frefs%2Fheads%2Fmaster%2Fpyproject.toml&query=%24.%5B'requires-python'%5D&style=for-the-badge&logo=python&logoColor=ffd343&label=Minimum%20Python%20Version%20for%20CI&color=3776ab&link=https%3A%2F%2Fwww.python.org%2Fdownloads%2F
:alt: CI Minimum Python Version
建议安装此 Python 版本以运行项目中启用 CI 的完整脚本集。
其他用于构建的 Python 要求可以在 `EDK II 构建说明 `__ 中找到。
## 核心 CI 构建状态
============================= ================= =============== ===================
宿主类型与工具链 构建状态 测试状态 代码覆盖率
============================= ================= =============== ===================
Windows_VS_ |WindowsCiBuild| |WindowsCiTest| |WindowsCiCoverage|
Ubuntu_GCC_ |UbuntuCiBuild| |UbuntuCiTest| |UbuntuCiCoverage|
============================= ================= =============== ===================
`更多 CI 构建信息 <.pytool/Readme.md>`__
## 平台 CI 构建状态
#### Microsoft Windows Visual Studio (VS)
============================= ================= ============= ============= ==============
工具链 CONFIG DEBUG RELEASE NOOPT
============================= ================= ============= ============= ==============
EmulatorPkg_Win_VS_ | IA32 |em32d| |em32r| |em32n|
| | X64 |em64d| |em64r| |em64n|
| | IA32 FULL |em32fd| |em32fr| |em32fn|
| | X64 FULL |em64fd| |em64fr| |em64fn|
OvmfPkg_Win_VS_ | IA32 |op32d| |op32r| |op32n|
| | X64 |op64d| |op64r| |op64n|
============================= ================= ============= ============= ==============
#### Ubuntu 24.04
============================= ================= ============= ============= ==============
工具链 CONFIG DEBUG RELEASE NOOPT
============================= ================= ============= ============= ==============
ArmVirtPkg_Ubuntu_GCC_ | AARCH64 |avAArch64du| |avAArch64ru| |avAArch64nu|
EmulatorPkg_Ubuntu_GCC_ | IA32 **N/A** **N/A** **N/A**
| | X64 |em64du| |em64ru| |em64nu|
| | IA32 FULL **N/A** **N/A** **N/A**
| | X64 FULL |em64fdu| |em64fru| |em64fnu|
OvmfPkg_Ubuntu_GCC_ | IA32 |op32du| |op32ru| |op32nu|
| | X64 |op64du| |op64ru| |op64nu|
============================= ================= ============= ============= ==============
|TCBZ_2639|_ - EmulatorPkg Ubuntu GCC5 在执行期间发生段错误。
`更多 ArmVirtPkg CI 构建信息 `__
`更多 EmulatorPkg CI 构建信息 `__
`更多 OvmfPkg CI 构建信息 `__
## 许可证详情
EDK II 开源项目的大部分内容使用 `BSD-2-Clause Plus Patent License `__。EDK II 开源项目包含以下受额外许可证涵盖的组件:
- `BaseTools/Plugin/CodeQL/analyze `__
- `BaseTools/Source/C/LzmaCompress `__
- `BaseTools/Source/C/VfrCompile/Pccts `__
- `CryptoPkg\Library\BaseCryptLib\SysCall\inet_pton.c `__
- `CryptoPkg\Library\Include\crypto\dso_conf.h `__
- `CryptoPkg\Library\Include\openssl\opensslconf.h `__
- `MdeModulePkg/Library/LzmaCustomDecompressLib `__
- `OvmfPkg `__
EDK II 开源项目使用来自上游项目的内容作为 git submodules,这些内容由额外的许可证涵盖。
- `BaseTools/Source/C/BrotliCompress/brotli `__
- `CryptoPkg/Library/OpensslLib/openssl `__
- `CryptoPkg/Library/MbedTlsLib/mbedtls `__
- `MdeModulePkg/Library/BrotliCustomDecompressLib/brotli `__
- `MdeModulePkg/Universal/RegularExpressionDxe/oniguruma `__
- `UnitTestFrameworkPkg/Library/CmockaLib/cmocka `__
- `UnitTestFrameworkPkg/Library/GoogleTestLib/googletest `__
- `UnitTestFrameworkPkg/Library/SubhookLib/subhook `__
- `RedfishPkg/Library/JsonLib/jansson `__
- `MdePkg/Library/BaseFdtLib/libfdt `__
- `MdePkg/Library/MipiSysTLib/mipisyst `__
- `SecurityPkg/DeviceSecurity/SpdmLib/libspdm `__
- `TcgTpmPkg/Library/TpmLib/TPM `__
EDK II 项目由多个包组成。每个包的维护者列在 `Maintainers.txt `__ 中。
## 资源
- `TianoCore `__
- `EDK II `__
- `EDK II 入门指南 `__
- `邮件列表 `__
- `如何贡献 `__
- `发布计划 `__
## 代码贡献
要向 TianoCore 项目做出贡献,请遵循以下步骤。
#. 按照下面指定的格式创建更改描述,以用于源代码控制提交日志。
#. 您的提交消息必须包含您的 ``Signed-off-by`` 签名
#. 使用该项目在其网页上记录的流程将您的代码提交给 TianoCore 项目。如果该流程未被记录,则将代码提交到该项目的开发邮件列表。
#. 优先接受使用与基础项目相同的版权许可证提交的贡献。如果这不可能,则可以接受使用以下许可证的贡献:
- Apache License, Version 2.0: https://opensource.org/license/apache-2-0/
- BSD (2-clause): https://opensource.org/license/BSD-2-Clause
- BSD (3-clause): https://opensource.org/license/BSD-3-Clause
- MIT: https://opensource.org/license/MIT
- Python-2.0: https://opensource.org/license/Python-2.0
- Zlib: https://opensource.org/license/Zlib
对于文档:
- FreeBSD Documentation License
https://www.freebsd.org/copyright/freebsd-doc-license.html
也可以接受放入公共领域的代码贡献。
使用其他许可证的贡献可能会被接受,但需要进一步审查。
## 开发者原创证书
您的更改描述应使用提交消息的标准格式,并且必须包含您的 ``Signed-off-by`` 签名。
为了跟踪谁做了什么,所有贡献的补丁必须包含一个声明,即据贡献者所知,他们有权根据指定的许可证对其进行贡献。
对此的测试如 `Developer's Certificate of Origin (DCO) 1.1 `__ 中所规定。贡献者通过添加一行来证明合规性
Signed-off-by: Developer Name developer@example.org
其中 ``Developer Name`` 是贡献者的真实姓名,电子邮件地址是开发者在贡献时可以通过其联系到的地址。
::
```
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```
## 示例更改描述 / 提交消息
::
```
From: Contributor Name
Subject: [Repository/Branch PATCH] Pkg-Module: Brief-single-line-summary
Full-commit-message
Signed-off-by: Contributor Name
```
#### 示例补丁邮件说明
- 提交消息的第一行取自邮件主题行中 ``[Repository/Branch PATCH]`` 之后的内容。提交消息的其余部分是邮件的内容。
- ``git format-patch`` 是创建此格式的一种方法
#### 示例补丁邮件的定义
- ``Repository`` 是补丁适用的仓库的标识符。此标识符仅应为 ``edk2`` 以外的仓库提供。例如 ``edk2-BuildSpecification`` 或 ``staging``。
- ``Branch`` 是补丁适用的分支的标识符。此标识符仅应为 ``edk2/master`` 以外的分支提供。例如 ``edk2/UDK2015``, ``edk2-BuildSpecification/release/1.27``, 或 ``staging/edk2-test``。
- ``Module`` 是受影响的代码或文档的简短标识符。例如 ``MdePkg``, ``MdeModulePkg/UsbBusDxe``, ``Introduction``, 或 ``EDK II INF File Format``。
- ``Brief-single-line-summary`` 是更改的简短摘要。
- 整个第一行应少于约 70 个字符。
- ``Full-commit-message`` 是描述更改的详细多行注释。每行应少于约 70 个字符。
- ``Signed-off-by`` 是贡献者的签名,通过其真实法定姓名和电子邮件地址标识他们。
## Submodules
EDK II 中使用的当前 submodules 位于 `.gitmodules <.gitmodules>`__。
要获取完整的、可构建的 EDK II 仓库,请使用以下 git 命令步骤
.. code-block:: bash
git clone https://github.com/tianocore/edk2.git
cd edk2
git submodule update --init
cd ..
如果 submodules 有更新,请使用以下 git 命令获取最新的 submodules 代码。
.. code-block:: bash
cd edk2
git pull
git submodule update
注意:克隆 submodule 仓库时,不建议使用 '--recursive' 选项。EDK II 本身不会使用上述 submodules 中任何子模块的代码/功能。因此,使用 '--recursive' 会增加对实际上不需要其代码的服务器的依赖,以及不必要地下载我们将不使用的代码。
.. ===================================================================
.. This is a bunch of directives to make the README file more readable
.. ===================================================================
.. CoreCI
.. _Windows_VS: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=74&branchName=master
.. |WindowsCiBuild| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FWindows%20VS%20-%20CI?branchName=master
.. |WindowsCiTest| image:: https://img.shields.io/azure-devops/tests/tianocore/edk2-ci/74.svg
.. |WindowsCiCoverage| image:: https://img.shields.io/badge/coverage-coming_soon-blue
.. _Ubuntu_GCC: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=76&branchName=master
.. |UbuntuCiBuild| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FUbuntu%20GCC%20-%20CI?branchName=master
.. |UbuntuCiTest| image:: https://img.shields.io/azure-devops/tests/tianocore/edk2-ci/76.svg
.. |UbuntuCiCoverage| image:: https://img.shields.io/badge/coverage-coming_soon-blue
.. ArmVirtPkg
.. _ArmVirtPkg_Ubuntu_GCC: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=79&branchName=master
.. |avAArch64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FArmVirtPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_DEBUG
.. |avAArch64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FArmVirtPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_RELEASE
.. |avAArch64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FArmVirtPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_NOOPT
.. |avArmdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FArmVirtPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_DEBUG
.. |avArmru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FArmVirtPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_RELEASE
.. |avArmnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FArmVirtPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_NOOPT
.. EmulatorPkg
.. |TCBZ_2639| image:: https://img.shields.io/github/issues/tianocore/edk2?baseUrl=https%3A%2F%2Fgithub.com
.. _TCBZ_2639: https://github.com/tianocore/edk2/issues/9905
.. _EmulatorPkg_Win_VS: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=73&branchName=master
.. _EmulatorPkg_Ubuntu_GCC: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=78&branchName=master
.. |em32d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_DEBUG
.. |em32r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_RELEASE
.. |em32n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_NOOPT
.. |em32fd| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_DEBUG
.. |em32fr| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_RELEASE
.. |em32fn| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_NOOPT
.. |em64d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_DEBUG
.. |em64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_DEBUG
.. |em64r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_RELEASE
.. |em64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_RELEASE
.. |em64n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_NOOPT
.. |em64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_NOOPT
.. |em64fd| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_DEBUG
.. |em64fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_DEBUG
.. |em64fr| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_RELEASE
.. |em64fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_RELEASE
.. |em64fn| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_NOOPT
.. |em64fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FEmulatorPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_NOOPT
.. OvmfPkg
.. _OvmfPkg_Win_VS: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=72&branchName=master
.. _OvmfPkg_Ubuntu_GCC: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=77&branchName=master
.. |op32d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_DEBUG
.. |op32du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_DEBUG
.. |op32r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_RELEASE
.. |op32ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_RELEASE
.. |32n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_DEBUG
.. |op32nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_NOOPT
.. |op64d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_DEBUG
.. |op64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_DEBUG
.. |op64r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_RELEASE
.. |op64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_RELEASE
.. |op64n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Windows%20VS%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_NOOPT
.. |op64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status%2FCI%2FOvmfPkg%20-%20Ubuntu%20GCC%20-%20CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_NOOPT
标签:BIOS, DNS解析, EDK II, EmulatorPkg, GCC, IA32, Linux开发, PI规范, Python, TianoCore, UEFI, Visual Studio, Windows开发, X64, 固件安全, 固件开发, 安全测试工具, 客户端加密, 客户端加密, 底层开发, 开源项目, 引导加载程序, 无后门, 硬件抽象层, 系统编程, 网络安全监控, 逆向工具, 驱动开发