Поделиться через


Простое предотвращение и восстановление кризисов

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

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

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

Критерии предварительной установки

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

Тип проверки Описание
Мощный Система должна заряжать батарею не менее 25 %.

Привязное питание (питание через USB-кабель или питание от переменного тока) не требуется.

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

Убедитесь, что все EFI-файлы на основе PE в полезных данных правильно подписаны с соответствующим сертификатом EFI.
Целостность Выполните проверка целостности полезных данных обновления встроенного ПО.
Версия Убедитесь, что применяемое встроенное ПО не понижает версию текущего установленного встроенного ПО за пределами значения LowestSupportedFirmwareVersion.
Память Следующие проверки выполняются соответствующим образом в зависимости от оборудования системы.

Достаточно места для резервного копирования текущего встроенного ПО, которое будет заменено.

На устройстве достаточно места для размещения нового встроенного ПО.

Любой сбой должен привести к соответствующему коду ошибки состояния последней попытки. Дополнительные сведения см. в разделах Код ошибки состояния последней попытки в определении таблицы ESRT и Состоянии обновления встроенного ПО.

Если применяется несколько обновлений, а некоторые из них проходят проверки предустановки, а другие — нет, встроенное ПО платформы может продолжить обновление встроенного ПО для ресурсов, прошедших проверки предустановки. Однако любой ресурс, не завершившемся проверка предустановки, не должен обновляться.

Критерии после установки

После установки встроенного ПО (устройства или системы) его необходимо проверить, чтобы убедиться, что новый обновленный образ встроенного ПО предназначен. Это позволяет свести к минимуму риски повреждения, которые возникли в процессе фактического обновления (например, липкие биты во флэш-памяти, шум в шине во время обновления и т. д.).

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

Любой сбой должен привести к соответствующему коду ошибки состояния последней попытки. Дополнительные сведения см. в разделах Код ошибки состояния последней попытки в определении таблицы ESRT и Состоянии обновления встроенного ПО.

Восстановление после сбоев установки и загрузки

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

В следующих разделах термин "зафиксирован" используется для описания встроенного ПО. После того как встроенное ПО будет зафиксировано, встроенное ПО обрабатывается как полностью установленное и не будет автоматически откатировано встроенное ПО из-за сбоя загрузки и т. д. Встроенное ПО uncommitted описывает частично обновленное встроенное ПО и может быть откатено до предыдущей версии в случаях, когда обновление встроенного ПО не может быть завершено или обновление встроенного ПО обнаруживает сбой (например, недопустимый проверка CRC в обновлении). Фиксация встроенного ПО — это то, что встроенное ПО должно отслеживаться внутренне и не фиксируется как часть ESRT.

Не удалось обновить встроенное ПО

Если установить отдельное встроенное ПО системы или устройства не удается или было установлено неправильно (например, из-за какого-либо повреждения или потери питания во время установки обновления), обновление может быть выполнено повторно до трех (3) попыток, включая первую попытку. Если встроенное ПО будет выполнять дополнительные повторные попытки, система не должна загружаться в Windows между попытками. Если все попытки завершаются неудачно, обновление встроенного ПО должно отменить. Если обновление было применено частично, встроенное ПО должно выполнить откат до предыдущей версии. Встроенное ПО должно откатиться до предыдущей версии без какого-либо взаимодействия с пользователем. Сбой обновления не влияет на другие ожидающие обновления; Следует попытаться выполнить ожидающие обновления встроенного ПО.

После обработки всех обновлений UEFI возобновит загрузку Windows. Встроенное ПО UEFI должно убедиться, что все незафиксированные обновления встроенного ПО успешно установлены, чтобы устранить проблемы, связанные с потерей питания (UEFI никогда не должен пытаться загрузить Windows с частично записанным встроенным ПО).

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

Причина сбоя установки Код ошибки
Нехватка ресурсов STATUS_INSUFFICIENT_RESOURCES
Потеря питания STATUS_INSUFFICIENT_POWER
Сбой оборудования STATUS_POWER_STATE_INVALID

Обновление встроенного ПО завершается успешно, но Windows не загружается

Встроенное ПО UEFI не отвечает за откат обновленного встроенного ПО после фиксации. Существующая логика отработки отказа в Windows перенаправляет пользователя в среду восстановления Windows (WinRE) после двух неудачных попыток загрузки. WinRE может успешно загрузиться или не загрузится. Конечный пользователь должен выполнить ручной шаг восстановления, чтобы восстановить свою систему, или должен будет вернуть свое устройство розничному продавцу или производителю.

Возможные причины этого класса сбоев включают в себя, но не ограничиваются ими:

  • Встроенное ПО несовместимо с драйверами ОС.

  • Встроенное ПО несовместимо с компонентами ОС.

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

Определение таблицы ESRT

Устройство plug and play

Создание пакета драйвера обновления

Обработка обновлений

Ввод-вывод устройства из среды UEFI

Состояние обновления встроенного ПО