Почему после переустановки Android со стоковых образов обновления жалуются на измененные /системные файлы?

Обнаружив на своем горьком опыте, что рутирование , изменение/system взгляда на /systemнеправильный взгляд на обновления ломает, я решил отказаться от всех вещей для опытных пользователей и просто пойти санкционированным путем — без пользовательской системы восстановления, рутирования или чего -то еще ; просто чистый, стоковый Android. С этой целью я приступил к выполнению сброса к заводским [unrooting] настройкам , так сказать.

Вот шаги, которые я выполнил:

  1. Приобретите platform-toolsдля операционной системы вашего компьютера. Извлеките их и добавьте полученный каталог в ваш $PATH.
  2. Скачайте стоковый образ Android , убедившись, что идентификатор модели совпадает с идентификатором вашего устройства, но версия не самая последняя (это необходимо для шага 8). Проверьте изображение, используя хеш, включенный в таблицу, а затем извлеките его. Запустите оболочку, если вы еще этого не сделали, и перейдите в извлеченный каталог.
  3. Разблокируйте загрузчик ( fastboot oem unlock).
  4. Переустановите Android ( ./flash-all.sh). Обязательно поймайте устройство перед последней перезагрузкой, зажав комбинацию клавиш загрузки-восстановления, как только скрипт распечатается rebooting...после записи образа кеша (это избавит вас от необходимости перезагружаться для следующего шага).
  5. Заблокируйте загрузчик ( fastboot oem lock).
  6. Перезагрузить. Подождите, пока Android… сделает то же, что и при первой загрузке новой версии.
  7. Пройдите первоначальную настройку устройства. (Я лично подключаюсь к сети Wi-Fi, а затем пропускаю все остальное, чтобы сэкономить немного больше времени).
  8. Найдите, загрузите и установите обновление ОС Android. Подождите еще немного, пока это происходит.
  9. Обратите внимание на следующее на экране устройства с Error!белым текстом под ним:

На фото: робот Android на спине с восклицательным знаком внутри красного треугольника.

  1. Откройте меню восстановления и выберите View recovery logs, затем /cache/recovery/last_log. Прокрутите вниз и найдите указание, почему обновление не удалось. Расшифруйте наиболее важные строки вместе с версией и идентификатором сборки образа из шага 2.

Мое устройство — Nexus 5, купленное в ноябре 2013 года в Play Маркете. До сих пор я пробовал это с помощью Android 6.0.0/MRA58K и Android 5.1.1/LMY48M, что привело к следующему в журналах восстановления:

6.0.0/MRA58K:

failed to stat "/cache/saved.file": No such file or directory
script aborted: "/system/priv-app/SetupWizard/oat/arm/SetupWizard.odex" has unexpected contents.

5.1.1/LMY48M:

Remounting and verifying system partition files...
script aborted: assert failed: sha1_check(read_file("/system/fonts/NotoSansTC-Regular.otf"), some_hash)

В обоих случаях проблема заключается в файле /systemс содержимым, которое не совпадает с тем, которое ожидает установщик обновления. Это крайне неприятно, учитывая, что моя процедура специально требует официальных стоковых изображений Android, полученных только с веб-сайта Google и проверенных с использованием публикуемых ими хэшей (и да, я обязательно использую TLS).

Я пропустил шаг? Что здесь не так? И как мне вернуться на благословенный путь и снова удостоиться получения долгожданных обновлений по воздуху?

В чем была неясная ошибка? Загружаем из Google android сами заводские образы: Developers.google.com/android/nexus/images?hl=en Android Current Android SDK: developer.android.com/sdk/installing/index.html
@BoLawson Ошибка представляет собой связанное изображение талисмана Android с буквальным текстом Error!под ним. И да, я получил изображение со страницы, на которую вы ссылаетесь.
Ну ладно. Любые идеи относительно того, почему обновления OTA все еще не работают?
Это просто иногда случается, но это может быть просто поврежденная загрузка. Вы можете проверить журналы восстановления в режиме восстановления. Это должен быть последний вариант, чтобы увидеть, что они заявляют. В нем может быть last_log. /кэш/восстановление/последний_журнал
@BoLawson Хммм… меня бросают в глаза две разные вещи: failed to stat "/cache/saved.file": No such file or directoryи script aborted: "/system/priv-app/SetupWizard/oat/arm/SetupWizard.odex" has unexpected contents..
У вас все еще нет стоковой прошивки, снова заводской образ от Google.
@БоЛоусон Нет? Что я тогда прошиваю и где взять заводской образ?
Можете ли вы adb sideloadустановить пакет обновлений OTA в рекавери? Для чего нужны OTA-обновления (какая версия к какой версии)? Вы можете выполнить поиск xxx OTA zipв Google, чтобы получить zip-файл для загрузки, если он xxxпредставляет правильный соответствующий OTA. Это действительно может быть неправильная загрузка самого пакета OTA, и это должно помочь прояснить проблему.

Ответы (2)

Для возврата к исходному ПЗУ требуется полное форматирование, поскольку разделы, а также их атрибуты обычно различаются на разных ПЗУ. Это решит вашу проблему с появлением возможного изменения информации об устройстве, такой как IMEI или подобное. Еще одна неудача — уменьшение памяти от форматирования, особенно если ваши разделы содержали много пользовательских данных во время форматирования.

Предложение: повторите свои шаги еще раз, но на этот раз обязательно смонтируйте раздел /system и отформатируйте его, а затем размонтируйте его (он должен автоматически размонтироваться).

Сейчас. Да начнется мигание...

Я действительно не думаю, что это все, учитывая, что каждый скрипт указывал каждый раз, когда я их запускал, что они были erasing 'system', затем downloading 'system'и writing 'system'.
Кроме того… что? Я никогда не слышал о попытках отформатировать раздел во время его монтирования. И зачем мне терять место для хранения, если перед форматированием было много пользовательских данных?

У меня нет для вас объяснений, но попробуйте больше версий в целом и сборку MRA58N в частности.

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