Недавно Microsoft представила новый открытый проект «Project Mu»., который разрабатывает платформу для создания сред UEFI, которые инициализируют оборудование и предоставляют набор сервисов для загрузки операционной системы.
Прошивка на основе Project Mu уже используется в таких продуктах Microsoft, как Surface и Hyper-V.
В рамках проекта основан на работе открытого стека UEFI TianoCore EDK2, но это не вилка, а как дополнение (модуль «MU»), скомпилирован на основе новых стабильных версий TianoCore и возвращает определенные исправления и изменения TianoCore в основной проект.
Разработки проекта распространяются по лицензии BSD.
Una Ключевой особенностью проекта Mu является развитие идеи прошивки как услуги. (FaaS, «Прошивка как услуга»), суть которой заключается в предоставлении механизмов для поддержания прошивки и среды UEFI в актуальном состоянии.
FaaS позволяет рассматривать микропрограммное обеспечение как продукт, требующий постоянных обновлений для быстрого предоставления пользователям исправлений ошибок и уязвимостей, а также для добавления новых функций.
Разработчики проекта Mu постарались решить проблемы, возникающие при разработке прошивки UEFI, вызвано участием различных поставщиков и использованием различных проприетарных компонентов, на которые распространяются строгие лицензионные ограничения.
До сих пор из-за сложности организации взаимодействия между торговыми партнерами производители практиковали создание вилки типовой кодовой базы при создании прошивки с введением модификаций под конкретный продукт.
Поддерживать прошивку в таких условиях слишком сложно, а стоимость модификаций и риски, связанные с изменениями, позволяют генерировать обновления только в исключительных ситуациях.
О проекте Му
Mu предоставляет набор модулей, инструментов сборки и репозиториев, ориентированных на повторное использование кода, распределенный процесс совместной разработки с совместным использованием репозитория и строгий контроль качества.
Сгенерированная прошивка может сочетать компоненты с открытым исходным кодом с проприетарными модулями, которые разрабатываются отдельно, а сам модуль присоединяется к конечному продукту без нарушения лицензионных требований правообладателя.
В отличие от TianoCore, Project Mu включает дополнительные функции для улучшения совместимости с продуктами Microsoft., повысить масштабируемость (в контексте обслуживания микропрограмм для многих различных продуктов, в которых участвуют несколько компаний), упростить обслуживание микропрограмм и организовать плановые обновления.
Компоненты проекта включают пользовательский интерфейс, экранную клавиатуру, инструменты для безопасного управления настройками UEFI, высокопроизводительный загрузчик и набор примеров меню BIOS.
Для повышения безопасности проекта кодовая база TianoCore была очищена от устаревших компонентов и внесены изменения для уменьшения возможных векторов атак.
Помимо кода, в проекте также естьВключает набор спецификаций для организации процесса разработки прошивки., в соответствии с парадигмой FaaS, а также набор тестов и инструментов для анализа и оптимизации качества прошивки.
Основные характеристики Mu
- Интерфейс для настройки прошивки (DFCI, интерфейс конфигурации прошивки устройства) и инструментов для управления мобильными устройствами (MDM, Mobile Device Management);
- Система защиты паролем BIOS, которую PBKDF2 использует для хеширования паролей.
- Поддержка проверки компонентов с помощью цифровых подписей на основе EKU (Extended Key Usage).
- Использование фреймворка Microsoft для модульного тестирования.
- Средство для аудита, проверки функциональности и оценки работоспособности всех возможностей платформы.
- Масштабируемая система компиляции, написанная на Python.
- Плагины для отслеживания перезаписи информации и анализа флеш-дескриптора (Flash Descriptor, среда программирования SPI Flash).
- Система управления бинарными пакетами на основе диспетчера пакетов NuGet.
- Возможность сертификации цифровыми подписями компонентов, передаваемых с помощью механизма капсулы UEFI (средства передачи двоичных наборов данных в прошивку EFI)
- Поддержка компилятора Visual Studio.
- Поддержка кодировки Base64 для двоичных объектов.
- Пакет с поддержкой XML.