Intel Extensible Firmware Interface User Manual
Page 72

Extensible Firmware Interface Specification
3-2
12/01/02
Version 1.10
Programmatic interaction with the boot manager is accomplished through globally defined
variables. On initialization the boot manager reads the values which comprise all of the published
load options among the EFI environment variables. By using the
function the
data that contain these environment variables can be modified.
Each load option entry resides in a
Boot####
variable or a
Driver####
variable where the
####
is replaced by a unique option number in printable hexadecimal representation using the
digits 0–9, and the upper case versions of the characters A–F (0000–FFFF). The
####
must
always be four digits, so small numbers must use leading zeros. The load options are then logically
ordered by an array of option numbers listed in the desired order. There are two such option
ordering lists. The first is
DriverOrder
that orders the
Driver####
load option variables into
their load order. The second is
BootOrder
that orders the
Boot####
load options variables into
their load order.
For example, to add a new boot option, a new
Boot####
variable would be added. Then the
option number of the new
Boot####
variable would be added to the
BootOrder
ordered list and
the
BootOrder
variable would be rewritten. To change boot option on an existing
Boot####
,
only the
Boot####
variable would need to be rewritten. A similar operation would be done to
add, remove, or modify the driver load list.
If the boot via
Boot####
returns with a status of
EFI_SUCCESS
the boot manager will stop
processing the
BootOrder
variable and present a boot manager menu to the user. If a boot via
Boot####
returns a status other than
EFI_SUCCESS
, the boot has failed and the next
Boot####
in the
BootOrder
variable will be tried until all possibilities are exhausted.
The boot manager may perform automatic maintenance of the database variables. For example, it
may remove unreferenced load option variables, any unparseable or unloadable load option
variables, and rewrite any ordered list to remove any load options that do not have corresponding
load option variables. In addition, the boot manager may automatically update any ordered list to
place any of its own load options where it desires. The boot manager can also, at its own
discretion, provide for manual maintenance operations as well. Examples include choosing the
order of any or all load options, activating or deactivating load options, etc.
The boot manager is required to process the Driver load option entries before the Boot load option
entries. The boot manager is also required to initiate a boot of the boot option specified by the
BootNext
variable as the first boot option on the next boot, and only on the next boot. The boot
manager removes the
BootNext
variable before transferring control to the
BootNext
boot
option. If the boot from the
BootNext
boot option fails the boot sequence continues utilizing the
BootOrder variable. If the boot from the
BootNext
boot option succeeds by returning
EFI_SUCCESS
the boot manager will not continue to boot utilizing the
BootOrder
variable.
The boot manager must call
for resolving load options. If
succeeds, the boot
manager must enable the watchdog timer for 5 minutes by using the
. If a boot option returns control to the boot manager,
the boot manager must disable the watchdog timer with an additional call to the
SetWatchdogTimer()
boot service.