Multiboot Specification

Node: Header layout, Next: Header magic fields, Up: OS image format

### The layout of Multiboot header

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 defind in Header graphics fields.