Где разместить загрузочный образ на UEFI-разделе, чтобы он был обработан во время загрузки (для обновления прошивки)?

Вопрос или проблема

Я выяснил, что многие (большинство?) прошивки требуют перезагрузки для обновления, и работает это так: новые данные прошивки помещаются в раздел UEFI (я получил ошибку типа “не удается найти раздел UEFI” при попытке обновления и получил объяснение на канале поддержки), и во время следующей загрузки они обрабатываются и используются для обновления. Это правильно?

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

Таким образом, я не вижу большого риска попробовать обновить вручную: скопировать данные в UEFI и перезагрузиться. Но я не смог найти, на какой адрес их нужно скопировать. Вероятно, нужно установить некоторые биты, чтобы инициализировать обновление тоже. Я пытался искать в Интернете и читать спецификации UEFI (спецификации – довольно длинные документы, я не смог угадать, где искать на основе оглавления). Заранее благодарю.

P.S. В спецификациях UEFI я нашел разделы “Update Capsule” и “Reset system”.

Обновление: в процессе: Текущий вопрос: где хранятся переменные среды UEFI?

Из спецификаций UEFI:

8.5.5 Доставка капсул через файл на устройстве массового хранения

Альтернативой для API времени выполнения UpdateCapsule() может быть доставка капсул любого типа, поддерживаемого платформой, прошивке через файл внутри раздела системы EFI на устройстве массового хранения, предназначенном для загрузки. Капсулы, подготовленные таким образом, обрабатываются при следующей перезагрузке системы. Этот метод доступен только при загрузке с устройств массового хранения, которые отформатированы с помощью GPT и содержат раздел системы EFI в образе устройства. Системная прошивка будет искать капсулу, когда установлен бит EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED в OsIndications, как описано в разделе Обмен информацией между ОС и прошивкой.

Каталог EFI\UpdateCapsule (игнорирование регистра букв) внутри активного раздела системы EFI определен для доставки капсулы в прошивку.

3.1.1 Программирование менеджера загрузки

Программное взаимодействие с менеджером загрузки осуществляется с помощью глобально определенных переменных. При инициализации менеджер загрузки считывает значения, которые составляют все опубликованные параметры загрузки среди переменных среды UEFI. Используя функцию SetVariable(), данные, содержащие эти переменные среды, могут быть изменены. Такие изменения гарантированно вступают в силу после начала следующей загрузки системы.

Ответ или решение

Где разместить нагрузку на UEFI-раздел для обработки во время загрузки (для обновления прошивки)?

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

Механизм работы

  1. Постановка задачи: Как вы указали, многие прошивки требуют перезагрузки для обновления. Обновленная прошивка помещается в UEFI-раздел. Это действительно так, и возникает вопрос, где и как разместить такой файл.

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

  3. Размещение: Согласно вашему описанию, раздел "EFI\UpdateCapsule" предназначен для передачи капсул с прошивкой. Эта директория расположена внутри активного EFI-системного раздела. Файлы, помещенные сюда, обрабатываются при перезапуске системы.

Детали реализации

  1. UEFI Переменные окружения: Для корректной работы эти переменные необходимы. Они хранятся в NVRAM (энергонезависимая память) и управляются через функции SetVariable() и GetVariable().

  2. Капсулы обновления: Стандарт UEFI описывает капсулы как способ передачи больших данных обновления прошивки. Они могут размещаться как файл в указанной директории, и операционная система должна установить флаг EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED в переменной OsIndications, чтобы прошивка обработала их при следующем запуске.

  3. Где найти информацию: Информация об обновлении прошивки и изменении переменных находится в разделе "Update Capsule" и "Boot Manager Programming" спецификаций UEFI.

Контекст и важная информация

  • GPT-разделы: Ваше устройство должно использовать GPT (GUID Partition Table) и содержать корректно форматированный EFI-системный раздел.

  • Поддержка загрузки: Убедитесь, что ваша система поддерживает обновление через капсулы, установленные в EFI-разделе.

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

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

Капча загружается...