Как внедрить обновления в встроенных операционных системах

Обновления в режиме «воздух» (OTA) стали фундаментальной возможностью для встроенных систем, работающих в этой области. Без возможности удаленного обновления прошивки устройства остаются уязвимыми для недостатков безопасности, страдают от ошибок, которые ухудшают производительность и не имеют функций, которые поддерживают их конкурентоспособность. Для встроенных операционных систем, работающих на ограниченных ресурсами, часто глубоко интегрированных аппаратных средствах, внедрение обновлений OTA является как технической проблемой, так и критическим требованием бизнеса. Это руководство проходит через архитектуру, этапы реализации и лучшие практики, необходимые для создания надежной системы обновления OTA для встроенных устройств.

Что такое обновления OTA и почему они важны?

Обновления OTA позволяют обновлять прошивку, прикладное программное обеспечение, конфигурации и даже саму операционную систему по беспроводной сети - сотовой, Wi-Fi, Bluetooth, LoRaWAN или спутник - без необходимости физического доступа к устройству. В таких отраслях, как промышленный IoT, автомобильные, медицинские устройства и системы умного дома, устройства часто развертываются в удаленных или недоступных местах. Отправка технического специалиста для физического перезапуска устройства является дорогостоящей, медленной, а иногда и невозможной. Обновления OTA решают эту проблему.

Помимо удобства, обновления OTA необходимы для:

Однако обновления OTA также вводят риски. Неудачное обновление может «сделать кирпич» устройству, повредить данные или открыть дыры в безопасности. Поэтому хорошо разработанная система OTA должна одновременно решать проблемы надежности, безопасности и ограничения пропускной способности.

Основные компоненты архитектуры обновления OTA

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

Загрузчик

Загрузчик - это самый первый код, который запускается при включении устройства. Для обновлений OTA загрузчик должен поддерживать две основные функции:

Сервер обновлений

Сервер хранит изображения прошивки, метаданные (версия, контрольные суммы, ключи подписи) и организует доставку в парк. Он также может обрабатывать регистрацию устройств, обеспечение соблюдения политики (например, поэтапные развертывания) и отчетность. Популярные решения с открытым исходным кодом включают Eclipse hawkBit и Mender , в то время как облачные платформы, такие как AWS IoT Device Management , предлагают управляемые услуги OTA.

Обновление клиент

Запускаясь на встроенном устройстве, клиент управляет связью с сервером, загружает полезную нагрузку обновления, проверяет ее подлинность, записывает ее в соответствующее место хранения и запускает загрузчик для применения обновления.Клиент должен работать надежно даже при плохих сетевых условиях, потере мощности или низкой батарее.

Инфраструктура безопасности

Безопасность не подлежит обсуждению. Как минимум, системы ОТА должны обеспечивать:

Управление складами

Встроенные устройства имеют ограниченную флэш-память. Система OTA должна эффективно управлять хранением текущей прошивки, загруженного обновления и резервных копий. Это часто включает в себя разделение вспышки по меньшей мере на два банка (A/B) или использование выделенного раздела восстановления. Сжатие (например, с использованием zlib или LZ4 ) и дельта (дифференциальные) обновления используются для уменьшения размера полезной нагрузки.

Шаги по внедрению обновлений OTA в встроенную ОС

Внедрение обновлений OTA требует систематического подхода, который охватывает все, от дизайна загрузчика до мониторинга всего парка. Ниже приведены критические шаги, организованные в практические этапы.

1.Разработайте загрузчик для управления обновлениями

Загрузчик является основой любой системы OTA. Его основная обязанность заключается в том, чтобы решить, какое изображение прошивки запускать и облегчить процесс обновления.

2. Создайте масштабируемый сервер обновлений

Сервер управляет распределением прошивки на потенциально тысячи устройств.

3.Разработать клиент обновления

Клиент работает на встроенном устройстве и взаимодействует с сервером. Его дизайн должен учитывать ограниченную память устройства, процессор и бюджет мощности.

4. Реализация надежной безопасности

Безопасность - это многоуровневый процесс. OTA-патч обновления - это основной вектор атаки; скомпрометированное обновление может дать злоумышленнику полный контроль над каждым устройством в парке.

5.Тестировать процесс обновления OTA тщательно

Поскольку OTA обновляет целевое оборудование, тестирование имеет первостепенное значение. Моделируйте каждый сценарий сбоя, который вы можете себе представить.

Лучшие практики для производства OTA систем

Помимо базовой реализации, следующие методы помогают обеспечить надежность вашей системы OTA в масштабе.

Использование A/B обновлений с атомным переключением

Обновления A/B (двухбанковские) являются наиболее надежным подходом для встроенных устройств, которые не могут переносить простои. Обновление применяется к неактивному слоту, пока активный слот продолжает работать. Только после того, как новое изображение полностью записано и проверено, система меняет слоты и перезагружается. Если новое изображение не загружается, загрузчик сразу же возвращается к старому слоту. Эта конструкция также позволяет обновлять время без перерыва, если устройство поддерживает прямую миграцию (хотя многие встроенные системы все еще перезагружаются).

Утверждение Delta / дифференциальные обновления

Вместо того, чтобы отправлять полное изображение прошивки каждый раз, обновления дельты вычисляют двоичную разницу между текущей и новой прошивкой и отправляют только этот патч. Такие инструменты, как bsdiff или , могут создавать патчи, которые часто на 80-95% меньше, чем полное изображение. Это снижает затраты на пропускную способность, ускоряет загрузку и снижает риск прерываний.

Фазовые развертывания и мониторинг в реальном времени

Никогда не продвигайте обновление до 100% устройств сразу. Выкатайте по фазам (например, 5%, 20%, 50%, 100%) с периодом охлаждения между фазами. Во время каждой фазы отслеживайте ключевые показатели: скорость обновления, скорость загрузки, отчеты об сбоях и изменения подключения. Если фаза показывает всплеск отказов, остановите развертывание и исследуйте, прежде чем продолжить.

Внедрить Watchdog в новую прошивку

После первой загрузки из новой прошивки загрузчик (или скрипт запуска) должен установить таймер сторожевого пса, который должен быть очищен новой прошивкой в коротком окне (например, 60 секунд). Если прошивка висит, падает или не очищает сторожевую пса, загрузчик предполагает, что она сломана и возвращается. Этот механизм улавливает скрытые ошибки, которые проявляются только через несколько секунд работы.

Обеспечить безопасный путь «сброса завода»

Даже при идеальном дизайне OTA устройства могут входить в невосстановимое состояние (например, поврежденную область загрузчика). Физический механизм восстановления, такой как кнопка, удерживаемая во время сброса, последовательная консоль или выделенное изображение восстановления, обслуживаемое по вторичному каналу, должен быть задокументирован в редких случаях, когда восстановление OTA не удается.

Log and Analysis Результаты обновления

Каждая попытка обновления должна генерировать журналы на устройстве (если позволяет хранение) и отправлять телеметрию результатов на сервер. Логи должны включать: идентификатор устройства, старую версию, новую версию, временные метки запуска / окончания обновления, размер загрузки, последнюю видимую силу сети и любые коды ошибок. Анализ этих данных помогает вам определить проблемные версии прошивки, узкие места пропускной способности сети или проблемы, связанные с аппаратным обеспечением.

Заключение

Внедрение обновлений OTA во встроенные операционные системы не является тривиальной задачей, но все чаще это необходимо для любого продукта, который ожидает жить в полевых условиях более нескольких месяцев. Ключ заключается в том, чтобы рассматривать систему обновлений как первоклассный компонент прошивки вашего устройства - разработанный с той же строгостью, что и логика приложения. Инвестируйте в безопасный загрузчик, масштабируемый сервер, устойчивый клиент обновлений и тщательное тестирование. При правильном выполнении обновления OTA дают вам возможность исправлять, улучшать и защищать ваши устройства на протяжении всего их жизненного цикла, экономя затраты и радуя пользователей.