Сегодня прошивки для смартфонов развиваются гораздо быстрее, чем даже пару лет назад. Различные нововведения не только улучшают опыт использования смартфоном, но и дают новые ощущения, что очень важно, если вы покупаете телефон на несколько лет вперед.
Раньше процесс обновления мог быть запутанным и весьма неудобным для новичков, но теперь «накатить» свежую версию прошивки сможет даже ребенок. За это можно благодарить способ обновления под названием OTA.
OTA доступен для практически каждого современного смартфона. Естественно, такой способ обновления поддерживают устройства от нашего любимого бренда Xiaomi. Сегодня мы разберемся, что такое OTA и как с ним «работать».
OTA – что означает этот термин
На самом деле, OTA – уже давно существующий тип установки обновлений. Аббревиатура расшифровывается как «Over The Air», то есть «по воздуху».
Samsung A022G Download mode. Прошивка. Custom binary blocked by oem lock recovery
Уже из названия вы можете представить принцип «работы» OTA: вместо «ручного» скачивания файла прошивки и использования recovery, смартфон как бы ловит необходимые для него файлы с серверов производителя и в автоматическом режиме производит их установку.
Удобно это, в первую очередь, людям, которые совсем не разбираются и не хотят разбираться в процессе обновления ПО своего смартфона – все делается практически в автономном режиме, человеку остается лишь запустить процесс установки.
Плюсы обновления по воздуху
Как мы уже сказали, главный плюс OTA заключается в ее удобстве – файлы обновления закачиваются сами по себе. Кстати, вам не придется ждать подключения смартфона к Wi-Fi-сети – подойдет и мобильный Интернет. Правда, стоит помнить, что объем скачанных файлов может достигать нескольких Гигабайт – будьте аккуратны.
Однако, в целом, за минорные обновления волноваться не стоит, так как обновление не «прилетает» в виде целого файла прошивки – вы получаете лишь необходимые патчи и фиксы, что сильно убыстряет процесс установки новой прошивки.
Положительной стороной обновления OTA является также гарантия того, что на ваше устройство будет установлено официальное ПО прямиком из «дома» Xiaomi. Больше не нужно переживать по поводу вредоносных файлов и вирусов.
Еще одной чертой общего удобства от обновления по воздуху является отсутствие необходимости разблокировать загрузчик. По сути, именно этот пункт придает уверенности обычному юзеру в том, что он не сломает свое устройство из-за своих «кривых» рук.
Минусы OTA
В основном, минусы обновления по воздуху абсолютно несущественные – многие их вообще могут посчитать неважными. Все-таки мы обязаны предупредить о них.
Что такое Samsung MDM.
Во-первых, OTA попросту недоступно для «умельцев», привыкших кастомизировать смартфон по свои специфичные нужды (установка другой прошивки, рут-права и так далее).
Во-вторых, пользователи, установившие новую версию прошивки на «старое» устройство, могут заметить замедление в работе своего телефона.
Связано это с двумя причинами: 1) зачастую программисты Xiaomi не стремятся оптимизировать новые функции под устаревшее железо, 2) установка новой версии прошивки «поверх» старой (без очистки хранилища) может нести за собой ошибки несовместимости.
Как мы видим, плюсов OTA насчитывается больше, да и их вес точно уделывает возможные минусы.
Принцип работы OTA?
Выше мы говорили о том, что обновление по воздуху дает возможность скачать только те файлы, которые нужны в данный момент для «повышения» версии прошивки. Сам архив, «прилетающий» при обновлении на ваше устройство, состоит из трех главных составляющих: System (основная часть новой версии прошивки), Patch (файлы, исправляющие «косяки» предыдущей сборки) и META-INF (информация о том, что будет обновлено).
Вам не придется беспокоиться о том, как скачать данные файлы и найти путь к ним в Проводнике – все делается без вашего участия.
Как обновить ваш Xiaomi по воздуху?
Что ж, мы рассмотрели теорию – перейдем к практике. Перед началом обновления обязательно удостоверьтесь, что ваш смартфон «готов» к данному процессу.
К обязательным условиям для OTA относятся: заблокированный загрузчик со стоковым (родным) Recovery, стоковая прошивка (не кастом) и отсутствие рут-прав. Настоятельно рекомендуем поддерживать заряд вашего смартфона на уровне не ниже 60 процентов, а также «подчистить» хранилище, чтобы иметь возможность скачать необходимые файлы.
Автоматическое обновление
Начнем с самого популярного и простого способа обновить ваш Xiaomi. Исходя из названия метода, можно понять, что смартфон будет выполнять все действия по обновлению прошивки в автономном режиме – вам лишь необходимо будет соглашаться с выполнением некоторых требований устройства.
Прелесть автоматического обновления заключается в том, что в большинстве случаев вам просто-напросто придет системное уведомление о получении свежей версии прошивки. Однако если вы знаете, что обновление доступно, но уведомление так и не приходит, можно проверить его наличие вручную.
Заходим в общие Настройки смартфона и тыкаем по разделу «О телефоне». Внутри нас будет ждать список подразделов, среди которых находим пункт «Версия MIUI». Откроется меню обновления, внизу которого вы найдете кнопку «Проверить обновления». Нажимаем на нее и дожидаемся окончания поиска.
Если прошивка доступна к скачиванию, нажимаем на кнопку «Загрузить» и ждем, пока апдейт полностью загрузится. По окончании скачивания нажимаем на кнопку «Перезагрузить» и просто ждем завершения установки. В это время со смартфоном нельзя ничего делать, иначе есть большой шанс получить «кирпич».
После загрузки в систему ждем пару минут, чтобы прошивка «встала» на свои места и наслаждаемся обновлением.
Ручное обновление
Если же поиск в Настройках Xiaomi не привел к нужному результату, а свежая прошивка уже «лежит» на официальном форуме компании, то вы можете провести установку обновления в ручном режиме.
Для этого вам необходимо зайти на форум Mi Community, где всегда можно найти самые свежие (официальные) сборки под ваше устройство. В поиске сайта вбиваете модель вашего Xiaomi и переходите на его страницу. На данной странице ищете кнопку «Download Full Rom», нажимаете на нее и ожидаете окончания скачивания.
Небольшая ремарка: качать лучше сразу с телефона, чтобы не заморачиваться с перебросом архива с ПК на смартфон.
После скачивания возвращаемся к уже известному нам пункту «Версия MIUI» и нажимаем в открывшемся окне иконку в виде трех точек в верхнем правом углу экрана. Вывалится выбор из возможных действий – вам необходимо нажать на пункт «Выбрать файл прошивки».
Открывается проводник, в котором нам необходимо выбрать недавно скаченный архив с обновлением нашей прошивки. Нажимаем «Ок» и ждем завершения проверки файла и установки обновления.
Кстати, вариант ручного обновления предпочтителен для пользователей, стремящихся полностью избавиться от риска заполучить те самые ошибки при установке лишь урезанных файлов обновления. Связано это с тем, что с форума MIUI вы качаете полную версию свежей прошивки от Xiaomi.
Можно немного упростить и ускорить процесс установки полной версии обновления – для этого в пункте «Версия MIUI» (при нажатии на три точки) имеется подпункт «Скачать полную прошивку». Если вы сразу не находите данный пункт, нажмите несколько раз по логотипу MIUI 12, пока не появится сообщение о том, что дополнительные настройки стали доступны.
После этого нажимаем на строчку «Скачать полную прошивку», ждем ее скачивания и по окончании нажимаем на «Перезагрузить». Установка пойдет своим чередом.
Дополнительные способы обновления Xiaomi
Следующие методы обновления вашего смартфона совсем не относятся к тематике OTA, но не упомянуть о них мы не можем. Ведь частенько случаются непредвиденные ситуации и свежая прошивка «встает» не так гладко, как хотелось бы. В этом случае имеет смысл воспользоваться альтернативными способами установки прошивки.
Через Recovery
Для начала рассмотрим более простой способ обновления – через встроенный Recovery. Качаем файл полной прошивки, переносим его в корень хранилища и переименовываем архив в update.zip. После выключаем телефон и заходим в сам Recovery – для этого вам необходимо зажать одновременно кнопку питания и обе кнопки управления громкостью.
Попав в рекавери, наблюдаем выбор из нескольких действий. Нам необходимо кликнуть по пункту «Install update.zip to System One». После этого начнется процесс установки, по окончании которого нажмите на кнопку «Reboot to System», чтобы включить ваше устройство.
Через Fastboot
Второй способ прошивки актуален в самых «запущенных» случаях. Например, если ваш смартфон после обновления превратился в кирпич или же появились ошибки в работе устройства, которые не решаются обычной перепрошивкой силами самого смартфона.
Для прошивки через Fastboot нам понадобится программа Mi Flash. Не так давно мы подробно рассказывали о работе с данным ПО, поэтому в этот раз затронем лишь самые важные этапы прошивки.
Обязательно скачиваем версию прошивки именно под Fastboot – стандартная версия под рекавери не подойдет. После распаковки не забываем, что ни папку, ни отдельные файлы редактировать нельзя. Также в обязательном порядке устанавливаем все необходимые драйвера. В этом нам поможет сама программа, главное – соглашаться со всеми всплывающими окошками.
Прошивка с помощью Mi Flash вернет вашему Xiaomi первозданное состояние. Именно поэтому мы используем данный способ только в экстренных случаях, когда терять уже него.
Бонус: почему я не вижу OTA-обновление, если оно уже есть на форумах?
Ответ на данный вопрос очень прост: до вас еще не дошла очередь. Дело в том, что Xiaomi отправляю файлы обновления порционно, а не сразу на все свои устройства. Сделано это для того, чтобы не допустить появления ошибок на большом количестве телефонов.
Для начала свежая версия прошивки отправляется на ограниченное количество смартфонов, чтобы проверить ее стабильность. Если компания не получает сверхнегативной критики, то начинается вторая и третья волны отправки обновления. Если же свежая прошивка приносит большое количество багов, рассылка обновления сворачивается, и программисты «допиливают» только что выпущенное ПО.
Также Xiaomi просто боятся перегруза своих серверов – сегодня в мире невообразимое количество и разнообразие продукции от китайского бренда, поэтому отправить новую версию прошивки даже для одной модели было бы непосильной задачей.
Поэтому делаем вывод: если вы не хотите заморачиваться с дополнительными возможностями обновления, то просто запаситесь терпением и ждите появления заветного уведомления о новой версии MIUI.
Источник: andro-news.com
Бесшовные A/B-обновления в Android: как они устроены
Всем привет. В SberDevices наша команда занимается разработкой различных железок и прошивок для них на базе AOSP.
Начиная с Android 8 (у некоторых вендоров с 7.1) в системе появился новый механизм накатки OTA-обновлений, т. н. Seamless A/B OTA Updates — бесшовные обновления. В этом посте я опишу общие принципы его работы, рассмотрю механизм с точки зрения разработчика, а также проведу сравнение со старым (будем его называть recovery-based) подходом применения обновлений. Всё нижесказанное будет справедливо только для чистого AOSP, т. к. конкретная реализация зависит от вендора.
Recovery-based OTA
Обновления для Android поставляются в виде zip-архива с образами обновляемых разделов (block-based updates). Во времена KitKat это был просто набор файлов, которые копировались на устройство прилагаемым скриптом. Я не стану подробно останавливаться на этом режиме, кратко опишу основные принципы его работы:
- zip-архив скачивается системой на устройство;
- система перезагружается в режим recovery;
- проверяется совместимость обновления с устройством, его подпись;
- если всё OK, выполняется updater-script из zip-архива;
- в процессе обновления устройство может несколько раз перезагрузиться (например, для обновления device tree);
- если всё прошло успешно, загружаемся в новую прошивку.
- Необходимость резервировать достаточное количество встроенной памяти для OTA-архива. Для этого служит раздел /cache. Некоторые вендоры используют /data, но это редкость. В итоге пользователю остаётся меньше места (да, приложения всё ещё могут использовать место в разделе /cache, но с некоторыми ограничениями).
- Перезагрузка и применение обновления занимает время, что может быть критично для некоторых видов устройств, например, для Smart TV.
- Прерывание процесса обновления может привести к boot loop.
- Нет возможности откатиться на старую версию прошивки.
Seamless A/B OTA
Ключевые компоненты и механизмы, необходимые для реализации бесшовных A/B-обновлений:
- слотовая разметка флеш-памяти;
- взаимодействие с загрузчиком, управление состоянием слотов;
- системный демон update_engine;
- генерация zip-архива с обновлением. В рамках данной статьи этот аспект рассматриваться не будет.
Слотирование
Основным принципом работы A/B OTA является слотирование. Все разделы, которые необходимо обновлять (это могут быть любые разделы, а не только системные), должны находиться в двух копиях или, иначе, в слотах. В Android-реализации поддерживается 2 слота, которые именуются соответственно A и B. Система загружается и работает из текущего слота, второй используется только в момент обновления. К имени раздела добавляется суффикс с именем слота.
Ниже приведена таблица сравнения двух вариантов организации разделов на устройстве.
Все слотируемые разделы помечаются опцией монтирования slotselect, чтобы система могла выбрать правильный слот. В зависимости от того, где они описаны, это может быть fstab либо dts.
Изменения в таблице разделов
- В /сache больше нет необходимости. Теперь обновление может сохраняться либо в /data, либо сразу прошиваться в неактивный слот (об этом ниже).
- Раздел recovery также больше не используется. Однако режимrecovery всё ещё существует, он необходим, например, для сброса устройства на заводские настройки (к этому может привести rescue party). Или для т. н. ручного обновления (sideload) через adb. Recovery ramdisk теперь лежит внутри boot-раздела, ядро общее.
- Для переключения режима загрузки (android/recovery) появилась новая опция в cmdline ‑ skip_initramfs.
Главным достоинством A/B-обновлений является возможность стриминга прошивки. Именно она обеспечивает бесшовность и прозрачность обновлений для пользователя: для обновления устройству достаточно перезагрузиться в новый слот. В этом режиме нет необходимости заранее скачивать zip-архив, занимая место в /data. Вместо этого система сразу пишет блоки данных из специально подготовленного файла (payload, см. ниже) в каждый раздел неактивного слота. С точки зрения реализации нет разницы, скачиваем ли мы предварительно обновление либо сразу стримим его в слот.
Слоты имеют следующие состояния:
- active – активный слот, из него будет загружена система при следующей перезагрузке;
- bootable – обновление успешно прошито в слот, прошло валидацию, совпали хеш-суммы и т. д.;
- successful – система смогла успешно загрузиться в новый слот;
- unbootable – слот поврежден. Система всегда помечает слот как unbootable перед началом процесса обновления.
Алгоритм работы загрузчика при выборе слота:
- Загрузчик определяет, что имеется один или более слотов с флагом bootable.
- Из них выбирается активный слот (либо слот с наибольшим приоритетом).
- Если система загрузилась успешно, слот помечается как successful и active.
- Иначе слот помечается как unbootable и система перезагружается.
Изменение состояний слотов во время обновления:
Необходимые компоненты для работы с Seamless A/B.
boot_control
Для поддержки A/B-обновлений вендор должен реализовать специальный HAL-интерфейс — boot_control. Он позволяет изменять состояния слотов и получать о них информацию. Для внешней работы (например, через adb shell) используется утилита – bootctl. Интерфейс используется как средство взаимодействия между ОС и загрузчиком.
update_engine
Основной компонент всей A/B-схемы. Занимается загрузкой, стримингом обновлений, проверкой подписи и многим другим. Изменяет состояния слотов через boot_control. Позволяет контролировать процесс обновления устройства: приостанавливать, возобновлять, отменять.
Компонент пришёл в Android из ChromeOS, где уже используется некоторое время. AOSP поддерживает update_engine в виде статической sideload-сборки. Именно она используется в recovery, т.к данный режим не поддерживает динамическую линковку.
Процесс работы данного компонента можно разделить на следующие шаги:
- загрузка обновления в слот. Загружать можно как из предварительно скачанного пакета с обновлением, так и напрямую по Сети через http/https. В процессе загрузки проверяется подпись, открытый ключ уже находится на устройстве (/system/etc/update_engine/update-payload-key.pub.pem);
- верификация загруженного обновления и сравнение хеш-сумм;
- выполнение post-install скриптов.
2009-01-01 00:00:00 . 360 360 META-INF/com/android/metadata 2009-01-01 00:00:00 . 107 107 care_map.txt 2009-01-01 00:00:00 . 384690699 384690699 payload.bin 2009-01-01 00:00:00 . 154 154 payload_properties.txt 2009-01-01 00:00:00 . 1675 943 META-INF/com/android/otacert
- care_map.txt — используется update_verifier-ом (см. ниже);
- payload_properties.txt — содержит хеши и размеры данных внутри payload;
- payload.bin — пакет обновления, содержит блоки всех разделов, метаданные , подпись.
update_engine_client
Клиент для управления демоном update_engine. Может напрямую вызываться вендором для применения обновления.
update_verifier
Утилита для проверки целостности системы при первом запуске (слот с флагом active, но еще не successful). Контроль целостности реализуется с помощью модуля ядра dm-verity. Если проверка закончилась успешно, утилита помечает текущий слот как successful. Иначе система перезагружается в старый слот. Верифицируются только блоки, указанные в файле care_map.txt.
UpdateEngineApi
Для реализации vendor-сервисов обновлений существует Java API. Также имеется пример реализации такого сервиса.
Рассмотрим пример сборки A/B update в AOSP. Для этого отредактируем Makefile целевой платформы:
#Включим поддержку A/B AB_OTA_UPDATER := true #Укажем необходимые разделы для слотирования: AB_OTA_PARTITIONS := boot system vendor #Добавим необходимые пакеты PRODUCT_PACKAGES := update_engine update_engine_client update_verifier #Отключим раздел recovery TARGET_NO_RECOVERY := true #Убедимся, что НЕ определяются переменные для раздела cache: #BOARD_CACHEIMAGE_PARTITION_SIZE := . #BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := .
После вызова make otapackage получаем zip-архив с обновлением. В таком виде он уже подходит для sideload-режима. Можем выполнить перезагрузку в recovery и вызвать adb sideload ota.zip. Этот способ удобен для отладки.
Применение обновления изнутри рабочей системы обычно определяется вендором. Самый простой способ — выложить payload.bin на http-сервер и напрямую вызвать update_engine_client.
update_engine_client —payload=http://path/to/payload.bin —update —headers=» FILE_HASH=ozGgyQEddkI5Zax+Wbjo6I/PCR8PEZka9gGd0nWa+oY= FILE_SIZE=282344983 METADATA_HASH=GLIKfE6KRwylWMHsNadG/Q8iy5f786WTatvMdBlpOPg= METADATA_SIZE=26723″
В параметр headers передается содержимое файла payload_properties.txt. В logcat можно наблюдать прогресс обновления. Если передать ключ —follow, прогресс будет дублироваться в stdout.
Плюсы нового механизма обновлений очевидны:
- обновление системы происходит в фоне, не прерывая работу пользователя. Да, всё так же потребуется перезагрузка (в новый слот), но пройдёт она значительно быстрее, чем перезагрузка в recovery для применения обновления;
- минимизируется вероятность boot loop (от ошибок в реализации никто не застрахован). Процесс обновления можно прерывать, на активный слот это никак не повлияет;
- появляется возможность отката на предыдущую версию прошивки. Даже если по каким-то причинам обновление прошло неуспешно, система просто вернётся к старой версии;
- благодаря стримингу устройство обновится быстрее;
- в зависимости от реализации можно полностью исключить пользователя из процесса обновления.
- A/B OTA становится зависимой от текущей разметки диска, т. к. обновление происходит во время работы системы. Т. е. становится невозможно накатить обновление с изменёнными разделами;
- относительная сложность реализации.
Источник: habr.com
OTA обновления – что это такое и зачем это нужно
Большинство обладателей устройств на ОС Андроид знают о так называемых OTA обновлениях , но немногие знают, что это такое и как оно работает.
А на самом деле данный вид файлов апгрейда весьма удобен в использовании и полезен. Мы подробно рассмотрим определение рассматриваемого понятия, а также то, как его использовать.
Начнем с первого.
- Определение
- Пути распространения файлов
- Что есть в обновлениях
- Особенности распространения апгрейдов у некоторых фирм
- Куда можно установить ОТА
- Установка OTA
Определение
Аббревиатура OTA является сокращением от FOTA, что расшифровывается как «Firmware Over The Air» . Перевести это можно как «Программное обеспечение по воздуху» .
Из этого названия следует, что файлы ПО попадают на устройство, будь то смартфон или планшет, по воздуху, а не через кабель или компьютер.
Рис. 1. Апгрейд ПО
В данном случае речь идет о файлах прошивки, то есть об обновлениях операционной системы. Дело в том, что время от времени любой ОС необходим апгрейд.
В ней может меняться интерфейс, улучшаться функционал и так далее. Так вот, чтобы изменяться и улучшаться, система должна обновляться. Все очень просто.
И удобнее всего получать необходимые файлы по воздуху.
Что значит «по воздуху»?
Это стоит рассмотреть более подробно.