Linux in a Brave New Firmware Environment
Initially included exclusively on Itanium™ platforms, the Extensible Firmware Interface Architecture (EFI) will soon be included on IA-32 server, workstation, and desktop systems. This paper provides insight into the design and composition of an EFI enabled IA-32 Linux kernel capable of booting on legacy free platforms. An overview of the EFI development environment is provided, including the specifications, development tools, and software development kits available for development today.
The design and prototype implementation of the kernel initialization sequence from the instantiation of the EFI enabled boot loader to the login prompt is detailed with an emphasis on maintaining backward compatibility with existing legacy platforms. The legacy free VGA replacement, the Universal Graphics Adapter (UGA), is introduced in the context of Linux, including the requirements for use within the kernel. Additionally, details of a prototype implementation of the Universal Graphics Adapter Driver stack, including an EFI Byte Code Interpreter and Virtual Machine (the so called EBC VM), are presented and analyzed in depth. This paper concludes with a call for kernel developers to review and provide feedback on the design and implementation presented.