Multiboot Specification

Node: Example OS code, Next: Example boot loader code, Previous: BIOS device mapping techniques, Up: Examples

### Example OS code

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.