UEFI, BIOS, GPT and MBR

This page contains the following sections -


UEFI and BIOS

BIOS and UEFI are different firmware interfaces used to initialise computer hardware - running before the operating system itself is loaded/booted.

The Basic Input/Output System (BIOS) has been the standard firmware used in IBM Compatible PC's since the release of the first IBM PC in the 1980's. Whilst it has evolved over the years it has some limitations imposed by its original design - this appears to be leading to it being gradually replaced with UEFI.

An AT-compatible BIOS runs in 16-bit processor mode with only 1 MB of addressable RAM. The BIOS runs in real mode and passes control to the operating system. Windows and most other modern Operating Systems run in protected mode - allowing them to access more than 1 MB RAM. Modern Operating Systems therefore do not use BIOS services after the OS has loaded and it is only used in the early stages to initialise hardware, identify the boot device and load the Operating System.

There are a number of articles stating that BIOS systems cannot use/access more than 2 TiB of hard disk storage space - this is misleading and is not necessarily true. The hard disk partition table stores partition offset and size in sectors using Logical Block Addressing. The size and offset is limited to a 4 byte hexadecimal value - this means that the maximum number of sectors accessible on a MBR type hard disk is 0xFFFFFFFF (hexadecimal) or 4,294,967,296 (decimal). Assuming a sector size of 512 bytes this equals a maximum accessible size of 2 Tebibytes.

Hard disks are now available with a 4 KiB (4096 byte) sector size - 4,294,967,296 (maximum number of sectors) x 4096 bytes (sector size) = 17,592,186,044,416 bytes, or 16 Tebibytes. MBR disks can therefore theoretically be as large as 16 TiB. Unfortunately Windows operating systems cannot boot from a native 4 KiB sectored device - hence the misconception of the 2 TiB limit.

Some of the misconceptions about BIOS and UEFI limitations that are in actual fact Operating System or disk partition scheme limitations. Whilst Windows might limit the boot device to a maximum size of 2 TiB on MBR type disks, far larger secondary disks are supported for storage purposes.

The Unified Extensible Firmware Interface (UEFI) is a development of Intel's EFI specification. The GPT partitioning scheme is part of the (U)EFI specification and is supported in all UEFI based systems. Booting from MBR partitioned disks is not necessarily supported on UEFI systems, however some vendors have implemented legacy support for MBR disks.

UEFI is free from some of the AT-compatible BIOS limitations mentioned earlier. It can for example address far more than 1MB of RAM and runs in the full 32-bit or 64-bit processor mode (depending on Processor support). In theory a 64-bit UEFI system should be able to address 2^64 bytes of RAM (16 exabytes, or 16.8 million terabytes) - due to processor limitations this would not currently be possible even if the physical size of RAM did not make it completely impractical. In conjunction with GPT partitioned disks it can also boot operating systems from partitions larger than 2 TB.

The UEFI wiki (see here) currently lists the following advantages over a traditional BIOS system -

UEFI systems can understand file systems - FAT32 is supported (the specification also requires support for FAT12/16 on removable media). Vendors can include support for other file systems.

Whilst the available Windows documentation appears to be steering towards the use of GPT partitioned disks on UEFI systems, it is also possible to boot Windows from a MBR partitioned disk. It is however worth mentioning that it is may not be possible to install Windows to a MBR partitioned disk on a UEFI system - unless it has a BIOS mode available and running (see here).


GPT and MBR

Hard disks generally use one of two partitioning schemes, these being Master Boot Record (MBR) and GUID Partition Table (GPT). MBR partitioned disks were introduced in the 1980's and are supported on all BIOS based systems. BIOS based systems generally do not support booting from GPT partitioned disks, however due to the GPT specification requiring a protective MBR it is possible to install some third party boot loaders to the first sector of a GPT disk.

The Master Boot Record is always located in the very first sector of a hard disk - sector 0. This 512 byte sector contains executable code used to load operating systems, in addition to the partition table which contains all partition information (size, starting sector, filesystem ID, etc.). The partition table can only contain a maximum of four partition entries. It's possible to create up to four primary partitions or one extended partition with up to three primary partitions. The Extended Partition can be subdivided into logical volumes, however the partition information for these logical volumes is not actually contained in the MBR. Only one primary partition entry can be marked with a boot flag.

The size of individual partition entries in the partition table is limited to 16-bytes with 32-bit values describing the partition offset and size. This in turn limits the maximum usable storage space to 2 TiB on disks with a 512 byte sector size. Due to Windows code not being able to boot from sectors larger than 512 bytes, the boot device is also limited to 2 TiB. Whilst this may once have appeared to be more than adequate, modern technology has evolved to the point where disks with larger sector sizes and capacities above 2 TiB are available and affordable.

GPT partitioned disks are free from this limitation. In fact, according to the UEFI forum, a GPT disk uses 64-bit values to store partition information and can support partitions up to 9.4 zettabytes in size. Additionally GPT disks can also support far more partitions than MBR disks - in theory there is no limit on the number of partitions, however a number of Operating Systems including Windows limit the maximum number of partitions to 128.

The GPT specification requires the first sector of the disk (sector 0) to contain a protective Master Boot Record. On UEFI systems this is not actually used - it appears to have been implemented for legacy support and to prevent MBR based utilities from overwriting GPT disks - without the protective MBR the disk may appear not to be initialised, or not to be partitioned.

Because of the use of a protective MBR on GPT disks, it's possible to boot some operating systems from a GPT disk on a BIOS system. In order to do so the Protective MBR must be edited or a third party boot loader can be installed to it. If a third party boot loader is used then it must be GPT aware - e.g. Grub 2.


Windows Limitations

Windows limits the maximum number of partition entries on GPT partitioned disks to 128.

Due to current file system limitations the maximum partition size is limited to 256 TB.

32-bit Windows Vista and Windows 7 are not UEFI aware and cannot be booted on UEFI systems (in UEFI Mode).

32-bit versions of Windows 8/8.1 support UEFI, however they cannot be booted on a 64-bit system in UEFI mode as the Windows version must match the processor architecture. A 32-bit Windows operating system can only be booted on a system with a 32-bit processor when in UEFI mode and a 64-bit Windows operating system can only be booted on a system with a 64-bit processor. Note that 32-bit UEFI systems are something of a rarity.


Further Reading

Document date - 27th April 2017