Мои проблемы возникли из-за путаницы и недостатка знаний. Я попытаюсь обобщить то, что я узнал здесь, в надежде, что кто-то найдет это полезным.
BIOS против оборудования UEFI
Когда вы включаете компьютер, он должен начать выполнять программу где-то. Обычно это ПЗУ на материнской плате, содержащее программу, долгое время эта программа называлась BIOS и функционировала определенным (несколько) стандартным образом. Помимо прочего, он контролировал некоторые аппаратные функции, но, что важнее всего, он передает управление ОС на некоторых других носителях четко определенным образом.
"Стандартная" программа BIOS была позже заменена на UEFI, которая имеет ту же самую цель (в основном) и в ней также есть метод передачи управления ОС на некоторых других носителях.
Загрузка BIOS
Когда BIOS загружается, он считывает первый сектор с основного загрузочного устройства, которое, как предполагается, содержит загрузчик, и начинает его выполнение. Этот первый сектор называется Master Boot Record (MBR). Предполагается, что диск использует схему разбиения DOS.
На старой схеме разбиения DOS (также иногда называемой MBR) для загрузчика в MBR зарезервировано колоссальные 446 байт программного пространства. Кому когда-нибудь понадобится более 446 байт амирита? Таким образом, более крупные загрузчики обычно используют "особенность" схемы разбиения DOS, где около 1-2 МБ или около того неиспользуемого пространства сразу же следует за MBR. Загрузчик будет иметь "этап 1" и "этап 2", где этап 1 хранится в MBR и просто загружает этап 2, который хранится в этой "неиспользуемой" области.
UEFI boot
При загрузке UEFI предполагается, что основное загрузочное устройство использует GPT, и ищет раздел с определенным типом, а именно: "Системный раздел EFI". Этот раздел предполагается FAT 12,16 или 32. Найдя его, он сканирует раздел на наличие загрузчиков, ища файлы с именами, оканчивающимися на .efi
.
Я обнаружил, что в контексте установки grub тексты, которые я читал, относились к процедуре загрузки UEFI как к простой UEFI, а к процедуре загрузки BIOS - как к BIOS. Что сбивало с толку, поскольку я думал, что они говорили о реальном программном обеспечении на ПЗУ материнской платы.
В любом случае материнская плата UEFI все еще может выполнять процедуру загрузки BIOS, обычно называемую "Legacy Boot" или CSM в настройках UEFI.
GPT и DOS/MBR
Хотя GPT сильно отличается от старой схемы разбиения MBR/DOS, он зарезервировал область, в которой будет находиться загрузчик на многораздельном диске MBR. Это означает, что вы можете установить "старый" загрузчик в это зарезервированное пространство в GPT и использовать загрузку BIOS. Однако есть предостережение, помните, что этап 1/2 вещь? Да, GPT не имеет этой "функции", а зарезервированный регион по-прежнему составляет всего 446 байт. Таким образом, для размещения этапа 2 загрузчика был введен специальный тип раздела: "bios_boot". Таким образом, загрузчик должен знать, что он устанавливается на диск GPT, найти раздел "bios_boot" и поместить туда этап 2, а этап 1 каким-то образом найти этот раздел.
Резюме
Есть три способа загрузки:
UEFI boot + GPT
Создайте раздел для размещения загрузчика (загрузчиков), 100 МБ или более должно быть более чем достаточно, установите его тип "Системный раздел EFI", отформатируйте его в FAT 12,16 или 32. Смонтируйте его где-нибудь, как правило, /boot/efi
. Затем скажите grub установить загрузчик EFI: grub-install --efi-directory=/boot/efi
.
UEFI boot должен найти раздел, посмотрев на таблицу разделов.
Мне сказали, что вы также можете использовать ESP для своего /boot, но я не пробовал.
BIOS boot + GPT
Создайте раздел для хранения этапа 2 загрузчика, обычно 1-2 МБ, и установите тип "bios_boot". Вам не нужно помещать файловую систему в этот раздел или монтировать ее, grub будет "владеть" ею и делать то, что ему нужно. Положение этого раздела на диске не имеет значения. Затем установите grub на MBR, как обычно, grub-install /dev/sdx
. Grub должен обнаружить, что это GPT-диск, найти загрузочный раздел BIOS (и пожаловаться, если это не так!) и установите соответствующий этап 1 и этап 2.
BIOS загрузки + MBR
Просто создайте схему разделов DOS на вашем диске и используйте grub-install /dev/sdx
для записи MBR, загрузочный раздел bios не нужен.
Загрузка вторичного накопителя с MBR с первичного накопителя с GPT
Итак, я обнаружил, что grub по какой-либо причине не позволяет загружать загрузчик BIOS из UEFI по цепочке. Я лично не понимаю, почему это было бы невозможно, но, по крайней мере, grub не поддерживает это.
Поэтому, чтобы исправить мои проблемы, я установил свой GPT-диск в качестве основного загрузочного устройства в настройках UEFI, а затем использовал загрузку BIOS для загрузки grub с устройства GPT, как описано выше. Это означает, что он может загружать Win7 из MBR на первом диске.