Files
ClassicOS/bootloader/README.md
vmttmv 4fa82854dd BL: Query and store e820 memory map
- bl stage 1: move gdt+pm setup to stage 2 (avoids mode switching)
- bl stage 2: at entry query e820 table from bios, then setup gdt+pm
- kernel/memmap: pad map entry to 24 bytes, as exported by bl
- kernel/memmap: map copy (gbowne1)
- Makefile: facilitate placing the memory map at a known location
- Update bl docs
2026-01-28 18:08:31 +02:00

743 B

ClassicOS 2-stage bootloader

Bootloader documentation for ClassicOS

Disk image organization:

[  512 B  ] [      2048 B      ] [    Unspecified    ]
  Stage 1         Stage 2               Kernel

Stage 1 (stage1.asm)

  • Queries CHS parameters from BIOS
  • Loads the second stage bootloader (2048 B) to 0x7c00
  • Enables A20
  • Jumps to stage2

Stage 2 (stage2.asm, stage2_load.c)

  • Read and store E820 memory map from BIOS
  • Sets up a GDT with descriptor entries for code and data both covering the whole 32-bit address space
  • Set CR0.PE (enable protected mode)
  • Set up segment registers
  • Load the kernel ELF header
  • Parse the program headers, and load all PT_LOAD segments from disk
  • Jump to the kernel entry