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

 

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

Автор: admin от 29-01-2018, 19:20, посмотрело: 271

Что такое GPT?







Изучаем структуры MBR и GPT, вместо того, чтобы писать комментарии к ней. Я хотел бы не поругать или поправить автора, а дополнить вышеуказанную публикацию с уклоном в МУ.



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



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




  • в первую очередь название схемы разметки памяти (GPT-схема) МУ ;

  • затем уж название раздела памяти (GPT-раздел), где расположена физически эта схема;

  • ну и также название файла-образа GPT-раздела памяти (GPT-файл).



Существует две схемы разметки памяти: MBR и GPT. Каждая схема содержится в отдельном разделе памяти, называемом, соответственно, MBR или GPT.



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



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

UEFI Specification размер записи фиксирован и составляет 128 байт или 0х00000080.



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



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



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

Мобильные устройства изнутри. Что такое GPT?
Рис.3.Таблица описания разделов



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



 ====================================================================================
| Смещение  | Длина, |         Имя         |                 Значение                |
|   байт    |  байт  |         поля        |                   поля                  |
|===========|========|=====================|=========================================|
|  0 | 0x00 |   16   | PartitionTypeGUID   | GUID типа раздела                       |
| 16 | 0x10 |   16   | UniquePartitionGUID | GUID раздела                            |
| 32 | 0x20 |    8   | StartingLBA         | LBA первого сектора размещения раздела  |
| 40 | 0x24 |    8   | EndingLBA           | последний LBA сектор размещения раздела |
| 48 | 0x30 |    8   | Attributes          | атрибуты раздела                        |
| 56 | 0x38 |   72   | PartitionName       | строка из имени раздела                 |
 ====================================================================================


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



 =============================================================================
| Значение GUID                        |   Описание                           |
|======================================|======================================|
| 00000000-0000-0000-0000-000000000000 | Неиспользуемый раздел                |
| C12A7328-F81F-11d2-BA4B-00A0C93EC93B | Системный раздел UEFI                |
| 024DEE41-33E7-11d3-9D69-0008C781F39F | Раздел, содержащий традиционную MBR  |
 =============================================================================


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



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



28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B


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



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



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



	PartitionSize = EndingLBA - StartingLBA + 1


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



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



 ================================================
| Бит  |   Значение                              |
|======|=========================================|
|   0  | системный раздел                        |
|   1  | EFI игнорирует содержимое этого раздела |
| 2-47 | Зарезервировано для нужд UEFI           |
| ---- |                                         |
|  60  | Read-only (только для чтения)           |
|  61  | Теневая копия другого раздела           |
|  62  | Hidden (скрытый)                        |
|  63  | автоматически не монтируется            |
 ================================================


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



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



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



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

Мобильные устройства изнутри. Что такое GPT?
Рис.6.Запись описания раздела



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



 =============================================================
|  №  | Смещение |      Имя      | Размер | Значение поля     |
| п/п |   поля   |      поля     |  байт  |                   |
|=============================================================|
|  1  |   0x00   | Size          |    4   | Размер раздела    |
|  2  |   0x04   | Label         |   72   | метка раздела     |
|  3  |   0x4C   | GuidType      |   16   | GUID типа раздела |
|  3  |   0x5C   | GuidPartition |   16   | GUID раздела      |
 =============================================================


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



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



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



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



«Что такое MBR?»

UEFI Specification, Version 2.7 Errata A

GUID Partition Table.


Источник: Хабрахабр

Категория: Программирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *