Как удалить файл recovery from boot p

Обновлено: 07.07.2024

TWRP - (TeamWin Recovery Project) являются золотым стандартом для различных устройств в мире разработки. Что отличает их от других доступных ресурсов восстановления, так это дизайн, интерфейс и множество функций, с которыми он поставляется. TeamWin Project был одним из первых рекавери, который мог похвастаться полностью сенсорным интерфейсом. В нем впервые перепрограммирование ROM и других ZIP-файлов сделали намного проще.

TeamWin Recovery Project - выпущенный еще в 2011 году, должен был конкурировать с Clockworkmod, который был лучшим из доступных на тот момент. За прошедшие годы кастомное рекавери теперь поддерживает более 50 различных OEM-производителей со своевременными обновлениями, как никакое другое.

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

По сути, это пользовательский софт с открытым исходным кодом, которое имеет сенсорный экран для установки сторонних приложений или прошивки любого zip-файла. Он дает возможность выполнять на телефоне различные действия, такие как резервное копирование разделов в формате TAR или raw Image, восстанавливать резервные копии из внутреннего хранилища, внешнего SD-накопителя или устройств OTG, устанавливать пользовательские прошивки, стирать разделы, получать доступ к терминалам, корневую оболочку и т. д.

Официальный ТВРП теперь доступен для загрузки для новых моделей Xiaomi, например, Mi 9T Pro. Сборка теперь официальная, это стабильная версия со всеми работающими функциями, включая расшифровку разделов данных, копирование MTP, Nandroid и многое другое. Более того, он поддерживает последнюю версию Android 10.

↑ Основные функции и особенности этого рекавери

Создание резервных копий по своему усмотрению для каждого раздела вашей системы или полную резервную копию Nandroid для гарантии безотказного отката, если что-то пойдет не так.

Изменение яркости. Полезно для тех, кто устанавливает прошивки и днем и ночью.

Каждый вариант в меню TWRP нужно подтвердить свайпом для подтверждения.

TWRP Recovery - подтвердить свайпом

Используя расширенное меню Wipe, вы имеете возможность стереть любые файлы и папки, или выполнить полный сброс настроек к заводским.

Вы сможете монтировать свои разделы и даже использовать флешку, если у вас есть для этого OTG-кабель.

Существует встроенный файловый менеджер
Права доступа можно легко изменить, нажав кнопку «Fix Permissions» на вкладке «Advanced ». Это убирает необходимость полной перезагрузки рекавери.

Есть встроенное окно Terminal Command, упрощающее работу с программой.
Наконец, боковая загрузка ADB одним нажатием позволяет вам предоставить системе доступ к статусу быстрой загрузки и подключением к компьютеру.

Теперь, когда узнали все преимущества и историю этого софта, следуйте инструкциям ниже, как установить рекавери на Xiaomi.

В любой современный Сяоми можно скачать установить twrp recovery, используя шаги, описанные в этой статье. Как и любое другое устройство, Mi 9 пользуется большой популярностью у разработчиков.

↑ Что такое TWRP и зачем оно нужно?

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

В дополнение к вышесказанному предлагается опция Advanced с дополнительными настройками, такими как файловый менеджер, возможность управления модами MultiROM, резервное копирование журнала активности и доступ к командной консоли ADB. И без доступа к этому разделу есть Wipe, чтобы выполнить сброс к заводским настройкам или полный сброс и очистить кеш, и Dalvik, Restore, чтобы восстановить резервную копию NAND, Settings для настройки пользовательского восстановления и Reboot, чтобы перезагрузить смартфон.

  1. Резервное копирование системы;
  2. Очистка разделов;
  3. Восстановление;
  4. Кроме того, он также служит основой для установку других модификаций прошивок.

↑ Меню TWRP

    Install – делает прошивку zip-файлов, ромов и изображений.

Меню TWRP

Меню TWRP

Важно: Рекомендуем вам выполнить полное бекап копирование данных. Вам нужно будет подключить телефон к компьютеру. Убедитесь, что вы правильно поставили драйверы USB.

↑ Подготовка смартфона

Сначала зарядите смартфон до 50% и убедитесь, что он не выключится во время процедуры.

Перед тем как установить twrp recovery, убедитесь, что загрузчик разблокирован! Если вы устанавливаете в первый раз, то скорее всего он у вас заблокирован. Чтобы разблокирвать загрузчик, понядобиться сделать пару действий, который описаны ниже.

    Включите режим разработчика, выбрав «Настройки», далее «О телефоне» и нажмите 5 раз на номер сборки прошивки (версия MIUI).

нажмите 5 раз на номер сборки прошивки

загрузчик twrp разблокирован

отладка USB включена

Если вы выполнили все вышеуказанные требования, перейдите к самой процедуре установки twrp recovery. В данной инструкции мы рассмотрим установку тврп на смартфон от Xiaomi.

↑ Установка TWRP, пошаговая инструкция

, создаем папку на рабочем столе и распаковываем файлы в папку.

Скачайте файл Recovery

Fastboot

↑ Prestigio

Файлы для Prestigio Muze D5 4G

Отдельные файлы для Root

  1. Скачиваем и устанавливаем adb_fastboot_platform-tools.
  2. Скачиваем и разархивируем recovery.rar в папку adb fastboot, в одну и ту же папку.
  3. Перезагружаем смартфон в режим bootloader удерживая кнопки уменьшения громкости и включения смартфона одновременно.
  4. Подключаем смартфон к компьютеру.
  5. Удерживайте Shift и щелкните правой кнопкой мыши, чтобы открыть окно команд.
  6. Затем в командной строке вводим:

Процесс установки twrp для HTC, ничем не отличается от других! Идем по инструкции!

Файлы для HTC Desire 516 Dual Sim

↑ Huawei MediaPad M5

↑ Копии Huawei P40

Устанавливаем последнюю версию программы SP Flash Tool
Для начало нужно скачать scatter файл и TWRP(переименовать в recovery.img)и в моде download only одна галочка на разделе recovery.

Выключить телефон и прошить, пару секунд. потом загрузиться в recovery.

↑ Xiaomi

Качаете архив который я вам скинул, распаковываете его и запускаете Flash_TWRP.bat

Переводите телефон в фастбут и подключаете к компьютеру, на этом все, тврп установлено.

Теперь чтобы тврп не слетело , вам нужно зайти в монтирование и поставить галочку напротив vendor, возвращаетесь в главное меню и выбираете дополнительно, выбираете проводник и ищите папку vendor ,зайдите в неё и удалите там файл recovery-from-boot.p. На этом все, тврп установлено и больше не слетит после перезагрузки.

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


В этом посте я вкратце расскажу вам о том как получить образ recovery.img из boot.img, при условии что у нас на руках имеется только update.zip от прошивки телефона. Собственно на написание этого гайда меня сподвиг один из читателей моего блога, который умудрился зашить в Билайн Смарт Dual recovery от абсолютно другого аппарата и попросил о помощи. Прошивок под SP Flash Tool для данного аппарата мне найти не удалось (в этом случае все было бы намного проще, так как там образ стокового recovery уже лежит отдельно), но зато был найден update.zip от данного аппарата.

Вообщем все не просто, а очень просто. Единственное для работы нам понадобится любой телефон на Android с root-доступом и adb. Первое что мы делаем это извлекаем из архива с прошивкой update.zip следующие файлы:

  • boot.img - образ раздела boot
  • recovery-resource.dat (можно взять в system\etc) - набор ресурсов для добавления в образ recovery, так называемый bonus-file.
  • recovery-from-boot.p (в update\recovery) - файл патча (diff), который собственно и поможен нам преобразовать boot.img в recovery.img
  • install-recovery.sh (update\recovery\etc) - скрипт который используется ОС Android в штатном режиме, для восстановления раздела recovery из boot.
Далее все очень просто, смотрим в install-recovery.sh, оттуда нам понадобятся значения SHA1-хешей boot.img, recovery.img и самого патча. В моем случае это строка: applypatch -b /system/etc/recovery-resource.dat EMMC:boot:4257792:294140ba217ceba662050400bb9488f494b6362b EMMC:recovery 3e9baf0e1ef24480a92d92c5566244a240480fcc 4634624 294140ba217ceba662050400bb9488f494b6362b:/system/recovery-from-boot.p Теперь заливаем все перечисленные в списке файлы в любое устройство на Android через ADB. Я залил их в папку /data/local/tmp/recovery. Далее изучаем синтаксис утилиты applypatch (кстати ее исходники и собранный бинарник под Linux, если вы, например, хотите собрать ее самостоятельно или использовать ПК с Linux вместо телефона на Android, можно взять здесь):

После чего копируем boot.img в recovery.img, например так - cp /data/local/tmp/boot.img /data/local/tmp/recovery.img . и выполняем следующую команду, уже через ADB на Android устройстве:

  • bonus-file: -b /data/local/tmp/recovery/recovery-resource.dat
  • src-file: /data/local/tmp/recovery/boot.img
  • tgt-file: /data/local/tmp/recovery/recovery.img
  • tgt-sha1: 3e9baf0e1ef24480a92d92c5566244a240480fcc
  • tgt-size: 4634624
  • <src-sha1>:<patch>: 294140ba217ceba662050400bb9488f494b6362b:/data/local/tmp/recovery/recovery-from-boot.p

Где src-sha1 - это SHA1 хеш исходного файла, tgt-sha1 - это SHA1 хеш результирующего файла, который должен получиться в результате применения патча.

Взлом Android пошагово: Recovery, root-доступ, ROM

Bootloader, Recovery, Root и ROM… Если вы не знаете, что скрывается за этими терминами Android, вам необходимо прочитать эту статью. В ней рассказывается обо всех инструментах взлома и хаках, применимых к системе Android.


В предыдущем материале мы разобрались, как в целом работает Android, и приступили к разблокировке загрузчика системы. Теперь пришла очередь установки кастомной системы восстановления данных, получения root-доступа к OS, а также инсталляции новой ROM.

Установка Recovery

После разблокировки загрузчика можно установить кастомную систему восстановления данных. В общем-то, это даже необходимо, так как стоковая Recovery обычно имеет ограниченный набор функций.

Очень удобна Recovery TWRP, где вы можете запускать пользовательские ПЗУ, создавать резервные копии и многое другое. Неплохая альтернатива — Recovery «ClockWorkMod».

Просто скачайте подходящую систему восстановления данных и инсталлируйте ее. Чтобы установить Recovery, перезагрузитесь в режим fastboot и введите команду «fastboot flash recovery C: \ … \ recovery.img». При необходимости вам придется сначала удалить существующую Recovery, написав в командной строке «fastboot erase recovery».

На устройствах Samsung для установки кастомной системы восстановления используется утилита Odin.

Получение root-прав

Взлом Android пошагово: Recovery, root-доступ, ROM

Режим fastboot на Android

Теперь, когда у вас установлена собственная Recovery, вы можете, наконец, получить root-права на свой смартфон. Многие пользователи Linux знают, что это такое: любой, у кого есть root-доступ, имеет права администратора системы. Например, раздражающие системные приложения («bloatware») можно удалить или перенести на SD-карту и пр.

Тут на первые позиции выходят смартфоны Samsung, поскольку на них root-доступ может быть получен очень легко. Для этого есть веб-сайт Autoroot-Chainfire или более новый ресурс: Firmware.mobi. Просто загрузите оттуда комплект утилит. Он содержит подходящую версию Odin и файл для получения root-прав. Чтобы получить root-права на устройство, просто подключите смартфон в режиме загрузки к ПК и запустите файл для получения root’a через Odin. Например, кастомную Recovery можно легко с помощью приложения TWRP.

Совет: в режим загрузки вы можете войти с помощью команды «adb reboot download».

Для всех других устройств под Android необходимо запустить набор утилит для получения root-прав из ZIP-архива через Recovery. Пожалуй, лучший из них — пакет SuperSU. Однако есть еще много практичных альтернатив, таких как, например, Magisk.

Samsung

На устройствах Samsung root-доступ может быть получен очень легко

Для перехода в режим восстановления используйте команду «adb reboot recovery» или комбинацию кнопок. Затем установите пакет для получения root-доступа. В TWRP это можно сделать с помощью кнопки «Установить». Конечно, файл должен уже находиться на вашем устройстве Android.

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

Как установить кастомный ROM

Если у вас есть root-права на Android-устройство и установлена кастомная Recovery, вы можете инсталлировать собственную систему. Это даст возможность использовать более новые версии Android на старых телефонах. Удобны такие ROM, как Lineage OS, Flyme, MIUI, OmniROM, Resurrection Remix, Dirty Unicorns или Paranoid Android.

Кстати, на этой стадии нет необходимости пользоваться Google Apps, можно загрузить новую систему с домашней страницы.

Для установки ROM загрузитесь в Recovery. Перейдите к разделу «Wipe» и очистите внутреннюю память. Вам также может понадобиться очистка кеша.

Затем перейдите к «Install» и установите новую систему. Затем, если хотите, вы также можете установить пакет OpenGApps. Файлы должны быть размещены на карте MicroSD.

Несомненным плюсом является то, что некоторые кастомные ПЗУ уже рутированы.


Тот, кто когда-либо прошивал свой смартфон или хотя бы разблокировал загрузчик, наверняка имел дело если не с инструментами командной строки, то хотя бы со специальными графическими приложениями для 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):

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

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

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

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

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

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

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

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

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

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

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

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

Исследуем таблицу разделов планшета на базе 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):

Запакованные ядро и 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):

Но главная задача 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

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

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

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

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

Эмулятор терминала, встроенный в 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 собственной персоной

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

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

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

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

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

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

Выводы

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

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

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

Читайте также: