Study Guides by Role
Not sure where to start? Pick the role closest to yours and follow the recommended learning path.
Every chapter in this guide is self-contained, so you can jump to any topic that interests you. But if you want a focused path, these role-based guides highlight the chapters most relevant to your work.
Chapters are categorized as:
- Essential — core material for this role, read these first
- Recommended — valuable follow-ups that deepen your skills
- Optional — useful reference material when needed
UEFI Application Developer
You write UEFI applications, shell commands, or pre-boot tools. You need to understand UEFI services, protocols, and how to interact with hardware through standardized interfaces.
Prerequisites: Basic C programming, comfort with command-line tools.
Essential Chapters
| Chapter | Topic | Why |
|---|---|---|
| Ch 1 | Introduction to UEFI and Project Mu | Understand what UEFI is and how it works |
| Ch 2 | Environment Setup | Get your build environment running |
| Ch 3 | Hello World | Write and run your first UEFI application |
| Ch 9 | Driver Model | Understand how UEFI loads and manages code |
| Ch 10 | Protocols and Handles | The core pattern for all UEFI programming |
| Ch 11 | Memory Services | Allocate and manage memory correctly |
| Ch 12 | Boot and Runtime Services | The full service API available to your code |
| Ch 13 | Console I/O | Text input/output for interactive apps |
| Ch 14 | Graphics Output (GOP) | Framebuffer access for graphical apps |
| Ch 15 | File System Access | Read/write files on FAT volumes |
| Ch 16 | Block I/O | Raw disk access and partition detection |
| Ch 17 | Network Stack | TCP/IP, HTTP, DNS for network apps |
| Ch 18 | UEFI Variables | Persistent storage across boots |
Recommended Chapters
| Chapter | Topic | Why |
|---|---|---|
| Ch 28 | Custom Shell Command | Build a real shell utility end-to-end |
| Ch 29 | Graphical Boot Menu | Combine GOP + console + variables |
| Ch 30 | Network Application | Build a real network client |
| Ch 31 | Custom Boot Loader | Understand ExitBootServices and OS handoff |
Optional Chapters
| Chapter | Topic |
|---|---|
| Ch 4-8 | Project Mu structure and tooling (if using Mu for builds) |
| App A | EDK2 build system reference (INF/DEC/DSC/FDF) |
| App C | Debugging techniques |
Platform / Firmware Engineer
You bring up, maintain, or customize platform firmware. You need to understand boot phases, silicon initialization, platform description files, CI/CD, and testing.
Prerequisites: C programming, familiarity with hardware initialization concepts, comfort with build systems.
Essential Chapters
| Chapter | Topic | Why |
|---|---|---|
| Ch 1 | Introduction to UEFI and Project Mu | UEFI architecture and Project Mu’s role |
| Ch 2 | Environment Setup | Set up the full Mu toolchain |
| Ch 3 | Hello World | Verify your build environment works |
| Ch 4 | Repository Architecture | How Mu splits firmware across repos |
| Ch 5 | Stuart Build System | The build system you will use daily |
| Ch 6 | Dependency Management | NuGet, pip, submodule dependencies |
| Ch 7 | Platform DSC/FDF | Platform description and flash layout |
| Ch 8 | CI/CD Pipeline | Automated build and test validation |
| Ch 19 | PEI Phase | Early init: CAR, memory training, HOBs |
| Ch 20 | DXE Phase | Driver dispatch, architectural protocols |
| Ch 23 | ACPI Integration | Platform tables for the OS |
| Ch 27 | Platform Testing | CI test infrastructure and validation |
Recommended Chapters
| Chapter | Topic | Why |
|---|---|---|
| Ch 9 | Driver Model | Writing platform drivers |
| Ch 10 | Protocols and Handles | Protocol installation and consumption |
| Ch 11 | Memory Services | Memory map and allocation patterns |
| Ch 12 | Boot and Runtime Services | Service lifecycle across phases |
| Ch 21 | System Management Mode | SMM handlers and SMRAM protection |
| Ch 22 | Security and Secure Boot | Chain of trust, key management |
| Ch 24 | Capsule Updates | Firmware update workflows |
Optional Chapters
| Chapter | Topic |
|---|---|
| Ch 13-18 | UEFI services (reference as needed for driver work) |
| Ch 25 | DFCI (if managing device fleets) |
| Ch 26 | Rust in Firmware (if adopting Rust modules) |
| App B | EDK2 to Mu migration guide |
Security Engineer
You focus on firmware security: Secure Boot, Measured Boot, SMM hardening, DFCI, and firmware update integrity. You need to understand the trust chain from power-on through OS handoff.
Prerequisites: C programming, basic understanding of cryptography (PKI, hashing, signing), familiarity with UEFI concepts.
Essential Chapters
| Chapter | Topic | Why |
|---|---|---|
| Ch 1 | Introduction to UEFI and Project Mu | Boot phases and attack surface overview |
| Ch 2 | Environment Setup | Build environment for security testing |
| Ch 3 | Hello World | Baseline for building test modules |
| Ch 21 | System Management Mode | SMM isolation, SMRAM protection, attack surface |
| Ch 22 | Security and Secure Boot | PK/KEK/db/dbx, Measured Boot, TPM |
| Ch 24 | Capsule Updates | Signed update verification and delivery |
| Ch 25 | DFCI | Remote configuration with certificate trust |
Recommended Chapters
| Chapter | Topic | Why |
|---|---|---|
| Ch 9 | Driver Model | How drivers are authenticated and loaded |
| Ch 10 | Protocols and Handles | Protocol security implications |
| Ch 11 | Memory Services | Memory protection and isolation |
| Ch 12 | Boot and Runtime Services | ExitBootServices security boundary |
| Ch 18 | UEFI Variables | Authenticated variables, Secure Boot vars |
| Ch 19 | PEI Phase | Early boot trust establishment |
| Ch 20 | DXE Phase | Driver dispatch and security policy |
| Ch 26 | Rust in Firmware | Memory-safe firmware for security-critical code |
Optional Chapters
| Chapter | Topic |
|---|---|
| Ch 4-8 | Mu structure and CI (if working on Mu platforms) |
| Ch 27 | Platform testing (security test automation) |
| App C | Debugging techniques |
EDK2-to-Project Mu Migrator
You are an experienced EDK2 developer adopting Project Mu. You already know UEFI concepts — you need to understand what Mu does differently: multi-repo architecture, stuart, dependency management, CI/CD, and Mu-specific features.
Prerequisites: Working EDK2 experience, familiarity with INF/DEC/DSC/FDF files, existing platform firmware.
Essential Chapters
| Chapter | Topic | Why |
|---|---|---|
| Ch 4 | Repository Architecture | Mu’s multi-repo model vs EDK2 monorepo |
| Ch 5 | Stuart Build System | Replace your build scripts with stuart |
| Ch 6 | Dependency Management | NuGet, ext_dep, pip — new dependency model |
| Ch 7 | Platform DSC/FDF | Multi-repo DSC layering and includes |
| Ch 8 | CI/CD Pipeline | Mu’s CI plugins and GitHub Actions |
| App B | EDK2 to Project Mu Migration | Step-by-step migration guide |
Recommended Chapters
| Chapter | Topic | Why |
|---|---|---|
| Ch 1 | Introduction | Project Mu’s philosophy and architecture |
| Ch 27 | Platform Testing | Mu’s test infrastructure |
| Ch 25 | DFCI | Mu-specific device management feature |
| Ch 26 | Rust in Firmware | Mu’s Rust integration |
Optional Chapters
| Chapter | Topic |
|---|---|
| Ch 24 | Capsule updates (Mu’s FmpDevicePkg approach) |
| App A | EDK2 build system reference (for comparison) |
Not Sure Which Role Fits?
If none of these roles match exactly, start with the UEFI Application Developer path — it covers the broadest set of fundamental concepts. You can always branch into platform engineering or security topics from there.
For a complete sequential learning experience, simply follow the guide from Chapter 1 through Chapter 31.