Я пытался найти более простой способ установки двойной загрузки Windows и Linux на свой ноутбук, не обязательно в таком порядке. Обычно нам нужно сначала установить Windows, а затем установить Linux и позволить GRUB работать с Windows.
Поэтому я пытаюсь найти способ обойти этот надоедливый процесс установки (windows) и просто использовать образ для непосредственного копирования на мой диск. Это также позволило бы мне сохранить мой менеджер загрузки (GRUB). (не то, чтобы я не мог восстановить его впоследствии, но это политика Microsoft, чтобы монополизировать, в этом случае отрицая существование других менеджеров загрузки в системе).
Сначала я получил легальную копию Windows 8.1, а затем приступил к ее установке на виртуальной машине с использованием VirtualBox. Затем я создал раздел NTFS на своем жестком диске с разделами GPT и скопировал содержимое раздела Windows из образа .vdi во вновь созданный раздел.
Конечно, это пока не работает. Я не знаю, как заменить bootmgr. Это дает
File: \Boot\BCD
Status: 0xc000000e
Info: The Boot Configuration Data for your PC is missing or contains errors.
потому что он не может найти этот файл из другого раздела, который используется для загрузки, восстановления системы и т. д.
Теперь я прочитал, что bootmgr в конечном итоге выполняет winload.exe для загрузки Windows. Я понятия не имею, что делать дальше.
Я считаю, что это должно работать теоретически, потому что у меня есть все файлы, необходимые для запуска Windows. Я также думаю, что я не должен быть единственным, кто думал об этом, и, следовательно, я могу упустить что-то очень простое здесь. Может быть, это уже сделано?
Я понятия не имею, как работает загрузка. Мне удалось понять, что при двойной загрузке Windows и Linux вы загружаете загрузчик Windows в Linux. Так что я пытаюсь добиться как-то избавления от загрузчика Windows.
РЕДАКТИРОВАТЬ
Я смотрел на двоичные файлы bootmgr
и \Boot\BCD
. bootmgr
читает файл BCD и перечисляет ваши параметры, среди которых вы можете выбрать для загрузки.
Таким образом, информация о выполнении winload.exe
находится в файле BCD. Теперь я думаю, что bootmgr
сам выполняется syslinux с использованием chain.c32
модуля. Я пытаюсь как-то запустить загрузчик Windows, то есть winload.exe
напрямую из syslinux (если это возможно), или изменить его bootmgr
так, чтобы он выполнялся winload.exe
сам (чей путь будет находиться непосредственно в bootmgr
исполняемом файле) без поиска BCD или чего-либо еще.
Гибернация (которая требует другой процедуры) не имеет значения для меня на этом этапе.
Отредактируйте свой вопрос, чтобы сообщить нам тип прошивки и (если EFI) включили ли вы модуль поддержки совместимости в настройке прошивки
Моя прошивка EFI (с включенным CSM), и я обычно загружаюсь в Arch Linux, используя GRUB. Я обнаружил, что bootmgr
выполняется System32\winload.exe
на устаревших системах и System32\winload.efi
на EFI.
У меня есть 0.0
идея, что делать отсюда. В течение последних 10 дней я пытался внести изменения в BCD, и я думаю, что я собираюсь достичь успеха. Но это не имеет значения, потому что я действительно хочу полностью обойти Windows Boot Manager.
Если у вас есть идея, есть ли способ выполнить это winload.efi
из оболочки EFI (только предположение), или какая-то другая модификация GRUB, чтобы он загружал Windows в режиме EFI без загрузчика цепей.
Любые советы приветствуются.
добавление
Следующие сообщения на форуме могут дать полезную информацию:
http://reboot.pro/topic/19371-chainload-directly-to-winloadexe/
1.
Grub4dos прямо сейчас может загружать загрузчик (например, NTLDR или BOOTMGR), потому что он может служить заменой кода, содержащегося в «нормальном» загрузочном секторе (то есть что-то вроде 300 байтов машинного кода).
Этот код просто устанавливает несколько параметров и затем вызывает загрузчик.
Даже это было (было) совсем не легко понять и воспроизвести с помощью другого кода.
Системный загрузчик NT, такой как BOOTMGR, имеет более или менее в одном .exe операционную систему «реального режима» (не совсем в отличие от DOS) и средства / инструменты для анализа как простого текста, так и кустов реестра, это не то, что можно повторно использовать. написано с нуля легко.
Хорошие парни @ReactOS работают над написанием FREELDR (который призван стать заменой гораздо более простой NTLDR) начиная с ГОДА (и поверьте мне, среди программистов ReactOS есть действительно хорошие и хорошие парни).
Это кажется (но это не документировано ясно) , что им удалось загрузить экспериментально сервер 2003 с NTLDR.
2.
С введением поддержки (U) EFI, BootMgr помогает абстрагироваться от разницы между BIOS и (U) EFI. Например, вот две последовательности:
BIOS (PCAT) -> BootMgr { BootMgr stub -> embedded BootMgr.exe } -> WinLoad.exe -> Windows 64-bit (U)EFI -> BootMgFw.efi -> BootMgr.efi -> WinLoad.efi -> Windows
WinLoad ожидает присутствия определенной среды (включая API). BootMgr позаботится об этом, поэтому [почти] одна и та же программа WinLoad будет работать в любой среде.
Фактически, (U) EFI определяет метод хранения и выборки параметров загрузки, поэтому BCD BootMgr покрывает эту же цель независимо от BIOS / (U) EFI.
Но помимо различий в BIOS и (U) EFI, BootMgr позволяет вам сделать «выбор загрузки», тогда как WinLoad загружает определенную операционную систему, которая знает, как загружаться.
В зависимости от того, какая часть среды WinLoad ожидает присутствия, может быть возможно вызвать WinLoad напрямую. Wimboot Майкла Брауна напрямую вызывает BootMgr PE [1], поэтому он может напрямую вызывать WinLoad, за исключением того, что WinLoad, вероятно, хочет больше среды. Вы можете попробовать это!
[1] Не следует путать с BootMgr, который может вызывать GRUB4DOS и Syslinux 'chain.c32. Этот BootMgr содержит заглушку, которая знает, как вызывать встроенный BootMgr PE.
источник
setup
утилиту прошивки .Ответы:
Чтобы ответить на ваш оригинальный вопрос, нет. Windows не может быть загружена без прохождения через собственный загрузчик (в случае установки UEFI, bootmgfw.efi). Это связано с тем, что Windows ожидает, что там находится менеджер загрузки, и вызывает winload.efi. Если этого не произойдет, Windows будет зависать, пока вы не исправите проблему. Для этого есть много причин (практических и невежественных). В основном это связано с тем, что Microsoft написала загрузочный менеджер для обработки всех вещей (загрузки ОС, загрузки среды восстановления, псевдо-предварительной среды и т. Д.). Единственный способ достичь хоть какого-то подобия здравомыслия - это связать нагрузку с помощью Grub-efi.
источник
Вам необходимо добавить загрузчик Windows EFI в список параметров загрузки в прошивке UEFI. Таким образом, вы сможете выбрать:
В этом месте также должны быть видны дополнительные параметры, такие как привод DVD, внешние жесткие диски или загрузка по сети. Загрузчик UEFI обычно находится в разделе
\EFI
(/boot/efi/
). Поскольку вы только что скопировали образ жесткого диска Windows без правильной установки Windows, раздел EFI вашего текущего компьютера может не содержать надлежащего загрузчика. Таким образом, необходимоПосле этого вы сможете выбрать, какая ОС загружается, просто изменив порядок загрузки в BIOS. Нажатие на моем ноутбуке F12вызывает меню выбора загрузчика.
Для этих шагов я буду использовать
efibootmgr
и следовать шагам из этого урока :Вам нужно будет скопировать соответствующий файл
bootmgfw.efi
в раздел EFI по адресу\EFI\Microsoft\Boot\bootmgfw.efi
или/boot/efi/Microsoft/Boot/bootmgfw.efi
при использовании Linux:где
Microsoft
находится папка с исходными файлами EFI для вашей версии Windows.Затем вам нужно добавить
.efi
файл в загрузочные записи UEFI, используя:где, конечно, вам нужно изменить
/dev/sda
и-p 1
на правильные значения для вашего дискового устройства и номера раздела.Обратите внимание, если у вас есть ноутбук Lenovo:
После запуска вашего ПК должно появиться что-то вроде этого (если вы удерживаете соответствующие клавиши во время загрузки):
и
bcdedit
на Windows показывает это:источник
\EFI\Boot\Microsoft
папки для тестирования (там есть несколько файлов)?inherit {bootloadersettings}
самом деле означает в магазине BCD?Вы можете выполнить установку в любом порядке, т.е. установить GNU / Linux, а затем Windows или наоборот.
Просто сделайте следующее после того, как вы установили все свои операционные системы.
Получите "Boot Repair Disk" отсюда. http://sourceforge.net/projects/boot-repair-cd/
Создайте на нем загрузочный USB-накопитель (инструкция на pendrivelinux.com)
Или запишите файл ISO на CD.
Загрузитесь и следуйте инструкциям на экране. У вас будет переустановленный GRUB, содержащий все установленные вами операционные системы.
Всего наилучшего.
источник