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

Как восстановить загрузчик EFI Windows 7 и Windows 10?

windows failed to start

В этой статье мы попробуем восстановить загрузчик EFI для Windows 7/8/10. Чуть ранее мы уже разбирали восстановление загрузки для таблицы MFT на примере Windows 7. Сейчас же позволю себе сразу отметить, что повреждение загрузчика в нашем случае чаще всего (помимо прочего) вызывается:

  • установкой второй операционной системы
  • неправильными операциями по восстановлению системы (или неудачным её завершением)
  • удалением неких данных из скрытых разделов
  • битыми секторами на носителе с Windows
  • действием зловредов.

С помощью представленных инструментов можно будет попробовать восстановить загрузчик EFI, который отказывается загрузить систему из-за отсутствующего или битого файла конфигурации по адресу:

Скрытый диск:\EFI\Microsoft\Boot\BCD

Вот, кстати, его примерное содержимое из Heren’s BootCD:

содержимое раздела EFI

Чтобы было понятно…

Структура разделов в таблице GPT на Windows, загруженной в режиме UEFI, чаще всего выглядит так:

структура диска GPT таблицы с поддержкой UEFI Windows 7

где

  • EFI – раздел ESP (Extensible Firmware Interface) – раздел, где хранится программное обеспечение с драйверами, обеспечивающими загрузку Windows;
  • MSR – он же Microsoft Reserved – резервируемый во время установки Windows раздел; его вполне может и не быть на вашей машине
  • Первичный раздел – том, где хранятся системные файлы: реестр, службы, системные утилиты, файлы настроек и т.д.

Windows 10 сюда добавляет ещё и диск Восстановления. По умолчанию (т.е. при установке Windows на НЕФОРМАТИРОВАННЫЙ диск), первые два раздела имеют чёткий объём. И потому по необходимости их легко вычленить, ориентируясь только лишь на размеры обоих. В Windows 7, например, это соответственно 100 Мб и 128 Мб. И это, как говорится, типовая конфигурация. Некоторые производители компьютеров создают разделы по своему усмотрению, например, засовывая туда среду восстановления Windows PE в файл winre.wim. Если вы обнаружили у себя такой файл, знайте, что именно он содержит в себе образ восстановления системы от производителя. Раздел EFI обязателен на GPT дисках с UEFI поддержкой. Когда компьютер включается, среда UEFI загружает загрузчик (EFI\Microsoft\Boot\bootmgfw.efi) из раздела EFI (ESP), передавая той контроль над загрузкой самой Windows. Нет раздела – нет загрузки.

где вы хотите установить windows

Раздел же MSR на диске создаётся для облегчения обзора разделов и используется для системных операций (типа конвертации диска из простого в динамический). Это резервный раздел, которому Windows никогда не присваивает опознавательные знаки. И данных пользователя он не содержит. В Windows 10 размер раздела MSR – 16 Мб (в Windows 8 – 128 Мб), тип файловой системы – NTFS.

где вы хотите установить windows разделы

Данные конфигурации загрузки Windows

О том, что файл по указанному выше адресу EFI\Microsoft\Boot\BCD повреждён, вам может сообщить синий экран смерти BSOD с ошибкой следующего содержания:

The boot configuration data for your PC is missing or contains errors.
File :\EFI\Microsoft\Boot\BCD
Error code: 0xc0000***

Это означает, что данные в файле Boot Configuration Data не распознают конфигурацию загрузчика вашей Windows. Однако, пользователей, знакомых с утилитой восстановления загрузчика в MFT bcdedit.exe, в этот раз та не выручит. При попытке её запустить, пользователь увидит непривычное:

The boot configuration data store could not be found.
The requested system device cannot be found

Мол, ни данных, ни самого устройства не существует. Причина одна: раз конфигурация загрузчика BCD в UEFI-режиме загрузки лежит в специальном разделе EFI:

efi раздел
efi раздел в Windows 7
управление дисками в windows 10
efi раздел в Windows 10

…то наша утилита просто его не видит. Т.е. не видит сам загрузчик, а то и весь раздел. В общем, не спасают и традиционные средства восстановления, созданные на такой случай:

выбор действия

восстановление при загрузке не работает
У вас тоже с ошибкой написано?

Как восстановить загрузчик EFI Windows 10: в лоб.

  • выбираем загрузочное устройство, вызвав меню быстрой загрузки клавишами в зоне F или через BIOS

pop up menu быстрой загрузки

  • загружаем с флешки с Windows 10 PE;
  • выходим на командную строку, зажав Shift + F10 после появления окна Установка Windows
  • как и в предыдущем режиме, нам нужно определиться со списком разделов компьютера. Далее я предполагаю, что жёсткий диск установлен в единственном экземпляре:
diskpart
list volume
  • обнаруживаем EFI раздел. Его размеры, повторюсь, невелики (100 Мб в W7 и W10), и он имеет файловую систему FAT32:
list volume diskpart
у меня EFI – это безымянный Том 3
  • по умолчанию он скрыт, а значит не имеет буквы. Для дальнейшей работы она нам понадобится. Так что присваиваем букву прямо сейчас:
select volume *
assign letter Y:
exit

присвоить букву тому в diskpart

После закрытия программы отправляемся в этот раздел:

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

Здесь появляется небольшое отступление. Этот путь существует по умолчанию, и причин, чтобы консоль вам отказала в переходе в указанную папку, нет. Если ошибка появилась, см. абзац Возможные ошибки или сразу переходите к следующей части Как восстановить загрузчик EFI Windows 7/10: пересоздаём EFI.

bootrec fixboot отказано в доступе
меня ошибка Отказано в доступе настигла сразу
  • создаём заново загрузочный сектор одноимённого раздела:
bootrec /fixboot
  • используя утилиту bcdedit.exe создадим хранилище заново, копируя загрузочные файлы из системной папки:
bcdboot C:\Windows /l ru-ru /s k: /f ALL

где

/f ALL – скопирует загрузочные файлы (и UEFI и BIOS режимов) для возможной поддержки загрузки на EFI и BIOS;

/l ru– ru – укажет на языковую локаль системы, которая будет использоваться, т.е. на русскую. Если всё проходит без ошибок, пропускайте абзац.

  • выполняем последовательно следующие команды:
bootrec /scanos
bootrec /rebuildbcd

Перезагружаемся в Windows 10 на жёстком диске и проверяем.

Возможные ошибки

Администратора здесь могут подстерегать некоторые ошибки. Среди них наиболее часто появляются:

  • BFSVC Error: Can not open the BCD template store. status – [c000000f] –
    нужно проверить вводимые команды и путь к хранению системных файлов Windows; иногда ошибка появляется из-за неправильного указания языковой локали;
  • BFSVC Error: Error copying boot files from Last Error = 0x570 – ошибка является следствием самого явления, что Windows не загружается. Вероятно, плохие сектора появились не только в разделе загрузки EFI, но и на диске с системой; прогоните жёсткий диск утилитой chkdsk.exe тут же из консоли командой
chkdsk с: /а

где с – диск с системой

  • Отказано в доступе – причин на то множество: от наличия плохих секторов до неверно выставленного режима загрузки (стоит Legacy вместо UEFI; нужно – только UEFI) с флешки. Однако. UEFI не был бы UEFI, если бы всё проходило вот так гладко: то, что раздел EFI не подпускает к своим файлам – это, скорее закономерность, чем исключение. Так что, если в доступе вам отказано, я советую вам просто сначала удалить сам раздел EFI (а он такой нам больше не нужен), воссоздать его заново с единственно необходимой для его работы директорией, а затем уже положиться на ремонтную bootrec, позволив ей завершить работу. Так что, если необходимость возникла, продолжаем работу с момента появления отказа команде
bootrec /fixboot

Как восстановить загрузчик EFI Windows 7/10: пересоздаём EFI.

Самое главное здесь – не промахнитесь с разделом/лами и не удалите тот из них, в котором хранятся данные Windows и ваша информация. Итак, раз bootrec.exe попасть в нужный нам раздел не смогла, раздел убираем. Для этого нам будет нужно вернуться в diskpart.exe, снова определиться с разделами и выбрать тот, что на 100 Мб. Возвращаемся в ремонтную консоль:

cd /d x:

вернуться в diskpart

И начинаем заново:

diskpart
select disk 0
list partition
select partition 2

удаляем его:

delete partition override

удалить раздел в diskpart

можно проверить результат:

list partition

list disk после удаления раздела

У нас осталось некоторое нераспределённое пространство, в котором мы заново создаём удалённый только что раздел:

create partition efi size=100
list partition
select partition 2
format quick fs=fat32 label="System"

форматирование в diskpart

Но при попытке присвоить применявшуюся ранее букву Y, консоль ответила отказом (надо было её перезапускать). Я присвою разделу букву Z:

assign letter=Z
exit

Подготовим почву для bootrec.

  • создаём папку загрузки:
mkdir Z:\EFI\Microsoft\Boot

создание новой папки EFI на системном диске

  • копируем туда файлы из состава среды EFI из папки установленной Windows (С – буква диска с системными файлами Windows):
xcopy /s C:\Windows\Boot\EFI\*.* Z:\EFI\Microsoft\Boot
  • пусть bootrec с вашей флешки проверит диски на предмет системных файлов Windows:
bootrec /scanos

Никуда они не денутся, если вы их случайно не удалили, или они не попали в зону бэд-секторов. Остаётся…

  • … заставить написать “правильный” файл BCD и прочие “конфиги”:
bootrec /rebuildbcd

bootrec scanos rebuildbcd

Выключаем компьютер, флешку вынимаем и включаем машину. Ждём появления Windows. Дайте ей загрузиться до Рабочего стола и проверяйте, всё ли на месте.

Ошибка вновь появляется…

Не беспокойтесь. Если вы вникли в процесс, и все команды вводили осознанно и корректно, ситуация, скорее всего, уже исправлена. Просто следует учесть особенности своеобразных фильтров безопасности, принятых для режима UEFI, и не путать буквы дисков. Их можно пройти, проделав такие шаги:

  • Разбудите BIOS:
    – снимите крышку боковую компьютера или нижнюю ноутбука
    – отключите жёсткий диск (отключив оба шлейфа на “стационарнике” или вынув из разъёмов на ноутбуке)
    – включите машину, дождавшись ошибки загрузки;
    – выключив компьютер, подключите жёсткий заново и снова, включив компьютер, проверьте;
  • проверьте UEFI меню платы компьютера на предмет правильной очерёдности разделов загрузки; первым должен стоять, как вы поняли, именно EFI;
  • убедитесь, что метка Загрузочный стоит только напротив EFI раздела, и ни у какого больше. Проверить и исправить ситуацию из Windows PE, к сожалению, не получится. И для этого придётся воспользоваться дополнительными инструментами в виде загрузочной флешки. Сделайте это любым удобным вариантом из статьи Метка диска Загрузочный: как добавить или удалить?

У меня всё. Успехов.

14 ответов к «Как восстановить загрузчик EFI Windows?»

  1. В фразе [i]Здесь можно провести некую аналогию со знакомым всем Зарезервированным разделом в MFT таблицах, в котором лежит файл конфигурации BCD плюс файлы для загрузки системы. [/i] MFT стоит поменять MBR.
    Хотя, аналогия не самая удачная – такой раздел есть и при GPT разметке в 7-ке.

  2. У вас в тексте серьезная ошибка, которая может привести к удалению диска C:
    _____________________________________________________________________________________________
    “У нас осталось некоторое нераспределённое пространство, в котором мы заново создаём удалённый только что раздел:

    create partition efi size=100
    list partition
    select partition 1
    format quick fs=fat32 label=”System””
    _____________________________________________________________________________________________
    В Вашем случае надо писать select partition 2 (как на фото, там отмечено правильно). Ибо partition 1, как я понимаю, это диск на котором установлена Windows, и его форматировать совсем не нужно.

  3. Что Вы, какие же оскорбления могут быть?? Не ошибается тот, кто ничего не делает.
    Кстати, ремарка:
    На Windows 7 в команде bcdboot ключ /f отсутствует.
    Обнаружил это, пытаясь в Windows 7 ввести команду “bcdboot C:\Windows /l ru-ru /s k: /f ALL”

    Благодаря Вашей статье я смог восстановить UEFI на Windows 7,
    испорченный благодарю поднятию бэкапа с одного жесткого диска на другой, используя Ghost для DOS.
    Почему загрузчик испортился, я так и не понял – поднимал с образа отдельно UEFI-partition и partition с диском C. Видимо нужно было копировать весь диск C в файл, но я не знал, сохранит ли он туда UEFI-partition. Но он скорее всего не сохранил бы, так как программа очень старая. Использовал ее потому, что она была на загрузочной DOS-флешке.

    Подскажите пожалуйста, можно ли избавиться от UEFI полностью, переделав диск в MBR, как описано здесь – https://qna.habr.com/q/344488 ?
    Хочу попробовать этот метод, но опасаюсь потери данных.

    1. Там описано всё верно, только кратко. странно, что у меня нет такой статьи. Я просто предпочитаю программу AOMEI Partition Assistant. Там есть такая функция. Возможно, что она только в PRO версии. Человек в статье использует “живой” диск, значит, работает из-под крякнутой или портативной версии программы. Я, кстати, без труда нашёл ПРОверсию легко, бесплатно, легально в интернете. По поводу потери данных – я конвертировал таким образом таблицы из MBR в GPT и обратно без проблем.

  4. То есть получается можно грохнуть UEFI-раздел, диск С: переконвертировать в MBR, назначить его загрузочным и Windows загрузится?
    И еще как я понимаю надо в биосе написать Legacy вместо UEFI?
    Опции “secret boot” у меня нет в биосе.

    1. Не совсем. Смена загрузок в BIOS опциях, конечно, обязательна. Но для того, чтобы сменить UEfi на Legacy,например, убивать efi раздел вообще не обязательно. Разный принцип загрузки означает, что компьютер будет искать загрузчик на разных разделах. Не обнаружит на одном, будет искать на другом, не заметив “незнакомый”. Так что перед конвертацией GPT в MBR следует просто приготовиться и создать отдельный раздел (можно пока пустой), подготовить Legacy-флешку с Windows для запуска с системными утилитами. А потом уже:
      – заменить таблицу на MBR
      – после перезагрузки загрузиться во флешку с утилитами
      – заново создать на новом/пустом разделе Legacy загрузчик BCD, с чем порой элементарно справляется Консоль восстановления загрузки. При этом загрузчик Legacy может уживаться и на системном диске.

      Такой вариант позволит вернуться к любому (Legacy или EFI) варианту загрузки Windows. Однако в любом случае данные с системного и других томов не херятся.

      Если начнёте тренироваться, подготовьтесь к тому, что ваша BIOS может вообще не понимать, что такое не EFI-принцип загрузки, выдавая синий экран с ошибкой контроллера. И никакие перепрошивки/обновления BIOS не прокатят. Например, HP последних моделей начинают этим грешить. Самый простой способ это проверить – с помощью Rufus записать загрузочную Live-флешку в режиме Legacy и попробовать запустить. Если синий экран – оставьте надежду.

  5. Вопрос:
    “Когда мне потребовалось избавиться от UEFI (не только загрузчика, а от этого формата диска вообще) на моём ультрабуке, то я проделал следующее:
    1. Сделал бэкап (он не понадобился).*** ”

    Вот такой способ получается не всегда может сработать, насколько я понял?

    1. Срабатывает. Речь о том, что не нужно удалять загрузочные разделы, пока не убедились в том, что загрузка в Legacy происходит корректно.
      P.S. Капча, конечно, барахлит. Но это уже будет проблемой нового хозяина. Блог выставлен на продажу, всё происходящее на нём мне становится всё менее интересным.

  6. Порядок разделов после воссоздания получился такой (исправлено):
    Раздел 1 Восстановление
    Раздел 4 Системный
    Раздел 2 Зарезервирован
    Раздел 3 Основной
    Что делать ?

  7. доброго времени суток.
    спустя 4 года, и в моём селе появилась необходимость обратиться к вашим знаниям.
    наутбук леново 110-15ACL работал на Win10 и очень тупил. я, т.к. имел практику с Win XP, 7, 10.. на ПК, решил всё сделать по накатанной дорожке.
    создал образ Вин7, загрузочную флешку, через меню установки снёс все разделы под 0, форматировал винчестер. создал на весь возможный объем памяти один раздел (не стал делить на С, D…). помимо этого автоматически создались разделы на 16, 100 МБ. виндовс залетела быстро. но в ходе первого запуска появился экран точь в точь как у Вас на скине.

    действовал пошагово вашей статьи, также столкнулся с отказом доступа fixboot, продолжил по статье возможных ошибок. всё сделал до конца. но при включении ноута ничего не поменялось. вытащил винчестер , вкл\выкл всё в точности по инструкции.
    экран остался неизменным.

    пытаясь повторить процедуру, также всё шло успешно. но теперь после загрузки висит окно Boot Menu и больше ничего не работает. максимум вновь запускать загрузочную флешку.

    Bios или как там его… UEFI не открываются, ни при запуске (пробовал все сочетания и варианты клавиш) даже через секретную кнопку запускал Boot. выбирал строку “bios setap” и он просто продолжал пытаться запустить Вин.

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

    дайте пожалуйста подсказки какие Ваши или сторонние статьи с инструкциями почитать. лучше конечно Ваши, очень подробно и понятно.

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

    1. Я извиняюсь, в 3000 км от компьютера. Но у вас неверный подход – вы решаете проблему по статье, которая написана про ошибку об отвалившийся системе. А у вас та возникла уже на этапе установки. Это не одно и тоже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Максимальный размер загружаемого файла: 50 МБ. Вы можете загрузить: изображение, видео. Ссылки на YouTube, Facebook, Twitter и другие сервисы, вставленные в текст комментария, будут автоматически встроены. Перетащите файлы сюда