1 Introduction

gnufi is a free implementation of the uefi specification. uefi defines a set of services and an environment that can be used to boot into an operating system.

The design goals for gnufi is that is should be (1) portable, (2) extendable and (3) specification confirming. To achieve those goals the following concepts are introduced:

Loaders
At configuration time different firmware loaders can be specified (See Loaders.). This enables the firmware to be run in different pre-existing environments. An example of a firmware loader could be `i386-legacy'; a loader that loads the firmware in a legacy BIOS environment. Another example loader could be `ppc-uboot'; a loader that loads the firmware using the U-Boot bootloader on a PPC architecture.
Kernel scripts
Per-board configuration scripts, called kernel scripts or simply kscripts, are used to enable the user to select what services to include in a firmware image, and how to connect those services to devices. The kscripts are also used to setup fall-back console I/O in case that the boot manager can not initialize the preferred console.
Modules
Most services are implemented as modules, this enables the user of the firmware to pick with great detail what services he or she requires for their environment.