Files
blog_os/_posts/2015-07-22-rust-os-boot.md
Philipp Oppermann 72f8e122fa add draft for testing
2015-07-23 15:50:34 +02:00

28 lines
926 B
Markdown

---
layout: post
title: "[DRAFT] Rust OS Part 1: Booting"
related_posts:
---
Fortunately there is a bootloader standard: the [Multiboot
Specification][multiboot]. So our kernel just needs to indicate that it supports
Multiboot and every Multiboot-compliant bootloader can boot it. We will use the [GRUB 2] bootloader together with the [Multiboot 2] specification. So let's begin!
To indicate our Multiboot 2 support to the bootloader, our kernel must contain a *Multiboot Header*, which has the following format:
Field | Size in byte
------|-----
magic number | 4
Offset | Type | Field Name
-------|------|-----------
0 | u32 | magic
4 | u32 | architecture
8 | u32 | header_length
12 | u32 | checksum
16-XX | | tags
[multiboot]: https://en.wikipedia.org/wiki/Multiboot_Specification
[GRUB 2]: http://wiki.osdev.org/GRUB_2
[Multiboot 2]: http://nongnu.askapache.com/grub/phcoder/multiboot.pdf