121

Я установил Windows 7 и Windows 8 в режиме EFI на жесткий диск несколько дней назад. Сегодня загрузчик пропал / испортился.

В настоящее время у меня есть установщик Windows 8 на флеш-накопителе, и я попытался использовать опцию «Автоматическое восстановление» для восстановления загрузчика, но он ничего не сделал. Параметр «Восстановление при загрузке» также отсутствует в установщике Windows 8.

Как я могу восстановить / восстановить загрузчик EFI из командной строки?

BCDEDIT возвращает следующее сообщение:

The requested system device cannot be found.

10 ответов10

183

Я потратил много времени, пытаясь заставить мой компьютер с Windows 8 снова загрузиться после клонирования на новый твердотельный накопитель и попытаться подвести итог, как я наконец все это заработал -

Во-первых, загрузка с диска восстановления UEFI для Windows 8 (CD/DVD/USB) - я обнаружил, что в процессе автоматического восстановления не был найден правильный раздел Windows, и когда мне удалось добавить его в настройки BCD, он сделал бы его надежно загружаемым например, используя BCDEDIT, я получил его, чтобы найти и запустить раздел Windows, но он отказывался от холодной загрузки или не сохранял бы настройки после второй перезагрузки или выключения питания.

Зайдите в Дополнительные параметры и запустите командную строку.

Введите diskpart чтобы использовать инструмент DiskPart, чтобы убедиться, что у вас есть все правильные разделы, и чтобы идентифицировать ваш раздел EFI. Главное, чтобы ваш раздел EFI был отформатирован как FAT32:

DISKPART> sel disk 0

Disk 0 is now the selected disk.

DISKPART> list vol

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     E                       DVD-ROM         0 B  No Media
  Volume 1     C                NTFS   Partition    195 GB  Healthy    Boot
  Volume 2         WINRE        NTFS   Partition    400 MB  Healthy    Hidden
  Volume 3                      FAT32  Partition    260 MB  Healthy    System

Затем назначьте букву диска разделу EFI:

DISKPART> sel vol 3

Volume 3 is the selected volume.

DISKPART> assign letter=b:

DiskPart successfully assigned the drive letter or mount point.

Выйдите из программы DiskPart, введя команду exit и в командной строке выполните следующее:

cd /d b:\EFI\Microsoft\Boot\

bootrec /fixboot

Удалите или переименуйте файл BCD:

ren BCD BCD.bak

Используйте bcdboot.exe для воссоздания хранилища BCD:

bcdboot c:\Windows /l en-gb /s b: /f ALL

Параметр /f ALL обновляет настройки BIOS, включая встроенное ПО UEFI /NVRAM, /l en-gb - для локализации для локали UK /GB. По умолчанию локализация - американский английский или использование en-US.

Перезагрузитесь и скрестите пальцы.

Это дало мне головную боль. Я долго ходил кругами. На момент написания этой статьи не было много достоверной информации об исправлении UEFI/Windows 8.

[РЕДАКТИРОВАТЬ]

Чтобы снова включить Hyper-V, мне также пришлось запустить следующую команду из командной строки администратора в Windows после перезагрузки:

bcdedit /set {default} hypervisorlaunchtype Auto
bcdedit /set {default} nx OptIn
21

Другие ответы полезны, но это то, что я должен был сделать, чтобы исправить мой.

У меня был жесткий диск 1,5 ТБ с установленной Windows 7. Затем я установил Windows 8 на купленный твердотельный накопитель емкостью 150 ГБ. Произошел сбой жесткого диска емкостью 1,5 ТБ, и я слышал, как он шумел, мой компьютер больше не запускался со словами «пожалуйста, вставьте системный диск». Я думал, что загрузчик отсутствует, как это должно быть на диске 1,5 ТБ. Оказывается, это была проблема, но проблема заключалась в том, что руководству, которое я следовал, не нужно перестраивать загрузчик или как он там называется, так как у меня не было раздела EFI на меньшем 150 ГБ диске (возможно, он существовал на отказавшем диске), он только 1 раздел, который заполнил весь диск.

Я не хотел терять все свои данные, поэтому я вошел в командную строку, загрузившись с моего установочного USB-диска Windows 8 (заметив, что вы не можете загрузить UEFI-версию этого, если она появляется, выберите загрузку с обычного USB-накопителя без UEFI появляется перед ним).

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

diskpart

list disk

select disk 0

list partition

select partition 1

shrink desired=200 minimum=200

create partition efi

list partition

select partition 2

format fs=fat32

Эти команды создадут раздел EFI. Дважды проверьте все, набрав list vol . Вы должны увидеть раздел размером 200 МБ. Теперь вам нужно назначить ему письмо. Сделайте это, набрав assign , затем снова list vol чтобы увидеть, какая буква была назначена.

Теперь, когда это сделано, вам нужно скопировать загрузочные файлы в этот недавно созданный раздел:

bcdboot C:\Windows /l en-gb /s B: /f ALL

Примечание: вы должны заменить C: на букву диска раздела, содержащего Windows, а B: на букву, назначенную только что созданному разделу EFI.

Я также ввел следующие команды:

bootrec /fix

bootrec /fixmbr

Они оба вернулись успешно, не знаю, действительно ли они что-то сделали, но кого это волнует. Windows теперь полностью восстановлена.

8

Хорошо, у меня было время, чтобы составить правильный план здесь. Это долго, но это довольно полно и должно помочь вам увидеть, что происходит.

Во-первых, это может произойти одним способом:

  1. Ваш BIOS теряет свои настройки.
  2. Нет проблем, все это хранится в разделе EFI.
  3. ... за исключением SATA IDE и AHCI, по понятным причинам.
  4. Вы использовали SATA-AHCI? Вы, наверное, сейчас используете SATA-IDE.
  5. Вы пытались загрузиться до того, как поняли это?
  6. Если вы сделали, это не удалось. Вы позволили Windows попытаться это исправить?
  7. Если вы это сделаете, BLAM, возможно, вы уничтожили базу данных конфигурации загрузки.
  8. Убедитесь, что вы используете правильные настройки SATA, которые вы использовали в прошлый раз.

Вот что вы, вероятно, уже сделали. ЕСЛИ ЭТО НЕ СООТВЕТСТВУЕТ, ВНИМАТЕЛЬНО ОЦЕНИТЕ, СУЩЕСТВУЕТ ЛИ ЭТО В ВАШЕЙ ПРОБЛЕМЕ, и ПРОЧИТАЙТЕ это для идей, но НЕ СЛЕДУЕТ СЛЕДОВАТЬ, не подумав сначала.

  1. Вы НАДЕЖДУ проигнорировали всю чушь, связанную с исправлением основной загрузочной записи (MBR), таблицы разделов, флагов разделов и прочего мусора, который НЕ ПРИМЕНЯЕТСЯ к сценарию загрузки EFI. ВСЕ. В лучшем случае вы сможете полностью перестроить новое, не связанное с загрузкой решение без EFI. Это может быть не тривиально, потому что:

  2. Вы выяснили, что Windows уверена, что у нее нет базы данных конфигурации загрузки, но, к сожалению, она либо совершенно не знает, либо ОЧЕНЬ уверена в том, куда она идет - вы не можете точно сказать, какая именно.

  3. Вы знаете, что загрузочное хранилище обычно (где-то)\Boot\BCD и что файл HIDDEN; просмотреть его с помощью «dir /a:hs».

  4. Вы немного ознакомились с BCDEDIT.EXE и выяснили, что он позволит вам "смоделировать" базу данных конфигурации загрузки в промежуточном файле с помощью «/CREATESTORE» (и, пожалуйста, не называйте его "BCD"), что вы можете явно использовать промежуточный файл с параметром «/STORE», добавить пункт меню для диспетчера загрузки Windows с помощью «/CREATE {bootmgr}», и вы ДОЛЖНЫ иметь возможность импортировать его с помощью «/IMPORT» ...

  5. ... но когда вы пытаетесь это сделать, вы не можете. Вы смотрите на параметр /SYSSTORE, который звучит правильно, но вы не можете заставить его использовать другой магазин, потому что он "неоднозначный". У вас есть предчувствие, что он знает, где находится магазин - или должен быть - но вы не можете его найти.

  6. Вы пытались использовать "MOUNTVOL" для монтирования раздела EFI, но он даже не отображается в списке, поэтому вы не можете.

Если ВСЕ это относится довольно близко к вам, вот что МОЖЕТ происходить:

  1. Windows может сказать, что вы настроили EFI (вы загрузили DVD с помощью загрузки UEFI, у вас есть раздел EFI и т.д.).

  2. Поэтому он знает, ГДЕ СМОТРЕТЬ для файла BCD - однако он либо каким-то образом имеет неправильное расположение (не эта проблема, но похоже), либо BCD был удален.

  3. Очевидно, потому что он знает, где он ДОЛЖЕН быть, это breaks /SYSSTORE - и на самом деле это, вероятно, правильное поведение, потому что в противном случае вы бы поместили его не в то место.

  4. Насколько я могу судить, MOUNTVOL преднамеренно скрывает раздел EFI (или не в состоянии это заметить). Это предотвращает монтирование файловой системы, что предотвращает поиск правильного подкаталога, проверку наличия базы данных и т.д.

Итак, вот, наконец, то, что вам нужно с этим делать. Хорошей новостью является то, что это, вероятно, намного проще, чем вы надеетесь сейчас.

  1. Вы действительно должны смонтировать раздел EFI.

На самом деле, у меня есть предчувствие, что это не совсем правильно - я сильно подозреваю, что раздел EFI уже смонтирован какой-то внутренней подсистемой, поэтому BCDEDIT начинает капризничать - он не видит базу данных, но знает, куда должен идти. Что бы там ни было, это буква диска. Так что делать?

Ну ... как далеко назад уходят ваши корни DOS? Вы помните команду ASSIGN? Угадай, что.

  1. Запустите DISKPART.

  2. Если вы не знакомы с DISKPART, то в принципе он работает как иерархия наборов; Вы должны выбрать ровно один элемент на одном уровне, чтобы перейти к следующему. Итак, "СПИСОК ДИСКОВ", а затем "ВЫБЕРИТЕ ДИСК n", где n - это то, что вам подходит.

  3. Используйте "LIST PARTITION" и "LIST VOLUME" (обратите внимание, не во множественном числе), чтобы получить некоторое представление и определить свой раздел EFI.

Обычно это раздел размером 100 МБ FAT32 с пометкой "SYSTEM". Имейте в виду, что на вашем диске уже должна быть таблица разделов GPT, поэтому вы можете увидеть довольно много разделов. Некоторые из них предназначены для экстренного восстановления - много хорошего они делают для проблем с EFI, а? Ну что ж.

Обратите внимание, что раздел EFI и некоторые другие не имеют букв дисков. Если вы так склонны, вы также можете просмотреть атрибуты раздела GPT, что также может дать вам несколько моментов, связанных с тангенциальной связью "Ага".

  1. "ВЫБЕРИТЕ РАЗДЕЛ n", где n - раздел EFI. (Я ожидаю, что вы могли бы выбрать громкость вместо этого, если вам нужно.)

  2. "ASSIGN". Вот и все. Не указывайте букву диска; просто "НАЗНАЧИТЬ".

  3. "ОБЪЕМ СПИСКА". Теперь вы должны увидеть букву диска, назначенную разделу EFI.

  4. "ВЫХОД" ДИСКПАРТ.

А теперь ... большое жирное предупреждение. Вы, вероятно, перейдете непосредственно к S: (или к тому, что вы получили от ASSIGN) и заметите раздел /Boot. "АГА!«Вы скажете.» Здесь нет файла BCD!"Во-первых ... помните, что файл скрыт. Во-вторых ... копайте еще немного, и вы заметите, что пока есть:

S:\EFI\ Загрузочный

существует также:

S:\EFI\Microsoft\Boot

Вы должны проверить оба из них на наличие проблем.

S:\EFI\ Загрузочный для материнской платы, и содержит Windows Boot Loader (и , возможно , другие вещи для других операционных систем). У него такое название, потому что материнская плата не знает, будет ли у вас Windows или нет, и ей нужен фиксированный путь, который имеет смысл.

  1. Осмотрите S:\EFI\Boot. Для Windows 7 Professional, 64-битная, вы должны увидеть:

BOOTX64.EFI

Если вы установили оболочку EFI (это всегда хорошая идея), вы можете дополнительно увидеть «shellx64.efi».

ПРИМЕЧАНИЕ. Пользователи Linux с двойной загрузкой, использующие «chainloader +1», не увидят здесь дополнительную запись.

  1. Проверьте S:\EFI\Microsoft\Boot , используя как "реж" и "реж а: ч". В 64-разрядной версии Windows 7 Professional вы должны увидеть несколько языковых шаблонов ("en_US" и т.д.) И следующие файлы:

bootmgr.efi bootmgfw.efi memtest.efi BCD BCD.Backup.001 BCD.Backup.002

... кроме того, что вы, вероятно, не видите BCD, не так ли? Но эти резервные файлы выглядят заманчиво.

  1. Определите, какой файл резервной копии вы хотите использовать. Независимо от того, какие недавние изменения в нем отсутствуют, они не так важны, как ваша способность загружать систему, так что выбирайте тот, который наиболее исправен. Вероятно, вы увидите один большой и один довольно маленький. Маленький уже поврежден и является артефактом неудачного процесса восстановления - не используйте его. Если они оба большие, используйте более старый. В ЛЮБОМ СЛУЧАЕ сделайте ДОПОЛНИТЕЛЬНЫЕ РЕЗЕРВНЫЕ КОПИИ РЕЗЕРВНЫХ КОПИЙ в другом месте.

  2. Скопируйте резервную копию, которую вы решили использовать, в "BCD".

  3. Выйдите из оболочки, завершите работу и перезагрузите компьютер.

  4. Скажите Windows, чтобы начать НОРМАЛЬНО. На данный момент, это должно начаться.

Q: Что делать, если у вас нет резервной копии BCD?

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

Вопрос: Можете ли вы привести пример сценария, в котором «BCDEDIT /SYSSTORE» может использоваться для выполнения каких-либо действий в системе EFI?

A: Пока нет.

В любом случае, надеюсь, что это поможет решить некоторые проблемы людей или, по крайней мере, заставит их задуматься. В качестве очень важного заключительного замечания, обратите внимание, что вы можете подключить и проверить раздел EFI под Windows, как правило, используя метод DISKPART ASSIGN, описанный выше. Вы должны сделать это хотя бы один раз, чтобы получить полную резервную копию вашего раздела EFI, ДО того, как вы столкнетесь с подобными проблемами. Я рекомендую одну резервную копию в подкаталог на вашем диске C: и одну на USB-накопителе.

Извините, что так затянуто. Мне нужно в какой-то момент превратить это в правильную статью, но есть так много людей, которые настолько разочарованы, что я почувствовал необходимость документировать свой опыт настолько полно и быстро, насколько мог.

Ура, Мэтт "Точка останова" Heck

5

Windows 8 все еще не в окончательной форме, поэтому проблем не предвидится. Вы находитесь в области, новой для большинства из нас, где команды, которые мы использовали, могут больше не работать. К командам, перечисленным @soandos, я добавлю эту, которая полностью перестраивает BCD:

bootrec /rebuildbcd

Попробуйте также использовать расширенное меню загрузки из Windows 8 и сообщите нам, что происходит.

Если ничего не работает, в статье Восстановление Windows 7, когда они не загружаются, есть несколько советов по использованию bcdedit для исправления ошибок загрузки. В любом случае было бы интересно посмотреть, что выводит bcdedit на ваш компьютер.

[РЕДАКТИРОВАТЬ]

Эти ссылки могут содержать некоторые полезные идеи:

Восстановление загрузчика Windows с DVD
Проблема восстановления диспетчера загрузки Windows 7
Windows 7 неожиданно не загружается - восстановление загрузчика Windows 7

3

Самый простой способ:

  • Выполните шаги из поста выше, чтобы найти файл BCD и перейти в его каталог.

  • Если BCD-файл скрыт, введите attrib bcd -s -h -r и нажмите Enter. Это позволит вам изменить и перезаписать файл.

  • Введите ren bcd bcd.old и нажмите Enter. Это переименовывает текущий файл BCD.

  • Введите Bootrec /RebuildBCD и нажмите Enter, чтобы заставить Windows 8 пересобрать меню загрузки с нуля.

  • Выйдите из командной строки и завершите работу. Удалите Windows Recovery Media и перезагрузите компьютер. Вы сделали!

2

Под DISKPART у меня были только vol 0 или D (DVD) и vol 1 или C (раздел Windows NTFS). Ничто не работало для меня, пока я не сделал том 1 ACTIVE.

После выхода из DISKPART я набрал только:

bootrec /fixboot
bootrec /rebuildbcd

затем система была должным образом отремонтирована. Я не пользовалась

bootrec /fixmbr

потому что я использовал GAG (Gestor De Organque Gràfico) на MBR для мультизагрузки.

1

После 6 часов борьбы мне удалось решить проблему с загрузкой Windows 8.

Сегодня, после обычного перезапуска, я получил сообщение, что MBR not found или похож на него, я уже не помню. Я пробовал команды bootrec , автоматическое восстановление Windows (он не мог найти ни одной установленной Windows), миллион других способов и ничего.

Проблема заключалась в том, что когда я выполнил bootrec /rebuildbcd все прошло нормально, а затем, когда мне пришлось ввести yes если я хочу сохранить конфигурацию, я получил сообщение, the file is not accessible because it is used by a another process .

После нескольких часов безумного размышления я наконец решил это.

В этом порядке...

  • Сначала я загрузил мастер раздела easeup и ФОРМАТИРОВАЛ системный зарезервированный том, который позже назначил активным (в котором была моя загрузочная папка). При перезагрузке я получил сообщение об ошибке NTLDR missing .

  • Затем я загрузился в Windows recovery, открыл командную строку и ввел bootrec /fixmbr , /fixboot , /scanos , /rebuildbcd (который теперь выполняется нормально:])

  • Я вышел из cmd и нажал на автоматическое восстановление.

  • Затем я смог выбрать Windows 8. Когда я перезагрузился, я увидел логотип Windows 8.

0

Мой сценарий; Я не потерял системный раздел EFI, но переключение дисков и установка Windows, похоже, испортили загрузочную запись UEFI диспетчера загрузки Windows для первого диска; пришлось использовать запись UEFI, которая указывает на диск непосредственно для загрузки. Я думаю, что я исправил это, исправив / добавив параметр «device partition =\Device\HarddiskVolumeX» (X = 2 в моем случае; мой 2-й раздел - системный раздел EFI, сопоставленный с Z: with diskpart.exe):

Bcdedit /set {bootmgr} раздел устройства = Z:

посмотреть с помощью: прошивки bcdedit.exe /enum

-1

Используйте:bootrec /fixmbr (обновляет MBR, в этом случае, вероятно, ничего не сделает, но и не повредит)

bootrec /fixboot перезаписать загрузочный сектор системного раздела.

bootrec /scanos для сканирования ОС, находящихся на диске, и добавления их в загрузчик.

Просто запустите команды по порядку.

-4

Мне удалось это исправить с помощью следующей команды в консоли восстановления:

 bootcfg C:\Windows /l en-us

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .