Node: Header magic fields, Next: Header address fields, Previous: Header layout, Up: OS image format
magic
magic
is the magic number identifying the header,
which must be the hexadecimal value 0x1BADB002
.
flags
flags
specifies features that the OS image requests or
requires of an boot loader. Bits 0-15 indicate requirements; if the
boot loader sees any of these bits set but doesn't understand the flag
or can't fulfill the requirements it indicates for some reason, it must
notify the user and fail to load the OS image. Bits 16-31 indicate
optional features; if any bits in this range are set but the boot loader
doesn't understand them, it may simply ignore them and proceed as
usual. Naturally, all as-yet-undefined bits in the flags
word
must be set to zero in OS images. This way, the flags
fields
serves for version control as well as simple feature selection.
If bit 0 in the flags
word is set, then all boot modules loaded
along with the operating system must be aligned on page (4KB)
boundaries. Some operating systems expect to be able to map the pages
containing boot modules directly into a paged address space during
startup, and thus need the boot modules to be page-aligned.
If bit 1 in the flags
word is set, then information on available
memory via at least the mem_*
fields of the Multiboot information
structure (see Boot information format) must be included. If the
boot loader is capable of passing a memory map (the mmap_*
fields)
and one exists, then it may be included as well.
If bit 2 in the flags
word is set, information about the video
mode table (see Boot information format) must be available to the
kernel.
If bit 16 in the flags
word is set, then the fields at offsets
8-24 in the Multiboot header are valid, and the boot loader should use
them instead of the fields in the actual executable header to calculate
where to load the OS image. This information does not need to be
provided if the kernel image is in ELF format, but it must
be provided if the images is in a.out format or in some other
format. Compliant boot loaders must be able to load images that either
are in ELF format or contain the load address information embedded
in the Multiboot header; they may also directly support other executable
formats, such as particular a.out variants, but are not required to.
checksum
checksum
is a 32-bit unsigned value which, when added
to the other magic fields (i.e. magic
and flags
), must
have a 32-bit unsigned sum of zero.