GPT (Таблица разделов GUID, GUID Partition Table) - стандарт размещения таблиц разделов на физическом носителе информации. Принципиально отличается от своего предшественника (MBR) упрощенной структурой размещения функциональных блоков на физическом носителе, потому как размещение и структуризация происходит более логичным и очевидным способом. GPT не является самостоятельной разработкой, а проектировалась как часть расширяемого микропрограммного интерфейса (Unified Extensible Firmware Interface, UEFI), и вошла в состав последнего на поздних этапах разработки. UEFI в настоящее время начал активно внедряться и постепенно приходит на смену традиционному, классическому BIOS. Вспомните, что BIOS для загрузки ОС с носителя использует MBR, так вот, для более очевидной аналогии можно использовать следующее утверждение: там где BIOS использует MBR, UEFI использует GPT.
Несмотря на все очевидные преимущества GPT, основной причиной разработки стандарта явилась острая необходимость преодолеть ограничения, накладываемые традиционной таблицей разделов (размещается внутри MBR), которая не предоставляла возможности создавать разделы размером более 2-х терабайт и/или размещать их произвольным образом по смещению более 2-х терабайт от начала диска.
К преимуществам GPT относятся:
- Избыточность данных. Дублирование заголовка и таблиц разделов в начале и конце диска. Подобное нововведение позволило создать отказоустойчивость на уровне разделов, чего был лишен классический MBR. При повреждении одной из копий заголовка/таблиц разделов GPT, возможно восстановление из резервной копии.
- Достаточный лимит на размер раздела(ов) [при размере сектора 512 байт] - 9.4 зеттабайт (Зб) или 8 zebibyte (ZiB, ZB) или 264 блоков или 9,444,732,965,739,290,427,392 байт (9.4 x 1021). Что бы было проще осознать масштаб - это примерно 9 миллиардов терабайт. MBR имел параметр "смещение первого сектора" в записи о разделе разрядностью всего 4 байта (32 бита, LBA32), что позволяло адресовать лишь 4294967296 * 512 (размер сектора, байт) = ~2 терабайта. В GPT размерность параметров, описывающих смещения разделов, увеличилась до 64 бит (LBA64).
- Отсутствие ограничения разметки MBR в четыре основные раздела (партиции). GPT может иметь до 128 разделов на одном физическом диске, что вполне достаточно даже для самых требовательных конфигураций.
- Отсутствие такого труднопонимаемого многими архаизма, как "логические диски" в расширенном разделе, присутствующего в традиционной разметке MBR.
- Отсутствие необходимости писать цепочку загрузчиков вида MBR - PBR - Bootmgr и самому работать с железом посредством портов и прерываний реального режима, нет необходимости заботиться о переходе в защищенный режим и прочих нюансах. В EFI загрузчике все проще - структуры данных уже подготовлены, есть возможность использовать готовые функции UEFI для упрощенного "диалога" с оборудованием.
- 16-байтовый идентификатор (GUID) типа раздела. В классическом MBR тип раздела имел размерность всего один байт, что вводило ограничение на идентификацию множества ОС.
- Контрольная сумма в формате CRC32 заголовка и таблицы разделов GPT, что упрощает обнаружение ошибок по причине сбоев носителя информации.
- Введены поля номера версии (ревизии), размеров заголовка и записи раздела, что позволяет безболезненно модифицировать структуру GPT в будущих версиях.
Давайте сделаем небольшой экскурс в совсем недалекое прошлое и вспомним принцип работы классического (legacy) метода загрузки BIOS -> MBR. Код BIOS, который на финальных этапах работы инициализирует установленные в системе носители, считывает с носителя, имеющего статус "загрузочный", первый физический сектор (блок LBA0), копирует его по адресу 0000:7C00 и передает по этому адресу управление. Код MBR, в свою очередь, обязан произвести анализ таблицы разделов, выбрать загрузочный раздел, загрузить с него загрузочный сектор раздела (PBR) и передать управление уже ему. Становится очевидным, что данный способ, с точки зрения трудозатрат на программирование, имеет неудобную реализацию и требует упрощения. В отличие от устаревшего классического, традиционного (legacy) способа загрузки ОС, UEFI содержит более актуальные встроенные процедуры работы с загрузочным носителем. Этот функционал, именуемый UEFI Boot Manager, производит поиск на заданном носителе GPT специализированного раздела (EFI System Partition (ESP)) и в случае обнаружения находит на нем загрузочный .efi-модуль операционной системы (например, bootx64.efi), производит загрузку найденного файла и передача ему управления. С некоторым количеством оговорок можно утверждать, что новая схема загрузки с использованием UEFI+GPT имеет более интуитивную логику и большую гибкость по сравнению с классическим методом BIOS+MBR. Фактически, работа по написанию загрузчика операционной системы стала менее трудоемкой, при том, что код загрузчика стал более универсальным.
Теперь мы можем приступить к более детальному рассмотрению структуры диска при использовании стандарта GPT и для начала я приведу наглядное графическое представление структуры GPT диска, в котором описаны все основные блоки стандарта:
* где X - общее количество разделов на носителе. N - общее количество секторов на носителе.
Логика работы GPT
- Если по какой-либо причине оказываются поврежденными первичные GPT записи (заголовок+таблица разделов), то ПО поддержки (драйвер) должно проверить последний блок LBA носителя на предмет наличия дублирующего рабочего набора GPT записей. Они содержатся в конце диска. Последний блок должен содержать рабочий GPT заголовок, который указывает на исправную таблицу GPT разделов. Если это так и дублирующий набор не поврежден, то ПО должно восстановить первые заголовок и таблицу разделов GPT из дублирующего набора.
- По спецификации ПО должно запросить подтверждение пользователя на восстановление основного GPT заголовка.
- Встречается проблема, когда GPT диск, по ошибке или умышленно, отформатирован в стандартную разметку MBR каким-либо старым ПО (типа format.com от DOS :). В таких случаях сохраняется нетронутым ("выживает") последний логический блок диска, который содержит актуальный рабочий GPT заголовок. Такие сценарии должны обнаруживаться ПО, работающим с GPT, по тому факту, что оно обнаруживает стандартный MBR, который содержит полноценную таблицу разделов (с несколькими разделами разного размера), а не "защитный MBR" с одним разделом, охватывающим весь диск.
- Любое ПО, которое обновляет первичные GPT записи (заголовок+таблицу разделов), должно обновлять вторичные GPT в первую очередь.
- ПО может обновлять заголовок GPT и таблицу разделов GPT в любом порядке, с того момента, как все контрольные суммы будут помещены в соответствующие поля заголовка GPT.
- Если размер диска изменился, то ПО должно обновлять сначала вторичные GPT (заголовок+таблицу разделов), а затем уже первичные. Делается это с тем расчетом, что если обновления прервались по какой-либо причине, вторичные GPT всегда содержат правильную информацию.
- Если первичный заголовок GPT поврежден, вместо него используется вторичный заголовок, который размещается в последнем логическом блоке диска.
- Если вторичный GPT корректен, он должен быть использован для восстановления первичного GPT.
- Если первичный GPT корректен, а вторичный GPT неисправен, то ПО должно попытаться восстановить вторичный GPT.
- Если оба GPT некорректны, то диск помечается как не содержащий рабочей (корректной) таблицы разделов GPT.
- Оба, первичные и вторичные GPT должны быть валидны и синхронизированы перед операцией увеличения раздела (например, при добавлении в RAID-массив). Как только произведена операция увеличения раздела, вторичный GPT должен быть перенесен в конец раздела согласно правилам размещения, и первичные и вторичные GPT заголовки должны быть обновлены для отражения нового актуального размера раздела.
- ПО, которое делает копии GPT дисков либо разделов, должно генерировать новое (уникальное) значение поля DiskGUID в заголовке GPT и новое (уникальное) значение поля UniquePartitionGUID в таблице разделов GPT. В случае, когда ПО обнаруживает два диска либо раздела с идентичными GUID, результат не в спецификации не определен и отдается на откуп автору ПО.
Защитный (Protective) MBR
Первый физический сектор диска (LBA0) может, по-прежнему, содержать хорошо знакомый нам сектор MBR. В спецификации GPT он именуется как Protective MBR.
Protective MBR - это типовой сектор MBR выбранной ОС. Соответственно, под Windows 7 он полностью повторяет стандартный MBR Windows 7, который используется при традиционной разметке, за исключением следующих отличий:
- Значение поля
NT Disk Signature
равно 00000000; - Вне зависимости от реальной разметки диска, в таблице разделов MBR указано наличие всего одного раздела, "охватывающего" весь диск. В официальной документации он называется GPT Protective partiton. Очевидно, что таблица разделов, размещенная в защитном MBR, имеет всего одну запись, описывающую раздел, имеющий размер, равный размеру физического носителя. Поле начала раздела равно LBA1 и поле конца раздела равно LBA(N), где N-последний блок (сектор) диска. Если же объем диска больше предельного значения, то поле конца выставляется в значение 0FFFFFFFFh;
- Тип (поле
Partition Type
) этого раздела имеет значение 0EEh, которое указывает на использование GPT, наличие единственного псевдо-раздела, покрывающего весь диск;
Название "Protective MBR" говорит само за себя и глядя на него становится очевидным, что "защитным" он называется неспроста и основное его предназначение - обеспечение "защиты" структуры диска. Защита обеспечивает совместимость с устаревшим ПО (например, старые версии утилит работы с диском (fdisk)), которое просто-напросто и не в курсе, что такое GPT, и умеет работать исключительно с MBR-разметкой. Очевидным, что подобная логика работы, при отсутствии знакомых старым программам структур способна повредить GPT-диск, а наличие защитного MBR способно значительно упростить ситуацию. Старые 32-битные ОС могут распознавать раздел и присваивать ему статус недоступного GPT диска. Совсем уж старые реализации операционных систем обычно определяют диск как содержащий единственный раздел неизвестного типа, не имеющего свободного места; как правило, они отказываются модифицировать такой диск, пока пользователь явно не потребует и не подтвердит удаление неопознанного раздела. Таким образом вероятность случайного затирания содержимого GPT диска резко уменьшается.
Заголовок (оглавление) GPT
Заголовок GPT содержится в блоке (секторе) LBA1, втором логическом блоке носителя. Имеет свою копию в конце диска.
Давайте разберем, какие же поля присутствуют в заголовке GPT:
Обозначение | Смещение | Размер | Описание |
---|---|---|---|
Signature |
00h | 8 | Сигнатура. Идентифицирует UEFI-совместимый заголовок GPT (ASCII строка EFI PART, 5452415020494645h) |
Revision |
08h | 4 | Ревизия. Версия формата заголовка. Не относится к номеру версии спецификации UEFI. В настоящий момент используется версия заголовка 1.0 (00010000) |
HeaderSize |
0Ch | 4 | Размер GPT заголовка (в байтах). Спецификация UEFI регламентирует то, что он должен быть больше или равен 92 (5Ch) и не должен превышать размер блока (сектора). |
HeaderCRC32 |
10h | 4 | Контрольная сумма CRC32 заголовка GPT. Должен быть обновлен каждый раз когда обновляется поле PartitionEntryArrayCRC32. |
Reserved |
14h | 4 | Зарезервировано. Должно быть заполнено нулями (00000000) |
MyLBA |
18h | 8 | Номер блока LBA первой (этой) копии GPT заголовка. Обычно имеет значение = 0000000000000001. |
AlternateLBA |
20h | 8 | Номер блока LBA резервной (второй) копии GPT заголовка. Очевидно, что указывает на последний блок носителя? |
FirstUsableLBA |
28h | 8 | Первый блок в формате LBA, с которого начинаются данные разделов. Обычно вычисляется как 1 + последний блок LBA таблицы разделов GPT. Если блок имеет размер 512 байт, то чаще всего указывает на блок LBA34 (0000000000000022). Если блок имеет размер 4096 байт, то значение должно быть больше 6 (1 блок под защитный MBR, 1 блок под заголовок GPT, 4 блока для таблицы разделов GPT). |
LastUsableLBA |
30h | 8 | Последний блок в формате LBA, который может быть использован под данные разделов. Обычно вычисляется как первый блок LBA резервной таблицы разделов GPT - 1. Все данные на носителе должны располагаться в блоках, находящихся между FirstUsableLBA и LastUsableLBA. |
DiskGUID |
38h | 16 | Уникальный идентификатор (Globally Unique IDentifier) диска. |
PartitionEntryLBA |
48h | 8 | Номер блока LBA начала таблицы разделов GPT. Обычно блок LBA2. |
NumberOfPartitionEntries |
50h | 4 | Количество записей в таблице разделов GPT. Максимальное значение = 128. |
SizeOfPartitionEntry |
54h | 4 | Размер (в байтах) каждой записи таблицы разделов GPT. Обычно имеет размер = 128. должен быть кратен 128 (д.с., 128, 256, 512, и т.д.). |
PartitionEntryArrayCRC32 |
58h | 4 | Контрольная сумма таблицы разделов GPT. Подсчёт суммы начинается с начала блока, адрес которого указан полем PartitionEntryLBA, и охватывает NumberOfPartitionEntries * SizeOfPartitionEntry байт, то есть всю таблицу разделов GPT. |
Reserved |
5Сh | Размер сектора - 92 (5Сh) | Резервировано. Область в конце заголовка GPT, которая не используется. "Выровнена" по концу физического сектора, то есть простирается до его конца. Должна быть заполнена нулями. |
Таблица разделов GPT
В 64-битных ОС Windows, таблица разделов, обычно, начинается с блока LBA2 и имеет размер 16384 байта. По спецификации, после "заголовка GPT" должно быть зарезервировано минимум 16384 байта под таблицу разделов GPT. При стандартном размере сектора в 512 байт, это будет 32 сектора.
Фактически, представляет из себя подобие массива идущих друг за другом записей о разделах, каждая из которых равна 128 байтам. Имеет свою копию в конце диска.
Обозначение | Смещение | Размер | Описание |
---|---|---|---|
PartitionTypeGUID | 0h | 16 | Уникальный идентификатор (GUID) типа раздела. Фактически, определяет файловую систему, которая используется для хранения данных в данном разделе. Значение 0 указывает на то, что запись не используется. |
UniquePartitionGUID | 10h | 16 | Уникальный идентификатор (GUID) раздела. Генерируется каждый раз, когда создаётся раздел. В случае, когда ПО обнаруживает два раздела с одинаковыми GUID - результат не определен (на выбор автора ПО?). |
StartingLBA | 20h | 8 | Номер LBA первого блока раздела. |
EndingLBA | 28h | 8 | Номер LBA последнего блока раздела. |
Attributes | 30h | 8 | Атрибуты раздела. Смотрите ниже в таблице. |
PartitionName | 38h | 72 | Имя раздела. В кодировке Unicode (UTF-16LE). Фактически 36 символов, поскольку каждый символ в UTF кодируется 2 байтами. |
Reserved | 80h | размер записи - 128 (80h) | Зарезервировано. Неиспользуемая часть записи массива разделов. Просто заполняется нулями, если запись GPT имеет размер более 128 байт. |
Как можно увидеть, размер каждой записи таблицы разделов равен 128 байтам. С другой стороны, никто не мешает расширять размер записи таблицы разделов до требуемых значений. По факту, имеем масштабируемость дисковой разметки.
Атрибуты раздела GPT имеют достаточно большую размерность: 8 байт (64 бита). Каждый раздел имеет независимые атрибуты.
Бит | Описание |
---|---|
0 | Бит системного раздела. Признак важности, необходимости. Установленный бит предписывает всем программам работы с диском сохранять раздел в неизменном виде, то есть не модифицировать и не удалять его. Установленным битом создатель как бы говорит, что удаление или модификация содержимого раздела может повлечь за собой потерю функционала стадии загрузки или функционирования. Практическое применение? |
1 | Бит игнорирования. Когда этот бит установлен, UEFI должна игнорировать содержимое раздела и не пытаться производить чтение с него? Для этого раздела не выполняется процедура сопоставления с файловой системой. |
2 | Стандартный загрузочный раздел для legacy BIOS. Используется вариантами UEFI прошивок, которые содержат код поддержки традиционного BIOS, сообщает подобным прошивкам, что раздел может быть загрузочным. Классические UEFI должны игнорировать этот бит. Эквивалент старшего бита (7) в байте индекса диска (смещение 00h) в записи раздела классического MBR. |
3–47 | Зарезервировано для будущего использования; Биты заполняются нулями. |
48–63 | Произвольные биты. Зарезервированы для использования некоторыми видами разделов различных производителей. Используются для нужд разработчиков. |
Для полноты картины представления, приведем таблицу типов (PartitionTypeGUID) разделов. Обратите внимание на то, что порядок записи байтов GUID соответствует "от младшего к старшему" (little-endian) в старших трех октетах идентификатора. К примеру, GUID раздела MSR записывается как E3C9E316-0B5C-4DB8-817D-F92DF00215AE, что соответствует последовательности байт: 16 E3 C9 E3 5C 0B 4D B8 81 7D F9 2D F0 02 15 AE.
Система | Тип раздела | Идентификатор (GUID) |
---|---|---|
(Нет) | Неиспользуемое значение | 00000000-0000-0000-0000-000000000000 |
Схема разделов MBR | 024DEE41-33E7-11D3-9D69-0008C781F39F | |
EFI System partition | C12A7328-F81F-11D2-BA4B-00A0C93EC93B | |
BIOS Boot partition | 21686148-6449-6E6F-744E-656564454649 | |
Intel Fast Flash (iFFS) partition | D3BFE2DE-3DAF-11DF-BA40-E3A556D89593 | |
Sony boot partition | F4019732-066E-4E12-8273-346C5641494F | |
Lenovo boot partition | BFBFAFE7-A34F-448A-9A5B-6213EB736C22 | |
Windows | Microsoft Reserved Partition (MSR) | E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
Basic data partition | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 | |
Logical Disk Manager metadata partition | 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 | |
Logical Disk Manager data partition | AF9B60A0-1431-4F62-BC68-3311714A69AD | |
Windows Recovery Environment | DE94BBA4-06D1-4D40-A16A-BFD50179D6AC | |
IBM General Parallel File System (GPFS) partition | 37AFFC90-EF7D-4E96-91C3-2D7AE055B174 | |
Storage Spaces partition | E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D | |
HP-UX | Data partition | 75894C1E-3AEB-11D3-B7C1-7B03A0000000 |
Service Partition | E2A1E728-32E3-11D6-A682-7B03A0000000 | |
Linux | Linux filesystem data | 0FC63DAF-8483-4772-8E79-3D69D8477DE4 |
RAID partition | A19D880F-05FC-4D3B-A006-743F0F84911E | |
Swap partition | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F | |
Logical Volume Manager (LVM) partition | E6D6D379-F507-44C2-A23C-238F2A3DF928 | |
/home partition | 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 | |
/srv (server data) partition | 3B8F8425-20E0-4F3B-907F-1A25A76F98E8 | |
Plain partition | 7FFEC5C9-2D00-49B7-8941-3EA10A5586B7 | |
Linux Unified Key Setup (LUKS) partition | CA7D7CCB-63ED-4C53-861C-1742536059CC | |
Reserved | 8DA63339-0007-60C0-C436-083AC8230908 | |
FreeBSD | Boot partition | 83BD6B9D-7F41-11DC-BE0B-001560B84F0F |
Data partition | 516E7CB4-6ECF-11D6-8FF8-00022D09712B | |
Swap partition | 516E7CB5-6ECF-11D6-8FF8-00022D09712B | |
Unix File System (UFS) partition | 516E7CB6-6ECF-11D6-8FF8-00022D09712B | |
Vinum volume manager partition | 516E7CB8-6ECF-11D6-8FF8-00022D09712B | |
ZFS partition | 516E7CBA-6ECF-11D6-8FF8-00022D09712B | |
Mac OS X | Hierarchical File System Plus (HFS+) partition | 48465300-0000-11AA-AA11-00306543ECAC |
Apple UFS | 55465300-0000-11AA-AA11-00306543ECAC | |
ZFS | 6A898CC3-1DD2-11B2-99A6-080020736631 | |
Apple RAID partition | 52414944-0000-11AA-AA11-00306543ECAC | |
Apple RAID partition, offline | 52414944-5F4F-11AA-AA11-00306543ECAC | |
Apple Boot partition | 426F6F74-0000-11AA-AA11-00306543ECAC | |
Apple Label | 4C616265-6C00-11AA-AA11-00306543ECAC | |
Apple TV Recovery partition | 5265636F-7665-11AA-AA11-00306543ECAC | |
Apple Core Storage (i.e. Lion FileVault) partition | 53746F72-6167-11AA-AA11-00306543ECAC | |
Solaris | Boot partition | 6A82CB45-1DD2-11B2-99A6-080020736631 |
Root partition | 6A85CF4D-1DD2-11B2-99A6-080020736631 | |
Swap partition | 6A87C46F-1DD2-11B2-99A6-080020736631 | |
Backup partition | 6A8B642B-1DD2-11B2-99A6-080020736631 | |
/usr partition | 6A898CC3-1DD2-11B2-99A6-080020736631 | |
/var partition | 6A8EF2E9-1DD2-11B2-99A6-080020736631 | |
/home partition | 6A90BA39-1DD2-11B2-99A6-080020736631 | |
Alternate sector | 6A9283A5-1DD2-11B2-99A6-080020736631 | |
Reserved partition | 6A945A3B-1DD2-11B2-99A6-080020736631 | |
6A9630D1-1DD2-11B2-99A6-080020736631 | ||
6A980767-1DD2-11B2-99A6-080020736631 | ||
6A96237F-1DD2-11B2-99A6-080020736631 | ||
6A8D2AC7-1DD2-11B2-99A6-080020736631 | ||
NetBSD | Swap partition | 49F48D32-B10E-11DC-B99B-0019D1879648 |
FFS partition | 49F48D5A-B10E-11DC-B99B-0019D1879648 | |
LFS partition | 49F48D82-B10E-11DC-B99B-0019D1879648 | |
RAID partition | 49F48DAA-B10E-11DC-B99B-0019D1879648 | |
Concatenated partition | 2DB519C4-B10F-11DC-B99B-0019D1879648 | |
Encrypted partition | 2DB519EC-B10F-11DC-B99B-0019D1879648 | |
ChromeOS | ChromeOS kernel | FE3A2A5D-4F32-41A7-B725-ACCC3285A309 |
ChromeOS rootfs | 3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC | |
ChromeOS future use | 2E0A753D-9E48-43B0-8337-B15192CB1B5E | |
Haiku | Haiku BFS | 42465331-3BA3-10F1-802A-4861696B7521 |
MidnightBSD | Boot partition | 85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7 |
Data partition | 85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7 | |
Swap partition | 85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7 | |
Unix File System (UFS) partition | 0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7 | |
Vinum volume manager partition | 85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7 | |
ZFS partition | 85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7 | |
Ceph | Ceph Journal | BFBFAFE7-A34F-448A-9A5B-6213EB736C22 |
Ceph Encrypted Journal | 45B0969E-9B03-4F30-B4C6-5EC00CEFF106 | |
Ceph OSD | 4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D | |
Ceph OSD | 4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D | |
Ceph disk in creation | 89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE | |
Ceph disk in creation | 89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE |
Разделы GPT
А тут у нас располагаются разделы GPT. Данные, находящиеся на разделах, размещаются начиная с блока LBA34. Разделы идут друг за другом практически до самого конца диска, то есть ровно до блоков, занятых копиями таблицы разделов GPT и заголовка GPT.
Копия таблицы разделов GPT
Копия основной таблицы разделов. Размещается в блоках LBA(N-33) - LBA(N-1). То есть, если отсчет вести с конца диска, то следует сразу за копией оглавления GPT.
Копия заголовка (оглавления) GPT
Копия основного заголовка GPT. Эта копия UEFI оглавления имеет своё значение поля MyLBA
и свою собственную контрольную сумму CRC32. Значение поля AlternativeLBA
указывает на первую копию заголовка. Значения полей MyLBA
и AltenativeLBA
во втором заголовке GPT инвертированы по отношению к аналогичным значения первого заголовка GPT. Размещается в логическом блоке носителя LBA(N), где N - общее количество блоков диска.