Apple has an innovate approach to using the EFI variables to set the boot device. It has its own set which the OS-X gui uses, but which the firmware ignores.
A GUID of "Apple" connotes a GUID of 7c436110-ab2a-4bbb-a8-80-fe-41-99-5c-9f-82.
| Variable name | GUID | Description |
|---|---|---|
| efi-boot-device | Apple | Contains vile xml which describes to OS-X what the boot device has been set by, appears to be completely ignored by the firmware |
| efi-boot-device-data | Apple | Comntains a (possibly compressed) EFI_DEVICE_PATH, which points to the combination of boot device and file, appears to be ignored by the firmware |
| Boot%04X | EFI_GLOBAL_VARIABLE | Contains an EFI_LOAD_OPTION, for each possible boot device, bless sets only one (Boot0800). GNU-EFI doesn't seem to define EFI_LOAD_OPTION see below for a definition. The firmware looks at these variables. |
| BootOrder | EFI_GLOBAL_VARIABLE | An array of unsigned 16 bit integers, this sets the order in which the boot devices are tried. bless sets this to be the single number 0x0080, which means try the boot device specified in the variable Boot0080 only. The firmware uses this variable. |
| BootCurrent | EFI_GLOBAL_VARIABLE | An unsigned 16 bit integer. I beleive the firmware sets this to the value of the Boot%04X it sucessfully booted from. |
| Timeout | EFI_GLOBAL_VARIABLE | An unsigned 16 bit integer. The number of seconds to wait before trying to boot. The fireware looks at this variable. |
| UINT32 | attributes | can be set to 0, or LOAD_OPTION_ACTIVE |
| UINT16 | path_list_length | the size in bytes of "path", use DevicePathSize to determine this. |
| CHAR16 | description[] | A null terminated description of this boot option |
| EFI_DEVICE_PATH | path | A device and path from which to boot |