OpenCore Boot Issues

Автоматическое восстановление загрузчика Windows

Процедура автоматического восстановления загрузчика, встроенная в среду восстановления Windows (WinRe), в таких случаях обычно бессильна. Но попробовать все же стоит:

  1. Загрузитесь с загрузочного диска, диска восстановления или установочной флешки с Windows 10;
  2. На экране установки нажмите кнопку «Восстановление системы;
  3. Затем выберите Устранение неполадок -> Восстановление при загрузке и выберите операционную систему, загрузчик которой вы хотите попытаться восстановить;Автоматический ремонт при запуске
  4. Но результат, скорее всего, будет отрицательным: Восстановление при загрузке не удалось восстановить компьютерремонт авто не удался

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

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

cd / dx:

И начнем снова:

diskpart выберите диск 0 список разделов выберите раздел 2

убери это:

удалить переопределение раздела

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

список разделов

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

создать раздел efi size = 100 list partition select partition 2 format quick fs = fat32 label = «System»

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

присвоить букву = Zexit

Готовим почву для бутрека.

  • создать папку загрузки:

mkdir Z: EFI Microsoft Boot

  • скопируйте туда файлы из среды EFI из папки, установленной Windows (C — буква диска с системными файлами Windows):

xcopy / s C: Windows Boot EFI *. * Z: EFI Microsoft Boot

  • пусть bootrec с флешки проверяет диски на наличие системных файлов Windows:

bootrec / scanos

Они никуда не денутся, если вы их случайно не удалили или они не попали в остатки области битого сектора…

  • . принудительно записать «правильный» файл BCD и другие «конфигурации»:

bootrec / rebuildbcd

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

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

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

Данные конфигурации загрузки для вашего ПК отсутствуют или содержат ошибки. Файл: EFI Microsoft Boot BCD Код ошибки: 0xc0000***

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

Не удалось найти хранилище данных конфигурации загрузки. Не удается найти необходимое системное устройство

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

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

UEFI Shell: Загрузка драйверов

Подсистема UEFI позволяет расширить ее функционал за счет загрузки внешних драйверов. Давайте подробнее рассмотрим эту проблему.

Зачем Это Нужно

Загрузка внешних драйверов позволяет расширить поддержку определенных функций в подсистеме UEFI. Например, по умолчанию UEFI включает только файловую систему FAT. С помощью драйверов можно добавить поддержку других файловых систем. Это позволит вам загружать из них программы * .efi.
Другой пример, загрузка драйверов сетевой карты. Загрузка этих драйверов активирует сетевые функции в подсистеме UEFI. Это подразумевает использование протокола TCP / IP встроенными или внешними приложениями EFI.
Вам может быть интересно: если все по-прежнему работает, зачем расширять возможности UEFI, загружая внешние драйверы? Поскольку сама оболочка UEFI Shell в большей степени является инструментом для управления загрузкой, эти дополнительные функции могут быть реализованы с помощью сценариев автозагрузки. Например, для загрузки из файловой системы ext или ntfs. Или даже пойти более сложным путем, скачать есть ли сеть или нет.

Тестовая Машина

Все дальнейшие действия будут производиться на виртуальной машине VirutualBox, на которой установлены операционные системы Windows 10 и Ubuntu Linux 18.10. То есть на самом деле жесткий диск этой виртуальной машины содержит файловые системы FAT32, EXT4 и NTFS. Последние два не поддерживаются UEFI.

Карта Intel выбрана в качестве сетевой карты.

Что Будем Делать

Сначала загрузим драйверы для файловых систем NTFS и EXT тестовой виртуальной машины. Продемонстрируем полученный результат. Попробуем установить эти драйверы.
Второй шаг — попытаться загрузить драйверы для виртуального сетевого адаптера IntelPRO / 1000 MT Desktop. Затем проверьте сеть с помощью команды ping.

Скачиваем Драйвера

Вы можете получить последние версии драйверов для популярных файловых систем, перейдя по этим ссылкам: x64, ia32, arm, aa64. Выбираем необходимую платформу и скачиваем соответствующие драйверы.

Драйверы для сетевых карт Realtek можно скачать по адресу https://yadi.sk/d/OELUb2AGd-SJWQ.
Или перейдите по ссылке https://realtek-drivers.ru/realtek-pcie-gbe-family-controller/.

Скачать драйверы для сетевых карт Intel можно по этой ссылке https://yadi.sk/d/VSUP8l2KPqAaAA.
Исходный архив доступен по адресу https://downloadcenter.intel.com/en/download/19186/Intel-Ethernet-Connections-Boot-Utility-Preboot-Images-and-EFI-Drivers.

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

Загрузка Драйверов Файловых Систем

Ранее упоминалось, что тестовая система содержит две файловые системы, которые не будут доступны в подсистеме UEFI, это NTFS и EXT4. Попробуем загрузить драйверы для этих файловых систем.
Затем загружается оболочка UEFI, подключаем флешку с загруженными драйверами и запускаем команду для переопределения подключенных накопителей.
# переопределяет карту таблицы монтирования -r

В выводе команды ищем точку подключения флешки, далее будем называть ее диском. В моем случае это блок FS3. Вы можете определить USB-флешку по типу устройства, это будет USB. Зайдите на этот диск и просмотрите его содержимое.
# переключиться на диск FS3 FS3: # показать содержимое текущего каталога ls

В корне диска находится папка Drivers, которую мы создали на этапе загрузки драйвера. Перейдите по пути Driver FS и посмотрите, что внутри.
cd драйверы FS ls

В итоговом списке файлов присутствуют следующие файлы: ntfs_x64.efi и ext2_x64.efi. Мы их загрузим.
Перед загрузкой драйверов файловой системы давайте взглянем на разделы, которые в данный момент недоступны.
# показать точки монтирования всех устройств блока карты

В получившемся списке не составит труда определить нужные разделы. Это BLK1, BLK3, BLK4, BLK5. На данный момент они недоступны. Доступные для просмотра, т.е понимаемые системой UEFI, диски имеют префикс FSx.
Сначала загрузите драйвер ntfs_x64.efi. Затем мы повторно инициализируем смонтированные диски.
# load ntfs_x64.efi driver load ntfs_x64.efi # reset drive map -r

Давайте посмотрим, что произошло после выполнения вышеуказанных команд. Первое, что бросается в глаза, это то, что блоки BLK1 и BLK4 получили новые метки FS0 и FS2 соответственно. Это означает, что эти разделы имеют файловую систему NTFS. Проверим содержимое этих дисков.
ls FS0: ls FS2:


По содержимому дисков можно сделать вывод, что FS0 — это раздел восстановления Windows, а FS2 — это раздел с установленной операционной системой Windows.
Еще одно замечание: привод FS3 указывает на флэш-накопитель USB и начал указывать на привод компакт-дисков. Флешка теперь монтируется под тегом FS5. Это произошло из-за переопределения таблицы монтирования после команды map -r.
Теперь загружаем драйвер ext2_x64.efi с последующим переопределением смонтированных дисков.
# перейти на флешку FS5: # перейти в каталог с драйверами cd Drivers FS # загрузить драйвер файловой системы EXT load ext2_x64.efi # перезаписать карту таблицы монтирования -r

На этот раз блок BLK5 имел приставку FS3. И флешка теперь под шильдиком FS6. Посмотрим содержимое диска FS3.
ls FS3:

Его содержимое указывает, что это раздел операционной системы Ubuntu Linux. Насчет раздела BLK3. В данном случае он принадлежит Linux, это раздел SWAP (раздел подкачки).
На него загружаются драйверы файловой системы. Вы можете просмотреть список всех драйверов, загруженных в подсистему UEFI, с помощью команды drivers.

Автозагрузка UEFI-драйверов

Все действия по загрузке драйверов в предыдущем разделе актуальны до первой перезагрузки компьютера. После перезагрузки потребуется заново загрузить драйверы. Что делать, если вам нужен загружаемый драйвер при каждой загрузке? В этом случае подсистема UEFI имеет возможность добавлять загрузочные записи для драйверов. Добавим драйверы файловой системы, ранее загруженные при загрузке.
Драйверы, добавленные при загрузке, должны быть размещены в системном разделе EFI в любом желаемом каталоге. В моем случае я использовал папку / EFI / Boot. На этом этапе виртуальный компьютер перезагружен, поэтому метки диска вернулись в исходное состояние. FS0 — системный раздел EFI, FS3 — флешка с драйвером. Копируем драйвера в системный раздел EFI.
# скопируйте драйвер ntfs_x64.efi в системный раздел EFI cp FS3: Drivers FS ntfs_x64.efi FS0: EFI Boot # скопируйте драйвер ext2_x64.efi в системный раздел EFI cp FS3: Drivers FS ext2_x64 .efi FS0: EFI Boot

Драйвера скопированы. Теперь создадим загрузочные записи для скопированных драйверов.
# добавить загрузочную запись для драйвера ntfs_x64.efi драйвер bcfg добавить 0 FS0: EFI Boot ntfs_x64.efi «NTFS Driver» # добавить загрузочную запись для драйвера ext2_x64.efi драйвер bcfg добавить 1 FS0: EFI Boot ext2_x64.efi «Драйвер EXT»

Мы проверяем загрузочные записи после их добавления.
# вывести информацию о загрузочной записи для дампа драйвера bcfg

Эти загрузочные записи будут храниться в подсистеме UEFI в энергонезависимой памяти. Сбросить их можно только вынув аккумулятор из материнской платы компьютера или вынув его.
Удаление загрузочных записей для драйверов происходит следующим образом:
# удалить загрузочную запись драйвера номер 0 bcfg driver rm 0
Номера загрузочных записей можно найти в выходных данных предыдущей команды. Обратите внимание, что их нумерация начинается с нуля.

Загрузка Сетевых Драйверов

Сетевой адаптер Intel PRO / 1000 MT выбран в качестве сетевого адаптера в виртуальной машине VirtualBox. Подсистема UEFI, встроенная в VirtualBox, не содержит драйверов для этой сетевой карты. Это очень странно, в этом не виноват конкурент VMWare, и возможно, что эти драйверы будут интегрированы в будущие версии. Этот сетевой адаптер был выбран, хотя бы потому, что для него в Интернете есть драйверы UEFI. Их легко найти и скачать.
Забегая вперед, скажу, что будет проблема с виртуальной машиной VirtualBox. Что не так-то просто диагностировать. Но сначала о главном.
Загрузим сетевые драйверы. Поскольку загруженный пакет драйвера EFI содержит 5 файлов,
# заходим на флешку FS3: # заходим в директорию с драйверами EFI cd Drivers Lan Intel # смотрим содержимое папки ls

и названия этих файлов не понимают, какой из них предназначен для используемой нами сетевой карты, самым простым действием будет загрузка всех пяти, но без подключения. То есть драйверы загружаются в память, но не запускаются.
# загрузить без подключения всех драйверов в текущем каталоге load -nc *

После загрузки драйверов в память мы видим список всех драйверов для подсистемы UEFI.
# перечислить все драйверы UEFI

Из представленного списка очевидными вариантами загрузки являются два драйвера: E3522X2.EFI и E8310X3.EFI. Но прежде чем мы продолжим, давайте подробнее рассмотрим вывод команды drivers.
Вывод команды построен в виде таблицы, состоящей из девяти столбцов.

1. Дескриптор драйвера. То есть уникальный номер в формате HEX, которому присвоен драйвер. Этот номер используется другими командами для выполнения операций с конкретным драйвером.
2. Версия драйвера. Здесь все просто, числовое обозначение версии драйвера.
3. Тип водителя. Возможные значения: B — драйвер шины, D — драйвер устройства,? — неизвестный или неподключенный драйвер.
4. Поддержка протокола конфигурации. Наличие символа «X» вместо «-» указывает на то, что драйвер настраивается.
5. Поддержка диагностического протокола. Наличие символа «X» вместо «-» указывает на то, что этот драйвер поддерживает диагностику. То есть он может предоставить информацию о своем состоянии.
6. Количество устройств, поддерживаемых драйвером.
7. Количество дочерних устройств, на которых работает этот драйвер.
8. Имя водителя.
9. Путь к файлу драйвера. Файл драйвера может находиться в оперативной памяти, на жестком диске или на любом другом поддерживаемом запоминающем устройстве.
Итак, продолжим. Выбор пал на драйверы E3522X2.EFI и E8310X3.EFI. Тип данных драйвера отмечен?. Это связано с тем, что мы загрузили драйверы без подключения и их тип еще не известен системе UEFI. Подключаем эти драйверы, то есть запускаем их. Для этого вам нужно использовать их дескрипторы. В моем случае для драйвера E3522X2.EFI дескриптор — AE, а для E8310X3.EFIB0.
# повторно подключите драйвер AE и B0 повторно подключите AE повторно подключите B0

Давайте снова покажем информацию о драйвере.
водители

Выходные данные показывают, что из двух драйверов работал только AE. Он изменил тип с «?» при «B» счетчик устройств, обсуждаемых драйвером, стал равным 1. Кроме того, стали активными интегрированные драйверы сетевых протоколов, появилась информация об их типе и счетчике устройств. Драйвер рабочий. Проверим доступные сетевые интерфейсы.
# перечислить сетевые интерфейсы ifconfig -l

Пустой вывод или отсутствие вывода в этом случае указывает на отсутствие сетевых интерфейсов. Поэтому драйвер не заработал как надо, вопрос только в каком именно. Как упоминалось ранее, при загрузке драйвера для сетевой карты также были включены драйверы протокола. В настоящее время отсутствие сети может зависеть как от драйвера сетевой карты, так и от встроенных драйверов протокола.
Давайте посмотрим на дерево устройств, в нем также можно найти полезную информацию.
# дерево устройств вывода постранично devtree -b

Дерево NIC начинается с дескриптора AD. Этот дескриптор можно использовать с командами подключения, повторного подключения и отключения. Команда devtree отображает отдельную ветвь конкретного устройства, если передана в качестве параметра его дескриптору. Показываем отдельную ветку сетевой карты, чтобы вырезать информацию о других устройствах.
# AD ветка устройства вывода devtree AD -b

На ветке сетевого адаптера можно увидеть дескрипторы протоколов, некоторые из них, в том числе TCPv4, не запущены, то есть помечены как Не запущены. Что на самом деле может быть причиной отсутствия доступных сетевых интерфейсов. Но это не совсем так.
Попробуем проверить вывод драйверов и команд devtree на другой виртуальной машине, а именно на VMWare. Подсистема UEFI этой виртуальной машины содержит встроенные драйверы для сетевых адаптеров, которые она использует. То есть сеть в UEFI изначально работает без дополнительных действий.

Запустите оболочку UEFI.

Посмотрим на список драйверов.
водители

Как упоминалось выше, подсистема UEFI виртуальной машины VMWare уже содержит необходимые сетевые драйверы. Представленные на картинке сетевые драйверы судя по состоянию исправны. Проверяем наличие сетевых интерфейсов.
ifconfig -l

Вот как должен выглядеть вывод команды ifconfig, когда с сетевой подсистемой все в порядке. На скриншоте видно, что сетевому интерфейсу не назначены сетевые настройки.
Теперь посмотрим на дерево устройств. А именно, как будет выглядеть ветка сетевого адаптера.
devtree -b

Сетевая карта в моем случае имеет дескриптор компакт-диска. Показываем отдельную ветку сетевой карты.
# вывод devtree сетевой карты филиал CD -b

Сравните вывод на машине VMWare с выводом на VirtualBox. Основное отличие заключается в том, что при использовании VirtualBox не запускается TCP.
Поскольку тема сравнения уже затронута, я предлагаю попробовать загрузить встроенный драйвер для сетевой карты виртуальной машины VMWare и загрузить те, которые мы скачали, для использования в VirtualBox.
Давайте еще раз просмотрим список загруженных драйверов, чтобы узнать дескрипторы драйверов сетевой карты.
водители

В систему загружены два драйвера для сетевых карт, первый с дескриптором 81, а второй с дескриптором 82. Из них драйвер 82 является функциональным, из описания которого видно, что это Intel PRO / Driver of the адаптер сетевой 1000 PCI-E. Скачиваем оба.
# выгружать указанные драйверы с подробным выводом unload 81 -v unload 82 -v

Проверим список системных драйверов.
водители

Скачаны драйверы сетевой карты. Драйверы сетевого протокола тоже перестали работать. Показываем сетевые интерфейсы.
ifconfig -l

Как и ожидалось, выхода нет, нет доступных сетевых интерфейсов. Это означает, что сетевая подсистема в данный момент не работает. Теперь загрузим драйверы сетевой карты, которые мы скачали ранее.
# загрузка драйверов с флешки загрузка FS0: Drivers Lan Intel E3522X2.EFI загрузка FS0: Drivers Lan Intel E8310X3.EFI

Проверим список системных драйверов.
водители

Из загруженных драйвер E8310X3.EFI заработал. Также работают встроенные драйверы сетевого протокола. Попробуем просмотреть список сетевых интерфейсов системы.
ifconfig -l

Теперь у системы есть сетевой интерфейс. Это означает, что загруженный драйвер работал правильно.
Проверяем работу сети. Пингуем IP-адрес 8.8.8.8.
# обновить конфигурацию сетевого интерфейса через dhcp ifconfig -r # отобразить информацию о сетевых интерфейсах ifconfig -l # проверить IP-адрес двумя пакетами ping 8.8.8.8 -n 2

Какой вывод можно сделать после проверки драйверов, загруженных в виртуальную машину VMWare. Самое главное, чтобы загруженные драйверы по-прежнему работали корректно. Тот факт, что виртуальная машина VirtualBox не отображала сетевые интерфейсы после загрузки драйверов, указывает на то, что проблема по-прежнему заключается во встроенных драйверах сетевого протокола этой виртуальной машины. Но это только мои догадки. Если у вас есть информация по этому поводу, напишите в комментариях.

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

Некоторые ошибки могут ждать админа здесь. Среди них наиболее распространены:

  • Ошибка BFSVC: не удалось открыть хранилище шаблонов BCD состояния — c000000f –
    нужно проверить введенные команды и путь для хранения системных файлов Windows; иногда ошибка появляется из-за неверного указания местного языка;
  • Ошибка BFSVC: Ошибка копирования загрузочных файлов из Last Error = 0x570: ошибка является следствием самого явления, что Windows не запускается. Плохие сектора могли появиться не только в загрузочном разделе EFI, но и на системном диске; сразу запустить жесткий диск с помощью утилиты chkdsk.exe из консоли командой

chkdsk с: / a

где c — диск с системой

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

bootrec / fixboot

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

  • выбрать загрузочное устройство, вызвав меню быстрой загрузки клавишами в зоне F или через BIOS
  • загрузиться с флешки с Windows 10 PE;
  • выйти из командной строки, удерживая Shift + F10 после появления окна установки Windows
  • как и в предыдущем режиме, нам нужно определиться со списком разделов компьютера. Также предполагаю, что жесткий диск установлен в единственном экземпляре:

объем списка дисков

  • найдите раздел EFI. Опять же, его размер небольшой (100 МБ в W7 и W10), и он имеет файловую систему FAT32:

 

мой EFI — это безымянный Том 3

  • по умолчанию он скрыт, что означает, что в нем нет букв. Он нам понадобится для дальнейшей работы. Итак, назначим букву прямо сейчас:

выбрать громкость * присвоить букву Y: выйти

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

cd / d Y: EFI Microsoft Boot

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

я сразу получил сообщение об ошибке «Доступ запрещен

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

bootrec / fixboot

  • с помощью утилиты bcdedit.exe пересоздайте репозиторий, скопировав загрузочные файлы из системной папки:

bcdboot C: Windows / l ru-ru / sk: / f ВСЕ

где это находится

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

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

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

bootrec / scanos bootrec / rebuildbcd

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

Оцените статью
Блог про загрузочные диски