Чуть выше мы утверждали, что в embedded-разработке обновление прошивки — это часть базовой надёжности продукта. Именно поэтому вокруг OTA-update management вырос целый зоопарк решений, и RAUC здесь занимает очень понятное место.
Что такое RAUC
RAUC (Robust Auto-Update Controller) - это open-source фреймворк для безопасной установки обновлений на Linux-based embedded-системах.
Важно! RAUC — это прежде всего клиентская часть: он отвечает за проверку, установку и переключение версий на самом устройстве. Сервер, кампании обновлений, управление флотом и аналитика обычно строятся отдельно.
Что умеет RAUC
RAUC любят за то, что он не перегружен лишним функционалом, но закрывает ключевые вещи, которые нужны в реальном embedded-проекте.
Атомарное обновление
Главная идея RAUC — обновление должно либо пройти полностью, либо не затронуть рабочую систему. Это особенно важно для устройств, которые нельзя просто перезагрузить «и посмотреть, что будет».
A/B-схемы
Самый частый сценарий — две слота: один активный, второй резервный. Новая версия сначала ставится в неактивный слот, а потом система переключается на него. Если после перезагрузки что-то идёт не так, можно вернуться назад.
Проверка подписи и целостности
RAUC работает с подписанными образами, и это критично. Поддержка криптографической валидации и аппаратного хранения ключей делает его пригодным для вполне серьёзных "промышленных" сценариев.
Гибкость интеграции
RAUC достаточно спокойно живёт в разных архитектурах:
- разные схемы разделов;
- разные файловые системы;
- разные bootloader-ы;
- разные варианты хранения корневой системы.
Короче, RAUC особенно хорошо подходит, если у вас:
Встраиваемая система с ОС на Linux
Нужен фреймворк для обновления именно самого устройства
Есть собственный серверный бэкэнд системы, с которым можно интегрироваться
Есть команда готовая разбираться с интеграцией :)
Чуть позже приведем пример известного OTA-update комбайна (это когда вы хотите одну красивую кнопку в браузере "Обновить все").
Если есть предположения, как он называется, - пишите в комментариях!
