Understanding UEFI Variable Names and Vendor GUIDs

UEFI variables provide a persistent mechanism for firmware, bootloaders, and operating systems to store configuration parameters and system state across reboots. This article examines the exact structure of a UEFI variable name, detailing how human-readable strings pair with vendor Globally Unique Identifiers (GUIDs) to establish unique namespaces and prevent variable collisions across different hardware and software implementations.

The Structure of a UEFI Variable Name

In the Unified Extensible Firmware Interface (UEFI) specification, a variable is not identified by a simple text string alone. Instead, a UEFI variable's identity is defined by a two-part composite key:

  1. A Unicode Name String: A null-terminated string composed of 16-bit characters (UCS-2 or UTF-16). This string serves as the human-readable identifier for the variable, such as BootOrder, BootCurrent, or SecureBoot. Variable names are case-sensitive within the firmware environment.
  2. A Vendor GUID: A 128-bit identifier that namespaces the variable name.

Because identity relies on both the string and the GUID simultaneously, two variables can share the exact same string (such as Timeout) and coexist in NVRAM without conflict, provided they are associated with different Vendor GUIDs.

In addition to its name and GUID, every UEFI variable possesses an attribute bitmask (such as EFI_VARIABLE_NON_VOLATILE, EFI_VARIABLE_BOOTSERVICE_ACCESS, and EFI_VARIABLE_RUNTIME_ACCESS). These attributes determine persistence and access levels during the boot sequence and runtime, but the unique key used to query or write a variable via runtime services like GetVariable() and SetVariable() is strictly the combination of VariableName and VendorGuid.

What is a Vendor GUID?

A Vendor GUID is a standard 128-bit Globally Unique Identifier (equivalent to a UUID) formatted in the standard 8-4-4-4-12 hexadecimal representation (for example, 8BE4DF61-93CA-11D2-AA0D-00E098032B8C).

The primary purpose of the Vendor GUID is namespacing. The UEFI ecosystem involves numerous independent entities, including the UEFI Forum, motherboard manufacturers, silicon vendors, independent BIOS vendors (IBVs), and operating system developers. The Vendor GUID ensures that each entity can create, update, and manage firmware variables without risking collisions with variables created by other parties.

Common Vendor GUID Implementations

  • The UEFI Global Variable GUID: Standard variables defined by the UEFI specification use the global namespace GUID EFI_GLOBAL_VARIABLE (8BE4DF61-93CA-11D2-AA0D-00E098032B8C). This namespace contains architectural variables critical for booting, such as BootOrder, BootNext, PlatformLang, and ConOut.
  • Hardware and OEM GUIDs: Manufacturers like Dell, HP, Lenovo, and Intel assign proprietary GUIDs to store platform-specific hardware configurations, thermal policies, or custom BIOS setup options.
  • Operating System GUIDs: Operating systems allocate their own GUIDs to manage OS-specific boot parameters and telemetry. For instance, Microsoft uses dedicated GUIDs to manage Windows Boot Manager configurations, BitLocker authentication states, and Secure Boot certificate databases (db, dbx, KEK, and PK).