Формат gpt что это

Не получается установить Windows на диск GPT или MBR. Исправляем

Поскольку ПК приобретается раз в несколько лет, а его комплектующие периодически заменяются, программные и аппаратные компоненты порой плохо соответствуют друг другу. Сам ПК может быть достаточно старым, но вы укомплектовали его современным SSD. Уже не первый год доступна Windows 10, а вы до сих пор отдаете предпочтение привычной «семерке».

Помимо таких заметных каждому вещей, как производительность процессора и интерфейс ПО, есть значимые характеристики, которые начинают представлять интерес только в тех случаях, когда становятся причиной сбоев.

К ним относится и формат таблиц разделов HDD или SSD. Вы могли и не слышать о существовании характеристики накопителя, которая неожиданно огорчила, препятствуя установке Windows 7, 10 или 8.

ПК «говорит», что установка Windows невозможна. Причина: таблица разделов диска — GPT или MBR. Увы, технологии прошлого не всегда «дружат» с современными. К счастью, это легко исправимо.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Не получается поставить ОС на GPT-диск. Решения, которые помогут

Существуют две возможности:

Настоящее (UEFI и GPT) и прошлое (BIOS и MBR)

Раньше материнская плата ПК оснащалась ПО BIOS. Оно осуществляло диагностику и анализ железа, а затем загружало ОС, опираясь на загрузочную запись раздела MBR.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

В более современных моделях роль BIOS выполняет UEFI. Загружается быстрее и поддерживает:

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

GPT превосходит MBR по важным параметрам:

Выбор метода

Пытаться все же установить систему на «несовместимый HDD» или преобразовать его в MBR и тем самым сделать так, что ошибка больше появляться не будет. В каждом случае решение зависит от ряда факторов:

Помните:

BIOS или UEFI

Когда вы заходите в BIOS и видите старомодный синий экран — перед вами традиционный BIOS. Если интерфейс с современной графикой и поддержкой мыши — это UEFI.

Чаще всего не получается установить Windows 7

Сложности с установкой системы на GPT-диск с большей вероятностью возникают у пользователей, которые предпочитают Windows 7.

Для установки Windows на диск со стилем разделов GPT необходимо соблюсти два условия:

Исхожу из того, что вы устанавливаете 64-битную версию Windows. Это означает, что сообщение об ошибке появляется по причине несоответствия второму требованию.

Не исключено, что будет достаточно поменять настройки BIOS. Зайдите в него, нажав предусмотренную для этого клавишу. Вы увидите, какую клавишу нажимать в процессе загрузки компьютера. В ноутбуках чаще всего применяется F2, в настольных моделях — Delete.

Поменяйте загрузку CSM (Compatibility Support Mode) на UEFI.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Ищите в разделах «BIOS Setup», «BIOS Features» или подобных по смыслу. В SATA определите режим AHCI, а не IDE.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Для седьмой (и еще более древних) версий Windows нужно также выключить Secure Boot.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

BIOS вашей модели компьютера может выглядеть иначе. Названия пунктов меню также могут быть другими. Но смысл всегда сохраняется.

После изменения и сохранения вами новых параметров BIOS у вас появится возможность установки системы на GPT-диск. Если вы устанавливаете ОС с DVD, то сообщение об ошибке при повторной попытке установки, скорее всего, не появится.

В случае установки с USB-накопителя сообщение может отобразиться опять. В этой ситуации необходимо пересоздать установочную флешку таким образом, чтобы она поддерживала загрузку UEFI.

Если накопителем поддерживаются два метода загрузки, удалите файл «bootmgr» в корневой директории флешки. Тем самым вы предотвратите возможность загрузки в режиме BIOS. Если нужна загрузка в режиме BIOS, удалите каталог «efi». Не делайте этого в тех случаях, когда есть хоть малейшие сомнения. Можно повредить дистрибутив.

Преобразование GPT в MBR

Если вы располагаете ПК с классическим BIOS и собираетесь поставить Windows 7, этот вариант будет лучшим (и, возможно, единственным). В процессе преобразования вся информация с накопителя будет удалена.

Во время работы мастера установки ОС нажмите F10 и Shift. В некоторых моделях ноутбуков — F10, Fn и Shift. В открывшейся командной строке последовательно введите такие команды:

— diskpart
— list disk (запишите номер подлежащего преобразованию диска)
— select disk N (вместо N — записанный номер)
— clean (команда очистит диск)
— convert mbr
— create partition primary
— active
— format fs=ntfs quick (быстрое форматирование в файловой системе NTFS)
— assign
— exit

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Невозможно поставить ОС на диск с MBR-разделами

Вероятна обратная ситуация. Появляется ошибка:

«Установка Windows на данный диск невозможна. На выбранном диске находится таблица MBR-разделов. В системах EFI Windows можно установить только на GPT-диск»

Она означает, что вы пытаетесь установить систему с DVD или USB-накопителя в режиме EFI. Таблица разделов HDD или SSD старая — MBR. В этом случае вы можете:

Первый вариант предпочтительнее, поскольку проще и быстрее. Помните, что информация со всех разделов накопителя будет полностью потеряна.

Преобразование MBR в GPT. Вся информация будет удалена

В установщике системы запустите командную строку:

В открывшемся окне:

— diskpart
— list disk (запишите номер подлежащего преобразованию диска)
— select disk N (вместо N — записанный номер)
— clean (команда очистит диск)
— convert gpt
— exit

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Когда команды применены:

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Более простой способ преобразования с потерей информации на накопителе:

Результатом ваших действий станет автоматическое преобразование в GPT. Следующим шагом стартует установка ОС.

Как не потерять данные при преобразовании

Используйте стороннюю утилиту Minitool Partition Wizard Bootable. Скачайте ISO-образ и запишите его на флешку, отформатированную в FAT32. Необходимые условия:

Загрузите ПК с созданного вами накопителя. В окне программного инструмента:

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Если диск системный, может появиться сообщение о том, что его преобразование невозможно. Чтобы все же преобразовать его:

Как обойтись без преобразования

Зайдите в BIOS и установите режим загрузки CSM (Compatibility Support Mode) или Legacy, отключив EFI. Отключите «Secure Boot».

Ранее я подробно рассмотрел процессы чистой установки Windows 10 и Windows 7.

Какие другие затруднения возникали у вас при установке Windows?

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Изучаем структуры MBR и GPT

Для работы с жестким диском его для начала необходимо как-то разметить, чтобы операционная система могла понять в какие области диска можно записывать информацию. Поскольку жесткие диски имеют большой объем, их пространство обычно разбивают на несколько частей — разделов диска. Каждому такому разделу может быть присвоена своя буква логического диска (для систем семейства Windows) и работать с ним можно, как будто это независимый диск в системе.

Способов разбиения дисков на разделы на сегодняшний день существует два. Первый способ — использовать MBR. Этот способ применялся еще чуть ли не с появления жестких дисков и работает с любыми операционными системами. Второй способ — использовать новую систему разметки — GPT. Этот способ поддерживается только современными операционными системами, поскольку он еще относительно молод.

Структура MBR

До недавнего времени структура MBR использовалась на всех персональных компьютерах для того, чтобы можно было разделить один большой физический жесткий диск (HDD) на несколько логических частей — разделы диска (partition). В настоящее время MBR активно вытесняется новой структурой разделения дисков на разделы — GPT (GUID Partition Table). Однако MBR используется еще довольно широко, так что посмотрим что она из себя представляет.

MBR всегда находится в первом секторе жесткого диска. При загрузке компьютера, BIOS считывает этот сектор с диска в память по адресу 0000:7C00h и передает ему управление.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Итак, первая секция структуры MBR — это секция с исполняемым кодом, который и будет руководить дальнейшей загрузкой. Размер этой секции может быть максимум 440 байт. Далее идут 4 байта, отведенные на идентификацию диска. В операционных системах, где идентификация не используется, это место может занимать исполняемый код. То же самое касается и последующих 2 байт.

Начиная со смещения 01BEh находится сама таблица разделов жесткого диска. Таблица состоит из 4 записей (по одной на каждый возможный раздел диска) размером 16 байт.

Структура записи для одного раздела:

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Первым байтом в этой структуре является признак активности раздела. Этот признак определяет с какого раздела следует продолжить загрузку. Может быть только один активный раздел, иначе загрузка продолжена не будет.

Следующие три байта — это так называемые CHS-координаты первого сектора раздела.

По смещению 04h находится код типа раздела. Именно по этому типу можно определить что находится в данном разделе, какая файловая система на нем и т.п. Список зарезервированных типов разделов можно посмотреть, например, в википедии по ссылке Типы разделов.

После типа раздела идут 3 байта, определяющие CHS-координаты последнего сектора раздела.

CHS-координаты сектора расшифровываются как Cylinder Head Sector и соответственно обозначают номер цилиндра (дорожки), номер головки (поверхности) и номер сектора. Цилиндры и головки нумеруются с нуля, сектор нумеруется с единицы. Таким образом CHS=0/0/1 означает первый сектор на нулевом цилиндре на нулевой головке. Именно здесь находится сектор MBR.

Все разделы диска, за исключением первого, обычно начинаются с нулевой головки и первого сектора какого-либо цилиндра. То есть их адрес будет N/0/1. Первый раздел диска начинается с головки 1, то есть по адресу 0/1/1. Это все из-за того, что на нулевой головке место уже занято сектором MBR. Таким образом, между сектором MBR и началом первого раздела всегда есть дополнителььные неиспользуемые 62 сектора. Некоторые загрузчики ОС используют их для своих нужд.

Интересен формат хранения номера цилиндра и сектора в структуре записи раздела. Номер цилиндра и номер сектора делят между собой два байта, но не поровну, а как 10:6. То есть на номер сектора приходится младшие 6 бит младшего байта, что позволяет задавать номера секторов от 1 до 63. А на номер цилиндра отведено 10 бит — 8 бит старшего байта и оставшиеся 2 бита от младшего байта: «CCCCCCCC CCSSSSSS», причем в младшем байте находятся старшие биты номера цилиндра.

Проблема с CHS-координатами состоит в том, что с помощью такой записи можно адресовать максимум 8 Гб диска. В эпоху DOS это было приемлемо, однако довольно скоро этого перестало хватать. Для решения этой проблемы была разработана система адресации LBA (Logical Block Addressing), которая использовала плоскую 32-битную нумерацию секторов диска. Это позволило адресовать диски размером до 2Тб. Позже разрядность LBA увеличили до 48 бит, однако MBR эти изменения не затронули. В нем по-прежнему осталась 32-битная адресация секторов.

Итак, в настоящее время повсеместно используется LBA-адресация для секторов на диске и в структуре записи раздела адрес его первого сектора прописывается по смещению 08h, а размер раздела — по смещению 0Ch.

Для дисков размером до 8Гб (когда адресация по CHS еще возможна) поля структуры с CHS-координатами и LBA-адресации должны соответствовать друг другу по значению (корректно конвертироваться из одного формата в другой). У дисков размером более 8Гб значения всех трех байт CHS-координат должны быть равны FFh (для головки допускается также значение FEh).

В конце структуры MBR всегда находится сигнатура AA55h. Она в какой-то степени позволяет проверить, что сектор MBR не поврежден и содержит необходимые данные.

Расширенные разделы

Разделы, отмеченные в таблице типом 05h и 0Fh, это так называемые расширенные разделы. С их помощью можно создавать больше разделов на диске, чем это позволяет MBR. На самом деле расширенных разделов несколько больше, например есть разделы с типами C5h, 15h, 1Fh, 91h, 9Bh, 85h. В основном все эти типы разделов использовались в свое время различными операционными системами (такими как например OS/2, DR-DOS, FreeDOS) с одной и той же целью — увеличить количество разделов на диске. Однако со временем различные форматы отпали и остались только разделы с типами 05h и 0Fh. Единственное исключение — это тип 85h. Он до сих пор может использоваться в Linux для формирования второй цепочки логических дисков, скрытых от других операционных систем. Разделы с типом 05h используются для дисков менее 8Гб (где еще возможна адресация через CHS), а тип 0Fh используется для дисков больше 8Гб (и используется LBA-адресация).

В первом секторе расширенного раздела находится структура EBR (Extended Boot Record). Она во многом схожа со структурой MBR, но имеет следующие отличия:

В отличие от MBR, где позволяется создавать не более четырёх разделов, структура EBR позволяет организовать список логических разделов, ограниченный лишь размером раздела-контейнера (того самого, который с типом 05h или 0Fh). Для организации такого списка используется следующий формат записей: первая запись в таблице разделов EBR указывает на логический раздел, связанный с данным EBR, а вторая запись указывает на следующий в списке раздел EBR. Если данный логический раздел является последним в списке, то вторая запись в таблице разделов EBR должна быть заполнена нулями.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Формат записей разделов в EBR аналогичен формату записи в структуре MBR, однако логически немного отличается.

Признак активности раздела для разделов структуры EBR всегда будет 0, так как загрузка осуществлялась только с основных разделов диска. Координаты CHS, с которых начинается раздел используются, если не задействована LBA-адресация, также как и в структуре MBR.

А вот поля, где в режиме LBA-адресации должны находиться номер начального сектора и количество секторов раздела, в структуре EBR используются несколько иначе.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Для первой записи таблицы разделов EBR в поле начального сектора раздела (смещение 08h) записывается расстояние в секторах между текущим сектором EBR и началом логического раздела, на который ссылается запись. В поле количества секторов раздела (смещение 0Ch) в этом случае пишется размер этого логического раздела в секторах.

Для второй записи таблицы разделов EBR в поле начального сектора раздела записывается расстояние между сектором самой первой EBR и сектором следующей EBR в списке. В поле количества секторов раздела в этом случае пишется размер области диска от сектора этой следующей структуры EBR и до конца логического раздела, относящегося к этой структуре.

Таким образом, первая запись таблицы разделов описывает как найти, и какой размер занимает текущий логический раздел, а вторая запись описывает как найти, и какой размер занимает следующий EBR в списке, вместе со своим разделом.

Структура GPT

В современных компьютерах на смену BIOS пришла новая спецификация UEFI, а вместе с ней и новое устройство разделов на жестком диске — GUID Partition Table (GPT). В этой структуре были учтены все недостатки и ограничения, накладываемые MBR, и разработана она была с большим запасом на будущее.

В структуре GPT используется теперь только LBA-адресация, никаких CHS больше нет и никаких проблем с их конвертацией тоже. Причем под LBA-адреса отведено по 64 бита, что позволяет работать с ними без всяких ухищрений, как с 64-битными целыми числами, а также (если до этого дойдет) даст в будущем возможность без проблем расширить 48-битную LBA-адресацию до 64-битной.

Кроме того, в отличие от MBR, структура GPT хранит на диске две своих копии, одну в начале диска, а другую в конце. Таким образом, в случае повреждения основной структуры, будет возможность восстановить ее из сохраненной копии.

Рассмотрим теперь устройство структуры GPT подробнее. Вся структура GPT на жестком диске состоит из 6 частей:

Защитный MBR-сектор

Первый сектор на диске (с адресом LBA 0) — это все тот же MBR-сектор. Он оставлен для совместимости со старым программным обеспечением и предназначен для защиты GPT-структуры от случайных повреждений при работе программ, которым про GPT ничего не известно. Для таких программ структура разделов будет выглядеть как один раздел, занимающий все место на жестком диске.

Структура этого сектора ничем не отличается от обычного сектора MBR. В его таблице разделов дожна быть создана единственная запись с типом раздела 0xEE. Раздел должен начинаться с адреса LBA 1 и иметь размер 0xFFFFFFFF. В полях для CHS-адресации раздел соответственно должен начинаться с адреса 0/0/2 (сектор 1 занят под саму MBR) и иметь конечный CHS-адрес FF/FF/FF. Признак активного раздела должен иметь значение 0 (неактивный).

При работе компьютера с UEFI, данный MBR-сектор просто игнорируется и никакой код в нем также не выполняется.

Первичный GPT-заголовок

Этот заголовочный сектор содержит в себе данные о всех LBA-адресах, использующихся для разметки диска на разделы.

Структура GPT-заголовка:

Смещение (байт)Размер поля (байт)Пример заполненияНазвание и описание поля
0x008 байт45 46 49 20 50 41 52 54Сигнатура заголовка. Используется для идентификации всех EFI-совместимых GPT-заголовков. Должно содержать значение 45 46 49 20 50 41 52 54, что в виде текста расшифровывается как «EFI PART».
0x084 байта00 00 01 00Версия формата заголовка (не спецификации UEFI). Сейчас используется версия заголовка 1.0
0x0C4 байта5C 00 00 00Размер заголовка GPT в байтах. Имеет значение 0x5C (92 байта)
0x104 байта27 6D 9F C9Контрольная сумма GPT-заголовка (по адресам от 0x00 до 0x5C). Алгоритм контрольной суммы — CRC32. При подсчёте контрольной суммы начальное значение этого поля принимается равным нулю.
0x144 байта00 00 00 00Зарезервировано. Должно иметь значение 0
0x188 байт01 00 00 00 00 00 00 00Адрес сектора, содержащего первичный GPT-заголовок. Всегда имеет значение LBA 1.
0x208 байт37 C8 11 01 00 00 00 00Адрес сектора, содержащего копию GPT-заголовка. Всегда имеет значение адреса последнего сектора на диске.
0x288 байт22 00 00 00 00 00 00 00Адрес сектора с которого начинаются разделы на диске. Иными словами — адрес первого раздела диска
0x308 байт17 C8 11 01 00 00 00 00Адрес последнего сектора диска, отведенного под разделы
0x3816 байт00 A2 DA 98 9F 79 C0 01 A1 F4 04 62 2F D5 EC 6DGUID диска. Содержит уникальный идентификатор, выданный диску и GPT-заголовку при разметке
0x488 байт02 00 00 00 00 00 00 00Адрес начала таблицы разделов
0x504 байта80 00 00 00Максимальное число разделов, которое может содержать таблица
0x544 байта80 00 00 00Размер записи для раздела
0x584 байта27 C3 F3 85Контрольная сумма таблицы разделов. Алгоритм контрольной суммы — CRC32
0x5C420 байт0Зарезервировано. Должно быть заполнено нулями

Система UEFI проверяет корректность GPT-заголовка, используя контрольный суммы, вычисляемые по алгоритму CRC32. Если первичный заголовок поврежден, то проверяется контрольная сумма копии заголовка. Если контрольная сумма копии заголовка правильная, то эта копия используется для восстановления информации в первичном заголовке. Восстановление также происходит и в обратную сторону — если первичный заголовок корректный, а копия неверна, то копия восстанавливается по данным из первичного заголовка. Если же обе копии заголовка повреждены, то диск становится недоступным для работы.

У таблицы разделов дополнительно существует своя контрольная сумма, которая записывается в заголовке по смещению 0x58. При изменении данных в таблице разделов, эта сумма рассчитывается заново и обновляется в первичном заголовке и в его копии, а затем рассчитывается и обновляется контрольная сумма самих GPT-заголовков.

Таблица разделов диска

Следующей частью структуры GPT является собственно таблица разделов. В настоящее время операционные системы Windows и Linux используют одинаковый формат таблицы разделов — максимум 128 разделов, на каждую запись раздела выделяется по 128 байт, соответственно вся таблица разделов займет 128*128=16384 байт, или 32 сектора диска.

Источник

Мобильные устройства изнутри. Что такое GPT?

Что такое GPT?

1. Введение

Продолжаем рассматривать строение программной части (software) мобильных устройств (МУ). Сегодня поговорим об устройстве GPT-раздела памяти. Написать об этом меня побудила публикация Изучаем структуры MBR и GPT, вместо того, чтобы писать комментарии к ней. Я хотел бы не поругать или поправить автора, а дополнить вышеуказанную публикацию с уклоном в МУ.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Итак, GPT (GUID Partition Table) это:

Как устроена MBR-схема разметки можно посмотреть в [1], а GPT это другой формат описания разметки памяти — GUID (GUID Partition Table). Он является частью EFI (Extensible Firmware Interface) — стандарта UEFI, используемого вместо BIOS для загрузки разделов памяти.

Переход на другой формат позволил устранить самый существенный недостаток MBR-формата — малое число разделов. Если в MBR помещалось только 4 записи с ограничением на длину раздела и его смещение из-за того, что эти параметры описывались 32-разрядными числами, то в GPT можно разместить 128 записей о разделах. Причем их параметры уже описываются в 64-разрядной системе счисления…

Для совместимости со старым стандартом загрузки (BIOS) и с целью защиты самой таблицы описания разделов памяти GPT-раздел тоже начинается с MBR, которая описывает всего один раздел — всю память МУ. Сама MBR называется теперь «защитной» (protective), т.е. PMBR. Она располагается тоже в первом секторе памяти по адресу 0х0000-0х01FF (512 байт). Поле Смещение указывает на начало заголовка GPT, а размер раздела устанавливается равным длине всей памяти устройства. Тип раздела имеет значение 0хEE (GPT-раздел).

Суть защиты GPT-раздела да и всей памяти МУ сводится к следующему. Если такой раздел откроет средство работы с MBR-схемой разметки, то оно увидит пустую неразмеченную память, состоящую только из раздела описания разметки. Соответственно, что-либо сделать с этой памятью ему не удасться.

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Рис.1 «Защитная» MBR, т.е. PMBR

По адресу 0х01FE видна сигнатура MBR (0xAA55).

Перейдем к рассмотрению непосредственно структуры GPT-раздела.

2. Структура GPT

GPT-раздел состоит из PMBR, заголовка и таблицы описания разделов памяти.

Сразу за PMBR, т.е. с адреса 0х0200, располагается заголовок GPT, имеющий длину 0х5С (92) байта, но занимающий весь сектор (512 байт). Вот как он выглядит в том же МУ:

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это

Рис.2 Заголовок GPT

Он имеет следующую структуру:

Поле Magic содержит строка символов «EFI PART» — 45h 46h 49h 20h 50h 41h 52h 54h, которая выделена на рис.2 бирюзовым цветом и однозначно идентифицирует GPT-раздел.

Поле Revision, выделенное зеленым цветом, содержит номер версии структуры GPT-раздела (0х00010000). Например, для GPT версии 1.0 должно быть 00h 00h 01h 00h

Поле HeaderSize, выделенное оранжевым цветом, содержит размер заголовка, выраженный в байтах. Пока это 0х0000005Ch, что означает 92 байта.

Поле HeaderCRC32, выделенное розовым цветом, содержит контрольную сумму заголовка (0x09BE8E1F), расчитанную по алгоритму CRC32. При непосредственном выполнении расчета учитываются только 92 байта, а в это поле перед расчетом заносится 0.

Следующее поле Reserved1 никак не выделено, является резервным и содержит 0.

Поле MyLBA, выделенное темно-синим цветом, содержит смещение в блоках размещения первичного GPT-раздела (0х00000001).

Поле AlternateLBA содержит смещение в блоках размещения резервного GPT-раздела. Оно не указано.

Поле FirstUsableLBA, выделенное красным цветом, содержит смещение в блоках размещения первого разрешенного для использования сектора памяти (0х00000022). Расчитывается так: LBA последнего сектора, занятого первичным GPT-разделом, + 1.

Поле LastUsableLBA содержит смещение размещения последнего сектора памяти, разрешенного для использования. Расчитывается так: LBA первого сектора резервного GPT-раздела — 1. Оно не указано.

Поле DiskGUID, выделенное голубым цветом, содержит GUID прошивки.

Поле PartitionsLBA, выделенное красным цветом, содержит смещение начала GPT. В первичном всегда равен 2, а в резервном равен LastUsableLBA.

Поле NumberParts, выделенное ярко-зеленым цветом, содержит размер таблицы описания разделов, т.е. число записей о разделах (0х00000018).

Поле PartitionSize, выделенное розовым цветом, содержит размер одной записи о разделе в байтах. Согласно UEFI Specification размер записи фиксирован и составляет 128 байт или 0х00000080.

Поле PartitionsCRC, выделенное красным цветом, содержит контрольную сумму таблицы описания разделов (0x93D54D33), расчитанную по алгоритму CRC32. При выполнении расчета учитываются все байты, начиная с PartitionsLBA и до FirstUsableLBA.

Поле Reserved2 содержит резервное поле. Содержит 0 до конца сектора, т.е. 420 байт для сектора размером 512 байт.

Непосредственно сразу за заголовком, начиная с адреса 0х400, располагается таблица описания разделов, содержащая записи о каждом разделе памяти, включая и сам раздел разметки. Вот как она выглядит:

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это
Рис.3 Таблица описания разделов

Каждая запись размером 128 байт имеет следующую структуру:

Поле PartitionTypeGUID, выделенное красным цветом, содержит GUID типа раздела, который определяет файловую систему, используемую для хранения данных в этом разделе. Каждая файловая система получает свой GUID, однозначно её идентифицирующий. Стандарт UEFI жестко определяет только следующие GUID типов разделов:

Поставщикам ОС (vendors) нужно генерировать свой собственный GUID типа раздела, чтобы идентифицировать их. Некоторые известные GUID можно посмотреть в [3].

При записи в память или в файл-образ значение GUID записывается в другом порядке. Например, GUID системного раздела EFI имеет следующий вид: C12A7328-F81F-11D2-BA4B-00A0C93EC93B. Порядок записи байтов в написаниях GUID является little-endian, причем задом наперед пишутся байты только в первых трех блоках. Для приведенного выше GUID запись в таблице разделов будет иметь такой вид:

Поле UniquePartitionGUID, выделенное синим цветом, содержит GUID раздела. Является уникальным идентификатором раздела, поэтому создается каждый раз, когда создается раздел.

Поле StartingLBA, выделенное зеленым цветом, содержит смещение в блоках на первый сектор раздела (0x00020000).

Поле EndingLBA, выделенное оранжевым цветом, содержит смещение на последний сектор раздела (0x0003FFFF). При этом размер раздела (PartitionSize) определяется по формуле

Поле Attributes, выделенное фиолетовымым цветом, содержит атрибуты (флаги) раздела. 8 байт (64 бита) флагов распределены следующим образом. Биты с 0 по 47 (48 шт.) отведены под общие атрибуты типов разделов, а остальные 16 битов (с 48 по 63) описывают конкретный раздел.

Вот небольшое описание этих битов:

Поле PartitionName, выделенное синим цветом, содержит метку раздела («modem»), содержащую строку текста с завершающим нулем числом не более 36 символов, выраженную в кодировке UTF-16LE.

Все, что такое GPT мы уже знаем, только это стандартная структура GPT-раздела. Оказывается, имеется и модификация…

Т.к. я обнаружил GPT-раздел другой структуры при работе с МУ на основе чипа Intel, то я и назвал ее GPT-раздел типа Intel.

3. Что такое GPT-раздел типа Intel?

Прошивка новых мобильных устройств (МУ) Lenovo, выполненных на основе чипов Intel, имеет Gpt-схему разметки памяти, но структура самого Gpt-файла отличается от стандартной, описанной в [1]. Это касается, например, устройств YOGA BOOK YB1-X90.

По сравнению со стандартной структурой Intel-тип сокращен до максимума:

GPT-раздел, как и стандартный, состоит из:

Рассмотрим строение заголовка.

3.1. Структура заголовка нового GPT-раздела.

Заголовок имеет размер всего 12 (0x0C) байт (против 512 в стандартном варианте):

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это
Рис.5 Заголовок Gpt-файла Intel-типа

и содержит следующие поля:

Поле Magic, отмеченное синим цветом, содержит число 0х6А8В0DA1, идентифицирующее образ GPT-раздела Intel-типа.

Поле StartLba, отмеченное красным цветом, содержит значение смещения размещения первого раздела памяти.

Поле Number, отмеченное зеленым цветом, содержит общее число разделов памяти, т.е. число записей таблицы описания разделов. Сама таблица расположена сразу после заголовка.

3.2. Структура записи описания нового GPT-раздела

Таблица описания разделов содержит записи, содержащие параметры каждого раздела памяти. Число записей равно числу разделов, а окончание таблицы ничем не отмечается.

Каждая запись имеет размер 108 (0x6C) байт, тогда как по UEFI она содержала 128 байт. Вот как выглядит запись описания раздела нового формата:

Формат gpt что это. Смотреть фото Формат gpt что это. Смотреть картинку Формат gpt что это. Картинка про Формат gpt что это. Фото Формат gpt что это
Рис.6 Запись описания раздела

и содержит следующие поля, описывающие параметры раздела:

Поле Size, выделенное на рис.6 синим цветом, содержит размер раздела, выраженный в Мб (1024 * 1024 = 1048576 байт).

Поле Label, выделенное на рис.6 красным цветом, содержит метку раздела, т.е. имя раздела, выраженное в кодировке UTF-16.

Поле GuidType, выделенное на рис.6 зеленым цветом, содержит GUID типа раздела.

Поле GuidPartition, выделенное на рис.6 желтым цветом, содержит GUID самого раздела.

4. Заключение

Изучив строение GPT-раздела разметки памяти МУ, можно приступить и к практическим занятиям.

В следующих публикациях я поделюсь опытом переразметки памяти МУ, выполненного по GPT-схеме.

Источник

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

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