Вопрос или проблема
Я использую Ubuntu на виртуальной машине VMware, которая использует BIOS. Я всегда думал, что системы BIOS используют MBR, но мой диск настроен с GPT. Это меня немного смущает, поэтому у меня есть несколько вопросов:
1- Почему моя виртуальная машина на базе BIOS использует GPT таблицу разделов?
Я знаю, что сам BIOS не заботится о таблицах разделов, так почему он использует GPT вместо MBR в моем случае?
2- Откуда загружается GRUB?
Загружает ли BIOS по-прежнему GRUB из MBR (первый сектор диска) или GRUB загружается из другой области, например, системного раздела EFI?
3- Что такое bios-grub в разделе /dev/sda1
? Что конкретно хранится в этом разделе размером 1 МБ?
root@linux:~# parted -l /dev/sda
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB bios_grub
2 2097kB 64.4GB 64.4GB ext4
Я искал в Интернете и даже читал связанные вопросы здесь, но не получил убедительного ответа. Я буду благодарен за любые объяснения.
Вы создали виртуальную машину, поэтому, вероятно, таблица разделов GPT была использована по умолчанию на вашем виртуальном диске, и поэтому она используется.
ОС была затем установлена в старом режиме BIOS, где загрузчик хранится в MBR. С старой таблицей разделов msdos следующие секторы содержат основное изображение Grub.
С таблицей разделов GPT загрузчик все еще находится в MBR, но следующие секторы зарезервированы для записей таблицы разделов. Поэтому создается небольшой раздел bios-grub для хранения основного изображения.
Посмотрите на эту статью в Википедии для более подробного объяснения.
Ответ или решение
Бутовая загрузка Ubuntu с GPT-диска на виртуальной машине, использующей BIOS, может показаться сложной задачей, поскольку традиционно считается, что BIOS работает с MBR (Master Boot Record), а не с GPT (GUID Partition Table). Давайте разберем каждый аспект этой ситуации, чтобы внести ясность.
Теоретическая часть
1. Использование GPT на системе с BIOS
Хотя BIOS традиционно ассоциируется с MBR, он в действительности не предъявляет требования к типу таблицы разделов. BIOS рассматривает данные низкого уровня так, чтобы загрузить первый программный модуль, который обычно содержится в MBR. GPT же, будучи более современным стандартом, обеспечивает ряд преимуществ по сравнению с MBR, включая поддержку более крупных дисков и большего количества разделов. GPT также имеет резервные копии важных данных таблицы разделов, что делает ее более надежной.
Причина выбора GPT
В вашем случае использование GPT может быть связано с несколькими возможными факторами:
- Настройки по умолчанию: При создании виртуальной машины VMware может по умолчанию использовать GPT, учитывая его преимущества и тенденции к отказу от MBR.
- Поддержка большого объема данных: Если виртуальный диск потенциально может расширяться за пределы 2 ТБ, разумно выбрать GPT.
- Универсальность: GPT широко используется на системах EFI, и выбор этой таблицы может быть сделан для унификации процессов на разных машинах и конфигурациях.
2. Загрузка GRUB
При использовании GPT на BIOS-базированной системе, загрузчик GRUB может быть установлен в несколько иной конфигурации. В отличие от EFI-систем, где GRUB загружается из EFI System Partition (ESP), в BIOS-системах GRUB должен загружаться из структуры, совместимой с указанной конфигурацией BIOS.
Технический процесс:
- MBR: В первом секторе диска по-прежнему содержится небольшая часть кода загрузчика (boot code), но он должен ссылаться на более объемный core image.
- bios_grub: Эта специальная область (например, /dev/sda1) создается для хранения основного кода GRUB. Она не имеет файловой системы и размером обычно менее 2 МБ.
3. bios_grub
bios_grub — это особенный маленький раздел, созданный специально для хранения основного компонента GRUB на системах с GPT. Он присутствует для обеспечения работы GRUB в среде BIOS с GPT-диском.
Пример
Предположим, у вас есть виртуальный диск размером 64,4 ГБ с GPT-разделами. Ваша текущая конфигурация выглядит следующим образом:
- /dev/sda1: 1049КБ, метка bios_grub. В этой зоне хранится загрузочный код GRUB.
- /dev/sda2: Основная часть диска отведена под файловую систему ext4 для операционной системы.
GRUB устанавливается в MBR, и его основной код располагается в bios_grub разделе, благодаря чему загрузка системы выполняется корректно.
Применение
Когда вы настраиваете или управляет виртуальными машинами, знание о том, как взаимодействуют BIOS, GPT и GRUB, поможет вам более уверенно управлять процессами загрузки. Следите за тем, чтобы bios_grub был на диске при использовании GPT, если ваша система поддерживает только традиционный BIOS. Также это знание позволит вам понять, как подстраиваться под требования различных виртуальных сред, ведь современные системы могут совмещать технологии ради более высокой совместимости и отказоустойчивости.
Таким образом, правильно настроенная bios-based система на GPT-диске может успешно функционировать и обеспечивать все преимущества, присущие более современным системам, при этом оставаясь в привычной BIOS-среде.