Блочные OTA

Вы можете включить блочное беспроводное (OTA) обновление для новых устройств под управлением Android 5.0. OTA — это механизм, с помощью которого OEM-производители удаленно обновляют системный раздел устройства:

  • Android 5.0 и более поздние версии используют блокировку обновлений OTA, чтобы гарантировать, что каждое устройство использует один и тот же раздел. Вместо того, чтобы сравнивать отдельные файлы и вычислять бинарные патчи, блочный OTA обрабатывает весь раздел как один файл и вычисляет один бинарный патч, гарантируя, что результирующий раздел будет содержать именно нужные биты. Это позволяет образу системы устройства достичь такого же состояния через fastboot или OTA.
  • В Android 4.4 и более ранних версиях использовались файловые OTA-обновления, которые гарантировали, что устройства содержат одинаковое содержимое файлов, разрешения и режимы, но позволяли метаданные, такие как временные метки и макет базового хранилища, различаться между устройствами в зависимости от метода обновления.

Поскольку блочный OTA гарантирует, что каждое устройство использует один и тот же раздел, он позволяет использовать dm-verity для криптографической подписи системного раздела. Подробнее о dm-verity см. в разделе Verified Boot .

Примечание. Перед использованием dm-verity у вас должна быть работающая блочная система OTA.

Рекомендации

Для устройств, запускаемых с Android 5.0 или более поздней версии, используйте блокировку обновлений OTA в заводской прошивке. Чтобы сгенерировать OTA на основе блоков для последующих обновлений, передайте параметр --block в ota_from_target_files .

Для устройств, запущенных с Android 4.4 или более ранней версии, используйте файловые OTA-обновления. Хотя можно выполнить переход устройств, отправив полный блок OTA Android 5.0 или более поздней версии, для этого требуется отправить полный OTA, который значительно больше, чем добавочный OTA (и поэтому не рекомендуется).

Поскольку dm-verity требует поддержки загрузчика, которая есть только в новых устройствах, поставляемых с Android 5.0 или более поздней версии, вы не можете включить dm-verity для существующих устройств.

Разработчики, работающие над системой Android OTA (образ восстановления и сценарии, генерирующие OTA), могут быть в курсе изменений, подписавшись на список рассылки android-ota@googlegroups.com .

Файловые и блочные OTA

Во время OTA на основе файлов Android пытается изменить содержимое системного раздела на уровне файловой системы (пофайлово). Обновление не гарантирует запись файлов в согласованном порядке, согласованное время последнего изменения или суперблок или даже размещение блоков в одном и том же месте на блочном устройстве. По этой причине OTA на основе файлов не работают на устройстве с поддержкой dm-verity; после попытки ОТА устройство не загружается.

Во время OTA на основе блоков Android передает устройству разницу между двумя изображениями блоков (а не двумя наборами файлов). Обновление сравнивает сборку устройства с соответствующим сервером сборки на блочном уровне (ниже файловой системы) одним из следующих способов:

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

Примечание: adb fastboot размещает на устройстве те же самые биты, что и полный OTA, поэтому перепрошивка совместима с блочным OTA.

Обновление немодифицированных систем

Для устройств с немодифицированными системными разделами под управлением Android 5.0 процесс загрузки и установки для блочного ОТА остается таким же, как и для файлового ОТА. Однако само OTA-обновление может включать одно или несколько из следующих отличий:

  • Размер загрузки . Полноблочные OTA-обновления имеют примерно тот же размер, что и полнофайловые OTA-обновления, а добавочные обновления могут быть всего на несколько мегабайт больше.

    сравнение размеров ОТА

    Рисунок 1. Сравнение размеров Nexus 6 OTA между версиями Android 5.0 и Android 5.1 (различные изменения целевой сборки)

    Как правило, добавочные блочные OTA-обновления больше, чем добавочные файловые OTA-обновления из-за:

    • Сохранение данных . OTA на основе блоков сохраняют больше данных (метаданные файлов, данные dm-verity, макет ext4 и т. д.), чем OTA на основе файлов.
    • Различия алгоритмов вычислений . В файловом обновлении OTA, если путь к файлу идентичен в обеих сборках, пакет OTA не содержит данных для этого файла. При блочном OTA-обновлении определение незначительных изменений или их отсутствия в файле зависит от качества алгоритма вычисления исправлений и компоновки файловых данных как в исходной, так и в целевой системе.
  • Чувствительность к неисправной флеш-памяти и оперативной памяти . Если файл поврежден, файловый OTA завершается успешно, если он не затрагивает поврежденный файл, но блочный OTA дает сбой, если обнаруживает какие-либо повреждения в системном разделе.

Обновление модифицированных систем

Для устройств с измененными системными разделами под управлением Android 5.0:

  • Инкрементальные блочные OTA-обновления завершаются ошибкой . Системный раздел может быть изменен во время adb remount или в результате вредоносного ПО. File OTA допускает некоторые изменения в разделе, такие как добавление файлов, которые не являются частью исходной или целевой сборки. Однако блочный OTA не допускает добавлений к разделу, поэтому пользователям необходимо будет установить полную OTA, перезаписывающую любые модификации системного раздела, или прошить новый образ системы, чтобы включить будущие OTA.
  • Попытки изменить измененные файлы приводят к сбою обновления . Как для файловых, так и для блочных обновлений OTA, если OTA пытается изменить файл, который был изменен, обновление OTA завершается ошибкой.
  • Попытки доступа к измененным файлам вызывают ошибки (только dm-verity) . Как для файловых, так и для блочных обновлений OTA, если dm-verity включен и OTA пытается получить доступ к измененным частям системной файловой системы, OTA генерирует ошибку.