Partition Tables
This article is about the partitioning scheme that MS-DOS uses to keep track
of it's partitions. This is the standard that all PC operation systems must
use to be allowed to share hard disk resources with other operating systems.
Send me any questions, comments, or corrections.
Chris Lattner
DOS keeps track of partitions with a "Master Partition Table" that it keeps
at offset 1BEh in the disk's boot sector. It contains four 16 byte
entries, one for each partition. Each entry is divided into ten fields that
contain all of the information necessary to describe a partition on the
hard drive, including:
- Whether this partition is the one that got booted from.
- The Head, Sector, and Cylinder where the partition starts.
- The Head, Sector, and Cylinder where the partition ends.
- The operating system that owns it.
- The number of sectors that are before this partition.
- The length of the partition in sectors.
See: Figure 1
Now the astute reader may say: "Wait a minute! On my machine I run DOS/Windows
and OS/2. I have 5 DOS partitions. How can this be!"
Microsoft's solution to this problem was to invent the "Extended DOS"
partition. If you go into FDISK, you will see that you have a "Primary" DOS
partition, and an "Extended" DOS partition (Plus whatever else you have).
You can also type in "UNFORMAT /PARTN /L" to get a list of all of your partitions.
This clearly shows the chain format used.
| Start | | End |
BI |
H | S | C |
SI |
H | S | C |
SB | NS |
0h | 1h | 2h | 3h | 4h | 5h | 6h | 7h |
8h | 9h | Ah | Bh | Ch | Dh | Eh | Fh |
This is repeated four times (one for each partition). Offsets are:
1BEh, 1CEh, 1DEh, and 1EEh. At offset 1FEh, AA55h signifies that the disk
is bootable. The BIOS reads it in and executes it. See my article on
Boot Sectors.
Key:
BI: Boot indication. 0 = Not booted from. 80h = Booted from.
H: Head. Starting/Ending head number for the partition.
S: Sector. Starting/Ending sector number for the partition. This field
also holds bits 8 and 9 of the cylinder in standard DOS format.
C: Cylinder. Lower 8 bits of the Starting/Ending cylinder number for
the partition.
SI: System Indicator:
00h = Unused
01h = DOS 12 bit FAT (0 - 16 megs)
02h = XENIX root file system
03h = XENIX /usr file system (obsolete)
04h = DOS 16 bit FAT (16 - 32 megs)
05h = Extended DOS partition
06h = DOS 16 bit FAT (32 megs and up)
07h = OS/2 High Performance File System
07h = Windows NT (NTFS)
07h = Advanced Unix
0Ah = OS/2 Boot Manager
- For more, consult Ralf Brown's Interrupt list: INT 19
SB (DWORD): Number of sectors before this partition.
NS (DWORD): Number of sectors in this partition.
Copyright © 1994-8 Chris Lattner
Last modified: Monday, 21-May-2001 13:25:25 CDT |