Wandering Thoughts archives

2024-05-03

UEFI, BIOS, and other confusing x86 PC (firmware) terms

IBM compatible x86 PCs have come with firmware since their first days. This firmware was called (the) BIOS, and so over time 'BIOS' became the generic term for 'IBM compatible x86 PC firmware' (which could come from various companies who carefully reimplemented it from scratch in ways that didn't violate IBM's copyrights). Over time, PC firmware ('BIOS') got more complex and acquired more (boot time) user interface features, like all sorts of splash screens, tuning options, semi-graphical interfaces, and so on. However, the actual BIOS API, primarily used at boot time, stayed more or less unchanged and as a result PCs kept booting in a simple and limited way, (mostly) using the Master Boot Record (MBR).

Various people in the x86 PC world have wanted more sophisticated firmware for a long time (firmware that was more like the firmware that non-x86 servers and workstations often had). The 'BIOS MBR' boot sequence was very limited and awkward, and a variety of features that people wanted had to be wedged in with tricks and extensions. This led to UEFI, which is technically a standard for the APIs and behavior of 'UEFI' firmware (with multiple implementations from various 'BIOS' (firmware) vendors). As part of this standard, UEFI boots machines in a completely different and more powerful way than through the MBR (and UEFI provides some official ways of controlling what should get booted).

Today (and for some time) basically all x86 PCs have firmware that officially supports and implements the UEFI standards (although how well has varied over time; early UEFI support had various problems). This is variously called 'UEFI firmware', 'UEFI BIOS', just 'UEFI', or even 'BIOS with UEFI' (which is how some of the earliest implementations actually felt, as if the UEFI features and requirements were bolted on the side of the existing BIOS). And these days, because 'BIOS' became the generic name for x86 PC firmware, people may say 'BIOS' (eg 'changing BIOS settings') and in practice mean 'UEFI firmware' as opposed to 'BIOS without UEFI support'.

(The giant exception to pervasive UEFI firmware is various virtualization systems, for example on Linux. Unless you specifically ask for firmware with UEFI support, these often provide virtual machines with firmware that is truly BIOS firmware, with no UEFI features. There are various reasons for this beyond the scope of this entry.)

When people talk about doing things with x86 PC firmware, such as booting the system, they often say 'UEFI' to mean 'booting through UEFI native processes and APIs' and 'BIOS' to mean MBR booting. Since most x86 PCs have UEFI firmware these days, MBR booting is generally using UEFI's optional support for this, as opposed to an actual BIOS firmware (except on (some) virtual machines).

As a corollary to this, if someone talks about a 'UEFI only' machine, what they probably mean is a machine that has no support for MBR booting. In practice, probably most or all x86 firmware on real hardware has been fundamentally UEFI firmware for years (although it's possible that PC firmware vendors have built frankenfirmware that was one part UEFI and one part genuine BIOS).

All of this (mis)usage persists partly because it's short, especially when you get to phrases like 'this server is UEFI only'. And generally people know what you mean.

PS: My impression is that server firmware is more likely to stick to the UEFI standard and specification, while firmware in consumer focused desktop motherboards and systems may be more inclined to do things like hunt around randomly to find plausible UEFI boot targets.

tech/UEFIAndBIOSAndOtherPCTerms written at 23:22:24; Add Comment


Page tools: See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.