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.