Вопрос или проблема
Я хотел бы узнать, есть ли способ установить Windows 7 или Windows 8 Developer Preview на GPT-диск в моей традиционной конфигурации BIOS IBM PC. Windows 7, конечно, отвергает мой GPT-раздел, поскольку у меня нет UEFI. Что ж, Debian и Grub 2, похоже, работают нормально… Так что я хочу узнать, есть ли способ заставить Windows также работать.
Я бы серьезно предпочел избежать гибридного MBR/GPT, потому что это довольно хрупко и кажется хакерским, но это работает. Я предполагаю, что основной причиной является то, что Microsoft просто не добавляет поддержку для GPT в своем BIOS-загрузчике, что, я полагаю, вполне понятно. Есть ли какие-либо варианты?
С точки зрения решения проблемы, я вижу несколько потенциальных решений:
- Иметь альтернативный загрузчик для ядра Windows. НЕТ цепочного загрузчика. Насколько я знаю, они не существуют. Это жаль.
- Хранить как можно меньше на альтернативном MBR-диске. Мне не нравится эта идея, но это выполнимо. Я не уверен, что назову это решением проблемы, скорее обходным путем.
- Эмулировать EFI достаточно, чтобы загрузчик EFI заработал… Я помню, что слышал немного о эмуляторе UEFI на BIOS, но сейчас не могу найти ничего об этом. Я предполагаю, что это возможно, но вероятно, что на это пока нет большого спроса, и настраивать это, вероятно, не очень весело. GRUB 2, похоже, может загрузить hackintosh с необходимой эмуляцией EFI, но я думаю, что интереса нет/UEFI 2 труднее подступиться (и я предполагаю, что другие эмуляторы EFI, используемые для hackintosh, находятся в той же ситуации.)
- Coreboot с TainoCore. Coreboot не работает на моей материнской плате (насколько я знаю), и я вполне уверен, что последняя попытка сделать это во время GSoC была неудачей. Я бы с удовольствием воспользовался этим решением, если бы оно работало.
Что-то я упускаю?
Что ж, с тех пор, как я впервые задал этот вопрос, многое изменилось. Во-первых, мой ПК теперь на UEFI, так что у меня больше нет этой проблемы. Ну, почти. Меня заинтересовал процесс реализации подобной схемы на моем ноутбуке (GPT-разделы и т. д.) Я наконец смог настроить рабочую конфигурацию Tianocore UEFI DUET, и это оказалось практически болезненно просто!
Это предполагает, что вы хотите все блестящие, новые настройки. Если вы хотите на самом деле преобразовать вашу старую настройку, удачи. На самом деле, удачи вам в любом случае, поскольку это рискованная операция в любой ситуации.
Слово предостережения: если вам нравятся быстрые времена загрузки, вы возможно захотите переосмыслить это решение. Не то чтобы UEFI DUET был медленным, но он добавляет еще одну стадию в ваш процесс загрузки, так что если ваш BIOS/POST не быстрый, вам это может не понравиться.
Без лишних слов:
-
Вам понадобится Linux-система. Я использовал Fedora 16 с USB-накопителя (с UNetBootin) и настоятельно рекомендую это, потому что она практически работает из коробки. В любом случае, вам нужен USB-накопитель, так что не планируйте продолжать без него.
-
Скачайте сборки UEFI DUET. Безусловно, лучшее место для этого здесь. Фактические сборки находятся под основной веткой первого репозитория, здесь. Дайте ему старое
tar -xf
. -
Настройте ваши разделы. Вам нужно выделить 200 МБ где-то на диске (наилучшим образом в начале, как первый раздел). Вы можете форматировать его в FAT32, но мы будем переформатировать его позже. Просто убедитесь, что он отображается как раздел. Здесь лучше использовать GPT.
-
Теперь установите любое дополнительное программное обеспечение, которое вам нужно. В дистрибутиве Fedora Live я обнаружил, что мне нужно
yum install gdisk
. Думаю, на этом все. -
Теперь перейдите в директорию с извлеченными сборками.
chmod +x ./duet-install
и./duet-install -64 -F -m /dev/sda1
(где/dev/sda1
— это ваш желаемый EFI системный раздел). -
Скрестите пальцы и перезагрузитесь. С удачей вы увидите логотип TianoCore через несколько мгновений. Если так, то у вас, вероятно, все в порядке! Вам нужно будет настроить файлы установки операционной системы на USB-накопителе – Tianocore не поддерживает CD-ROM/DVD-ROM из коробки (и я не знаю о любом драйвере для этого).
Вы также можете пожелать некоторые бинарные файлы UEFI shell для экспериментов. Я нашел некоторые здесь. Хотя еще не тестировал с Tianocore.
В любом случае, спасибо всем, кто попытался помочь.
Мне удалось загрузить Windows 8.1 на GPT-диск в конфигурации BIOS БЕЗ второго MBR-диска.
История такова: мой ноутбук работал на конфигурации BIOS + GPT, с установленным только Arch Linux. Недавно мне нужно было выполнить некоторые задачи в Windows (которые виртуальные машины не могут), поэтому я изо всех сил пытался установить Windows на существующей конфигурации BIOS + GPT. Согласно ответу Милинда, мне удалось установить файлы загрузки Windows (Boot, bootmgr и т. д.) на (маленький) MBR USB-диск. И каждый раз, когда я включаю ноутбук с подключенным USB-диском, я могу загрузиться в Windows 8.1, после чего диск можно безопасно отключить.
Недостаток очевиден: мне нужно носить с собой USB-диск, чтобы загрузить Windows. Я всегда пытался избавиться от него.
После попыток с различными методами я наконец нашел, что модуль memdisk проекта syslinux сработал.
- Вам нужно отказаться от диспетчера загрузки Windows.
- Вам не нужно устанавливать syslinux. Нужен только memdisk модуль (файл размером 26 кБ).
- Вы можете использовать множество загрузчиков для загрузки этого модуля, в моем случае это мой любимый загрузчик GRUB (версия 2).
Вот общий план, как это сделать:
- Разделите ваш GPT-диск в соответствии с требованиями GRUB, то есть создайте маленький раздел для встраивания core.img. Детальная ссылка
- Установите GRUB на этот маленький раздел.
- Установите Windows с помощью
imagex
.И используйте.bootsect
иbcdboot
, чтобы установить файлы загрузки Windows на маленький MBR USB-диск. Используйтеdd
илиdd_rescue
, чтобы клонировать ваш маленький USB-диск в образ диска. (Ваш USB-диск выполнил свою задачу.) Образ может быть слишком большим для загрузки memdisk, вы можете примонтировать его и уменьшить файловую систему / раздел в нем.- Согласно моим тестам, вам не нужен физический MBR-диск для установки файлов загрузки Windows. Вы можете создать файл vhd и рассматривать его как физический диск.
После установки файлов загрузки Windows на vhd вы можете конвертировать его в образ диска в формате raw (стиль dd), используя инструменты, предоставленные VirtualBox или QEUM.Когда файл vhd создан сtype=fixed
, он просто нормальный образ диска в формате raw (стиль dd) с заголовком 512 байт. Заголовок будет распознан как “неразмеченное пространство” и будет игнорироваться, так что файл vhd сtype=fixed
можно напрямую подавать в MEMDISK без конвертации и, таким образом, загружать Windows. - Настройте GRUB для использования memdisk для загрузки этого образа диска.
- Windows загрузится.
Подробная инструкция доступна в моем ответе на reboot.pro в теме Милинда.
Если у вас есть маленький запасной диск, вы можете загрузить Windows (как 32, так и 64 бита) с GPT на BIOS. Подойдет и флоппи.
Загрузитесь с установочного/восстановительного диска Windows.
Создайте системный диск на маленьком диске/флоппи и используйте bcdboot
, чтобы разместить ваши загрузочные файлы на только что созданном диске. Добавьте загрузочный сектор с помощью bootsect
. Измените {bootmgr}
device
на boot
. Загрузитесь с маленького диска.
Шаги детализированы здесь.
Большое спасибо wzyboy.
Я столкнулся с этой проблемой, когда пытался установить Windows 2012 на Dell PowerEdge 2950 с 6Tb RAID. У него нет UEFI.
Я провел несколько экспериментов. Сначала я создал 32MB виртуальный HDD, как сказал wzyboy, и просто скопировал все данные с зарезервированного раздела Microsoft. Windows запускался нормально. Но с этим решением служба Hyper-V не могла стартовать.
Как говорит вики memdisk, он автоматически определяет по размеру образа, какой тип носителя ему нужно эмулировать. Так что я создал виртуальную флоппи на 720K в окружении WMware и скопировал в нее bootmgr, BCD и bootstat.dat (на всякий случай, удалил подменю memtest из BCD хранилища). Размер флоппи я выбрал как можно меньше, так что он может быть и больше, и даже меньше, я не пробовал.
Теперь он загружается с GPT-диска, и Hyper-V работает нормально.
P.S. возможно, стороннее программное обеспечение поможет. Кто-нибудь использовал что-то подобное? https://www.terabyteunlimited.com/bootit-bare-metal.htm
Статья A BIOS to UEFI Transformation подробно описывает, как использовать TainoCore UEFI DUET.
Я понимаю, что у вас были проблемы с использованием TainoCore, но, возможно, эта статья подойдет вам.
В статье говорится:
Некоторые компьютеры не работают с UEFI DUET. Прежде всего, он действительно полезен только на 64-битных x86-64 компьютерах, особенно в бинарной форме. Фактически, он даже не запускается правильно на некоторых x86-64 компьютерах. В тестах на пяти x86-64 системах мне удалось заставить работать одну или обе версии только на трех компьютерах — довольно печальный уровень успеха, на самом деле. Возможно, это просто совпадение, но два компьютера, которые работали лучше всего, имели процессоры Intel, тогда как два, которые работали хуже, и один, который работал с версией 2.1, но не с версией 2.3, все имели процессоры AMD.
Это наводит на мысль, что стоит попробовать несколько версий UEFI DUET, прежде чем сдаваться.
Было бы полезно знать модель вашего компьютера.
Люди должны помнить, что не все прошивки BIOS могут работать с GPT-диском. У меня есть USB Seagate 4Tb диск, который с завода был GPT, и ни один из моих двух компьютеров не загружался с подключенным диском к USB-порту.
Машины зависают на экране меню F2 Ввод Настройки F10 Загрузка, и всё, что можно сделать в этот момент, — это выключить питание и снова включить.
Как только я конвертировал диск в MBR, что убивает около 2Tb пространства на диске, обе системы загружаются в ОС как обычно с подключенным диском.
Я ищу патч BIOS для исправления этой проблемы.
Практически единственное препятствие для загрузки Windows 7 (и более поздних версий) на системе BIOS/GPT заключается в том, что BOOTMGR не может найти файл данных конфигурации загрузки (BCD), когда он расположен на GPT-разделе. Как только BCD считывается, раздел ОС легко определяется, и загруженная система правильно получает доступ к дискам GPT. Фактически, чем больше вы копаетесь, тем глупее становится: основная часть BOOTMGR (которая показывает меню и фактически загружает NT-ядро и базовые драйверы в память) полностью понимает разметку GPT, но часть загрузки, которой обычно передается управление от загрузочного сектора, всегда будет сообщать основной части, что она была загружена с MBR-раздела. Таким образом, загрузчик всегда будет искать MBR-раздел на диске с разметкой GPT.
Короче говоря, BOOTMGR может свободно читать GPT-разделы даже на системе BIOS: просто, что точка входа по умолчанию не имеет возможности сообщить, что она только что была загружена с одного из них.
Одним из способов обойти это, если у вас есть загрузчик, способный загружать ядра Linux, является использование wimboot из проекта iPXE. Хотя он рекламируется как инструмент для сетевой загрузки файлов .wim
, на самом деле это просто обертка вокруг BOOTMGR, которая предоставляет последнему виртуальную FAT файловую систему, из которой он может получить доступ к хранилищу BCD; она вполне использует locally, без сетевой загрузки, любым загрузчиком, поддерживающим формат bzImage. Для выполнения своей задачи wimboot должен быть обеспечен образом cpio в формате newc (без контрольной суммы SVR4), содержащим как минимум BOOTMGR и BCD.
Следующие инструкции предполагают использование GRUB2; адаптируйте их к вашему загрузчику по мере необходимости.
-
Получите последнюю версию wimboot.
-
Подготовьте как Windows RE, так и Linux (например, SystemRescue) загрузочные носители.
-
Загрузитесь в Linux, чтобы преобразовать таблицу разделов: используйте
gdisk
или другой инструмент, чтобы преобразовать вашу MBR-таблицу разделов в чистую GPT. (НЕ используйте гибридный MBR; любые записи разделов MBR, кроме защитной записи GPT, повлекут за собой то, что Windows будет считать ваш диск разделом MBR.) Убедитесь, что у вас есть раздел для BIOS-загрузки и установите GRUB2 в него. Скопируйте wimboot в доступное GRUB-расположение. -
Загрузитесь в Windows RE для подготовки хранилища BCD: используйте
bcdedit
, чтобы убедиться, что все свойства устройства (свойства записиdevice
,osdevice
,filedevice
,ramdisksdidevice
и, вероятно, другие) указывают на ваш фактический конкретный том диска, например,partition=C:
илиramdisk=[C:]\...
. Если у определенной записи значения свойств равныboot
или, что еще хуже,unknown
, исправьте их следующим образом:bcdedit /store c:\boot\bcd /set {default} device partition=c: bcdedit /store c:\boot\bcd /set {default} osdevice partition=c:
Предпочтительно делать это не только для основной загрузочной записи (
{default}
), но и для записей инструментов диагностики и гибернации по мере необходимости; используйтеbcdedit /store c:\boot\bcd /enum all
, чтобы увидеть их. Если ваше хранилище BCD содержит записи, ссылающиеся на файлы из нескольких разделов, вам придется вручную убедиться, что каждая запись указывает на правильный раздел.Причина, по которой вы должны это сделать, заключается в том, что wimboot рассматривает виртуальную FAT файловую систему, которую он предоставляет BOOTMGR, как устройство загрузки. Поэтому любые ссылки на “устройство загрузки” изнутри BCD теперь будут ссылаться на виртуальную файловую систему, а не на раздел, где Windows фактически установлена. Более того, если любая запись ранее ссылалась на MBR-раздел на диске, то, преобразовав диск, вы недействительно указали эту ссылку, и вам нужно обновить ее, чтобы она указывала на GPT-раздел, чтобы она продолжала работать.
Вам придется повторять этот шаг каждый раз, когда раздел ОС Windows изменит свой UUID, хранящийся в GPT; желательно, чтобы это происходило только при разделении диска с нуля, но для безопасности вы можете выполнять это после любой переработки разделов.
-
Добавьте запись меню wimboot в GRUB. Следующее использует встроенную поддержку cpio GRUB для динамической сборки архива. Для других загрузчиков вам, возможно, потребуется вручную собрать отдельный архив cpio (не забудьте использовать опцию
-Hnewc
) и убедитесь, что он содержит свежий BCD, и пересоздавать его каждый раз, когда вы обновляете BOOTMGR и/или BCD.menuentry "Windows 7" { set color_normal=white/black terminal_output console linux16 /boot/wimboot rawbcd search --fs-uuid --set=root [идентификатор тома] initrd16 \ newc:bootmgr:/bootmgr \ newc:BCD:/Boot/BCD boot }
Настройте регистр букв при необходимости, чтобы соответствовать файловой системе.
-
Вы закончили: перезагрузитесь в свой загрузчик. Сравнительно с обычной загрузкой MBR, вы можете испытать некоторые косметические изменения (анимация загрузки может быть другой, BOOTMGR может отображать все на английском языке и/или не может отображать меню в графическом режиме), но кроме этого Windows должна иметь возможность запускаться нормально. Эти проблемы можно исправить, настроив образ cpio, чтобы включить шрифты (
/Boot/Fonts
) и.mui
файлы перевода (/Boot/??-??/*.mui
), и передавgui
параметр командной строки ядра загрузчикуwimboot
.
В принципе, должно быть возможно загрузить BOOTMGR и передать ему параметры, указывающие на поиск BCD на GPT-разделе, но на момент написания я не знаю о существовании какого-либо публичного программного обеспечения, способного это сделать.
Ответ или решение
Установка и загрузка Windows 7/8 на GPT-диск с использованием BIOS: полное руководство
Введение
Попытка установить и загрузить Windows 7 или 8 на GPT-диск в системе с традиционной BIOS может показаться сложной задачей, особенно учитывая ограничения, накладываемые Microsoft на загрузку с GPT на BIOS. Тем не менее, есть несколько обходных путей и методов, которые могут помочь реализовать это решение. В данной статье мы подробно рассмотрим возможные варианты, а также приведем пошаговые инструкции.
Проблема загрузки Windows на GPT
Как вы уже знаете, BOOTMGR Windows может работать с GPT-дисками, однако он не может их обнаружить, если загрузка осуществляется непосредственно через BIOS. Scroll на параллельное существование системы с MBR и GPT в режиме BIOS является ненадежным и иногда даже рискованным подходом.
Возможные решения
Определим основные шаги и методы, которые могут использоваться для успешной загрузки Windows 7/8 на GPT-диск:
-
Использование альтернативного загрузчика: Хотя это и не является универсальным решением, использование GRUB2 или Syslinux может помочь создать загрузочную среду, которая будет работать с GPT. Вы можете использовать модуль memdisk от проекта syslinux для загрузки Windows.
-
Создание MBR-диска: Использование небольшого MBR-диска для хранения необходимых файлов загрузки Windows (например, bootmgr) может обеспечить более надежную работу. Этот метод, хотя и требует дополнительных действий, имеет относительно высокую стабильность.
-
Эмуляция UEFI: Установив Tianocore UEFI DUET на ваш BIOS, вы сможете создать эмуляцию UEFI, что даст возможность загружать Windows с GPT-диска. Однако стоит отметить, что подобная конфигурация может быть нестабильной и требует тщательной настройки.
-
Использование wimboot: Эта опция включает в себя использование wimboot для создания виртуальной файловой системы, что позволяет BOOTMGR находить и загружать необходимые файлы с GPT-диска. Этот метод требует наличия GRUB2 или другого загружаемого программного обеспечения, и его реализация может быть сложной.
Подробные шаги для загрузки Windows с GPT на BIOS
Давайте подробнее рассмотрим один из методов — использование memdisk от Syslinux в сочетании с GRUB2:
-
Подготовка: Убедитесь, что у вас имеется Linux-система для начальной установки. Рекомендуется использовать Live-образ, например, Fedora.
-
Создание разделов: Создайте GPT-диск с разделом, достаточным для размещения GRUB и memdisk.
-
Установка GRUB: Установите GRUB на небольшой раздел, который будет использоваться для загрузки Windows.
-
Подготовка Windows: Установите Windows на GPT-диск и создайте необходимые файлы загрузки с помощью
bcdboot
. -
Настройка GRUB:
- Добавьте в конфигурацию GRUB запись для загрузки Windows с memdisk, указав путь к bootmgr.
-
Пример конфигурации может выглядеть так:
menuentry "Windows 8" { insmod memdisk insmod iso memdisk /boot/wimboot initrd /path/to/bootmgr boot }
-
Перезагрузка и тестирование: Перезагрузите компьютер и проверьте, работает ли загрузка Windows.
Важные замечания
-
Совместимость оборудования: Не все материнские платы могут корректно работать с GPT-дисками в режиме BIOS. Определяющие факторы таких несовместимостей включают версии BIOS и спецификации комплектующих.
-
Резервное копирование: Всегда делайте резервные копии данных перед выполнением изменений в partition table и загрузочных конфигурациях.
-
Помощь сообщества: Если возникли трудности, рассмотрите возможность обращения к сообществу или форумам, где пользователи делятся своим опытом и решениями сходных проблем.
Заключение
Хотя загрузка Windows 7/8 с GPT-диска в BIOS окружении может показаться непростой задачей, с правильным подходом и инструментами, это можно реализовать. Надеемся, что данное руководство поможет вам успешно справиться с этой задачей. Рекомендуем использовать надежные источники информации и всегда экспериментировать в безопасной среде.