2012-08-12 18:06:22 +0000 2012-08-12 18:06:22 +0000
123
123

Как отремонтировать загрузчик Windows 8 EFI?

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

В настоящее время у меня на флешке установлен инсталлятор Windows 8, и я попробовал воспользоваться опцией автоматического восстановления, чтобы восстановить системный загрузчик, но он ничего не сделал. Параметр “Восстановление при запуске” также отсутствует в программе установки Windows 8.

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

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

The requested system device cannot be found.

Ответы (10)

182
182
182
2012-11-12 00:27:03 +0000

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

Во-первых, загрузка с восстановительного диска UEFI Windows 8 (CD/DVD/USB) - я обнаружил, что процесс автоматического восстановления не нашел нужного раздела Windows, и когда мне удалось добавить его в настройки BCD, это сделало бы его надежно загрузочным e. g. С помощью 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-накопителя:

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

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

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

[EDIT]

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

bcdboot c:\Windows /l en-gb /s b: /f ALL
22
22
22
2012-12-12 06:01:57 +0000

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

У меня был установлен жесткий диск объемом 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

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

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

bootrec /fix

bootrec /fixmbr

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

9
9
9
2012-11-28 03:14:27 +0000

Ладно, у меня было время, чтобы составить правильный набросок. Он длинный, но довольно полный и должен помочь вам увидеть, что происходит.

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

  1. Ваш BIOS теряет свои настройки.

  2. Нет проблем, все это хранится в разделе EFI.

  3. …за исключением настройки SATA IDE против AHCI, по очевидным причинам.

  4. Вы использовали SATA-AHCI? Скорее всего, сейчас вы используете SATA-IDE.

  5. Вы пытались загрузиться до того, как поняли это?

  6. Если так, то не получилось. Вы позволили Windows попробовать это исправить?

  7. Если вы это сделали, BLAM, то вполне возможно, что он уничтожил базу данных конфигурации загрузки.

  8. Убедитесь, что используете правильные настройки SATA, которые вы использовали в прошлый раз.

Вот что вы, вероятно, уже сделали. ЕСЛИ КАКОГО-нибудь из них НЕ СОТРУДИТСЯ, КАЧЕСТВЕННО ОЦЕНИТЕЛЬНО, КОТОРЫЙ НАСТОЯЩИЙ В ВАШЕЙ ПРОБЛЕМЕ, и ЧИТАЙТЕ это для идей, но не ПОЛУЧАЙТЕ это, не задумываясь.

  1. Вы проигнорировали HOPEFULLLY всю чушь об исправлении главной загрузочной записи (MBR), таблицы разделов, флагов разделов и прочего мусора, который НЕ ДОЛЖЕН ПРИМЕНЯТЬ к EFI сценарию загрузки. AT ALL. В лучшем случае, вы сможете полностью пересобрать новое, un-related, NON-EFI загрузочное решение. Однако, это может быть не тривиально, потому что:
  2. Вы выяснили, что Windows уверена, что у нее нет базы данных конфигурации загрузки, но, к сожалению, она либо полностью невежественна, либо ОЧЕНЬ уверена в том, куда она идет - вы не можете сказать, к какому именно.
  3. Вы знаете, что загрузочное хранилище обычно имеет формат (somewhere)\Boot\BCD, а файл - HIDDEN; просмотрите его с помощью dir /a:hs.
  4. Вы немного ознакомились с BCDedit.exe и поняли, что она позволит вам “имитировать” загрузочную конфигурационную базу данных в загрузочном файле с помощью /CreateStore (и, пожалуйста, не называйте ее “BCD”), что вы можете явно использовать загрузочный файл с помощью /Store, что вы можете добавить запись в меню менеджера загрузки Windows Boot Manager с помощью /Create {bootmgr}, и что вы ДОЛЖНЫ иметь возможность импортировать его с помощью /Import
  5. …но когда вы пытаетесь сделать это, вы не можете этого сделать. Вы смотрите на /SysStore опцию, которая звучит правильно, но вы не можете заставить его использовать другой магазин, потому что она “неоднозначна”. У вас есть догадка, что он знает, где находится магазин - или должен быть - но вы не можете его найти.
  6. Вы пытались использовать MountVol для монтирования EFI раздела, но он даже не отображается в списке, так что вы не можете.

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

  1. Windows может сказать, что вы настроены на EFI (вы загрузили DVD через загрузку UEFI, у вас есть EFI раздел и т.д.).
  2. Поэтому она знает ГДЕ БЛОКИРОВАТЬСЯ для файла BCD - однако, либо он каким-то образом неправильно расположен (не эта проблема, но похожая), либо BCD был удален.
  3. Очевидно, потому что он знает, где он ДОЛЖЕН быть, это разбивает /SysStore - и на самом деле, это, вероятно, правильное поведение, потому что в противном случае вы поместили бы его не в то место.
  4. Насколько я могу судить, MountVol намеренно скрывает раздел EFI (или каким-то образом не может его заметить). Это предотвращает монтирование файловой системы, что не позволяет найти нужный подкаталог, проверить, что база данных существует и т.д.

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

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

На самом деле, у меня есть догадка, которая не strictly correct– Я сильно подозреваю, что EFI раздел already смонтирован какой-то внутренней подсистемой, вот почему BCDedit получает неприятности– он не видит базу данных, но он знает, куда он должен пойти. Однако, что бы там ни было, это буква диска. Так что… что же делать?

Ну… как далеко ушли корни DOS? Ты помнишь команду Assign? Угадай что.

  1. Старт DiskPart.
  2. Если вы не знакомы с командой DiskPart, то в основном она работает по иерархии множеств; вы должны выбрать ровно один элемент на одном уровне, чтобы перейти к следующему. Итак, List Disk, а затем Select Disk n, где n - это то, что вам подходит.
  3. Используйте 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 флешке.

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

5
5
5
2012-08-25 20:45:34 +0000

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

bootrec /rebuildbcd

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

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

[EDIT]

Эти ссылки могут содержать некоторые полезные идеи : Восстановление загрузчика Windows с DVD Windows 7 Boot Manager Recovery Problem Windows 7 Suddenly Wonna’t Boot - Восстановление загрузчика Windows 7

3
3
3
2012-11-29 01:17:10 +0000

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

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

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

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

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

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

2
2
2
2013-02-06 11:50:32 +0000

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

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

bootrec /fixboot
bootrec /rebuildbcd

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

bootrec /fixmbr

, потому что я использовал GAG (gestor de arranque gràfico) на MBR для мультизагрузки.

1
1
1
2012-12-05 14:29:49 +0000

После 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.

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

В таком порядке…

  • Сначала я загрузил мастера раздела easyup и Форматировал зарезервированный том системы, который я назначил активным позже (в котором была моя загрузочная папка). Когда я перезагрузился, я получил ошибку NTLDR missing.

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

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

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

0
0
0
2015-12-19 14:57:30 +0000

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

Bcdedit /set {bootmgr} device partition=Z:

вид с: bcdedit.exe /enum прошивка

-1
-1
-1
2012-08-13 00:06:38 +0000

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

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

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

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

-4
-4
-4
2012-08-25 20:41:13 +0000

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

bootcfg C:\Windows /l en-us

Похожие вопросы

3
28
13
7
4