MBR, GPT, а можно гибрид? Да, можно!

Модератор: adventurer

Ответить
Аватара пользователя

Автор темы
serg666
Сообщения: 684
Зарегистрирован: 26 фев 2013, 21:15

MBR, GPT, а можно гибрид? Да, можно!

#1

Сообщение serg666 » 10 ноя 2019, 15:21

Поговорим о гибридной схеме разбиения диска GPT+MBR.

Освежим наши знания.

MBR
Главная загрузочная запись (англ. master boot record, MBR) — код и данные, необходимые для последующей загрузки операционной системы и расположенные в первых физических секторах (чаще всего в самом первом) на жёстком диске или другом устройстве хранения информации. Применялась с 1983 года (начиная с PC DOS 2.0) до широкого внедрения UEFI и схемы GPT в 2010-х.
MBR содержит небольшой фрагмент исполняемого кода, таблицу разделов диска (англ. partition table) и специальную сигнатуру.
...
Загрузчики, отличные от стандартных Windows-загрузчиков, могут использовать всё пространство между MBR и первым разделом (около 32 кБ; 1-й-63-й секторы) для собственных целей. В таких случаях под MBR понимают весь загрузочный код, а для выделения именно первых 512 байт говорят, что они расположены в MBS (Master Boot Sector) — главном загрузочном секторе.
MBR содержит записи о 1-4 первичных разделах на диске, один из этих разделов может быть расширенным и в начале этого раздела будет сектор подобный MBR (только называется уже PBR - партишн бут рекорд), который может содержать еще 1-4 записей о разделах на диске и так далее, такая древовидная структура.

GPT
GUID Partition Table, аббр. GPT — стандарт формата размещения таблиц разделов на физическом жестком диске. Он является частью Расширяемого микропрограммного интерфейса (англ. Extensible Firmware Interface, EFI) — стандарта, предложенного Intel на смену BIOS. EFI использует GPT там, где BIOS использует Главную загрузочную запись (англ. Master Boot Record, MBR). В отличие от MBR, которая начинается с исполняемой двоичной программы, призванной идентифицировать и загрузить активный раздел, GPT опирается на расширенные возможности EFI для осуществления этих процессов. Однако MBR присутствует в самом начале диска (блок LBA 0) как для защиты, так и в целях совместимости.
...
Основная цель помещения MBR в начало диска чисто защитная. MBR-ориентированные дисковые утилиты могут не распознать и даже переписать GPT диски. Чтобы избежать этого, указывается наличие всего одного раздела, охватывающего весь GPT диск. Системный идентификатор (англ. System ID) для этого раздела устанавливается в значение 0xEE, указывающее, что применяется GPT. Вследствие этого EFI игнорирует MBR. Некоторые 32-битные операционные системы, например Windows XP, не приспособленные для чтения дисков, содержащих GPT, тем не менее распознают этот Системный идентификатор и представляют том в качестве недоступного GPT диска. Более старые ОС обычно представляют диск, как содержащий единственный раздел неизвестного типа и без свободного места; как правило, они отказываются модифицировать такой диск, пока пользователь явно не потребует и не подтвердит удаление данного раздела. Таким способом предотвращается случайное стирание содержимого GPT диска.
В GPT схеме нет ограничения на 4 записи о разделах, там может быть сколько угодно разделов, соответственно отпадает костыльная нужда в расширенных разделах и все разделы будут первичными. Еще один плюс GPT это дублирование - оглавление и таблица разделов записаны как в начале, так и в конце диска

Для желающих получить еще больше знаний о MBR и GPT я оставлю несколько ссылок:
MBR - https://ru.wikipedia.org/wiki/Главная_з ... ная_запись
GPT - https://ru.wikipedia.org/wiki/Таблица_разделов_GUID
Разница между ними - https://allerror.ru/zhelezo/v-chyom-raz ... diske.html
Сравнение GPT и MBR - https://habr.com/ru/post/327572/


Гибридная схема разделения диска GPT+MBR

Если немножечко подумать то на ум приходят странные мысли :D, например если в защитной MBR на GPT диске есть всего одна запись о неизвестном разделе, который покрывает весь диск и это не дает больше создавать разделы на диске, то можно ведь сделать 4 записи, вся таблица будет занята и мы достигнем той же цели - нельзя будет создавать новые записи. Думаем еще сильнее - можно ведь не просто создать какие попало записи, а отобразить эти 4 раздела на некоторые разделы GPT. Вот мы и пришли к мысли о гибридной схеме разделения диска. С виду выглядит красиво, но есть подводные камни - надо самому тщательно следить за синхронностью записей в GPT и MBR, иначе можно безвозвратно попортить содержимое диска.

Зачем нужна гибридная схема разделения диска

Как обычно, для всяких нестандартных ситуаций, для большей совместимости. О какой совместимости идет речь, ведь если диск стоит на компьютере совместимость ему не нужна, выбрал GPT или MBR и работай себе долго и плодотворно? А речь идет о загрузочных переносимых дисках, в первую очередь о USB накопителях, которые могут быть подключены как к компьютеру у которого UEFI, так и к компьютеру у которого BIOS, вы не сможете загрузиться с GPT накопителя на компьютере с BIOS. Это еще один аспект, который надо учитывать при создании мультизагрузочных USB флешек/дисков.

Разбор реального случая

Решил я себе сделать линукс на USB SSD диске, плюсов много, минусов мало. Купил в Китае M2 SATA SSD и USB 3.0 коробочку к нему и приступил. Тыкать такой USB SSD диск буду куда попало и поэтому нужна максимальная совместимость.

Первым делом надо разбить диск в GPT режиме, но тут есть одна тонкость - в начале диска надо создать специальный раздел, на который в будущем будет установлен GRUB для MBR. Будем использовать две утилиты gparted и gdisk (можно обойтись только утилитой gdisk, но gparted поудобней и наглядней). Примечание: не придирайтесь к размерам флешки и разделов, я для скиншотов взял мелкую пустую флешку.

1) Берем чистый диск и создаем на нем GPT схему разделов:
GParted -> Device -> Create Partition Table - GPT
Изображение

2) Создаем неформатированный раздел минимального размера (32МБ) для установки GRUB'а для загрузки в MBR режиме:
Изображение

3) Создаем FAT32 раздел для EFI загрузчика(ов), тоже небольшой (100-400 МБ):
Изображение

4) Ставим флаги на эти разделы (правый клик по разделы и manage Flags) на первый ставим флаги bios_grub, legacy_boot, а на второй boot, esp:
Изображение

5) На этом обязательная часть закончена, добавляем разделов для линукса по вкусу. У меня это FAT32 раздел для того чтобы этот диск можно было использовать как флешку на виндоуз компьютерах и разделы для установки линукса - корневой, домашний и свап. Вот так выглядит моя полностью законченная GPT разметка:
Изображение

6) Теперь на компьютере с EFI установим на эту флешку линукс.

7) Создадим гибридную защитную MBR схему разбиения диска.
Запустим sudo gdisk /dev/sdX (X замените на букву вашего диска) и мы увидим вот такое сообщение:
Изображение

команда p выведет GPT таблицу разделов:
Изображение
убедитесь что у вас стоят верные коды первых двух разделов (EF02 и EF00), при необходимости поправьте командой t

8\) Перейдем в меню recovery and transformation options (experts only) командой r и командой o выведем MBR таблицу разделов:
Изображение
мы видим тут одну запись - защитная запись об одном разделе на весь диск.

9) Вводим команду h - make hybrid MBR и вводим через пробел номера GPT разделов которые мы хотим отобразить в MBR таблице (в моем случае это 3 4 2 и затем команду o для вывода результата:
Изображение

Мы видим что в MBR таблице теперь 4 записи - первая соответствует разделу, который мы предназначили для MBR GRUB'а, вторая соответствует разделу с EFI загрузчиками, третья - FAT32 раздел для обмена файлами и четвертая - корневой раздел (и раздел с /boot нашего линукса).

10) Командой w сохраняем изменения на диск.

Теперь наш USB диск имеет гибридную схему разделения диска и почти готов для боевого использования.
Осталось только доустановить загрузчик для MBR компьютеров, это делается командой
sudo grub-install --target=i386-pc --recheck --boot-directory=/boot /dev/sdX
Возможно вам понадобится для этого добавить в систему GRUB для MBR командой sudo apt-get install grub-pc, эта операция скорее всего снесет из системы пакет GRUB для EFI (они конфликтуют), но после установки GRUB для MBR на диск можно вернуть пакет GRUB для EFI в систему.

Всё, диск готов к боевому применению и будет загружаться как на компьютерах с BIOS, так и на компьютерах с (U)EFI.

Когда нибудь при апдейтах системы, может потеряться синхронизация между GPT и MBR, в защитной MBR снова будет один единственный партишн на весь диск, но волноваться не стоит - диск по прежнему останется загружаемым, разве что старые виндоузы типа ХР перестанут видеть FAT32 раздел для обмена файлами. При желании просто пересоздайте гибридную разметку (пункты 7 8 9).

Аватара пользователя

zhart
Администратор
Сообщения: 1835
Зарегистрирован: 16 дек 2010, 13:09

Re: MBR, GPT, а можно гибрид? Да, можно!

#2

Сообщение zhart » 10 ноя 2019, 15:37

Ого...
serg666, спасибо большое за такой подробный разбор! :good:

Ответить