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

28 lines
743 B
Markdown

# 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