Learning about the miracle of boot
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
pantonshire 1974163db6 use hlt for padding of stage 2 data section 12 months ago
.cargo cargo xtask alias 12 months ago
boot1 print to vga on panic 1 year ago
buildtools library-ify nasm helper 1 year ago
docs more refactoring 12 months ago
elf fix hexdump alignment for non-multiple-of-16 size 2 years ago
include update layout macros 12 months ago
memregion_merge memory region merge algorithm 1 year ago
patches
seabios@e5f2e4c696
stage_1 more refactoring 12 months ago
stage_2 use hlt for padding of stage 2 data section 12 months ago
stage_3 more refactoring 12 months ago
xtask more refactoring 12 months ago
.gitignore more refactoring 12 months ago
.gitmodules
Cargo.toml workspace for build tools 12 months ago
justfile more refactoring 12 months ago
readme.md enable a20 2 years ago
resources.md update resouces 12 months ago
rust-toolchain.toml default to nightly compiler 12 months ago

readme.md

Overview

Currently we boot from BIOS on a GPT-partitioned disk.

boot0.s is the first-stage bootloader. It lives in the MBR bootstrap field, and must therefore fit into 440 bytes. Its tasks are:

  • Set up a stack etc.
  • Get the boot drive geometry
  • Load and parse the GPT
  • Find the partition of the second stage
  • Load and jump to the first sector of the second stage

boot1.s is the second-stage bootloader. Its tasks are:

  • Load its own sectors not loaded by the first stage
  • Enable A20
  • Detect available memory
  • Enter unreal mode
  • Read the kernel ELF from disk (don't have to parse the ELF just yet)
  • Get all the useful information we can from the BIOS before we leave unreal mode
  • Enter long mode (possibly via protected mode?)
  • Load the kernel ELF
  • Initialise stack etc. for the kernel
  • Jump to kernel