The descriptions on this article in no way constitute the only possible design for implementing partitioning on hard disk drive in an IBM PC. However, it is the main partitioning scheme used on the IBM PC architecture, and the only one supported by Microsoft operating system products.
The said above does not mean that no deviations are possible from this scheme. There are several software products, that by modifying some parts of the boot sequence are able to extend this rather limited partitioning scheme. Before using any such products, however, the reader is strongly advised to study how exactly they operate and how they would interact with the operating systems being used.
For the forthcoming IA-64 architecture (64 bit extension of the x86 line) Intel has prepared a set of specifications known as Extensible Firmware Interface (or EFI). These include, among other things, a more advanced format for the partition table (called "GUID Partition Table", or GPT) than the one discussed in this article.
In IBM PCs, partitions have traditionally been supported using a structure called the Partition Table, which is written down in the end of the Master Boot Record (MBR). The table, which can contain up to 4 partition records (which are also called partition descriptors), specifies for each its beginning, end and size in different addressing modes, as well as a single number called the partition type, and a marker that tells whether a partition is active. Only one partition can normally be active at a time.
The active marker is used during boot: after the BIOS loads the MBR into memory and executes it, the DOS MBR checks the partition table at its end, and locates the active partition. Then it proceeds to load the boot sector of that partition into memory and runs it. Unlike the MBR, which is generally operating-system independent, the boot sector is installed together with the operating system and that way it can know how exactly to load the particular system.
Note that while the presence of an active marker is standardized, it is not normally used by any program but the boot loader, and so the boot loader is not obliged to load the partition that was marked active. Some boot loaders use this to boot operating systems from non-active partitions. For example, the boot loaders LILO, GRUB and XOSL do not look up the partition table altogether, but simply load a second stage (which might be contained in the rest of cylinder 0 or in a filesystem). After the second stage is loaded, it can be used either to load the boot sector from any of the disk's partitions (thus enabling the user to load the system from it), or if the boot loader knows how, to locate the operating system's kernel on one of the partitions and load it (for recovery purposes, it may allow the user to specify additional kernel options).
Extended and logical partitions
DOS of all versions could read only one primary FAT partition on the hard drive. This, and FAT's deteriorating disk utilization and performance as disk sizes grew made Microsoft devise an improved scheme of disk partitioning.
The scheme was relatively simple: one of the main partition table entries was called an extended partition, and given a special partition type number (0x05). Only the Partition Start field inside of it was used, for storing the location of the first extended partition descriptor; that in turn had a similar field storing the location of the next one, in effect creating a linked list of partition descriptors. The other fields of an extended partition are undefined, and since this means no space is allocated to the partition itself, it cannot be used for data storage.
The partitions in the linked list beginning with an extended partition are called the logical partitions. They are allocated space, and hence can be used to store data. Older operating systems, which were not aware of extended partitions, simply ignored partitions with type number 0x05, and thus compatibility was preserved.
This scheme could theoretically replace the old one, as all partitions of a hard drive could be put inside a single extended partition; however for some reason Microsoft did not update their DOS operating system (or indeed any other up until this day) so that it would boot from an extended partition, and because of that the need for primary partitions was preserved. Moreover, they would still only allow one primary FAT partition per drive, meaning all other primary FAT partitions should have their partition type numbers changed prior to DOS's boot, so that it would be able to proceed. This technique, used by several popular boot managers, became known as partition hiding.