После двух лет разработки доступен первый стабильный релиз проекта Mender, в рамках которого развивается система для организации OTA-обновления (over-the-air) встраиваемых решений и потребительских устройств на базе различных Linux-окружений. Выпуск Mender 1.0 позиционируется как первый, готовый для внедрения в реальных проектах. Код клиентской и серверной частей системы написан на языке Go и поставляется под лицензией Apache 2.0. Целью проекта является упрощение развёртывания инфраструктуры для доставки и установки OTA-обновлений, что даёт возможность разработчикам прошивок сосредоточиться на создании продукта, не отвлекаясь на решение задач по распространению обновлений.
Mender предоставляет разработчикам серию компонентов, позволяющих развернуть серверы для доставки и сборки атомарно устанавливаемых обновлений, при которых система обновляется целиком. Разработчик формирует обновлённый образ прошивки и добавляет его на управляющий сервер Mender. Предоставляемый проектом инструментарий для сборки обновлений оптимизирован для работы со встраиваемыми дистрибутивами на базе платформы Yocto, но он также может быть адаптирован для любых других систем сборки дистрибутивов. В качестве примеров доступны два эталонных сценария для платы BeagleBone Black и для виртуального устройства vexpress-qemu. Поддерживается как интерфейс командной строки, так и web-интерфейс для управления распространением обновлений.
На потребительские устройства устанавливается специальный клиентский компонент, который периодически опрашивает сервер и при наличии обновления загружает его. Взаимодействие с сервером осуществляется только по HTTPS, аутентификация сервера выполняется на основе проверки TLS-сертификата, интегрированного в прошивку. Обновление включает полноценный образ корневой файловой системы. Для экономии трафика и сокращения времени загрузки в будущем планируется обеспечить поддержку delta-обновлений, включающих только изменения, относительно прошлого обновления.
Для организации атомарного обновления всей системы на накопителе создаётся два идентичных корневых раздела - активный и пассивный. Новое обновление устанавливается в пассивный раздел, никак не влияя на работу активного. После перезагрузки разделы меняются местами - раздел с новым обновлением становится активным, а прошлый активный раздел переводится в пассивный режим и ожидает установки следующего обновления. Если после обновления что-то пошло не так, осуществляется откат на прошлый вариант прошивки.
|