Компания Microsoft представила Mu, открытую модульную систему для создания UEFI-прошивок

20 декабря 2018 года

Компания Microsoft представила новый открытый проект Project Mu, в рамках которого развивается каркас для создания UEFI-окружений, осуществляющих инициализацию оборудования и предоставляющих набор сервисов для загрузки операционной системы. Прошивки на базе Project Mu уже используются в таких продуктах Microsoft как Surface и Hyper-V. Проект основан на наработках открытого UEFI-стека TianoCore EDK2, но не является форком, а позиционируется как надстройка (модуль "MU"), собираемая на основе свежих стабильных выпусков TianoCore и возвращающая исправления и специфичные для TianoCore изменения в основной проект. Наработки проекта распространяются под лицензией BSD.

Ключевой особенностью проекта Mu является развитие идеи прошивки как сервиса (FaaS, Firmware as a Service), суть которой в предоставлении механизмов для поддержания UEFI-окружения и прошивок в актуальном состоянии. FaaS позволяет рассматривать прошивки как продукт, требующий постоянного обновления для оперативного доведения до пользователей исправлений ошибок и уязвимостей, а также для добавления новой функциональности.

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

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

В отличие от TianoCore в Project Mu включены дополнительные возможности для улучшения поддержки продуктов Microsoft, увеличения масштабируемости (в контексте сопровождения прошивок для множества разных продуктов, в разработку которых вовлечено несколько компаний), упрощения сопровождения прошивок и организации планового проведения обновлений. Предлагаемые проектом компоненты включают интерфейс пользователя, экранную клавиатуру, инструменты для безопасного управления настройками UEFI, высокопроизводительный загрузчик и набор примеров меню BIOS.

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

Основные возможности Mu:

  • Заменяемая, не привязанная к конкретным устройствам и оптимизированная для достижения высокой производительности реализация UEFI-стадии BDS (Boot Device Select). На данной стадии осуществляется инициализации устройств консоли, загрузка драйверов, выбор целевой системы для загрузки, монтирование накопителей и поиск загрузчика;
  • Интерфейс настройки прошивки (DFCI, Device Firmware Configuration Interface) и средства для управления мобильным устройством (MDM, Mobile Device Management);
  • Система парольной защиты BIOS, использующая для хэширования паролей схему PBKDF2;
  • Поддержка верификации компонентов по цифровым подписям на базе расширения EKU (Extended Key Usage);
  • Использование фреймворка Microsoft для проведения unit-тестов;
  • Средства для аудита, проверки функциональности и оценки производительности для всех возможностей платформы;
  • Масштабируемая система сборки, написанная на языке Python;
  • Плагины для отслеживания перезаписи информации и анализа флеш-дескрипторов (Flash Descriptor, структура для программирования SPI Flash);
  • Система управления бинарными пакетами, основанная на пакетном менеджере NuGet;
  • Возможность заверения цифровыми подписями компонентов, передаваемых при помощи механизма UEFI Capsule (средства для передачи бинарных наборов данных в прошивки EFI);
  • Поддержка сборки компилятором Visual Studio;
  • Поддержка кодирования бинарных объектов методом Base64;
  • Пакет с поддержкой XML;

Функциональность, которая скоро будет реализована:

  • Набор примеров меню для BIOS (в стиле MS Surface);
  • Экранная клавиатура с управлением мышью или через сенсорный экран;
  • Графический инструментарий для анализа производительности загрузки;
  • Возможность обновления TPM-прошивок Infineon при помощи механизма Capsule;
  • Система экранных уведомлений, информирующих пользователей о том, что устройство находится в неготовой к работе конфигурации;

Функции, уже интегрированные в TianoCore:

  • Библиотека для безопасной манипуляции целыми числами;
  • Система защиты от переполнения кучи;
  • DXE-драйвер с реализацией ESRT (event-to-sink reliable transport);
  • Масштабируемый фреймворк FMP (Firmware Management Protocol);
  • Компонент для отображения прогресса применения обновления с использованием механизма Capsule;
  • Оптимизации хэширования для TCG FV (Trusted Computing Group Firmware Volumes);
  • Обработка корректного отключения NVME-контроллеров перед завершением работы.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Компания Microsoft представила Mu, открытую модульную систему для создания UEFI-прошивок», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.