Ладно, у меня было время, чтобы составить правильный набросок. Он длинный, но довольно полный и должен помочь вам увидеть, что происходит.
Во-первых, один из способов, как это может произойти:
Ваш BIOS теряет свои настройки.
Нет проблем, все это хранится в разделе EFI.
…за исключением настройки SATA IDE против AHCI, по очевидным причинам.
Вы использовали SATA-AHCI? Скорее всего, сейчас вы используете SATA-IDE.
Вы пытались загрузиться до того, как поняли это?
Если так, то не получилось. Вы позволили Windows попробовать это исправить?
Если вы это сделали, BLAM, то вполне возможно, что он уничтожил базу данных конфигурации загрузки.
Убедитесь, что используете правильные настройки SATA, которые вы использовали в прошлый раз.
Вот что вы, вероятно, уже сделали. ЕСЛИ КАКОГО-нибудь из них НЕ СОТРУДИТСЯ, КАЧЕСТВЕННО ОЦЕНИТЕЛЬНО, КОТОРЫЙ НАСТОЯЩИЙ В ВАШЕЙ ПРОБЛЕМЕ, и ЧИТАЙТЕ это для идей, но не ПОЛУЧАЙТЕ это, не задумываясь.
- Вы проигнорировали HOPEFULLLY всю чушь об исправлении главной загрузочной записи (MBR), таблицы разделов, флагов разделов и прочего мусора, который НЕ ДОЛЖЕН ПРИМЕНЯТЬ к EFI сценарию загрузки. AT ALL. В лучшем случае, вы сможете полностью пересобрать новое, un-related, NON-EFI загрузочное решение. Однако, это может быть не тривиально, потому что:
- Вы выяснили, что Windows уверена, что у нее нет базы данных конфигурации загрузки, но, к сожалению, она либо полностью невежественна, либо ОЧЕНЬ уверена в том, куда она идет - вы не можете сказать, к какому именно.
- Вы знаете, что загрузочное хранилище обычно имеет формат
(somewhere)\Boot\BCD
, а файл - HIDDEN; просмотрите его с помощью dir /a:hs
.
- Вы немного ознакомились с
BCDedit.exe
и поняли, что она позволит вам “имитировать” загрузочную конфигурационную базу данных в загрузочном файле с помощью /CreateStore
(и, пожалуйста, не называйте ее “BCD”), что вы можете явно использовать загрузочный файл с помощью /Store
, что вы можете добавить запись в меню менеджера загрузки Windows Boot Manager с помощью /Create {bootmgr}
, и что вы ДОЛЖНЫ иметь возможность импортировать его с помощью /Import
…
- …но когда вы пытаетесь сделать это, вы не можете этого сделать. Вы смотрите на
/SysStore
опцию, которая звучит правильно, но вы не можете заставить его использовать другой магазин, потому что она “неоднозначна”. У вас есть догадка, что он знает, где находится магазин - или должен быть - но вы не можете его найти.
- Вы пытались использовать
MountVol
для монтирования EFI раздела, но он даже не отображается в списке, так что вы не можете.
Если ВСЕ это относится достаточно близко к вам, вот что МОЖЕТ произойти:
- Windows может сказать, что вы настроены на EFI (вы загрузили DVD через загрузку UEFI, у вас есть EFI раздел и т.д.).
- Поэтому она знает ГДЕ БЛОКИРОВАТЬСЯ для файла BCD - однако, либо он каким-то образом неправильно расположен (не эта проблема, но похожая), либо BCD был удален.
- Очевидно, потому что он знает, где он ДОЛЖЕН быть, это разбивает
/SysStore
- и на самом деле, это, вероятно, правильное поведение, потому что в противном случае вы поместили бы его не в то место.
- Насколько я могу судить,
MountVol
намеренно скрывает раздел EFI (или каким-то образом не может его заметить). Это предотвращает монтирование файловой системы, что не позволяет найти нужный подкаталог, проверить, что база данных существует и т.д.
Так что, наконец-то, вот, что вам нужно с этим сделать. Хорошая новость заключается в том, что все гораздо проще, чем вы надеетесь сейчас.
- Вам действительно нужно смонтировать EFI раздел.
На самом деле, у меня есть догадка, которая не strictly correct– Я сильно подозреваю, что EFI раздел already смонтирован какой-то внутренней подсистемой, вот почему BCDedit
получает неприятности– он не видит базу данных, но он знает, куда он должен пойти. Однако, что бы там ни было, это буква диска. Так что… что же делать?
Ну… как далеко ушли корни DOS? Ты помнишь команду Assign
? Угадай что.
- Старт
DiskPart
.
- Если вы не знакомы с командой
DiskPart
, то в основном она работает по иерархии множеств; вы должны выбрать ровно один элемент на одном уровне, чтобы перейти к следующему. Итак, List Disk
, а затем Select Disk n
, где n
- это то, что вам подходит.
- Используйте
List Partition
и List Volume
(обратите внимание на неплюралирализованность), чтобы получить некоторое представление и идентифицировать EFI раздел.
Это обычно 100MB FAT32 раздел с пометкой System
. Имейте в виду, что ваш диск уже должен использовать таблицу разделов GPT, так что вы можете увидеть довольно много разделов. Некоторые из них предназначены для аварийного восстановления - жирная куча пользы, которую они приносят для проблем с EFI, да? Обратите внимание, что EFI раздел и некоторые другие разделы не имеют букв диска. Если вы так склонны, вы также можете просмотреть атрибуты раздела GPT, которые могут дать вам несколько тангенциально связанных “Ага” моментов.
5. Select Partition n
, где n - EFI раздел. (Я ожидаю, что вы можете выбрать объем вместо него, если нужно.)
6. Assign
. Вот и все. Не указывайте букву диска; просто Assign
.
7. List Volume
. Теперь вы должны увидеть букву диска, назначенную EFI разделу.
8. Exit
DiskPart.
. Assign
. А теперь… большое жирное предупреждение. Вы, вероятно. перейдите прямо к S: (или к чему угодно из BCD
) и обратите внимание на раздел Boot. “AHA!” Вы скажете. “Здесь нет файла S:\EFI\Boot
!” Сначала… помните, что файл скрыт. Во-вторых… покопайтесь еще немного, и вы заметите, что пока есть S:\EFI\Microsoft\Boot
, а также S:\EFI\Boot
Вы должны проверить оба эти файла на наличие проблем.S:\EFI\Boot
для motherboard, и содержит загрузочный раздел Windows Boot LOADER (и, возможно, другие вещи для других операционных систем). Он имеет это имя, потому что материнская плата понятия не имеет, будет ли у вас Windows или нет, и нуждается в исправленном пути, который имеет смысл.
bootx64.efi
это для motherboard, и он содержит LOADER (и, возможно, другие вещи для других операционных систем). Проверьте shellx64.efi
. Для Windows 7 Professional, 64-bit, вы должны увидеть: chainloader+1
Если вы установили EFI оболочку (всегда хорошая идея), вы можете дополнительно увидеть S:\EFI\Microsoft\Boot
.
ЗАМЕЧАНИЕ: Пользователи с двойной загрузкой Linux, использующие dir
НЕ будут видеть здесь дополнительную запись.
10. Посмотрите dir a:h
, используя both en_US
и BCD
. Для Windows 7 Professional, 64-bit, вы должны увидеть кучу языковых шаблонов (BCD
и т.д.) и следующие файлы:
bootmgr.efi
bootmgfw.efi
memtest.efi
BCD
BCD.Backup.001
BCD.Backup.002
…за исключением того, что вы, вероятно, не видите BCDedit
, не так ли? Но эти резервные файлы выглядят заманчиво.
11. Определите, какой файл резервной копии вы хотите использовать. Какие бы недавние изменения ни отсутствовали, они не так важны, как ваша возможность загрузить систему, так что идите за тем, который больше всего неповреждён. Вероятно, вы увидите один большой и один довольно маленький. Маленькая уже повреждена и является артефактом неудавшегося процесса ремонта - не используйте ее. Если они оба большие, используйте старый. В ЛЮБОЙ ДЕЯТЕЛЬНОСТИ сделайте ДОПОЛНИТЕЛЬНЫЕ КОПИ из КОПИЙ в другом месте.
12. Скопируйте резервную копию, которую вы решили использовать, в BCDedit /SysStore
.
13. Выход из оболочки, чистое выключение и перезагрузка.
14. Скажите Windows запустить НОРМАЛЬНО. На данный момент он должен запуститься.
Q: А что, если у вас нет резервной копии BCD?
A: Ну, этого really не должно произойти. Скорее всего, это означает, что вы либо находитесь не в том каталоге, поддерживаете EFI, но на самом деле не использовали его, либо каким-то образом перестроили весь EFI раздел без всех необходимых материалов Windows (возможно, особенно при использовании нескольких версий Windows). В этом случае вам нужно будет скопировать EFI материалы с DVD, а затем либо изменить или пересобрать Boot Configuration Database, используя DiskPart
.
Q: Можете ли вы привести пример сценария, в котором Assign
можно использовать для чего угодно на EFI системе?
A: Пока что нет.
В любом случае, надеюсь, что это поможет решить некоторые проблемы для людей, или, по крайней мере, заставит их задуматься. В качестве очень важного заключительного шага, пожалуйста, обратите внимание, что вы можете смонтировать и осмотреть EFI раздел под Windows обычно, используя вышеприведенную методику C:
: &007. Вы должны сделать это хотя бы один раз, чтобы получить полную резервную копию EFI раздела, BEFORE вы столкнетесь с подобными проблемами. Я рекомендую сделать одну резервную копию в подкаталог на диске &007 и одну на USB флешке.
Извините, что так долго. В какой-то момент мне нужно превратить это в правильную статью, но есть так много людей, которые настолько разочарованы, что я почувствовал необходимость задокументировать свой опыт как можно быстрее и полнее.