Последние несколько десятилетий включение любого устройства с х86-совместимым процессором происходило по одной и той же схеме: после включения устройства первым делом запускается BIOS. Эта программа проводит тестирование оборудования (процедура POST), производит его настройку и загружает операционную систему. Загрузка последней происходит таким образом: микропрограмма BIOS опрашивает подключенные устройства в определенном порядке, пытаясь найти на них загрузочный сектор MBR. Он находится в нулевом секторе, который зачастую имеет размер 512 байт. Когда такой сектор найден, BIOS запускает на выполнение загрузочный код в MBR, который уже загружает саму операционную систему на определенном разделе. Информация о разделах также хранится в MBR в виде 4 записей. Схема сравнительно простая, понятная и до недавнего времени всех устраивающая.
Проблемы начались сравнительно недавно. Самой основной из них является ограничение на размер раздела в 2 терабайта (2 в 32 степени * размер сектора - 512 байт обычно). Грубо говоря, больше двух терабайт в рамках обычной MBR использовать бы не получится.
Второй проблемой являлось ограничение MBR на количество первичных разделов. Данное ограничение можно обойти, создавая логические разделы, но не всегда такое решение уместно.
Еще одной проблемой MBR является низкая безопасность и надежность. Многие вирусы модифицируют код загрузочной записи, получая при этом возможность встраиваться в систему на очень глубоком уровне. К слову, модификация загрузчика MBR часто используется и для обхода активации Windows.
Для решения всех этих проблем была разработана таблица разделов GUID (она же GUID Partition Table или GPT). Рассмотрим GPT более подробно.
Самым основным нововведением является увеличение максимального количества разделов до 128, увеличение максимального размера раздела до 18 экзабайт (18 000 000 терабайт), изначальная поддержка адресации LBA (линейная адресация, где каждый блок имеет свой номер. В MBR использовалась адресация CHS, где нужная информация находилась по адресу из комбинации номеров цилиндра, головки и сектора), а также дублирование таблицы разделов в конце диска. Последнее обстоятельство сильно увеличило надежность накопителя, так как если вдруг случится сбой секторов с таблицей разделов в начале диска, то будет использована ее копия в конце. Определения корректности таблицы проводится через сравнение контрольных сумм.
Еще одним нововведением GPT является отказ от кода предварительной загрузки системы, который был в начале MBR. Загружать систему теперь должна микропрограмма (UEFI) на самом устройстве. Это с одной стороны сильно повысило защищенность системы (и усложнило запуск сторонних ОС, обход активации Windows и т.д.), а с другой сделало таблицу GPT несовместимой с большей частью существующих BIOS. Иными словами, система с обычной BIOS не сможет загрузиться с диска с таблицей GPT.