Next: Example boot loader code, Previous: BIOS device mapping techniques, Up: Examples
In this distribution, the example Multiboot kernel kernel is included. The kernel just prints out the Multiboot information structure on the screen, so you can make use of the kernel to test a Multiboot-compliant boot loader and for reference to how to implement a Multiboot kernel. The source files can be found under the directory docs in the GRUB distribution.
The kernel kernel consists of only three files: boot.S,
kernel.c and multiboot.h. The assembly source
boot.S is written in GAS (see GNU assembler), and contains the Multiboot information structure to
comply with the specification. When a Multiboot-compliant boot loader
loads and execute it, it initialize the stack pointer and EFLAGS
,
and then call the function cmain
defined in kernel.c. If
cmain
returns to the callee, then it shows a message to inform
the user of the halt state and stops forever until you push the reset
key. The file kernel.c contains the function cmain
,
which checks if the magic number passed by the boot loader is valid and
so on, and some functions to print messages on the screen. The file
multiboot.h defines some macros, such as the magic number for the
Multiboot header, the Multiboot header structure and the Multiboot
information structure.