The contents of the diskimage configuration file must conform to the following grammar, which is defined using a BNF-like notation.
# Configuration file config_file : disk_cfg* partn_def* # Disk configuration disk_cfg : '[' disk_attr+ ']' # Disk attributes disk_attr : 'cylinders' '=' uint | 'heads' '=' uint | 'sectors_per_track' '=' uint | 'sector_size' '=' uint | 'num_sectors' '=' uint | 'align' '=' uint | 'start_at_cylinder' '=' uint # Partition definition partn_def : primary_partn_def | extended_partn_def | logical_partn_def # Primary partition definition primary_partn_def : '[' 'partition' '=' partn_idx ppartn_attr* ']' [partn_file] # Extended partition definition extended_partn_def : '[' 'extended' '=' partn_idx epartn_attr* ']' # Logical partition definition logical_partn_def : '[' 'logical' lpartn_attr* ']' [partn_file] # Partition index partn_idx : uint # The primary partition attributes ppartn_attr : boot_attr | type_attr | type_guid_attr | nsec_attr | name_attr | required_attr | noblock_attr # The extended partition attributes epartn_attr : nsec_attr # The logical partition attributes lpartn_attr : boot_attr | type_attr | nsec_attr | esec_attr # The boot attribute boot_attr : 'boot' '=' bool # The type attribute type_attr : 'type' '=' uint # The type_guid attribute type_guid_attr : 'type_guid' '=' type_guid_name | 'type_guid' '=' type_guid_guid # The num_sectors attribute nsec_attr : 'num_sectors' '=' uint # The ebr_sectors attribute esec_attr : 'ebr_sectors' '=' uint # The name attribute name_attr : 'name' '=' gpt_partn_name # The 'required' attribute required_attr : 'required' '=' bool # The noblock attribute noblock_attr : 'noblock' '=' bool # Partition file partn_file : string # GUID name type_guid_name : string # GUID type_guid_guid : guid # The boolean definition bool : 'true' | 'false' # Unsigned integer uint : '0' odigit* sfx? | '0x' xdigit+ sfx? | [1-9] ddigit* sfx? # Octal digits odigit : [0-7] # Decimal digits ddigit : [0-9] # Hexadecimal digits xdigit : [0-9a-fA-F] # Factors that can be used with integers sfx : [kKmMgGtTpP] # String values must be enclosed within double quotes ("") string : '"' [^"]* '"' # A GUID guid : '{' xdigit{8} '-' xdigit{4} '-' xdigit{4} '-' xdigit{4} '-' xdigit{12} '}'