Windows не загружается, или как восстановить файл BCD на MBR в Windows?
Менеджер загрузки в современных ОС Windows для загрузки оной использует специальный файл BCD (Boot Configuration Data – он же файл данных конфигурации загрузки). В файле содержится информация об установленных системах и параметрах загрузки для каждой из них (если их несколько):
Если BCD повреждён и информация в файле не читается, Windows не загрузится. На фоне этого сразу после включения компьютера пользователь, скорее всего, видит сообщение от менеджера загрузки примерно следующего содержания:
Your PC needs to be repaired
The Boot Configuration Data file is missing some required information
File: \Boot\BCD
Error code: 0xc0000034
или
Windows failed to start. A recent hardware or software change might be the cause...
Первое, что приходит на ум в этом случае, так это следовать инструкциям менеджера восстановления загрузки, полагаясь на его возможности. С этим он часто справляется сам (просто не все из нас умеют выжидать и умело этим инструментом пользоваться). Но, если вы столкнулись с повторяющейся проблемой
Your PC needs to be repaired
The Boot Configuration Data file is missing some required information
File: \Boot\BCD
давайте попробуем воссоздать BCD файл вручную с нуля. Ещё раз повторюсь – эта схема применима на компьютерах с таблицей MBR. Для UEFI (GPT) написана другая статья. Здесь я показываю процесс для Windows 7, но для других, более новых версий вся информация также актуальна.
Как узнать тип таблицы загрузочной записи?
У Windows режим загрузки UEFI вместо Legacy? Вам в статью Как восстановить загрузчик EFI?
На будущее: резервную копию BCD можно было создать самому.
Что нам понадобится?
- Загрузочное устройство с Windows под рукой
- Прямые руки
Пробуем восстановить BCD на MBR автоматически
- из компьютера вынимаем все лишние флешки и удаляем прочие не принимающие в работе устройства с USB-интерфейсом
- загружаемся с флешки/диска с Windows
- через Shift + F10 выходим на аварийную командную консоль cmd
- попробуйте восстановить файл автоматически с помощью специально на то утилиты командой:
bootrec /RebuildBCD
- перезагружайтесь в свою копию Windows…
wpeutil reboot
- и проверяйте, не прокатило ли. Если нет…
Пробуем восстановить BCD на MBR вручную
Снова используем загрузочную Windows, выходя на ту же консоль, в которой…
- …проверяем список дисков и разделов командами:
diskpart list volume
Синтаксис дальнейших команд зависит от того, на сколько разделов разбит ваш жёсткий диск и каким “макаром” устанавливалась система. Дело в том, что обычно ещё перед установкой любая копия Windows сразу просит пользователя отщипнуть кусок 100-700 Мб для создания резервного раздела (он же Зарезервированный, и он же помечен в Diskpart как диск С) на случай восстановления после повреждения системных файлов. При этом присваиваемые разделам буквы утилитой Diskpart отличаются от привычных в Проводнике Windows. Так что с буквами к томам на период работы с BCD лучше сразу привыкнуть и запомнить их. Если вы не профессионал и боитесь запутаться в разделах – запишите их и размеры томов.
- покидаем Diskpart командой
exit
- в освободившемся окне cmd создаём ссылки на загрузчик и загрузочный сектор:
bootrec.exe /fixmbr bootsect.exe /nt60 all /force
- убиваем повреждённый файл BCD за ненадобностью:
del c:\boot\bcd
где с – буква Зарезервированного раздела. Сразу создадим на том же диске пустой, временный файл bcd.temp:
bcdedit /createstore c:\boot\bcd.tmp
- в нём для менеджера загрузки системы создадим точку входа bootmgr:
bcdedit.exe /store c:\boot\bcd.tmp /create {bootmgr} /d "Windows Boot Manager"
- всё это дело из файла bcd.temp переносим в BCD:
bcdedit.exe /import c:\boot\bcd.tmp
- закрепим загрузчик на диске С (пусть он так и останется настоящим, Зарезервированным разделом), откуда Windows загружалась ранее и будет продолжать загружаться:
bcdedit.exe /set {bootmgr} device partition=c:
- пока мы тут, можно изменить время ожидания загрузки, выставив, скажем, 5 сек.:
bcdedit.exe /timeout 5
- временный bcd.temp нам более не нужен; от него избавляемся:
del c:\boot\bcd.tmp
- Таким образом, у вас появился новый файл с работоспособными параметрами загрузки. Время добавить строчки входа для всех версий Windows, которые были до того установлены. Если это одна Windows, то и следующую команду можно ввести в единственном экземпляре:
bcdedit.exe /create /d "Винда" /application osloader
Если всё сделано правильно, утилита должна вернуть уникальный GUID идентификатор загрузчика на манер:
Запись {xxxxx-xxx-xxxxx-xxxx-xxxxxxx} была создана успешно.
- Давайте прикажем загрузчику использовать этот вход в качестве системы по умолчанию (не промахнитесь в символах, чтобы не было ошибки Указана недопустимая запись по умолчанию):
bcdedit /default {xxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxxx}
- Это ещё не всё. Загрузчик на месте, но системные файлы-то остались на другом диске (специально созданные разделы, где вы хранили ТОЛЬКО пользовательские данные – не в счёт). Я так понимаю, это, скорее всего, диск D (у меня, впрочем, это диск Е). На него загрузчику нужно обязательно показать. С оглядкой на нужную букву вводим команды по порядку:
bcdedit.exe /set {default} device partition=e: bcdedit.exe /set {default} osdevice partition=e: bcdedit.exe /set {default} path \Windows\system32\winload.exe bcdedit.exe /set {default} systemroot \Windows
- Точка входа по умолчанию скрыта, так что давайте сделаем её видимой для наших глаз:
bcdedit.exe /displayorder {default} /addlast
- перезагружаемся прямо из консоли:
wpeutil reboot
Вот и всё. Закрывайте консоль и грузитесь в свою копию Windows. Сразу позволю себе напомнить, что после успешной загрузки в Windows лучше задаться вопросом о причинах, вызвавших повреждение BCD.
Успехов.