3

Итак, у меня есть UEFI-совместимая материнская плата и три жестких диска:

  • /dev/sda - 256 ГБ SSD (MBR)
  • /dev/sdb - 230G HDD (MBR)
  • /dev/sdc - 512G SSD (GPT)

По историческим причинам sda и sdb имеют таблицы разделов MBR и являются более старыми дисками. На диске sda есть работающая установка Windows 7, которую я очень хочу сохранить, в то время как sdb содержит большие данные, которые я тоже хочу сохранить ... Архивы и видео и тому подобное.

Накопитель SDC - это новый накопитель, который я купил и разбил на разделы с помощью диспетчера дисков Windows, чтобы потом иметь половину для Windows и половину для Linux с двойной загрузкой. Я не обращал внимания, когда разбивал его, и он создал таблицу разделов GPT и зарезервированный раздел Microsoft. Прошло время, и sdc теперь содержит много данных, с которыми я бы предпочел не связываться, и пришло время установить Linux с двойной загрузкой.

Поскольку таблица разделов - GPT, Grub2 хочет системный раздел EFI (ESP) во главе диска (который занят MSR) и фактически отказывается от установки.

Итак, мои вопросы:

  1. Могу ли я сбросить MSR с орбиты на сэндвич в ESP и, возможно, /boot? Мой Win7 загрузился нормально до того, как был установлен жесткий диск, поэтому я не вижу, как это повлияет на что-либо.
  2. Если я изменю свой порядок загрузки, чтобы использовать UEFI и загрузиться с sdc, он загрузит grub, сможет ли grub загружать цепочку из MBR на sda (оставляя sda неизменным)?

(Пояснение: меня не беспокоит пространство, которое использует MSR, просто для ESP я бы хотел попасть туда, чтобы я мог загрузиться)

1 ответ1

3

Мои проблемы возникли из-за путаницы и недостатка знаний. Я попытаюсь обобщить то, что я узнал здесь, в надежде, что кто-то найдет это полезным.

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 на первом диске.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .