explaingit

tianocore/edk2

5,986CAudience · developerComplexity · 5/5LicenseSetup · hard

TLDR

EDK II is an open-source UEFI firmware development environment used by hardware vendors to build the pre-OS software that initializes computers before the operating system loads.

Mindmap

mindmap
  root((EDK II))
    What it does
      UEFI firmware dev
      Pre-OS init
      Cross-platform builds
    Platform packages
      OvmfPkg QEMU
      ArmVirtPkg
      EmulatorPkg
    Tech stack
      C code
      Python tools
      GCC and Clang
    Use cases
      Firmware development
      UEFI testing
      Hardware bring-up
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Develop or modify UEFI firmware for a hardware platform using the standard EDK II build system.

USE CASE 2

Build and test a UEFI firmware image inside QEMU using OvmfPkg without needing physical hardware.

USE CASE 3

Add a custom UEFI driver or application module to an existing EDK II-based firmware project.

Tech stack

CPythonAssemblyUEFICMake

Getting it running

Difficulty · hard Time to first run · 1day+

Requires specific toolchains (Visual Studio, GCC, or Clang), Python, and NASM, multi-component setup with git submodules.

BSD-2-Clause Plus Patent License for most of the codebase, some subdirectories carry additional upstream licenses.

In plain English

EDK II is an open-source development environment for writing firmware that runs before an operating system loads. Firmware at this level handles the most fundamental tasks on a computer: initializing hardware components, running a pre-boot environment, and eventually handing control to an operating system. EDK II is built around the UEFI and PI specifications, which are industry standards maintained by uefi.org and adopted by most modern computers. The codebase is cross-platform and cross-architecture. It supports building firmware images that target processors in the x86-64, ARM, and AArch64 families. Building requires a toolchain, and the README lists multiple supported combinations: Visual Studio on Windows, GCC on Linux, and Clang-based options on both. Continuous integration builds run across all major toolchain and platform combinations, with build and test status tracked for each configuration. Beyond the core firmware modules, the repository includes platform packages for specific use cases. OvmfPkg provides a UEFI firmware image that runs inside QEMU virtual machines, which is useful for testing firmware behavior without needing physical hardware. ArmVirtPkg similarly targets ARM virtualization. EmulatorPkg lets you run an emulated UEFI environment on a host machine directly. The primary license is BSD-2-Clause Plus Patent License, though specific subdirectories carry additional licenses from upstream components such as OpenSSL, Google's Brotli, and Mbed TLS, which are pulled in as git submodules. The README lists each separately. This is an advanced project requiring deep knowledge of computer architecture, firmware standards, and specific build toolchains. It is developed primarily by hardware manufacturers, firmware engineers, and contributors to the UEFI ecosystem. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
I want to build and run OvmfPkg from tianocore/edk2 inside QEMU on Ubuntu. Walk me through the build steps and how to launch it.
Prompt 2
How do I add a new DXE driver module to an EDK II platform package? What files do I need to create and where do they go?
Prompt 3
Explain how the EDK II boot flow works, from firmware initialization through the DXE phase to handing off to a UEFI bootloader like GRUB.
Open on GitHub → Explain another repo

← tianocore on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.