GPT - GUID Partition Table

Метки:  , , , , , , , , , , , ,

GPT (Таблица разделов GUID, GUID Partition Table) - стандарт размещения таблиц разделов на физическом носителе информации. Принципиально отличается от своего предшественника (MBR) упрощенной структурой размещения функциональных блоков на физическом носителе, потому как размещение и структуризация происходит более логичным и очевидным способом. GPT не является самостоятельной разработкой, а проектировалась как часть расширяемого микропрограммного интерфейса (Unified Extensible Firmware Interface, UEFI), и вошла в состав последнего на поздних этапах разработки. UEFI в настоящее время начал активно внедряться и постепенно приходит на смену традиционному, классическому BIOS. Вспомните, что BIOS для загрузки ОС с носителя использует MBR, так вот, для более очевидной аналогии можно использовать следующее утверждение: там где BIOS использует MBR, UEFI использует GPT.

Для идентификации разделов в стандарте UEFI применяется GUID (Globally Unique IDentifier) - глобальный 128-битный идентификатор, использующийся для относительной уникализации (неповторяемости) сервисов и приложений, да и вообще всего остального :). Идентификаторы уникальны в том контексте, в котором они используются. То есть, каждый GUID не является гарантированно уникальным, но общее число возможных вариантов настолько велико (2122 или 5.3*1036), что вероятно получения двух совпадающих значений стремится к нулю.

Несмотря на все очевидные преимущества GPT, основной причиной разработки стандарта явилась острая необходимость преодолеть ограничения, накладываемые традиционной таблицей разделов (размещается внутри MBR), которая не предоставляла возможности создавать разделы размером более 2-х терабайт и/или размещать их произвольным образом по смещению более 2-х терабайт от начала диска.

К преимуществам GPT относятся:

  1. Избыточность данных. Дублирование заголовка и таблиц разделов в начале и конце диска. Подобное нововведение позволило создать отказоустойчивость на уровне разделов, чего был лишен классический MBR. При повреждении одной из копий заголовка/таблиц разделов GPT, возможно восстановление из резервной копии.
  2. Достаточный лимит на размер раздела(ов) [при размере сектора 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).
  3. Отсутствие ограничения разметки MBR в четыре основные раздела (партиции). GPT может иметь до 128 разделов на одном физическом диске, что вполне достаточно даже для самых требовательных конфигураций.
  4. Отсутствие такого труднопонимаемого многими архаизма, как "логические диски" в расширенном разделе, присутствующего в традиционной разметке MBR.
  5. Отсутствие необходимости писать цепочку загрузчиков вида MBR - PBR - Bootmgr и самому работать с железом посредством портов и прерываний реального режима, нет необходимости заботиться о переходе в защищенный режим и прочих нюансах. В EFI загрузчике все проще - структуры данных уже подготовлены, есть возможность использовать готовые функции UEFI для упрощенного "диалога" с оборудованием.
  6. 16-байтовый идентификатор (GUID) типа раздела. В классическом MBR тип раздела имел размерность всего один байт, что вводило ограничение на идентификацию множества ОС.
  7. Контрольная сумма в формате CRC32 заголовка и таблицы разделов GPT, что упрощает обнаружение ошибок по причине сбоев носителя информации.
  8. Введены поля номера версии (ревизии), размеров заголовка и записи раздела, что позволяет безболезненно модифицировать структуру GPT в будущих версиях.
Windows поддерживает загрузку с GPT исключительно на компьютерах с UEFI. 32-битная версия Windows 8, 64-битные версии Windows Vista, 7, 8, 8.1, Windows Server 2008, 2012 и более поздние, умеют загружаться с GPT-раздела. 32-разрядные версии Windows Server 2003 SP1, Vista, 7, Server 2008 и 64-разрядные версии Windows XP/Server 2003 могут лишь читать 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. Фактически, работа по написанию загрузчика операционной системы стала менее трудоемкой, при том, что код загрузчика стал более универсальным.

Код UEFI умеет работать с файловой системой FAT32 для дисков, с системами FAT12, FAT16, FAT32 для съемных носителей и с системой ISO-9660 для CD-ROM/DVD-ROM. Почему был выбран именно FAT32? Ответ, вероятно, кроется в популярности и довольно широкой области распространения файловой системы FAT32, которая используется как стандарт де-факто даже во многих бытовых устройствах.

Теперь мы можем приступить к более детальному рассмотрению структуры диска при использовании стандарта GPT и для начала я приведу наглядное графическое представление структуры 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, который используется при традиционной разметке, за исключением следующих отличий:

  1. Значение поля NT Disk Signature равно 00000000;
  2. Вне зависимости от реальной разметки диска, в таблице разделов MBR указано наличие всего одного раздела, "охватывающего" весь диск. В официальной документации он называется GPT Protective partiton. Очевидно, что таблица разделов, размещенная в защитном MBR, имеет всего одну запись, описывающую раздел, имеющий размер, равный размеру физического носителя. Поле начала раздела равно LBA1 и поле конца раздела равно LBA(N), где N-последний блок (сектор) диска. Если же объем диска больше предельного значения, то поле конца выставляется в значение 0FFFFFFFFh;
  3. Тип (поле 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 - общее количество блоков диска.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *