UEFI Notes: Introduction
Part one of many.
Preamble
I am writing this because, one, it would be something I personally would benefit from, something to refer back to when I am uncertain about something, and two, it would hopefully be useful to you, the reader, given how niche this topic is.
In this series I will condense a lot of information into easy-to-understand bits, but I will likely skip some of the details. It should still give you a good understanding of how things work. So if you are keen on edge cases, you will need to study the UEFI specifications afterward. I will also skip the administrative parts of the UEFI Forum and so on.
Introduction
UEFI stands for Unified Extensible Firmware Interface. It is an industry standard used by modern computers. The purpose is simple: create a framework that allows different vendors’ hardware to work together. This is what allows you to pair an Intel chip with an AMD GPU, or an AMD chip with an Nvidia GPU, and so on.
Before UEFI, there was BIOS, which stands for Basic Input Output System. In between, we had EFI, Extensible Firmware Interface, developed by Intel. I won’t go into that history in detail, but I will say this: we use UEFI today, but the name “BIOS” stuck around. So when you hear people talk about “BIOS,” they are actually referring to UEFI.
What is UEFI?
UEFI is a specification. In a nutshell, it lists out how code from different vendors is supposed to work together. The actual implementation lives in a repository called EDK II, maintained by Tianocore. Yes, it is affiliated with the UEFI Forum, the organization that maintains the UEFI specifications. The Forum is made up of representatives from major companies who collectively decide what the specification should be.
Not UEFI, But We’ll Cover It Anyway
You can’t really talk about UEFI or BIOS without at least looking at the early boot phases. What do I mean by that? Before you see the Windows/Mac/Linux screen, a whole bunch of things happen to ready the system, and part of that is addressed by UEFI, and part of it is not. The part that isn’t happens earlier, and it’s what we call Platform Initialization, or PI for short. So we’ll cover a bit of that too.
The Simplified Overview Diagram
This is a simplified flow of the whole boot process, governed by UEFI and PI. Roughly speaking, PI takes care of the first two stages and part of the third, while the rest falls under UEFI. In reality the two overlap more than this clean split suggests, since PI actually defines DXE and BDS too, while UEFI is the set of interfaces those phases expose. But for now, this rough split is enough to get you oriented, and we’ll get into the nuance later in the series.


