Разберемся, что из себя представляет обновление OTA на Xiaomi
Сегодня прошивки для смартфонов развиваются гораздо быстрее, чем даже пару лет назад. Различные нововведения не только улучшают опыт использования смартфоном, но и дают новые ощущения, что очень важно, если вы покупаете телефон на несколько лет вперед.
Раньше процесс обновления мог быть запутанным и весьма неудобным для новичков, но теперь «накатить» свежую версию прошивки сможет даже ребенок. За это можно благодарить способ обновления под названием OTA.
OTA доступен для практически каждого современного смартфона. Естественно, такой способ обновления поддерживают устройства от нашего любимого бренда Xiaomi. Сегодня мы разберемся, что такое OTA и как с ним «работать».
OTA – что означает этот термин
На самом деле, OTA – уже давно существующий тип установки обновлений. Аббревиатура расшифровывается как «Over The Air», то есть «по воздуху».
Уже из названия вы можете представить принцип «работы» OTA: вместо «ручного» скачивания файла прошивки и использования recovery, смартфон как бы ловит необходимые для него файлы с серверов производителя и в автоматическом режиме производит их установку.
Удобно это, в первую очередь, людям, которые совсем не разбираются и не хотят разбираться в процессе обновления ПО своего смартфона – все делается практически в автономном режиме, человеку остается лишь запустить процесс установки.
Плюсы обновления по воздуху
Как мы уже сказали, главный плюс OTA заключается в ее удобстве – файлы обновления закачиваются сами по себе. Кстати, вам не придется ждать подключения смартфона к Wi-Fi-сети – подойдет и мобильный Интернет. Правда, стоит помнить, что объем скачанных файлов может достигать нескольких Гигабайт – будьте аккуратны.
Однако, в целом, за минорные обновления волноваться не стоит, так как обновление не «прилетает» в виде целого файла прошивки – вы получаете лишь необходимые патчи и фиксы, что сильно убыстряет процесс установки новой прошивки.
Положительной стороной обновления OTA является также гарантия того, что на ваше устройство будет установлено официальное ПО прямиком из «дома» Xiaomi. Больше не нужно переживать по поводу вредоносных файлов и вирусов.
Еще одной чертой общего удобства от обновления по воздуху является отсутствие необходимости разблокировать загрузчик. По сути, именно этот пункт придает уверенности обычному юзеру в том, что он не сломает свое устройство из-за своих «кривых» рук.
Минусы OTA
В основном, минусы обновления по воздуху абсолютно несущественные – многие их вообще могут посчитать неважными. Все-таки мы обязаны предупредить о них.
Во-первых, 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.
Как Разрешить / Запретить OTA ( обновления по воздуху) на Андроид
Как Разрешить / Запретить OTA ( обновления по воздуху) на Андроид. Очень часто можно встретить такую ситуацию как обновление по воздуху Android, но не все предпочитают OTA обновления в силу того что это очень дорого для мобильного трафика и не очень безопасно, так как во время обновления могут возникнуть сбои (разряженная батарея, не удачно скачалось обновление).
Если получать данные обновления нет желания, то тогда необходимо их запретить. Как это сделать можно узнать из данной статьи. На ваш выбор будет предложено несколько способов, с помощью которых можно будет легко отключить или вновь разрешить обновление «по воздуху» при наличие Root прав и в случае их отсутствия.
Инструкция чтобы запретить обновление «по воздуху» Android
Способ №1 (Если нет Root прав, скрыть уведомление, Android 5.X и выше)
1. Потяните шторку с уведомлениями вниз;
2. Нажмите и удерживайте на уведомление «Скачать обновление»;
3. Нажмите на появившуюся кнопку «i»;
4. В открывшемся меню отключите все уведомления «Блокировать все»!
Способ №2 (Если есть Root права, отключение)
1. Установить драйвера Android на ПК;
2. Скачать и установить фирменную программу на ПК — Adb Run или использовать стандартное ADB;
3. Включите отладку по USB на Android и подсоединить Android к ПК;
4. После чего Откройте программу Adb Run;
6. После чего перезагрузите Android и ваш девайс получать обновления не будет.
Инструкция вновь разрешить обновление «по воздуху» Android
Способ №1 (Если нет Root прав, включить уведомления, Android 5.X и выше)

2. Найдите приложение «Сервисы Google Play» и перейдите в него;
3. Войдите в уведомления;
4. Активируйте уведомления;
5. Перезагрузите Android девайс, после оповещения о обновление снова будут доступны вам.
Способ 2 (Если есть Root права, включение)
1. Включите отладку по USB на Android и подсоединить Android к ПК;
2. После чего Откройте программу Adb Run
4. После чего перезагрузите Android и обновления «по воздуху» будут снова приходить к на ваш девайс.
Что такое обновление OTA, способы его установки
Ярослав Драгун 10.11.2021 19
В комментариях вы часто спрашиваете, что такое OTA-прошивка, чем она отличается от Recovery, как установить это обновление MIUI на Xiaomi. Особенно популярен вопрос почему не пришло OTA, хотя есть 100% уверенность в том, что она уже вышла.
Сегодня ответим на эти и другие вопросы касательно обновлений, прилетающих «по воздуху» на смартфоны Xiaomi.
Что такое обновление ОТА (FOTA)
OTA — это пакет обновления, который приходит на смартфон Xiaomi посредством мобильного интернета или Wi-Fi соединения. Аббревиатура ОТА произошла от английской фразы Over The Air, что в переводе означает «по воздуху».
Это то же самое, что FOTA (Firmware Over The Air), в переводе с английского звучащее как «микропрограммы по воздуху».
Для установки OTA Update не требуется наличие ПК, а при установке прошивки ваши данные не пропадают.
Любой пакет ОТА включает в себя файлы, позволяющие установить прошивку на конкретный смартфон Сяоми:
Это стандартный состав любой прошивки ОТА.
Не каждая версия прошивки MIUI получает ОТА. В некоторых случаях разработчики выпускают пакеты для прошивки только посредством Recovery или Fastboot.
Чтобы выбрать OTA или Recovery ROM, рассмотрим их отличия:
Установка ОТА: автоматически, через три точки и вручную
Перед началом стоит убедиться, что аккумулятор смартфона заряжен хотя бы на 60%. Во время установки ОТА используются все ресурсы устройства и батарея расходуется быстрее. Если в процессе смартфон отключится, то получится «кирпич», который придётся реанимировать при помощи режима Fastboot.
Существует 3 простых способа как установить прошивку OTA на телефон Xiaomi:
Пользовательские данные будут сохранены, но всегда есть риск их потерять из-за ошибки во время установки обновления. Сделайте резервную копию важных данных заранее.
Автоматическая установка
Для обновления используются возможности смартфона и его текущей прошивки, ПК не нужен.
Автоматическое обновление через OTA можно запустить из меню настроек телефона:
Установка OTA через «три точки»
Используется в том случае, если автоматический способ по какой-то причине не сработал. Установка OTA Update через три точки требует больше действий, но в результате телефон также получит последнюю версию MIUI.
Как установить OTA через три точки:
Установка прошивки начнётся автоматически после скачивания. При этом смартфон будет перезапущен. Полноценно пользоваться им можно будет только после полной загрузки устройства.
Обновление ОТА устанавливается только на ту версию ОТА, для которой она выпущена. Если вы случайно пропустили одно или несколько обновлений, сначала придётся установить предыдущее и только потом перейти к установке актуальной версии. Либо ставить Recovery ROM.
Ручное обновление
Такой вариант подходит случае, если вы скачали официальное ОТА-обновление самостоятельно, поскольку вам на телефон оно всё не приходит (почему OTA не прилетает рассказано ниже).
Как установить OTA обновление вручную:
Операционная система проверит целостности пакета и начнёт установку. Во время обновления телефон будет перезагружен. После рестарта у вас будет актуальная версия прошивки.
Альтернативные способы: Recovery и Fastboot
Применяются в случаях, если ОТА по какой-то причине не пришло или его невозможно установить. Recovery часто используют для установки «чистой» MIUI, а Fastboot помогает, если обновление прошло неудачно и телефон превратился в кирпич.
Recovery
В этом случае используются возможности стокового рекавери MIUI. Можно скачать официальную MIUI из архива и прошить вручную.
Как установить OTA через рекавери:
Скачанная прошивка должна иметь имя update.zip. Если имя будет другое, то рекавери просто не увидит файл и прошивка новой версии будет невозможна.
Fastboot
Фастбут позволяет решить проблему неудачного обновления, когда телефон превратился в кирпич. У режима Fastboot много других возможностей, но сегодня мы остановимся только на перепрошивке Xiaomi.
Для установки OTA через Fastboot необходимо скачать программу MiFlashPro.
Процесс прошивки смартфона немного сложнее:
Процесс установки занимает от 5 до 10 минут. По завершении процедуры телефон самостоятельно перезагрузится.
Учтите, что при таком сценарии обновления прошивки можно лишиться всех своих данных. Поэтому лучше создать резервную копию.
Есть ещё набор утилит Xiaomi ADB/Fastboot Tools, которые помогаю прошивать смартфоны Сяоми нажатием пары кнопок. По сути, это командная строка ADB с графический интерфейсом.
Обновление Android на Xiaomi A-серии
Смартфоны серии А от компании Xiaomi отличаются от других продуктов китайского техногиганта тем, что в них установлен «чистый» Андроид без фирменной оболочки MIUI. Хотя на тот же Mi A2 позже выпустили MIUI 11.
Проблемы при установке ОТА на эти телефоны уже стали своеобразной традицией. Например, для Xiaomi Mi А3 в декабре 2020 года вышла Android 11, но вскоре оказалось, что после установки прошивки телефон превращается в кирпич, который нужно нести в ремонт.
Как работают OTA-обновления в Android, и почему они дают сбои
Содержание статьи
Довольно часто юзеры, привыкшие рутовать прошивки, устанавливать разного рода системный софт, менять ядра и по-другому издеваться над прошивкой, обнаруживают, что установить OTA-обновление невозможно. Оно просто не встает, ругаясь на измененные системные файлы, неправильные цифровые ключи и всякое прочее. В этой статье я расскажу о самой механике обновления, причинах возникновения проблем и о том, как их решить.
Как это работает
Первыми новые версии Android традиционно получают последние из устройств Nexus. Когда новая версия прошивки готова для широкой публики, полный образ размещается по адресу developers.google.com/android/nexus/images. Вскоре после этого начинается распространение прошивки по воздуху. Как рассказывает один из разработчиков Google Дэн Моррилл (Dan Morrill), сначала ОТА рассылается на 1% устройств. Это происходит рандомно, независимо от региона или места покупки телефона/планшета. В это время отлавливаются баги, что позволяет приостановить обновление при наличии критических ошибок у большого числа пользователей.
Далее в течение пары недель обновление распространяется для 25, 50, 100% пользователей. То есть на первом этапе шанс на получение обновления имеет одно устройство из ста. Если обновление не получено, то устройство выпадает из списка и повторное неоднократное нажатие на кнопку «Проверить наличие обновлений» автоматически переносит устройство в конец списка. Когда запускается новый этап рассылки, нажатие на кнопку дает следующий шанс получить обновление уже 25%. Так как устройство само проверяет наличие обновления раз в сутки (или при перезагрузке), то нажатие на кнопку может «выстрелить» раньше, чем это случилось бы само по себе. Но опять-таки проверка будет только один раз. Дальнейшие нажатия не помогут. Это не та ситуация, когда «кто первый нажал, тот первый получил». В любом случае обновление по воздуху придет всем в течение пары недель. Самые нетерпеливые могут прошить обновление руками (об этом ниже).

Хакер #196. Все о Docker
Форсируем обновление
Ускорить получение обновления можно двумя способами. Первый — очистка данных Google Services Framework с последующей перезагрузкой устройства. Крайне не рекомендуемый способ, который осуждают даже инженеры Гугла. Этот способ вызывает множество негативных эффектов, главный из которых — смена идентификатора для GCM (Google Cloud Messenger). Этот идентификатор нужен во всех программах Гугла и множестве других приложений, использующих функции push-уведомлений. И если в некоторых программах побороть эффекты относительно легко, то для многих других последствия могут быть более печальны. Все приложения просто перестанут принимать push-уведомления, основанные на GCM, пока не получат новый идентификатор. Некоторые приложения делают проверку часто, некоторые редко. Для части поможет очистка данных приложения. А те приложения, которые используют GCM ID в качестве идентификатора на своих серверах, могут иметь более глубокие проблемы.

Второй — установка обновления руками через консоль восстановления. Вскоре после запуска ОТА в профильных темах устройств на ресурсах 4PDA и XDA появляются файлы вида хеш.signed-hammerhead-LRX21O-from-KTU84P.c1a33561.zip, в названии которых содержится хеш файла, марка устройства, а также версии прошивок для обновления (на какую, с какой). На компе необходимо иметь папку с утилитами ADB и fastboot. Я использую последние версии из Android SDK. В ту же папку нужно положить скачанный архив с ОТА-обновлением. Также необходимо иметь правильно установленные драйверы для устройства, которые могут конфликтовать с ранее установленными драйверами для других устройств.
После этого на телефон установится ОТА и он перезагрузится.
Как скачать обновление через сотовую сеть
Уведомление о доступности ОТА может прийти, когда устройство не подключено к Wi-Fi. При этом появится пометка, что файл доступен для скачивания по Wi-Fi до определенной даты (около недели), а сама кнопка «Скачать» будет неактивна. Это сделано для экономии денег юзера. Если подключение к Wi-Fi в ближайшее время не предвидится, то можно обмануть телефон и скачать обновление через 3G/4G, просто переведя дату в телефоне вперед, позже даты, указанной в уведомлении, и перегрузив устройство.
Модифицированная прошивка
Если у тебя разблокирован загрузчик, стоит кастомный recovery, получен root, который активно используют различные программы, и применены различные модификации, то с вероятностью 99% обновление не установится. Даже при возврате стокового recovery при прошивке через ADB будет выдавать ошибку Status 7. Кастомный recovery также будет писать ошибку, ругаясь на измененные файлы. Побороть эту проблему можно, вернув смартфон к заводской прошивке, но это не наш метод. Мы разберемся с ней, расковыряв файл обновления, выясним, на каком месте спотыкается установка, и устраним проблему. И все это на примере самого крупного обновления Nexus 5 — с версии 4.4.4 (KTU84P) на 5.0 (LRX21O).
Под стоковой (stock — из магазина) прошивкой понимается наличие заводского ядра, recovery, отсутствие модификаций, полученных в том числе с помощью root.
Механика работы ОТА
Итак, обновление с 4.4.4 на 5.0 стало самым крупным за последнее время с весом архива в 491 Мб. В связи со сменой Dalvik на ART практически весь код был модифицирован. Так что же содержит архив? Как видно на скриншоте «Файлы из архива с обновлением до 5.0», внутри архива находятся образы бутлоадера (различные разделы), каталоги META-INF, patch и system.

Само же волшебство происходит по воле updater-script, который находится в /META-INF/com/google/android. Именно его мы и рассмотрим подробнее. Сам файл весит 463 Кб и содержит строки кода, отвечающие за процесс применения ОТА-обновления (на самом деле это скриптовый язык Edify, интерпретатор которого находится в том же каталоге и носит имя update-binary. — Прим. ред.). Вот что он содержит в нашем случае. Сначала монтируется раздел /system (достаточно стандартная для Linux строка монтирования, схожая с теми, что находятся в /etc/fstab):
Далее скрипт проверяет модель устройства и версию прошивки с помощью чтения системной переменной ro.build.fingerprint (обрати внимание, что он не берет ее из файла /system/build.prop, а запрашивает у самого recovery, поэтому обновления нельзя поставить с помощью кастомной консоли восстановления, хотя до 5.0 это было возможно). Здесь и далее троеточие это сокращенные строки:
Как видно выше, на «неродное» устройство обновление не встанет, зато его можно повторно накатить на версию 5.0. Также скрипт проверяет, подписана ли прошивка официальными ключами Google (release-keys). Из-за этого у многих пользователей возникают проблемы. Далее начинается проверка наличия и целостности отдельных файлов с помощью сверки хешей SHA-1. Для этого используются две функции: sha1_check(), принимающая в качестве аргументов имя файла и хеш, и apply_patch_check(), принимающая три аргумента: имя файла, и два хеша. Первая используется просто для проверки целостности файла, вторая проверяет, не был ли файл уже пропатчен. Для простоты длинные хеши в коде ниже заменены на многоточие:
Для примера показаны только две проверки. По факту проверяются все файлы, которые подлежат замене или изменению патчем. В коде видно, что обновление выдаст ошибку, если, например, был изменен или удален файл /system/app/Drive.apk. В конце блока проверки скрипт проверяет ядро, доступное место в /system и радио:
То есть данное обновление не встанет, если стоит кастомное ядро или модификация радио. Следующим шагом идет удаление старых файлов с устройства перед их заменой на новые и удаление файлов, которые не нужны на новой прошивке:
Далее патчатся все необходимые файлы с предварительной проверкой хеша SHA-1. Патчинг выполняется с помощью функции apply_patch(), которая принимает имена файлов для патчинга и несколько хешей: хеш оригинала, хеш патча и хеш результата. Последним аргументом идет имя файла с патчем. Как и раньше, все хеши в коде ниже сокращены до многоточия:
Последним патчится ядро и RAM-диск:
Следующий блок переносит на устройство файлы, которые не попадают под патч и должны быть заменены целиком. Часть из них затем перемещается:
Удаляются ненужные файлы, расставляются симлинки, права доступа и флаги (здесь на многоточие заменены именно права доступа и флаги):
Прошиваются бутлоадер и сопутствующие разделы:
Последним меняется build.prop, в который записывается в том числе новая версия прошивки. Сделано это для того, чтобы при возникновении ошибки на самом последнем этапе, когда почти все файлы уже перенесены, прервать обновление и сохранить номер текущей версии прошивки в файле на устройстве. Тогда при нажатии кнопки «Проверить обновление» можно запустить его снова.
В конце скрипта раздел /system перемонтируется, и начинается проверка правильности применения обновления, сверяется SHA-1 хеш новых файлов и /system размонтируется:
После чего устройство перегружается в новую систему.

Кастомный recovery
До недавнего времени прошить архив ОТА-обновления в большинстве случаев (если не было проверки recovery для его замены) можно было из кастомного recovery, просто закинув файл на устройство и выбрав install zip. Но начиная со скрипта для обновления 5.0 скрипт поменялся. Предыдущие версии проверяли файл /system/build.prop:
Текущие скрипты проверяют не файл, а значение системной переменной напрямую, запрашивая его у recovery:
А если разобрать кастомный recovery (для примера TWRP версии 2.8.0.0), то можно увидеть следующие строки:
Версия TWRP 2.8.6.1 имеет в коде следующие строки (обрати внимание на слово omni во второй строке, разработчик TWRP с ником Dees Troy — еще и один из активных разработчиков OmniROM):
А последние версии CWM Touch и Philz подписаны так:
Именно эти значения и возвращает при проверке скрипт, прерывая обновление в самом начале и выдавая ошибку о несоответствии версии Android на устройстве.

Обновление 4.4.3–4.4.4
Для сравнения можно привести предыдущее обновление с версии KTU84M на KTU84P. Обновление мелкое и весит всего 2,5 Мб. В основном касается улучшений безопасности. Если открыть архив, то можно увидеть, что патчится только небольшое количество системных файлов и радио, соответственно, скрипт и проверяет только их. Это обновление нормально устанавливалось с рутом, кастомным ядром и работающим Xposed Framework, так как на наличие изменений все это не проверяется.
Обновление для Nexus 6 и Nexus 9
У последних устройств от Google структура скрипта в корне другая. Для этих и (судя по всему) последующих устройств Nexus Google добавила в сборочный скрипт, формирующий ОТА-обновление, функцию генерации поблочного обновления. Такое обновление сверяет и обновляет не отдельные файлы, а блоки в файловой системе /system. Далее в примере «66. 524256» — это длинные списки адресов блоков:
Это позволило инженерам Google существенно упростить и ускорить применение ОТА-обновления для конечных устройств, а сам updater-script теперь занимает всего 5 Кб. Но это обернулось головной болью для продвинутых пользователей. Ведь теперь любые изменения в системном разделе вызовут сбой. Включая наличие лишних файлов. Даже факт монтирования системы как R/W приведет к изменению хеша суперблока ФС.
Заключение
Подводя итоги статьи, можно сделать следующие выводы:
Пара слов от редактора
До недавнего времени OTA-обновления в каcтомных прошивках (CyanogenMod, Paranoid) всегда приходили в виде zip’а с полной версией прошивки и было абсолютно неважно, какие изменения вносились в систему до этого. Прошивка всегда устанавливалась заново (с сохранением данных юзера и gapps, естественно), однако в CyanogenMod 11 появилась функция инкрементальных обновлений, но гораздо более простая в сравнении с той, что используется Google. Обновление просто проверяет целостность прошивки и заменяет те файлы, которые изменились с прошлой версии (обычно ночной сборки), без всяких патчей. Причем, если ты пропустишь одно из обновлений, следующее по старинке придет в виде полного обновления. Просто и удобно.
Более интересный метод используется в OmniROM. Для обновления она использует бинарные патчи, но совсем не так, как это делает Google. Первое OTA-обновление всегда скачивается полностью, после чего сохраняется на карте памяти, прошивается, но не удаляется с карты. Следующее OTA-обновление уже приходит в виде единого бинарного патча, после чего патч накладывается на сохраненное в прошлый раз на карте памяти обновление и уже оно прошивается. Изюминка этого метода в том, что патч накладывается не на систему, а на файл с прошлым обновлением и смартфон каждый раз прошивается как бы с нуля (но с сохранением данных и настроек). Почти идеальный метод — трафик экономится, а беспокоиться о конфликтах с измененной системой не надо.































