Чем отличается recovery от fastboot Xiaomi

В этом руководстве мы сообщим вам, какое устройство должно использовать fastboot flash recovery twrp.img, а какое — команду fastboot boot twrp.img. Кроме того, мы также сообщим вам причину, по которой существуют две разные команды. Кроме того, сомнения, связанные с тем, почему некоторые устройства имеют только файл образа TWRP (twrp.img), тогда как другие имеют как ZIP-файл установщика TWRP (twrp.zip), так и файлы образа TWRP (twrp.img), также будут устранены.

Кроме того, мы также перечислим инструкции о том, как временно загрузить ваше устройство в TWRP или постоянно его прошивать. Мы также сосредоточимся на устройствах с разделами A/B и только на A и проверим, как это влияет на процесс перепрошивки пользовательского восстановления. Итак, без лишних слов, давайте начнем с руководства о том, какую команду следует использовать: fastboot flash recovery twrp.img или fastboot boot twrp.img. Следуйте вместе.

Разделы A/B в Android

Наряду с Android 8.0 Oreo мы получили ряд серьезных технических изменений. Для обычных пользователей это было в основном под капотом и не имело большого значения. Но для технических энтузиастов это было одним из самых важных изменений в этой ОС с открытым исходным кодом на сегодняшний день. Давайте разберемся в этом изменении с помощью реального опыта использования.

Разновидности ПРОШИВОК Miui от Xiaomi | Какая Лучше? ОБ ЭТОМ НУЖНО ЗНАТЬ | Плюсы и Минусы

Возможно, вы помните, как в прежние времена после того, как вы загрузили OTA, вам приходилось целую вечность ждать установки обновления. Во время всего процесса установки ваше устройство было захвачено этим обновлением, и вы не могли выполнять какие-либо задачи. Даже когда обновление было завершено и ваше устройство перезагрузилось, ОС начала оптимизировать приложения по одному.

Это снова заняло очень много времени. Однако с введением схемы разделов A/B все это изменилось, и теперь вы могли установить OTA без каких-либо перерывов как таковых. Итак, как это попало в картину?

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Что ж, ваше устройство теперь имеет два раздела для загрузчика, загрузки, радио, системы и поставщика. Итак, предположим, что ваше устройство в настоящее время загружено в раздел A, следовательно, это будет ваш текущий активный слот. Как и когда вы получите OTA и установите его, он будет установлен в раздел B (который будет вашим неактивным слотом на данный момент).

Поскольку обновление установлено в неактивный слот, вы можете продолжать использовать устройство без каких-либо проблем. Затем, когда вы закончите работу, вам просто нужно перезагрузить устройство. После перезагрузки произойдет смена слота. В результате ваш активный раздел (который был слотом A) теперь становится неактивным разделом, а неактивный раздел (который был слотом B) становится текущим активным разделом. А так как в этом недавно активном слоте B было установлено OTA, на вашем устройстве теперь установлено последнее обновление!

Как на TWRP влияет раздел A/B?

Как упоминалось ранее, с разделом A/B ваше устройство получает два раздела для загрузчика, загрузки, радио, системы и поставщика. Но вы заметили, что раздел восстановления отсутствует? Да, это правда. Это не потому, что есть только один раздел восстановления, а более радикальное изменение. Раздел восстановления был удален на устройствах с разделами A/B.

Режимы Recovery и Fastboot на Xiaomi. Как войти в них и выйти?

поменять слоты тврп

Это связано с тем, что большинство задач, выполняемых разделом восстановления, теперь выполнялись механизмом обновления системы. Следовательно, его больше не было. Итак, все это привело к появлению команды fastboot boot twrp.img, в дополнение к уже существующей команде fastboot flash recovery twrp.img. В приведенном ниже разделе все должно быть очень ясно.

Что означает команда fastboot boot twrp.img

Поскольку устройства раздела A/B больше не имеют раздела восстановления, следовательно, вы не можете напрямую отправить TWRP в раздел восстановления через fastboot flash recovery twrp.img. Скорее вам придется сначала отправить его в загрузочный раздел, чтобы ваше устройство загрузилось в TWRP. Для этого вы будете использовать команду fastboot boot twrp.img. Однако это только временно загрузит ваше устройство в TWRP, оно не установлено постоянно. Следовательно, чтобы установить его на постоянной основе, вам придется прошить ZIP-файл TWRP прямо из самого загруженного TWRP.

быстрая загрузка twrp img

Как только вы это сделаете, восстановление TWRP займет постоянное место на вашем устройстве. Кроме того, после того, как вы записали ZIP-файл TWRP, вам следует перезагрузить устройство обратно в Recovery, а не напрямую в Систему. Причина? Ну пока рекавери прошит в неактивный слот.

Следовательно, чтобы изменить раздел и переключиться на другой слот, где установлен TWRP, вам придется перезагрузить устройство обратно в Recovery. После того, как вы снова загрузитесь в рекавери, вы можете перезагрузиться в ОС.

Как насчет команды fastboot flash recovery twrp.img

Что ж, эта команда используется только устройствами A. Это связано с тем, что на этих устройствах есть специальный раздел восстановления, и вы можете напрямую отправить TWRP в раздел восстановления. В результате вам просто нужно использовать команду fastboot flash recovery twrp.img, и TWRP будет постоянно установлен на вашем устройстве. Как все просто, не так ли?

Fastboot флеш рекавери TWRP img

Как проверить, является ли мое Android-устройство только A или разделом A/B

Поэтому, прежде чем перечислять инструкции по установке TWRP, крайне важно знать, является ли ваше устройство разделом A/B или только A. Для этого скачайте и установите приложение Treble Check из Play Store. Запустите его, а затем проверьте раздел «Бесшовные обновления системы». Он сообщит вам, есть ли на вашем устройстве системный раздел A/B или системный раздел только A.

проверьте раздел ab или раздел android

Какую команду TWRP следует использовать: fastboot flash vs fastboot boot

Теперь, когда вы знаете схему разделов вашего устройства, пришло время проверить шаги установки TWRP. Итак, вот ответ на вопрос, какую команду следует использовать из fastboot flash recovery twrp.img и fastboot boot twrp.img. Если ваше устройство имеет схему разделов A/B, то вам придется сначала загрузить устройство в TWRP Recovery через его файл IMG. После этого вы можете навсегда прошить его, установив ZIP-файл TWRP.

С другой стороны, если у вас есть устройство только для A, вы можете напрямую прошить файл TWRP IMG. Подробные инструкции для обоих приведены ниже.

Как прошить TWRP на устройствах с разделами A/B

  1. Убедитесь, что вы разблокировали загрузчик устройства и включена отладка по USB. Чтобы включить отладку, перейдите в «Настройки»> «О телефоне»> «Семь раз нажмите на номер сборки»> «Вернитесь в «Настройки»> «Система»> «Дополнительно»> «Параметры разработчика»> «Включить отладку по USB».
    отладка по usb oneplus
  2. Затем установите папку Android SDK Platform Tools на свой компьютер. Это предоставит необходимые двоичные файлы ADB и Fastboot.
  3. Когда это будет сделано, загрузите файлы TWRP ZIP и IMG. Вы можете скачать официальные сборки из TWRP. Веб-сайт сам. Неофициальные сборки можно найти на форумах XDA.
  4. Получив оба файла восстановления TWRP, перенесите ZIP-файл TWRP на свое устройство.
  5. Затем перенесите файл TWRP IMG в папку platform-tools. Переименуйте этот файл образа восстановления в twrp, чтобы полное имя стало twrp.img.
  6. Теперь подключите ваше устройство к ПК через USB-кабель. Убедитесь, что отладка включена и загрузчик разблокирован.
  7. После этого введите CMD в адресную строку этой папки с инструментами платформы и нажмите Enter. Это запустит окно командной строки.
  8. Пришло время загрузить ваше устройство в TWRP. Для этого используйте следующую команду: fastboot boot twrp. изображение
  9. Как только ваше устройство загрузится в TWRP, пришло время установить TWRP навсегда. Итак, перейдите в «Установить», выберите ZIP-файл TWRP и проведите пальцем вправо, чтобы установить его.установить-twrp-ab-раздел-устройства
  10. После этого должна произойти смена слота. Итак, перейдите в «Перезагрузка» и нажмите «Восстановление». Затем ваше устройство снова перезагрузится в TWRP.
    перезагрузить рекавери TWRP oneplus nord
  11. Когда это произойдет, вы теперь загружаетесь в активный раздел, и теперь вы можете перезагрузить устройство в ОС, выбрав «Перезагрузка»> «Система».
    перезагрузка-система-twrp
  12. Вот и все. Это были шаги по установке TWRP на устройства с разделами A/B. Давайте теперь обратим наше внимание на устройства только для A.
Как прикрутить ножки к телевизору Xiaomi 4a 43

Как установить TWRP на устройства с разделами только A

Установить TWRP на устройства только для A довольно просто, поскольку на вашем устройстве уже есть раздел восстановления. С учетом сказанного, вот необходимые инструкции:

  1. Убедитесь, что вы разблокировали загрузчик устройства и включена отладка по USB. Чтобы включить отладку, перейдите в «Настройки»> «О телефоне»> «Семь раз нажмите на номер сборки»> «Вернитесь в «Настройки»> «Система»> «Дополнительно»> «Параметры разработчика»> «Включить отладку по USB». [Don’t Miss: How to Enable USB Debugging on a Broken Android Device’s Screen]
    отладка по usb андроид 10
  2. Затем установите папку Android SDK Platform Tools на свой ПК. Это предоставит необходимые двоичные файлы ADB и Fastboot.
  3. Когда это будет сделано, загрузите файл TWRP IMG. Вы можете скачать официальные сборки из TWRP. Веб-сайт сам. Неофициальные сборки можно найти на форумах XDA.
  4. После того, как вы загрузили файл образа TWRP, перенесите его в папку platform-tools на вашем ПК. Точно так же переименуйте его в twrp, поэтому полное имя будет twrp.img.
  5. Теперь подключите ваше устройство к ПК через USB-кабель. Убедитесь, что отладка включена и загрузчик разблокирован.
  6. После этого введите CMD в адресную строку этой папки с инструментами платформы и нажмите Enter. Это запустит окно командной строки.
    командная строка-adb
  7. Наконец, введите приведенную ниже команду, чтобы установить TWRP Recovery на ваше устройство: fastboot flash recovery twrp.img

Могу ли я напрямую прошить TWRP даже на устройствах с разделами A / B?

Итак, до сих пор мы обсуждали, что устройства с разделами только A могут напрямую прошивать TWRP, тогда как устройства A/B сначала требуют загрузки TWRP, а затем окончательно устанавливают его. Таким образом, как правило, это означает, что устройства A / B будут иметь как TWRP IMG, так и ZIP, тогда как устройство только A будет иметь только файл TWRP IMG. Что ж, это правда, но с небольшим перекосом.

Некоторые устройства (такие как Moto One Action) могут иметь только файл TWRP IMG, но все равно будут разделом A/B. Так как же тогда навсегда установить TWRP? В этих случаях вам придется использовать Ramdisk на вашем устройстве и прошить файл TWRP IMG после загрузки в TWRP. Если вы хотите узнать больше в этом случае, вам обязательно следует ознакомиться с этим руководством: Как установить TWRP на постоянной основе без ZIP-файла TWRP (только с использованием файла TWRP.img).

Итак, на этом мы завершаем руководство по TWRP: команды fastboot flash vs fastboot boot. Если у вас все еще есть какие-либо вопросы относительно вышеупомянутых объяснений, не стесняйтесь обращаться к нам через раздел комментариев. Мы вернемся к вам с решением в ближайшее время.

Источник: vgev.ru

Что такое Recovery (Рекавери) и Fastboot (Фастбут) режимы работы с системой: описание возможностей режимов

Программное обеспечение

На чтение 1 мин. Просмотров 930 Опубликовано 28.02.2012 Обновлено 27.12.2018

Режим Recovery является набором низкоуровневых приложений для работы с образами системы через интерфейс телефона. Основные возможности этого режима:

  • восстановление системы в заводское состояние;
  • создания образов системы в текущем состоянии и их восстановление при необходимости;
  • установки сторонних прошивок;
  • установка обновлений и патчей.

Режим Fastboot позволяет работать с системой через компьютер по средствам USB кабеля. Он более функционален и позволяет восстановить систему, когда действия пользователя привели к невозможности загрузки телефона. Наиболее распространена работа через неофициальный, но более функциональный ClockworkMod recovery (CWM). Он позволяет устанавливать сторонние прошивки, обновления и патчи, создавать резервные копии как всей системы, так и ее разделов, делать сброс к заводским настройкам, подключаться к компьютеру в режимах съемного накопителя и ADB.

Источник: androidsfaq.com

Копаем глубже. Как работают механизмы прошивки, рутинга и восстановления Android

Тот, кто когда-либо прошивал свой смартфон или хотя бы разблокировал загрузчик, наверняка имел дело если не с инструментами командной строки, то хотя бы со специальными графическими приложениями для Windows, которые делают всю магию. Но как на самом деле происходит разблокировка загрузчика, установка новой прошивки или сброс до заводских настроек? Что скрыто, так сказать, под капотом?

Я расскажу, как это все работает изнутри, и поясню происходящее на примерах. Для простоты и лучшего понимания все повествование будет вестись в том же порядке, в котором компоненты получают управление на реальном устройстве: ROM -> загрузчик aboot -> ядро -> система Android . Плюс, конечно же, recovery, который может быть запущен загрузчиком вместо Android.

Aboot, fastboot и tamper-бит

Если не брать в расчет небольшой код инициализации, располагающийся в ROM-памяти устройства и специфичный для каждого чипа, то загрузка Android начинается с aboot. Это стандартный загрузчик устройств на базе Android, разработкой которого занимается сама Google. Задача aboot — выполнить первичную инициализацию железа и передать управление либо коду, расположенному в разделе boot (это ядро Linux), либо, если юзер включил смартфон с зажатой клавишей увеличения (или уменьшения, где как) громкости, в recovery.

Ключевая особенность aboot в том, что это модульный загрузчик и к нему при сборке можно подключать разные сопрограммы, каждая из которых будет исполняться в отдельном потоке (что делает aboot миниатюрной ОС). Одна из таких сопрограмм — fastboot, реализация протокола и механизмов для записи разделов внутренней NAND-памяти. В среде энтузиастов fastboot обычно используется для установки кастомного recovery. Для этого достаточно включить смартфон с зажатыми клавишами управления громкостью (на большинстве смартфонов), затем с их же помощью выбрать в меню пункт Fastboot, подключить смартфон с помощью USB-кабеля к компу и выполнить такую команду (она входит в комплект Android SDK):

Модели Xiaomi с отпечатком пальца на экране

$ fastboot flash recovery образ-recovery.img

Причем recovery можно даже не прошивать, а запустить прямо с компа (эту функцию, кстати, использует инструмент CF-Auto-Root, но о нем позже):

$ fastboot boot образ-recovery.img

Справка по командам fastboot

Другие статьи в выпуске:

Xakep #200. Тайная жизнь Windows 10

  • Содержание выпуска
  • Подписка на «Хакер» -60%

Однако эти команды не сработают, если загрузчик залочен. Чтобы его разблокировать, на смартфонах линейки Nexus и OnePlus достаточно выполнить такую команду (все, что начинается с oem, — это команды, встроенные производителем смартфона):

$ fastboot oem unlock

Что делает эта команда? В нексусах она выполняет сброс до заводских настроек и записывает один бит в специальный раздел в памяти устройства, служащий индикатором разлочки для самого загрузчика. В Nexus 4 и 5 это раздел misc и адрес 16400, в других нексусах это может быть раздел param (Nexus 10) или даже aboot (Nexus 7/2013 и OnePlus One). Начиная с Nexus 6 и 9, Google навела в этом бардаке порядок и ввела понятие Persistent-раздела для хранения не зависящих от Android настроек. Имя этого раздела хранится в системной переменной ro.frp.pst, и его в любой момент можно получить с помощью такой команды (запускать на самом устройстве):

$ getprop ro.frp.pst

Как видно, все довольно просто, и, если говорить о нексусах, здесь «залоченный загрузчик» — это просто защита от дурака (собственно, как и должно быть в референсных смартфонах). Загрузчики в обычных смартфонах разработки Samsung, HTC, LG, Motorola и других серьезных контор защищены гораздо лучше, и с помощью команды oem unlock или записи бита по определенному адресу их не вскроешь. Сам бит записывается в недоступную пользователю память, а разблокировка возможна только с помощью цифрового ключа, полученного на сайте производителя (ну или взлома загрузчика, если это возможно).

И в нексусах, и в смартфонах других компаний при разблокировке загрузчика всегда устанавливается так называемый tamper-бит. Сервисные центры смотрят именно на него, решая, признать ли случай гарантийным: даже если впоследствии загрузчик был заблокирован, tamper-бит однозначно свидетельствует о факте разблокировки. Однако иногда этот бит можно сбросить. В нексусах все решается опять же простой записью бита по нужному адресу в нужный раздел, в других смартфонах это либо вообще невозможно сделать, либо приходится использовать специальные инструменты типа приложения Triangle Away (для Samsung’ов без KNOX).

Выясняем, установлен ли загрузчиком tamper-бит

Чтобы окончательно тебя запутать, скажу, что производители часто используют модульную архитектуру aboot для встраивания в него собственных средств прошивки и управления, работающих совместно с fastboot или даже вместо него. Наиболее яркий пример — это Odin в смартфонах Samsung. А некоторые производители идут еще дальше и вообще отказываются от aboot, заменяя его собственным или сторонним загрузчиком.

Например, в чипах Allwinner опенсорсный загрузчик uboot, который принято использовать в разного рода встраиваемых системах, например для роутеров. У MTK загрузчик собственного изготовления, разделенный на два компонента: preloader.bin , с которым работают фирменные утилиты прошивки SP Tools, и lk.bin , отвечающий за инициализацию оборудования. HTC использует загрузчик hboot, не так уж и сильно отличающийся от aboot. У Rockchip также свой собственный загрузчик, интересная особенность которого в том, что инфа о разметке NAND-памяти не вшита в него намертво, а находится в начале самой памяти. Благодаря этому изменить размеры разделов в устройствах на базе Rockchip проще простого.

Исследуем таблицу разделов планшета на базе Rockchip 3066

С загрузчиками закончим и перейдем к следующему компоненту загрузки.

Раздел boot и ядро

Если во время включения устройства ты не зажимал клавишу увеличения громкости либо не перезагружал смартфон в режим recovery намеренно (например, с помощью расширенного меню перезагрузки в кастомных прошивках), на последнем этапе своей работы aboot загружает в память устройства ядро Linux и RAM-диск из раздела boot, а после этого передает управление ядру.

Сам раздел boot не содержит никакой файловой системы, а представляет собой сжатые с помощью gzip и записанные друг за другом ядро и RAM-диск, предваренные небольшим заголовком размером в два килобайта (он содержит опции загрузки ядра, а также адреса расположения образов и другую информацию). RAM-диск, в свою очередь, представляет собой небольшую виртуальную файловую систему, содержащую набор каталогов, к которым Android подключит файловые системы других разделов (system, data, sdcard), а также систему и скрипт инициализации и init.rc . RAM-диск загружается прямо в оперативку и продолжает существовать все время, пока смартфон включен.

Благодаря простой структуре образ раздела boot (boot.img) довольно легко распаковать. Это можно сделать даже с помощью HEX-редактора, но проще воспользоваться инструментом imgtool. Пример для Linux (x86_64):

$ imgtool.ELF64 boot.img extract $ cd extracted $ mkdir ramdisk_ext $ cd ramdisk_ext $ gunzip -c ../ramdisk | cpio -i

Запакованные ядро и RAM-диск окажутся в каталоге extracted, а содержимое RAM-диска — в подкаталоге ramdisk_ext. Это в идеале. На самом деле, как и в случае с загрузчиком, никакого стандарта для формата раздела boot нет, и производитель может проявить фантазию. Нередко ядро и RAM-диск располагаются на разных разделах.

Такую конфигурацию можно найти в старых моделях Samsung и устройствах на базе Rockchip.

Тем не менее в 95% формат раздела boot стандартный, и если ты когда-либо прошивал на свой аппарат кастомное ядро, то наверняка внутри ZIP-архива с ядром был именно образ boot.img, так что вместе с ядром ты прошивал также и RAM-диск. Когда ты это делал, тебе приходилось быть осторожным, ведь RAM-диск стоковой прошивки отличается от RAM-диска того же CyanogenMod. Прошив ядро для AOSP в CyanogenMod, ты мог получить bootloop и много других неприятностей.

Чтобы обойти эту проблему, разработчик CyanogenMod и автор ClockworkMod Recovery Кушик Дутта (Koushik Dutta, или Koush) создал систему AnyKernel, которая позволяет устанавливать ядра отдельно от RAM-диска (путем пересборки раздела boot на лету). Сегодня ее используют многие разработчики кастомных ядер, но далеко не все. Так что перед прошивкой ядра рекомендую либо найти его версию для того кастома, который установлен у тебя, либо убедиться, что оно использует механизм AnyKernel.

Какое бы ядро ты ни выбрал, тебе в любом случае понадобится кастомный recovery для его установки.

Recovery, Edify и Aroma Installer

Обнаружив зажатую клавишу увеличения громкости, aboot делает почти то же самое, что и при обычной загрузке, но использует вместо boot раздел recovery. Разделы идентичны по своему формату и зачастую включают в себя одно и то же ядро, однако содержимое RAM-диска существенно отличается. Если в случае с разделом boot назначение RAM-диска — создать начальные условия для дальнейшей загрузки системы, то recovery — это мини-ОС, способная работать обособленно.

Стоковый recovery очень прост. Все, что содержит его RAM-диск, — это исполняемый файл /sbin/recovery и (не всегда) набор фоновых изображений в каталоге /res или любом другом. При загрузке ядро Linux запускает /sbin/recovery , а тот выводит на экран простенькое меню, с помощью которого можно установить прошивку, подписанную цифровым ключом производителя, или произвести сброс до заводских настроек.

Кастомные recovery намного сложнее. Это уже не просто меню с фоновым рисунком, но целая операционная система, способная устанавливать какие угодно прошивки, делать бэкап, форматировать разделы и многое другое. Современные версии TWRP так и вообще поддерживают управление с помощью тач-интерфейса, сменные шкурки, полностью изменяющие внешний вид recovery, пароль для входа и эмулятор терминала вместе с экранной клавиатурой. Плюс ко всему кастомные recovery включают в себя BusyBox (набор утилит командной строки Linux) и сервер ADB, работающий с правами root. Так что режим recovery очень удобно использовать для отладки и таких операций, как, скажем, дамп разделов. Например, раздела boot (пример для чипов Qualcomm):

Не работает динамик при разговоре Xiaomi redmi note

$ adb shell dd if=/dev/block/platform/msm_sdcc.1/by-name/boot of=/sdcard/boot.img

Но главная задача recovery — это, конечно же, установка прошивок. Точнее, она была бы главной задачей, если бы в recovery была такая функция. На самом деле все, что делает recovery, когда ты нажимаешь «Install ZIP. » и выбираешь прошивку, — распаковывает ZIP-файл (обычно в раздел cache) и запускает файл /META-INF/com/google/android/update-binary внутри него. Именно update-binary выполняет установку прошивки, руководствуясь инструкциями из файла updater-script (он лежит рядом).

Сами инструкции написаны на языке Edify, включающем в себя набор команд, которые могут понадобиться при установке: mount, unmount, package_extract_file, symlink, run_program и другие. Мы не будем обсуждать здесь все эти команды, они достаточно просты, и, чтобы ознакомиться с ними, достаточно распаковать любую прошивку и открыть updater-script в текстовом редакторе. Скажу лишь, что обычно такие файлы генерируются автоматически при сборке системы из исходников и только авторы узкоспециализированных прошивок (содержащих только ядро, например) пишут их самостоятельно.

Фрагмент updater-script из CyanogenMod 12.1

Recovery не накладывает никаких ограничений на файл update-binary — главное, чтобы его можно было запустить. Это дает производителям возможность использовать вместо него любое приложение, способное запуститься поверх ядра Linux. Совсем не обязательно, чтобы оно вообще выполняло установку прошивки. В рамках проекта Aroma Installer развивается вариант update-binary, который позволяет создателям кастомных прошивок реализовать графический инсталлятор с выбором тех или иных вариантов и опций установки.

Автор Aroma Installer также создал Aroma Filemanager — полноценный менеджер файлов со встроенным эмулятором терминала. Чтобы его запустить, необходимо перезагрузиться в recovery и «прошить» ZIP-файл. Естественно, никакая прошивка выполнена не будет, ведь update-binary внутри ZIP-файла — это только файловый менеджер, он не выполняет никаких операций установки.

Эмулятор терминала, встроенный в Aroma Filemanager

«Фиктивный» update-binary часто используется для распространения разного рода скриптов. Гораздо проще переименовать скрипт в update-binary, запаковать в ZIP-файл и попросить человека «прошить» его, чем объяснять, как запускать скрипты с помощью ADB. Именно так поступил osm0sis со своим скриптом разблокировки загрузчика аппаратов линейки Nexus. Если ты скачаешь его ZIP-файл и взглянешь внутрь, то найдешь updater-binary, внутри которого обычный sh-скрипт.

Root insecure adb

Ну и в конце пара слов о том, что такое root. Начнем со всем известных азов: в Linux root — это имя пользователя с безграничными правами в системе (типа администратора в Windows). Root может вообще все, вплоть до удаления всей системы с диска (именно это делает знаменитая команда «rm -rf /*), поэтому обычно никто не сидит, так сказать, под рутом, а использует непривилегированный аккаунт.

Чтобы иметь возможность выполнять операции с правами root (например, устанавливать софт или управлять сервисами), можно использовать разные приложения (команды), одна из которых носит имя su. Она позволяет получить права root или любого другого пользователя в системе, пароль которого тебе известен. И все благодаря специальному SUID-биту, который позволяет su работать с правами root, даже если оно было запущено обычным пользователем.

В Android с правами root работает исключительно сама система (и то далеко не вся), тогда как сервер ADB и приложения исполняются с правами непривилегированных пользователей (по одному пользователю Linux на каждое приложение, серьезно), а команды su нет вообще. Поэтому единственный способ получить права root в такой ситуации — воспользоваться уязвимостью в одном из системных компонентов, работающих с правами root. Таким образом можно не просто временно заполучить права root, но и использовать их, чтобы разместить в системе бинарник su (скопировать в /system/xbin, например) и поставить на него SETUID-бит. Именно так работают все наиболее популярные инструменты рутинга, от Super One Click до framaroot.

Второй вариант — прошить бинарник su с помощью кастомной консоли восстановления. Известный Android-разработчик Chainfire уже много лет занимается разработкой и поддержкой инструмента для управления root-доступом SuperSU, а также ZIP-архива, прошив который, ты получишь рутованный смартфон (при установке он копирует в систему su и приложение SuperSU.apk ). Кстати, инструменты типа Framaroot вместе с бинарником su также устанавливают SuperSU или его аналог SuperUser, чтобы пользователь мог управлять тем, каким приложениям следует давать права root, а каким нет.

SuperSU собственной персоной

Есть у Chainfire и другой интересный проект — CF-Auto-Root. Он тоже устанавливает в систему su и SuperSU, но делает это весьма оригинальным способом: без задействования recovery. Инструмент CF-Auto-Root существует в двух вариантах, для Odin и для fastboot, причем в последнем случае он представляет собой модифицированную версию recovery, которую не надо прошивать. Ее следует запускать с помощью описанной в начале статьи команды fastboot boot. Пример для Nexus 4:

$ fastboot boot CF-Auto-Root-mako-occam-nexus4.img

При загрузке «поддельный recovery» запускает не /sbin/recovery , а бинарник /sbin/cfautoroot , который просто копирует в систему su и SuperSU и затем перезагружает устройство. Зачем использовать такой извращенный способ, когда можно установить кастомный recovery и прошить стандартный SuperSU.zip? Ну например, это пригодится тем, кто не хочет по каким-то причинам устанавливать кастомный recovery.

Последнее, о чем хотелось бы сказать, — разные виды root. В Android root-доступ принято разделять на «пользовательский» и «root уровня ядра» (kernel root). Это довольно глупые определения, но нам придется иметь с ними дело. «Пользовательский root» — это то, что я описал выше: приложение запрашивает права root с помощью запуска /system/xbin/su , а SuperSU показывает тебе окошко с запросом прав root. Все просто. Так называемый «root уровня ядра» — это когда с правами root работает сервер ADB. Рутом уровня ядра он называется по причине необходимости править boot.img , а точнее содержащийся в нем init.rc (необходимо присвоить переменной property:service.adb.root значение 1 и запустить adbd с флагом —root_seclabel=u:r:su:s0 ).

Подавляющему большинству пользователей root уровня ядра никогда не понадобится. Однако его могут использовать некоторые скрипты и графические инструменты, работающие со смартфоном по ADB (яркий пример: PatchROM от MIUI). В CyanogenMod и многих других кастомных прошивках по умолчанию доступны все виды root (их можно выбрать в «Настройках для разработчиков»). Для получения root уровня ядра в других прошивках можно использовать приложение adbd Insecure за авторством все того же Chainfire.

Adbd Insecure и стоковая прошивка HTC

Выводы

Надеюсь, эта статья помогла тебе разобраться в том, как работают механизмы разблокировки, прошивки и восстановления Android. В целом в этом нет ничего сложного, и, поняв, как именно все это работает, ты избежишь многих проблем, связанных с разблокировкой и перепрошивкой устройства. И даже если они возникнут — теперь ты сможешь их решить без посторонней помощи.

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Источник: xakep.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
Китай Покупай