Компания 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-контроллеров перед завершением работы.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.