A/B (Seamless) System Updates

A/B (Seamless) System Updates

@android_core

Основная суть этой функции заключается в том, что устройство имеет второй раздел в своей памяти для разделов system/boot/vendor и т.д. Когда вы получаете OTA обновление, оно устанавливается в фоновом режиме, второй раздел устройства в это время обновляется, это означает что вы плавно переходите к обновленной версии прошивки. Если обновление не удастся, вы будете отброшены в рабочий раздел, то есть у компаний будет меньше головной боли с обновами, а потребители будут лучше защищены.

Поддержка seamless обновлений не является обязательным требованием для любого нового устройства Android, в отличие от Project Treble. Таким образом, подавляющее большинство новых устройств Android не поддерживают эту функцию. Это плохо, потому что разделы A/B приносят много преимуществ как для обычных, так и для опытных юзеров.

Разделы на Android

Раздел - это дискретная секция на внутренней памяти телефона, где хранятся данные. Какие данные хранятся в каждом разделе, зависит от железа, операционной системы и многих других факторов. У загрузчика будет один раздел, у системы будет второй, у пользовательских данных будет третий и т.д. Когда вы видите, что люди говорят о «/system» и «/cache», они ссылаются на имена определённых разделов.

Пример разделов на OnePlus 6. Раздел системы A/B подчёркнут.

Краткое описание разделов:

  • system - содержит ОС Android, системные библиотеки, системные приложения и другие системные файлы
  • recovery - содержит рекавери для восстановления, есть только на A-only (устройства A/B не имеют выделенных разделов recovery и cache)
  • boot - содержит ядро, ramdisk и разделы A/B (как раз в этот раздел на A/B устройствах подгружается временное TWRP)
  • userdata - содержит все данные ваших приложений, системы и внутреннего хранилища
  • vendor - поддерживает платформу и специфичные для устройства HAL-файлы, файлы необходимые ОС Android для связи с определенным железом
  • vbmeta - раздел для Android Verified Boot 2.0, который проверяет целостность процесса загрузки

OEM-производители устройств могут изменять свои схемы с разделами как они захотят. Есть также множество дополнительных разделов, такие как cust, product, oem... список можно продолжать долго.

Схема разделов A/B

  1. На изображении два раздела - system_a и system_b, с одинаковыми версиями OC.
  2. Предполагая, что system_a активен, обновление OTA будет прошито в system_b, в неактивный раздел, в фоновом режиме.
  3. System_a устанавливается в неактивное состояние, а system_b становится активным после перезагрузки устройства.
  4. Теперь неактивный раздел, system_a, будет обновлен при следующем обновлении системы.

Преимущества такого процесса обновления:

  1. Если при обновлении произошёл сбой, устройство вернется к рабочей сборке в другой слот.
  2. Ваши данные сохраняются совершенно нетронутыми даже если обновление закончилось неудачно, так как есть только один раздел (userdata), в котором хранятся ваши данные.

Влияние A/B на доступную память

Пример распределения памяти

Как узнать какой тип разделов у меня?


Материал подготовлен каналом @android_core

Если возникли вопросы - пишите в группу ВК, что бы не пропустить новости подпишитесь на канал.

Report Page