Files
2025-02-25 01:14:52 +00:00

2.9 KiB

BIOS Boot Process and Disk Layout

Disk Layout

Sector 0 (MBR):
+-----------------------------------+ 0x000
|                                   |
|        Bootstrap Code             |
|        (Stage 1 Bootloader)       |
|                                   |
|                                   |
+-----------------------------------+ 0x1BE (446)
|     Partition Entry 1 (16 bytes)  |
+-----------------------------------+ 0x1CE (462)
|     Partition Entry 2 (16 bytes)  |
+-----------------------------------+ 0x1DE (478)
|     Partition Entry 3 (16 bytes)  |
+-----------------------------------+ 0x1EE (494)
|     Partition Entry 4 (16 bytes)  |
+-----------------------------------+ 0x1FE (510)
|     Boot Signature (0x55AA)       |
+-----------------------------------+ 0x200 (512)

Sectors 1-2047:
+-----------------------------------+ 0x200
|                                   |
|        Stage 2 Bootloader         |
|        (Up to 1023.5 KB)         |
|                                   |
+-----------------------------------+ 0x100000 (Sector 2048)

Sector 2048 onwards:
+-----------------------------------+ 0x100000
|                                   |
|        FAT32 Partition           |
|        (Rest of disk)            |
|                                   |
+-----------------------------------+

Partition Entry Format (16 bytes)

Offset  Size    Description
0x00    1       Boot flag (0x80 = bootable, 0x00 = non-bootable)
0x01    3       Starting CHS address
0x04    1       Partition type
0x05    3       Ending CHS address
0x08    4       Starting sector (LBA)
0x0C    4       Number of sectors

Boot Process

  1. BIOS Power-On

    • BIOS performs POST (Power-On Self Test)
    • Looks for bootable devices
  2. MBR Load

    • BIOS loads Sector 0 (MBR) into memory at 0x7C00
    • Verifies 0x55AA signature
    • Executes Stage 1 Bootloader
  3. Stage 1 Bootloader

    • Runs in 16-bit real mode
    • Limited to 446 bytes
    • Main task: Load Stage 2 Bootloader
    • Typically contains minimal disk I/O code
  4. Stage 2 Bootloader

    • Located in sectors 1-2047
    • Has more space for complex operations
    • Tasks:
      • Switch to 32-bit protected mode
      • Set up basic memory management
      • Parse FAT32 filesystem
      • Switch to long mode
      • Load and execute kernel
  5. Kernel Load

    • Stage 2 loads kernel from FAT32 partition
    • Sets up necessary environment
    • Transfers control to kernel

Memory Layout During Boot

0x00000000 - 0x000003FF: Interrupt Vector Table
0x00000400 - 0x000004FF: BIOS Data Area
0x00000500 - 0x00007BFF: Free Memory
0x00007C00 - 0x00007DFF: Stage 1 Bootloader (MBR)
0x00007E00 - 0x0007FFFF: Free Memory (Stage 2 can be loaded here)
0x00080000 - 0x0009FFFF: Extended BIOS Data Area
0x000A0000 - 0x000FFFFF: BIOS ROM, Video Memory, etc.
0x00100000 onwards:      Free Memory (Kernel typically loaded here)