Before Unified Extensible Firmware Interface (UEFI), there was legacy BIOS. You may hear us throwing around the term “legacy BIOS” all the time. Although sometimes we use BIOS and UEFI interchangeably (or sometimes at the same time), the actual term we should be using now is UEFI firmware. UEFI is the successor to legacy BIOS and there’s a reason why it is preferred firmware initialization infrastructure.
As you may have already read or you may already know, the BIOS is the main component when it comes to the booting process. There is so much activity that happens between power-on and OS login and the BIOS is in charge of the boot initialization to the OS. Before there was UEFI, legacy BIOS was becoming pretty complicated. As technology for legacy BIOS started to evolve, complexities and limitations with boot loaders began increasing. For one thing, legacy BIOS relied upon the real mode execution model that had a limited amount of total memory and often required external plug-ins to allow for more memory space. Also, as processor technology became more powerful, it was necessary to manually code certain elements into the code base. Unfortunately, due to the varying configurations and feature sets of the bootloaders, codes often did not merge well with the original code base and the code could get very messy/difficult to work on. With no governing body to oversee bootloader firmware development, it became difficult for vendors to create a universal bootloader for different systems and platforms.
So how was this problem solved? The UEFI Forum was created as a governing body to standardize firmware initialization and advocate interoperability and modularity across various systems and platforms, such as ARM, x86, RISC-V, MIPS and more. The UEFI Forum comprises of computer scientists, leading technology companies, technology vendors and researchers who all collaborate on the UEFI specifications that allow for greater functionality when it comes to firmware initialization and booting. The UEFI specifications were specifically designed with compatibility and modularity in mind and incorporates C code to standardize code bases. Since many key technology players are involved with the UEFI Forum, firmware development has become more collaborative because they are all working together to support each others’ functionality. Bootloaders like Coreboot and Das U-boot have been developed for many years; however they aren’t as standardized as UEFI – in fact, there are over 40 different U-boot variations! With UEFI being fully standardized, UEFI provides the glue between the firmware and the operating system for any architecture, allowing an OS designer to develop once and design everywhere.