GUID разделов в GPT: как определить тип и исправить ошибки

Вы когда-нибудь сталкивались с непонятным GUID раздела на GPT-диске? Представьте: проверяете тип раздела через hex-редактор, сравниваете с таблицами из интернета, а ваш GUID просто… не существует. Давайте разберёмся, почему так происходит и как с этим работать.

Почему GUID из GPT не совпадает с таблицами?

Первое, что нужно понять: GUID в GPT хранится в смешанном формате endianness (порядок байтов). Это значит, что байты в шестнадцатеричном представлении на диске не соответствуют текстовой записи GUID. Исторически так сложилось из-за Microsoft: первые три поля GUID (например, 0fc63daf-8483-4772) хранятся в обратном порядке.

Возьмём пример:

af3dc60f838472478e793d69d8477de4

Если прочитать эти байты как есть, GUID будет казаться бессмысленным. Но при конвертации с учётом endianness он превращается в 0fc63daf-8483-4772-8e79-3d69d8477de4 – это стандартный тип для Linux-разделов (ext4). Вот как это работает в Python:

import uuid  
bytes = bytes.fromhex("af3dc60f838472478e793d69d8477de4")  
guid = uuid.UUID(bytes_le=bytes)  
print(guid)  # Вывод: 0fc63daf-8483-4772-8e79-3d69d8477de4

Кстати, bytes_le здесь указывает на little-endian порядок для первых полей. Если бы мы использовали bytes, GUID остался бы «перевёрнутым».

Кто решает, какой GUID использовать?

Типы GUID делятся на две категории:

  • Стандартные: Определены UEFI (например, ESP-раздел для загрузчика).
  • Пользовательские: Создаются разработчиками ОС или софта. Например, Microsoft резервирует GUID для своих разделов, а Linux-сообщество – для ext4, LVM и т.д.

Важный нюанс: официального реестра GUID не существует. Каждый вендор генерирует их через алгоритм UUID (например, uuidgen в Linux), чтобы избежать конфликтов. Поэтому, если ваш GUID не найден в списках, это не ошибка – возможно, его просто ещё не добавили в публичные таблицы.

Вот примеры популярных GUID:

Тип разделаGUID
EFI System Partitionc12a7328-f81f-11d2-ba4b-00a0c93ec93b
Linux filesystem (ext4)0fc63daf-8483-4772-8e79-3d69d8477de4
Microsoft Basic Dataebd0a0a2-b9e5-4433-87c0-68b6b72699c7

Как проверить GUID и исправить ошибки

Допустим, вы видите в GPT странный GUID, который не распознаётся. Вот пошаговый алгоритм:

1. Извлеките байты GUID. Используйте gdisk или sgdisk:

sudo sgdisk -i 1 /dev/sda  # Показать информацию о 1-м разделе

В разделе «Partition GUID code» вы увидите текстовый GUID (уже сконвертированный).

2. Сравните с таблицами. Проверьте:

3. Если GUID неизвестен:

  • Попробуйте конвертировать байты вручную через Python-скрипт, как выше.
  • Проверьте, не использовал ли разработчик вашего дистрибутива кастомный GUID (напр., для ZFS или LUKS).

    Ошибка, с которой можно столкнуться: неправильный порядок байтов при ручном извлечении. Например, если вы скопировали байты из hex-редактора без учёта endianness, GUID покажется неверным. Всегда используйте инструменты вроде gdisk – они автоматически применяют коррекцию.

    Совет: Если раздел не распознаётся ОС (например, Windows игнорирует Linux-разделы), проверьте не только GUID, но и флаги в GPT. Иногда проблема в них, а не в типе.

    И напоследок: даже если ваш GUID нигде не упомянут, это не критично – главное, чтобы ОС корректно работала с разделом. Но если хочется порядка, можно вручную задать стандартный GUID через sgdisk -t 1:0FC63DAF-… (только осторожно, это меняет метаданные диска!).

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

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

    Новое
    Интересное