Я пытался найти более простой способ установки двойной загрузки 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
утилиту прошивки .