# tianocore/edk2

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/tianocore-edk2).**

6,061 stars · 3,179 forks · C · NOASSERTION

## Links

- GitHub: https://github.com/tianocore/edk2
- Homepage: http://www.tianocore.org/tianocore-wiki.github.io/
- awesome-repositories: https://awesome-repositories.com/repository/tianocore-edk2.md

## Topics

`c` `firmware` `python` `uefi`

## Description

edk2 is a development project for creating system firmware that complies with the UEFI specification. It provides the necessary infrastructure to initialize hardware platforms and boot operating systems across multiple CPU architectures.

The project utilizes a modular firmware architecture that decouples high-level management protocols from physical transport layers. It implements critical security features, including a measured boot chain, cryptographic primitives for image authentication, and support for Trusted Platform Module hardware and software implementations.

Its capability surface extends to platform management standards such as Redfish, IPMI, and MCTP, as well as the generation of dynamic ACPI tables. The project also includes a comprehensive suite of tooling for cross-architecture compilation, firmware simulation, and virtual platform emulation for hypervisors like KVM, Xen, and QEMU.

The project includes a multi-target build system and automated test orchestration for validating firmware functionality in both emulated and physical environments.

## Tags

### Operating Systems & Systems Programming

- [UEFI Specification Implementations](https://awesome-repositories.com/f/operating-systems-systems-programming/firmware-boot-interfaces/uefi-specification-implementations.md) — Provides a full system firmware implementation that complies with the UEFI specification to initialize hardware and boot operating systems.
- [UEFI Specification Implementations](https://awesome-repositories.com/f/operating-systems-systems-programming/uefi-specification-implementations.md) — Implements a standardized execution environment and boot sequence compliant with the UEFI specification.
- [Dynamic ACPI Table Generation](https://awesome-repositories.com/f/operating-systems-systems-programming/dynamic-acpi-table-generation.md) — Produces ACPI and system configuration tables at runtime to adapt firmware behavior to hardware.
- [TPM Hardware Abstractions](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-communication-bridges/tpm-hardware-abstractions.md) — Abstracts storage management and seed generation to ensure hardware-independent operation of the TPM security module. ([source](https://github.com/tianocore/edk2/tree/master/TcgTpmPkg))
- [Hardware Device Initializations](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-device-initializations.md) — Performs low-level configuration of processors, memory, and peripherals during the early boot process.
- [Hardware Abstraction Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-abstraction-layers.md) — Decouples high-level management protocols from physical transport layers via standardized interfaces.
- [TPM-Backed Measured Boot](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management/boot-plugin-managers/boot-configuration-patchers/tpm-backed-measured-boot.md) — Integrates cryptographic primitives and TPM modules to verify the integrity of the boot chain.
- [Non-Volatile Variable Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/non-volatile-variable-managers.md) — Handles the storage and retrieval of non-volatile UEFI variables through emulated flash or BIOS interfaces. ([source](https://github.com/tianocore/edk2/tree/master/OvmfPkg))
- [ACPI Table Injection Tools](https://awesome-repositories.com/f/operating-systems-systems-programming/acpi-table-injection-tools.md) — Produces ACPI tables at runtime from external sources to simplify porting firmware to new platforms. ([source](https://github.com/tianocore/edk2/tree/master/DynamicTablesPkg))
- [Execution Mode Transitions](https://awesome-repositories.com/f/operating-systems-systems-programming/execution-context-management/execution-mode-transitions.md) — Moves platform-specific functionality from System Management Mode into modules that execute within the OS context for improved stability. ([source](https://github.com/tianocore/edk2/tree/master/PrmPkg))
- [UEFI Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/firmware-boot-interfaces/uefi-emulators.md) — Runs a firmware-compatible environment as a host process to validate code without requiring physical hardware. ([source](https://github.com/tianocore/edk2/tree/master/EmulatorPkg))
- [Platform Compatibility Validations](https://awesome-repositories.com/f/operating-systems-systems-programming/platform-compatibility-validations.md) — Uses Platform GUIDs to validate system compatibility and ensure secure runtime updates for firmware modules. ([source](https://github.com/tianocore/edk2/tree/master/PrmPkg))
- [Transport Abstraction Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/transport-abstraction-layers.md) — Decouples management protocols from physical transport layers like KCS, I2C, or PCI VDM. ([source](https://github.com/tianocore/edk2/tree/master/ManageabilityPkg))
- [Virtual Hardware Emulation](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-hardware-emulation.md) — Simulates hardware components to allow UEFI-compliant firmware testing within emulators and hypervisors.
- [Virtual Machine Firmware](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/virtualization-platforms/virtualization-technologies/virtual-machines/virtual-machine-firmware.md) — Creates a UEFI-compliant firmware implementation specifically for virtual machines to boot operating systems. ([source](https://github.com/tianocore/edk2/tree/master/OvmfPkg))

### Hardware & IoT

- [Modular Firmware Frameworks](https://awesome-repositories.com/f/hardware-iot/modular-firmware-frameworks.md) — Organizes system logic into independent packages and modules to enable portable code reuse.
- [Firmware Debuggers](https://awesome-repositories.com/f/hardware-iot/firmware-management/firmware-debuggers.md) — Integrates with external debuggers to allow source-level inspection of firmware execution on IA-32 and x64 platforms. ([source](https://github.com/tianocore/edk2/tree/master/SourceLevelDebugPkg))
- [Hardware Management Protocol Implementations](https://awesome-repositories.com/f/hardware-iot/hardware-management-protocol-implementations.md) — Provides drivers and libraries to implement industry standards like PLDM, MCTP, and IPMI for hardware platform management. ([source](https://github.com/tianocore/edk2/tree/master/ManageabilityPkg))
- [Platform Management Standard Implementations](https://awesome-repositories.com/f/hardware-iot/platform-management-standard-implementations.md) — Implements industry-standard protocols including Redfish, IPMI, and MCTP for remote monitoring and configuration of server hardware.

### Security & Cryptography

- [Cryptographic Primitives](https://awesome-repositories.com/f/security-cryptography/cryptography/cryptographic-primitives.md) — Implements fundamental cryptographic building blocks for hashing, RSA/ECC signing, and AES encryption to support secure boot. ([source](https://github.com/tianocore/edk2/tree/master/CryptoPkg))
- [Secure Boot Implementations](https://awesome-repositories.com/f/security-cryptography/firmware-security-operations/secure-boot-implementations.md) — Implements secure boot and measured boot chains using cryptographic primitives and TPM modules to ensure a trusted execution environment.
- [Cryptographic Operations](https://awesome-repositories.com/f/security-cryptography/cryptographic-operations.md) — Maps TPM 2.0 reference implementation calls to standard cryptographic APIs for math and hashing operations. ([source](https://github.com/tianocore/edk2/tree/master/TcgTpmPkg))
- [Cryptographic Service Integrations](https://awesome-repositories.com/f/security-cryptography/cryptographic-service-integrations.md) — Integrates cryptographic primitives into firmware modules using static linking or dynamic protocols. ([source](https://github.com/tianocore/edk2/tree/master/CryptoPkg))
- [General TLS Connection Establishment](https://awesome-repositories.com/f/security-cryptography/ssl-tls-connection-security/mqtt-tls-encryption/smtp-tls-encryption/general-tls-connection-establishment.md) — Implements TLS protocols to secure network communication during the firmware boot process. ([source](https://github.com/tianocore/edk2/tree/master/CryptoPkg))
- [TPM 2.0 Device Emulations](https://awesome-repositories.com/f/security-cryptography/tpm-2-0-device-emulations.md) — Provides a software-based firmware TPM implementation using the TCG TPM v2.0 reference for measured boot. ([source](https://github.com/tianocore/edk2/tree/master/TcgTpmPkg))

### Software Engineering & Architecture

- [GUID-Based Resource Mapping](https://awesome-repositories.com/f/software-engineering-architecture/guid-based-resource-mapping.md) — Uses globally unique identifiers to track and resolve dependencies between binary modules.
- [Module Lifecycle Management](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/lifecycle-loading-frameworks/module-lifecycle-management.md) — Manages the discovery, verification, and memory mapping of firmware modules for OS consumption. ([source](https://github.com/tianocore/edk2/tree/master/PrmPkg))
- [Interface-Based Discovery](https://awesome-repositories.com/f/software-engineering-architecture/service-discovery-patterns/interface-based-discovery.md) — Locates and invokes firmware modules by matching unique identifiers and interface signatures at runtime.
- [Firmware Image Build Orchestrators](https://awesome-repositories.com/f/software-engineering-architecture/build-system-orchestrators/firmware-image-build-orchestrators.md) — Orchestrates the cross-compilation of entire firmware images from source. ([source](https://github.com/tianocore/edk2/blob/master/OvmfPkg/PlatformCI/ReadMe.md))

### Part of an Awesome List

- [Firmware Emulation Frameworks](https://awesome-repositories.com/f/awesome-lists/security/firmware-emulation-frameworks.md) — Executes compiled firmware in virtualized environments with support for headless mode and automatic scripts. ([source](https://github.com/tianocore/edk2/blob/master/OvmfPkg/PlatformCI/ReadMe.md))
- [Embedded Firmware Simulators](https://awesome-repositories.com/f/awesome-lists/security/firmware-emulation-frameworks/embedded-firmware-simulators.md) — Validates software packages in a simulated environment without requiring physical target hardware. ([source](https://github.com/tianocore/edk2/tree/master/.azurepipelines))

### Development Tools & Productivity

- [Cross-Compilation Toolchains](https://awesome-repositories.com/f/development-tools-productivity/cross-compilation-toolchains.md) — Builds every supported package across all configured toolchains and architectures. ([source](https://github.com/tianocore/edk2/blob/master/.pytool/Readme.md))
- [Multi-Architecture Builds](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-build-targets/multi-architecture-builds.md) — Coordinates toolchains and build scripts to compile firmware for multiple CPU architectures.
- [Firmware Environment Generation](https://awesome-repositories.com/f/development-tools-productivity/environment-bootstrapping/firmware-environment-generation.md) — Creates a universal payload allowing various bootloaders to initialize and launch a compliant UEFI execution environment. ([source](https://github.com/tianocore/edk2/tree/master/UefiPayloadPkg))
- [REST API Integrations](https://awesome-repositories.com/f/development-tools-productivity/rest-api-integrations.md) — Enables communication with network services using HTTP protocols and RESTful methods. ([source](https://github.com/tianocore/edk2/tree/master/RedfishPkg))

### DevOps & Infrastructure

- [Boot Sequence Automation](https://awesome-repositories.com/f/devops-infrastructure/automation-orchestration/task-execution-frameworks/automation-frameworks/action-execution/script-sequences/boot-sequence-automation.md) — Generates startup scripts for emulators to automatically execute commands upon reaching the firmware shell. ([source](https://github.com/tianocore/edk2/blob/master/EmulatorPkg/PlatformCI/ReadMe.md))

### Mobile Development

- [Binary-Only Firmware Modules](https://awesome-repositories.com/f/mobile-development/mobile-operating-systems/firmware-customization-tools/custom-firmware-integration-systems/binary-only-firmware-modules.md) — Wraps pre-compiled Firmware Support Package (FSP) binaries to provide low-level hardware initialization. ([source](https://github.com/tianocore/edk2/tree/master/IntelFsp2WrapperPkg))

### Networking & Communication

- [Service Discovery Integrations](https://awesome-repositories.com/f/networking-communication/service-discovery-integrations.md) — Provides integration to locate the management service endpoint using host interfaces. ([source](https://github.com/tianocore/edk2/tree/master/RedfishPkg))

### Programming Languages & Runtimes

- [Firmware Binary Generation](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/multi-target-compilers/hardware-targeted-compilation/firmware-binary-generation.md) — Compiles Firmware Support Package (FSP) binaries to initialize hardware platforms according to the UEFI specification. ([source](https://github.com/tianocore/edk2/tree/master/IntelFsp2Pkg))

### System Administration & Monitoring

- [Redfish API Configurations](https://awesome-repositories.com/f/system-administration-monitoring/redfish-api-configurations.md) — Implements Redfish RESTful API schemas to allow remote updating of system properties. ([source](https://github.com/tianocore/edk2/tree/master/RedfishPkg))

### Testing & Quality Assurance

- [Automated Test Execution](https://awesome-repositories.com/f/testing-quality-assurance/automated-test-execution.md) — Provides automated test execution using startup scripts and headless mode within emulated environments. ([source](https://github.com/tianocore/edk2/blob/master/ArmVirtPkg/PlatformCI/ReadMe.md))
- [Host-Side Unit Testing](https://awesome-repositories.com/f/testing-quality-assurance/host-side-unit-testing.md) — Compiles and runs unit tests on the development host to verify logic independently of physical hardware. ([source](https://github.com/tianocore/edk2/tree/master/.pytool))
- [Physical Hardware Validation](https://awesome-repositories.com/f/testing-quality-assurance/physical-hardware-validation.md) — Builds software for specific hardware targets and confirms functionality on the physical platform. ([source](https://github.com/tianocore/edk2/tree/master/.azurepipelines))
- [Unified Execution Environments](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/unit/unit-testing/unified-execution-environments.md) — Runs a unified set of unit tests across both host-based and target-based environments. ([source](https://github.com/tianocore/edk2/blob/master/.pytool/Readme.md))
