Разделы

Новое

Беседы про BIOS и UEFI

Утилиты

Реклама

Обзоры компьютерных гаджетов, которые должны быть всегда под рукой

Новости

23.11.2016

Инициативы компании Apple по отказу от классических ...

  • Все новости (32)
  • Спонсоры



        Яндекс.Метрика
    Главная » Статьи » С чего начинается UEFI-капсула?

    С чего начинается UEFI-капсула?

    Практическое знакомство пользователей с UEFI-интерфейсом начинается с того момента, когда в руки энтузиасту попадает бинарный файл UEFI BIOS, и с ним нужно что-то делать. Если посчастливится, образ будет со встроенным заголовком Aptio Capsule, которым снабжаются фалы с расширением *.cap. С этого момента для изучения предметной области есть два пути: либо разбираться самостоятельно с устройством файла UEFI BIOS, либо взять в качестве учебного пособия незамысловатую утилиту UEFICapsule от Вильяма Ли (William Lee), написанную им в далеком 2012 году и не потерявшую практическую ценность до сих пор. Правды ради отметим, что с актуальностью у программы UEFI Capsule File Dumper тоже не все в порядке, но о проблемах поговорим в последнюю очередь.

    Утилита UEFI Capsule File Dumper, предназначенная для визуализации набора статусных флагов, определяющих сценарий взаимодействия программных модулей UEFI BIOS

    Что такое UEFI-капсула?

    Согласно определению в спецификации UEFI, под капсулой подразумевается произвольный непрерывный блок данных, снабженный заголовком EFI_CAPSULE_HEADER. Для детектирования типа капсулы и корректной интерпретации данных, используется уникальный идентификатор CapsuleGuid.

    Определение капсулы в спецификации UEFI

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

    Одной из причин, осложняющих взаимодействие низкоуровневого программного обеспечения и ОС, является различие в подходах к управлению памятью. Firmware (BIOS) не использует виртуальную память и трансляцию страниц (если быть точным, то может использовать, но в режиме, предполагающем численное равенство линейного и физического адресов). ОС использует трансляцию, при этом соответствие между страницами виртуального адресного пространства приложения и физического адресного пространства платформы может быть произвольным и фрагментированным. Передавая блок данных низкоуровневому ПО, операционная система должна обеспечить непрерывное представление блока в физическом адресном пространстве. Механизм обеспечения такого соответствия основан на применении специальной структуры, называемой EFI_CAPSULE_BLOCK_DESCRIPTOR.

    Капсула снабжается набором статусных флагов, определяющих точный сценарий взаимо­действия программных модулей.

    Определение заголовка капсулы в спецификации UEFI

    Так, флаг CAPSULE_FLAGS_PERSIST_ACROSS_RESET определяет возможность сохранения блока дан­ных в ходе перезагрузки платформы.

    Просмотр содержимого заголовка капсулы
    Click to enlarge (кликните, чтобы увидеть в исходном размере)

    Просматривая содержимое заголовка капсулы, полученного с помощью утилиты UEFI Capsule File Dumper, отметим, что флаг CAPSULE_FLAGS_PERSIST_ACROSS_RESET уже установлен.

    Функциональность UEFICapsule

    Для того, чтобы получить доступ к содержимому заголовка капсулы, как показано выше, сначала необходимо открыть файл с бинарным содержимым UEFI BIOS, имеющий в своем составе сам заголовок. Такого рода образы утилита UEFI Capsule File Dumper считает ASUS BIOS Image файлами и ищет их по расширению *.cap.

    Утилита UEFICapsule работает только с файлами типа ASUS BIOS Image, имеющими расширение *.cap

    Все попытки открыть файл, объем которого кратен степени двойки (т.е. файл без добавленного заголовка капсулы), обречены на неуспех. Это и понятно, так как именно парсинг описательного блока данных вменяется в обязанности утилите UEFICapsule. Еще одна неприятность связана с тем, что программное обеспечение не умеет работать с образами, чей объем равен 16 мегабайт и выше. Что касается 8-мегабайтных файлов, то UEFI Capsule File Dumper открывает из без проблем.

    Таблица Capsule File OEM Header Info
    Click to enlarge (кликните, чтобы увидеть в исходном размере)

    При всей своей тривиальности, утилита UEFICapsule может оказаться весьма полезной и для понимания структуры UEFI BIOS, и для изучения конкретных его реализаций. В этой связи стоит обратить внимание на таблицу Capsule File OEM Header Info в конце визуализируемого блока данных.



    25.05.2017