2.9 KiB
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
-
BIOS Power-On
- BIOS performs POST (Power-On Self Test)
- Looks for bootable devices
-
MBR Load
- BIOS loads Sector 0 (MBR) into memory at 0x7C00
- Verifies 0x55AA signature
- Executes Stage 1 Bootloader
-
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
-
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
-
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)