Partitions in GBL

This document describes how GBL defines and handles partitions on mass storage devices.

Definition of Partition

In GBL, all EFI devices that implement either the EFI_BLOCK_IO_PROTOCOL or EFI_BLOCK_IO2_PROTOCOL protocols are considered storage devices that may contain necessary data for GBL to access. For each of this device, GBL supports two schemes of partition:

  1. Entire raw storage as a partition.

    This scheme treats the entire storage device as a single partition. For storage devices intended to be used according to this scheme, the device need to provide an instance of device path that ends with the GBL “Vendor-Defined Media Device Path” defined as follows.

    MnemonicBytes OffsetBytes LengthDescription
    Type01Type 4-Media Device Path.
    Sub-Type11Sub-Type 3 - Vendor.
    Length22Length of this structure in bytes. Length is 92 bytes.
    Vendor GUID416The GBL_VENDOR_MEDIA_DEVICE_PATH_GUID GUID defined below.
    Vendor Defined Data2072Null-terminated ASCII partition name.
    // {a09773e3-0xf027-0x4f33-adb3-bd8dcf4b3854}
    #define GBL_VENDOR_MEDIA_DEVICE_PATH_GUID           \
      {                                                  \
        0xa09773e3, 0xf027, 0x4f33, {                    \
          0xad, 0xb3, 0xbd, 0x8d, 0xcf, 0x4b, 0x38, 0x54 \
        }                                                \
      }
    

    The partition will be identified using the null-terminated ASCII name from the device path in the context of booting and fastboot.

  2. UEFI GUID Partition Table (GPT)

    For all other storage devices that doesn't have an instance of GBL vendor-defined media device path, GBL considers them to be using the GPT partition scheme defined in the UEFI spec. Each partition will be identified using its corresponding GPT partition name in the context of booting and fastboot.

Because partitions are identified by their names in fastboot. They cannot contain character ":".