The layout of the Multiboot header must be as follows:
| Offset | Type | Field Name | Note
|
| 0 | u32 | magic | required
|
| 4 | u32 | flags | required
|
| 8 | u32 | checksum | required
|
| 12 | u32 | header_addr | if flags[16] is set
|
| 16 | u32 | load_addr | if flags[16] is set
|
| 20 | u32 | load_end_addr | if flags[16] is set
|
| 24 | u32 | bss_end_addr | if flags[16] is set
|
| 28 | u32 | entry_addr | if flags[16] is set
|
| 32 | u32 | mode_type | if flags[2] is set
|
| 36 | u32 | width | if flags[2] is set
|
| 40 | u32 | height | if flags[2] is set
|
| 44 | u32 | depth | if flags[2] is set
|
The fields ‘magic’, ‘flags’ and ‘checksum’ are defined in Header magic fields, the fields ‘header_addr’, ‘load_addr’, ‘load_end_addr’, ‘bss_end_addr’ and ‘entry_addr’ are defined in Header address fields, and the fields ‘mode_type’, ‘width’, ‘height’ and ‘depth’ are defined in Header graphics fields.