Серверная (www.it-simple.ru)

Структура GPT


GUID Partition Table, аббр. GPT — стандарт формата размещения таблиц разделов на физическом жестком диске. Он является частью Расширяемого микропрограммного интерфейса (англ. Extensible Firmware Interface, EFI) — стандарта, предложенного Intel на смену BIOS. EFI использует GPT там, где BIOS использует Главную загрузочную запись (англ. Master Boot Record, MBR).

Таблица разделов GUID (https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_GUID)

В GPT нет собственной программы-загрузчика, вместо этого он работает в паре с EFI.

Внутри GPT используется адресация логических блоков LBA, которая абстрагирована от физики устройства (в отличие от CHS — «Цилиндр-Головка-Сектор»).
Каждый логический блок занимает 512 байт. LBA 0 — первые 512 байт диска, LBA 1 — следующие, и так далее.

Отрицательные значения LBA означают смещение в блоках с конца диска. Последний блок имеет смещение «-1» (LBA -1).

Структура

Здесь красивый рисунок в формате svg, но ты его не увидишь — браузер не позволяет.
НазваниеАдресОписание
Наследственный MBRLBA 0Первые 512 байт диска отведены под "фейковый MBR". В нём из записей есть только индентификатор диска, стандартная сигнатура 0x55AA в конце и единственный фейковый раздел типа 0xEE (указание, что используется GPT), внутри которого находится настоящая разметка диска и все пользовательские данные. Остальное забито нулями, кода загрузчика нет.
Наследственный MBR служит для предотвращения потери данных из-за программ, которые не понимают GPT.
Основная таблица разделов GPTLBA 1Оглавление таблицы разделов. Содержит GUID диска, адреса основной и резервной таблиц и данные о размере и количестве записей о разделах (стандартно — 128 штук). И контрольную сумму, которую проверяет EFI. "Благодаря" этой контрольной сумме ручное редактирование разделов GPT невозможно.
LBA 2
...
LBA 33
Записи данных о разделах. Каждая запись занимает 128 байт, то есть в один LBA вмещается 4 записи.
Первые 16 байт записи — GUID типа раздела, следующие 16 байт — его UUID, уникальный идентификатор, остальное место занимает информация о его границах и атрибутах.
ДанныеLBA 34
...
LBA *
Собственно, содержимое разделов.
Резервная таблица разделов GPTLBA -33
...
LBA -2
Полная копия описания разделов
LBA -1Полная копия оглавления.

Оглавление таблицы разделов

ОбозначениеСмещение16РазмерОписание
Signature008Сигнатура заголовка GPT (строка символов «EFI PART», 5452415020494645h)
Revision084Версия формата заголовка; к номеру версии спецификации UEFI она отношения не имеет. Сейчас используется первая версия заголовка, которой соответствует значение 00010000h
HeaderSize0C4Размер заголовка GPT в байтах. Он должен превосходить 92 и не должен превышать размер сектора
HeaderCRC32104Контрольная сумма заголовка GPT размером HeaderSize байтов. При подсчёте контрольной суммы начальное значение этого поля принимается равным нулю
Reserved144Зарезервированное поле; должно содержать нуль
MyLBA188LBA этой копии заголовка
AlternateLBA208LBA другой копии заголовка
FirstUsableLBA288LBA первого блока, с которого могут начинаться разделы этого диска
LastUsableLBA308LBA последнего блока, после которого на диске не может быть разделов
DiskGUID3816Уникальный идентификатор (GUID) этого диска
PartitionEntryLBA488LBA начала массива разделов диска
NumberOfPartitionEntries504Количество записей в массиве разделов диска
SizeOfPartitionEntry544Размер каждой записи массива разделов; должен быть кратен 8
PartitionEntryArrayCRC32584Контрольная сумма масива разделов. Подсчёт суммы начинается с начала блока, адрес которого указан полем PartitionEntryLBA, и охватывает NumberOfPartitionEntries * SizeOfPartitionEntry байт, то есть весь массив разделов
ReservedРезервная область заголовка, должна содержать нули

Запись о разделе

ОбозначениеСмещение16РазмерОписание
PartitionTypeGUID016GUID типа данного раздела. Определяет файловую систему, используемую для хранения данных в этом разделе
UniquePartitionGUID 1016GUID раздела. Является уникальным идентификатором раздела и создаётся каждый раз, когда создаётся раздел
StartingLBA208LBA первого блока данного раздела на диске
EndingLBA288LBA последнего блока данного раздела на диске
Attributes308Атрибуты раздела
PartitionName3872Строка в кодировке Unicode, содержащая имя данного раздела
Reserved80Неиспользуемая часть записи массива разделов

Атрибуты разделов

БитОписание
0Признак необходимости раздела для функционирования машины. Установкой этого бита владелец/создатель раздела указывает, что без него компьютер может оказаться неработоспособным. В частности, ОС может отказаться загружаться или даже устанавливаться, если этого раздела нет. Удалять или модифицировать такой раздел может только программное обеспечение, точно знающее его назначение и функции, все остальные программы, встретив такой раздел в GPT, не должны каким-либо образом менять его
1Когда этот бит установлен, BIOS не должна создавать для этого раздела устройство EFI_BLOCK_IO_PROTOCOL. Подробно это описано в спецификации UEFI
2–47Зарезервировано для нужд UEFI; должны быть равны нулю
48–63 Используются для нужд разработчиков файловых систем. При изменении значений разрядов 0–47 значения этих разрядов должны сохраняться, они изменяются только программным обеспечением соответствующей файловой системы

Итого

EFI — шаткое поделие, расслабляющее как производителей железа, так и соответствующих программистов.
UEFI — ублюдочное детище микрософта, попытка намертво приколотить виндавс к железу (см. SecureBoot). Подаётся под соусом «это ж в целях борьбы с вирусами!»
А GPT — неотъемлимая часть всего этого добра, которое активно внедряется в массы.

«Это прогресс, детка» ©