Grub2 MBR против Windows MBR

3547
NetWorker

У меня есть система HP, которая поставляется с установленной Vista, а также скрытый раздел восстановления. Впоследствии я обновился до Win7 (32 бит) Ultimate, а оттуда до Win7 Pro. Теперь жесткий диск выходит из строя. Мне удалось использовать partimage для захвата раздела восстановления (без ошибок), прежде чем я положил его на лед в рамках подготовки к восстановлению раздела Win7 на основе морозильной камеры.

На другом диске я создал 3 основных раздела и один расширенный раздел:

  1. Раздел восстановления (NTFS)
  2. Win7 раздел (NTFS)
  3. Ubuntu root (ext4)
  4. Ubuntu swap (ext4) (логический раздел)

Затем я установил Ubuntu 10.4 и разрешил grub2 установить MBR. Затем я использовал partimage, чтобы заполнить раздел восстановления образом, который я снял с неисправного диска. Теперь, прежде чем я попытаюсь восстановить раздел Win7, я хочу убедиться, что могу получить доступ к существующему разделу восстановления. И я не могу. Я вижу файлы, но не могу их загрузить. Grub видит это как раздел Windows и выводит его в меню. Но когда я пытаюсь загрузиться, я просто смотрю на пустой экран с мигающим курсором. Я попытался обойти grub, используя gparted, чтобы сделать раздел восстановления активным и загрузиться непосредственно с него вместо grub, но я все еще загружаюсь в grub.

Итак, на этом фоне позвольте мне задать свои вопросы.

  1. Насколько я понимаю, стандартный код MBR IBM / WIndows ищет в таблице разделов первый первичный раздел с установленным флагом active / boottable, а затем передает управление коду, найденному в начале этого раздела, или «загрузке раздела». запись "(PBR). Затем PBR находит NTLDR / BOOTMGR / grub / etc и загружает его. Правильно ли мое понимание?
  2. Где в процессе загрузки обрабатывается ключ прерывания (f11 в случае HP) для загрузки в раздел восстановления? MBR? PBR? Менеджер загрузки / загрузчик?
  3. Когда grub пишет MBR, он также использует оставшуюся дорожку 0, и код MBR выполняет этот код перед тем, как перейти к загрузке остальной части кода grub в любой раздел, в который он загружен (в моем случае, раздел 3). В этом смысле он игнорирует активный / загрузочный флаг в таблице разделов. Правильно ли я понял это?

Я явно упускаю некоторые части здесь, потому что я не могу загрузить раздел восстановления для загрузки. Я бы подумал, что команда grub "chainloader" (почему +1?) Просто исполняет код PBR. Если это правда, то что-то в моем разделе восстановления скрыто.

4
Я думаю, что если бы вы установили grub * после * заполнения раздела восстановления, он бы перечислил восстановление. В этом случае он не видел восстановления, потому что 1) вы не обновляли grub или 2) grub не сканировал дальше, когда обнаружил первый загрузочный раздел (то есть Windows 7, который вы ошибочно указали как второй). jiggunjer 8 лет назад 0

3 ответа на вопрос

3
Billy ONeal

В системах с таким разделом восстановления обычно активный раздел является разделом восстановления. Раздел восстановления отображает сообщение «Нажмите F11» и, если не нажимается, переходит к основному разделу ОС.

MBR по существу тупой; все, что он делает - это выбирает один из разделов и перенаправляет их в VBR этого раздела.

Если вам нужна двойная загрузка linux / windows, то раздел восстановления должен будет пересылать в раздел GRUB, который затем разрешит опции и перенаправит в Windows, если Windows будет выбрана.

Я бы не стал тратить время на раздел восстановления - вы можете получить все драйверы там с веб-сайта HP, и если у вас уже есть 7 на коробке, я думаю, что мы оба можем согласиться с желанием вернуться к Vista, маловероятно.

Итак, на ваши конкретные вопросы.

  1. Да, ваше понимание верно
  2. Ответил выше
  3. Не уверен, что конкретно GRUB делает при установке в MBR. Насколько я понимаю, это не совсем применило бизнес-логику, но я могу ошибаться.

Надеюсь, это поможет :)

Спасибо, Билли. Единственная причина, по которой я хочу получить раздел восстановления, - по причинам лицензирования, так как мой Win7 - это копия обновления, и если мне нужно переустановить, я подумал, что она может понадобиться (хотя я провел дополнительное исследование и понимаю, что могу этого не делать). Не уверен, какой был активный раздел в оригинальной сборке HP. Раздел восстановления был скрыт. Он никогда не отображал сообщение о нажатии F11, вы просто должны были знать. Я возьму MBR, когда вытащу его из криогенной камеры (между горохом и рулетами для пиццы). NetWorker 14 лет назад 0
Оказывается, основной раздел Win7 был первым разделом на диске, и он был активным. Так что не было загрузки в раздел восстановления. NetWorker 14 лет назад 0
0
Neal

Вопрос 3: Да, grub помещает часть себя в трек 0. Я лично никогда не помещал grub в mbr, я всегда использую «обычный» mbr и устанавливаю grub в основной раздел.

Будет ли проблема связана с использованием части диска, которая не помечена как используемая. Я считаю, что дисковый разделитель в Windows Vista и 7 ведет себя не так, как в предыдущей версии, но я не знаю, использует ли он запасные части дорожки 0.

Недавно я слышал о людях, у которых возникли проблемы, потому что пробная версия программы (Adobe что-то?) Записывает в эту область диска перезаписывающую часть grub (для того, чтобы помешать людям переустанавливать пробную версию снова и снова, я полагаю). (Послушайте недавний эпизод подкаста Ubuntu UK, чтобы узнать подробности). Я считаю, что если вы пишете в области, которые вам не принадлежат, вы не можете жаловаться на то, что другие люди делают то же самое.

Бит gbr mbr записывает адрес физического диска следующего этапа в свой собственный код и вообще не замечает разделы, активные или нет.

Привет, Нил. Я считаю, что старые разделители полностью оставили первый цилиндр в одиночестве, Vista + выравнивают разделы по границам 1 МБ, полностью игнорируя геометрию. Таким образом, разрыв MBR меньше, чем раньше. Я до сих пор не понимаю, почему, когда grub загружает VBR в раздел восстановления, он просто зависает. И я действительно хочу знать, где обрабатывается бит F11. Меня просто раздражает, когда я не могу понять это. Я стал одержимым. NetWorker 14 лет назад 0
0
Ken

MBR (1 сектор, 512 байт) содержит загрузочный код и таблицу разделов. Код MBR «по умолчанию» находит активный первичный раздел и загружает его по цепочке. (На языке GRUB +1 означает первый сектор, загрузочный сектор этого раздела.)

Когда вы устанавливаете GRUB в MBR, он заменяет код MBR по умолчанию (конечно, сохраняя таблицу разделов) и вместо этого загружает оставшуюся часть образа ядра GRUB, который установлен в «промежутке MBR» - предположительно неиспользуемой части Первая «дорожка», которая идет после сектора MBR. Если вы устанавливаете GRUB в раздел, он устанавливает его как загрузочный сектор; цепочка кодов MBR по умолчанию загружает этот загрузочный сектор GRUB.

Вот почему вы всегда используете GRUB - для этого был изменен код в MBR. Вы можете восстановить код MBR по умолчанию с некоторыми вариациями fixmbr.

Но в лучшем случае это только подтвердит, что ваш образ раздела восстановления хорош, и что вы можете получить к нему доступ через обычную MBR. На самом деле, если вы докажете, что ваш образ раздела восстановления плохой, возможно, именно поэтому он не работал через GRUB, и если бы он был хорошим, он бы работал. Так что может быть лучше, если вы сможете сделать хорошую копию.

Возможно, раздел восстановления не загрузится через GRUB по какой-то причудливой причине. Возможно, в оригинальной заводской MBR был какой-то особый соус, который был предпосылкой для раздела восстановления. У меня есть отказ от систем, в которых они были, поэтому я не могу предложить много понимания.

Спасибо Кену, это подтверждает другую информацию, которую я читал о том, как GRUB устанавливает себя. Я хотел избежать процесса загрузчика MS, если это возможно, потому что мне просто не нравится, как он работает. Я почти уверен, что у меня есть полная и целостная копия раздела восстановления, но его содержимое немного странно. Я не вижу bootmgr.exe, но у меня есть bootmgr и boo.mgr. Существует также каталог «boot» с файлом «bcd». Я сбросил VBR, и он кажется действительным, хотя выглядит так, как будто он был до Vista. Я говорю это, потому что строки ошибок содержат «NTLDR», а не BOOTMGR. Странный. NetWorker 14 лет назад 0
«Если вы устанавливаете GRUB в раздел, он устанавливает его как загрузочный сектор; по умолчанию цепочка кодов MBR загружает этот загрузочный сектор GRUB». Или только если вы обновите MBR, чтобы сделать это в случае нескольких загрузочных разделов. jiggunjer 8 лет назад 0

Похожие вопросы