Windows на гибридной MBR / GPT

18890
Patches

Я думал, что наконец-то вернул Windows к жизни внутри виртуальной машины, но, увы, я столкнулся с некоторыми играми, в которые я хотел бы поиграть, но в этой настройке они просто не подходят. В те дни, когда Windows в последний раз занимала свой собственный указанный кусок моего диска, я много раз переключался между различными ОС и дистрибутивами Linux, и оказалось, что, когда у меня было свободное место, я был на максимальном количестве поддерживаемых разделов по таблицам разделов MBR . Итак, полагая, что в 21-м веке он должен работать именно здесь, и проведя краткий анализ Google, который показал, что он должен работать, я перешел на таблицу разделов GUID (GPT) и попытался установить Windows 7. Вот и все, Windows 7 работает только с GPT в системах EFI, а мой использует BIOS. яЯ должен был заметить это в моих предыдущих исследованиях, но это было бы слишком просто.

Итак, у меня есть выбор: вернуться обратно в MBR и попытаться изменить структуру разделов так, чтобы я мог создать один для Windows или использовать гибридную MBR . Последнее звучит более привлекательно. К сожалению, в Интернете есть много страшных предупреждений о гибридных MBR, поэтому у меня есть несколько вопросов.

Будет ли Windows делать что-то уродливое с моим загрузчиком, так как он действительно на GPT, но будет видеть MBR? Это потребует большего ремонта, чем загрузка с LiveCD и запуск grub-install? Есть ли что-то, что мне нужно избегать, кроме как убедиться, что я никогда не касаюсь инструментов разбиения в Windows? Мой компьютер взорвется? Будет ли много головных болей, если я просто вернусь к MBR? (Я понимаю, что Mac используют гибридные MBR с Boot Camp, так что, надеюсь, это будет не так сложно, как я думаю).

7

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

7
JdeBP

Нет необходимости возвращаться к схеме разбиения MBR, и даже нет необходимости в схеме разделения "гибридного MBR". (У меня есть такие на одной из моих машин, и подтверждаю, что они не для слабонервных.)

Windows 7 может нормально использовать EFI-разделенные диски. Он просто не может быть загружен с них на компьютерах, не поддерживающих EFI, и (чтобы защитить вас от себя, в стиле Microsoft) отказывается устанавливать на них в первую очередь. В вашем случае ваша проблема - это фундаментальный недостаток вашей прошивки, и на самом деле это не проблема Windows . Ваша прошивка не понимает таблицу разделов EFI.

Такое понимание необходимо, если кто-то хочет преобразовать загрузочную версию своей операционной системы в разделенные диски EFI. Необходимо знать прошивку, чтобы открыть меню диспетчера загрузки EFI, а затем загрузить выбранную программу загрузки операционной системы из системного раздела EFI . Однако ваша прошивка не очень умная и не знает, как сделать гораздо больше, чем загрузить «основную загрузочную запись» и запустить ее загрузочный код. На многораздельном диске EFI в основной загрузочной записи нет кода, который можно было бы запустить до конца процесса загрузки EFI.

В лучшем случае, прямо сейчас, у вас есть код начальной загрузки MBR, который в равной степени так же не знает о схеме таблиц разделов EFI, как и ваша прошивка, и он ожидает найти и обработать таблицу разделов MBR. Что вам нужно, это две вещи:

  • иметь загрузочный код MBR, который знает, как читать таблицу разделов EFI, и найти загрузчик второго уровня, который также поддерживает таблицы разделов EFI и который позволит вам, в свою очередь, загружать и запускать загрузчики операционной системы
  • какой-то способ убедить Windows 7 установить на разделенный диск EFI

Первое не невозможно. Существует два источника таких загрузочных загрузок MBR с поддержкой EFI-разбиения:

  • Я написал и опубликовал один (после того, как этот ответ был впервые написан, на самом деле).
  • Так называемый "GPT" MBR Boostrap в SYSLINUX, написанный Х. Питером Анвином, является другим.

Оба будут искать «активный» раздел, загружать и запускать его VBR, эффективно загружая старый PC / AT и PC98, но с таблицей разделов EFI. Если эти два не удастся, лучшими альтернативами, которые вы получите прямо сейчас, являются:

  • GRUB 2 : К сожалению, это все еще основано на вставке аппаратных цифр в код начальной загрузки MBR, чтобы сообщить ему, где найти следующую часть его загрузчика. Но этот второй этап, после загрузки и запуска, полностью способен понимать таблицу разделов EFI и запускать загрузчики операционной системы изнутри разделов. Однако он не знает, как запускать загрузчики операционной системы EFI, он знает только, как справиться с VBR, Linux и BSD.
  • UEFI DUET: ( Род Смит обсуждает это подробно. ) Опять же, к сожалению, несмотря на то, что он устанавливается в том и вызывает полностью работоспособный EFI Boot Manager и EFI Shell, ему все равно нужно что-то еще для загрузки и запуска VBR. И прямо сейчас, что-то еще должно быть чем-то вроде GRUB2, которое само полагается на номера проводных секторов в коде MBR, или на SYSLINUX, или на самом деле на мою загрузочную запись MBR, поддерживающую разделение EFI. Но вы сможете запускать правильные загрузчики операционной системы EFI.

Второе (убедить Windows 7 установить на многораздельный диск EFI) достижимо, по крайней мере, с x86-64 разновидностью Windows 7. Он сложный, официально не поддерживается Microsoft и требует создания своего собственного установочного диска Windows с EFI-версией Microsoft Boot Manager на нем и запуска его изнутри загрузочной среды EFI. (Если у вас установлен UEFI DUET, это, конечно, довольно просто.) Но он убеждает Windows 7 в том, что его установщик был загружен в систему EFI, и этот критерий использует установщик, чтобы определить, позволит ли он устанавливать Windows на EFI разделил жесткий диск.

Конечно, есть дополнительная, заключительная, сложность после установки загрузки Windows 7 изо дня в день; потому что установщик, зная, что у вас есть прошивка EFI, установит версию EFI менеджера загрузки Microsoft. Таким образом, вам понадобится либо:

  • установить PC / AT-версию Microsoft Boot Manager и договориться, чтобы GRUB2 знал, где она находится, если вы используете GRUB2; или же
  • всегда загружать UEFI DUET и запускать версию EFI Microsoft Boot Manager оттуда.

Практически вся эта ерунда просто исчезнет, ​​если в первую очередь будет установлена ​​прошивка EFI. Windows 7 (x86-64) будет успешно установлена, и EFI Boot Manager, который понимает таблицу разделов EFI и будет загружать и запускать Microsoft Boot Manager (а также любую другую EFI-загружаемую операционную систему) непосредственно из файла обычного образа программы в системном разделе EFI, поставляется с прошивкой.

Из интереса, почему вы называете разметку разделов «разделением EFI», а не GPT (таблица разделов GUID) или GPT-стиль? Так как вы, кажется, довольно разборчивы в терминологии, мне интересно узнать, почему вы избегаете называть это разделением GPT или GUID. Milind R 10 лет назад 0
Так вы говорите, что после установки в режиме UEFI Windows может снова вернуться к загрузке с нее в режиме ПК / АТ? Тогда почему этот стандартный совет не для тех, кто хочет использовать Windows в более современном стиле разметки, но не имеет встроенного программного обеспечения EFI? Milind R 10 лет назад 0
5
Rod Smith

Есть несколько возможных решений этой проблемы. Подводя итог, в более или менее моем порядке предпочтений:

  • Обновите материнскую плату. Если у вас есть материнская плата с функциями загрузки UEFI, все будет настроено, поскольку вы сможете установить Windows в режиме UEFI. Большинство (возможно, все) платы на базе Intel Sandy Bridge поддерживают UEFI, хотя некоторые не рекламируют этот факт. Многие новые платы AMD также поддерживают UEFI. На самом деле, есть шанс, что у вас уже есть такая доска. Многие платы Intel, проданные за последние несколько лет, имеют опцию загрузки UEFI, скрытую на экранах настроек CMOS. Вы можете попробовать поискать такую ​​опцию. Возможно, вам придется использовать режим UEFI для всех ваших операционных систем. К счастью, Linux довольно легко конвертируется и может переключаться назад и вперед без переконфигурации, если он настроен на загрузку в любом случае. Обратите внимание, что для установки Windows в режиме UEFI вам потребуется 64-разрядная версия Vista или 7.
  • Используйте второй жесткий диск - вы можете установить Windows на MBR-диск и оставить Linux на GPT-диске. Вы даже можете разместить разделы данных Windows на GPT-диске, если хотите (при условии, что вы используете Vista или 7); только загрузочный диск Windows должен быть на MBR. Даже если у вас есть какой-то старый диск объемом 20 ГБ, вероятно, достаточно держать раздел Windows C: и вы можете поместить свои программные файлы Windows в раздел GPT, если вы используете Vista или 7.
  • Конвертировать в MBR - это можно сделать с помощью GPT fdisk (gdisk), но с некоторыми оговорками. В частности, у вас должен быть по крайней мере один свободный сектор перед каждым логическим разделом, который вы хотите создать, и все логические разделы должны быть смежными. Если ваш текущий диск не соответствует этим спецификациям, вы либо потеряете разделы при преобразовании, либо вам придется изменить размер некоторых разделов, чтобы создать необходимые промежутки. Существует также некоторый риск потери данных, особенно если вам нужно изменить размер разделов.
  • Используйте UEFI DUET - как предложено JdeBP (и ссылка на мою страницу по теме ), UEFI DUET является возможностью. ИМХО, недостатки этого подхода не так велики, как предполагает JdeBP, ЕСЛИUEFI DUET даже загружается в вашей системе. (Шансы хороши, если у вас 64-разрядный процессор Intel, менее хороши на 64-разрядных процессорах AMD, и он не будет работать вообще на 32-разрядных процессорах.) Вы должны быть осторожны и иметь хороший Не забывайте про технические неполадки, чтобы попробовать это. Вы можете сделать некоторые предварительные исследования с USB-накопителем; установите UEFI DUET и посмотрите, сможете ли вы загрузить его. Если он загрузится, вы, вероятно, сможете заставить Windows устанавливать и загружаться, даже на регулярной основе, хотя есть и подводные камни, как отмечено на моей странице по этому вопросу. После настройки UEFI DUET становится, по сути, довольно большим загрузчиком GPT для Windows.
  • Используйте виртуализацию - это не совсем то, о чем вы просите, но вполне возможно, что Windows будет работать приемлемо на виртуальной машине. Что касается игр, я немного скептически отношусь к тому, что вы получите необходимую производительность, но, возможно, стоит попробовать.
  • Hybrid MBR - Вы можете настроить это и установить Windows в гибридный раздел. Windows уничтожит ваш текущий MBR-резидентный загрузчик, поэтому будьте готовы переустановить его. Лично я не рекомендую это решение, так как гибридные MBR опасны. Однако, если все остальные параметры не будут выполнены, возможно, это означает отказ от Windows.

Я также хотел бы прояснить пару заблуждений:

  • Неспособность Windows загружаться из GPT на компьютере на базе BIOS, безусловно, является ограничением Windows, а не ограничением встроенного программного обеспечения (BIOS). Linux, FreeBSD и некоторые другие ОС могут нормально загружаться с GPT-дисков на компьютерах с BIOS. Я не знаю, почему Microsoft не хочет поддерживать загрузку Windows из GPT на компьютерах на базе BIOS, но они, безусловно, могли бы сделать это, если бы захотели. Если не что иное, они могли бы взять реализацию UEFI, обрезать ее до самого необходимого и использовать в качестве загрузчика.
  • Загрузчик SYSLINUX GPT не использует жестко закодированные значения секторов; у него достаточно смарта, чтобы прочитать GPT и перейти к разделу с установленным флагом Legacy BIOS Bootable. Не то, чтобы с жестко кодируемыми значениями секторов что-то было не так, как в GRUB 2; Два решения имеют разные преимущества и недостатки.
Я узнал о загрузке MBR с поддержкой SYSLINUX EFI через некоторое время ** после того, как ** я нашел предложение T13, написал собственный загрузчик MBR с нуля, который читает таблицу разделов EFI, и опубликовал его в мире в 2011-06 гг. -26; все это, в свою очередь, было после того, как я написал ответ выше и заметил пробел, который нужно было заполнить. Я должен действительно обновить свой ответ здесь, чтобы отметить, что я один из двух людей в мире, которые до сих пор заполнили этот пробел. ☺ JdeBP 13 лет назад 3
Значения жестких кодов секторов делают процесс загрузки чрезвычайно хрупким, что приводит к ужасной подсказке спасения grub даже для малейшей модификации разделов. Я испытывал это много раз, и это на какое-то время оттолкнуло меня от Linux, пока UEFI не сделал его устойчивым. Milind R 10 лет назад 0
Syslinux не использует жестко закодированные значения секторов, но из моего прочтения ассемблерного кода он опирается на жестко закодированный * GUID раздела *. Похоже, что это не так с MBR-кодом @ JdeBP для GPT-дисков. Milind R 10 лет назад 0
0
Milind R

If you even have a small MBR drive, you can do it without either hack. It will work even with Windows 32 bit. A floppy or USB stick will do.

Boot into the Windows install/repair disc. Create the system drive on the stick, and use bcdboot to put your boot files on the stick. Add a bootsector with bootsect. Change the device to boot. Boot from stick.

Steps are detailed here.