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.

##

Figure 1

| 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