четверг, 25 августа 2016 г.

Alcatel Idol 3 (4.7") 6039Y. Как получить root на Android 6.0.1?

Еще раз приветствую своих читателей и владельцев аппарата Alcatel Idol 3 4.7" 6039Y. С выходом официального релиза Android 6.0.1 Marshmallow у многих пользователей возникли затруднения при получении root-прав и прошивке zip-архива с SuperSU через TWRP. В большинстве случаев после применения zip'а с SuperSU аппарат уходил в bootloop и восстановить его можно было только переустановив прошивку. Вот один из комментариев пользователя Belayduz City, подтверждающий наличие проблемы (орфография и пунктуация автора сохранены): "скажите как установит ROOT на IDol3 C TWRP у меня был android 5 я поставил там с шапка а теперь прошел на 6 не могу после установки ROOT тел не включается.... скачал все рут прав но тоже самое со всеми буду благодарен если поможите".

Действительно, на прошивках с Android 5.x подобного поведения не наблюдалось, т.е. все что необходимо было сделать для получения root-прав - это прошить zip с SuperSU, на Android 6.x же, прошивка того же самого zip'а в большинстве случаев приводила к bootloop'у и невозможности загрузки ОС. На различных форумах, посвященных мобильным устройствам, можно было встретить многочисленные рекомендации и "истории успешной прошивки", например, рекомендовалось брать SuperSU определенной версии или же, например, производить установку архива с SuperSU не со внешней SD-карты, а только из внутренней памяти. Однако, все эти "шаманские советы" в каких-то случаях работали, а в каких-то нет. Именно это и послужило причиной написания данного поста, чтобы однозначно внести ясность в этот вопрос.

Итак, как вы уже поняли, для получения root нам будет необходим установленный TWRP Recovery, подробно останавливаться здесь на моменте прошивки TWRP я не буду, тем более что это уже неоднократно обсуждалось. Также вам потребуется zip-архив с SuperSU версии 2.74 и выше. В моем случае я использовал BETA-SuperSU-v2.74-2-20160519174328.zip. Многие облачные сервисы могут посчитать этот архив вредоносным, поэтому выкладывать его отдельно я не буду, тем более что его можно скачать на официальном сайте проекта chainfire.eu. Для тех кто подзабыл напомню, что последнюю версию zip'а с SuperSU всегда можно найти по следующим ссылкам: StableBetaLatest. С этим моментом мы тоже разобрались, предполагается что вы уже скачали zip с SuperSU и скопировали его на SD-карту или во внутреннюю память.

Далее загружаемся в TWRP и делаем следующее:



  • На запрос о разрешении модификации системного раздела отвечаем утвердительно, т.е. делаем Swipe вправо для разрешения модификаций.
  • Затем заходим в меню Advanced -> Terminal и в консоли вводим следующую команду - echo SYSTEMLESS=true >> /data/.supersu , так, как показано на скриншоте. Дополнительно можно проверить с помощью cat /data/.supersu все ли получилось. Если в ответ вы увидите строчку SYSTEMLESS=true - значит первую команду вы набрали верно.
  • Устанавливаем zip с SuperSU через опцию Install Zip и перезагружаем телефон.


Как видно, в логе при установке у нас есть строчка "System-less mode, boot-image support required" - это означает что мы все сделали верно. Телефон должен успешно перезагрузиться (возможно понадобится несколько перезагрузок), после чего SuperSU будет установлен, а root-права получены.

Благодаря использованию SYSTEMLESS=true образ boot.img в процессе установки SuperSU был модифицирован и пересобран. Если кому-то интересно какие изменения в boot произошли, вот часть из них:

  • Заменен бинарник sepolicy в корне ramdisk.
  • В fstab.goldfish для /dev/block/mtdblock0 добавлена опция noatime, т.е. было - ro,barrier=1, стало - ro,noatime,barrier=1.
  • В fstab.qcom аналогичное изменение в опциях для /dev/block/bootdevice/by-name/system, добавили noatime.
  • В init.environ.rc добавлена строка - export PATH /su/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/su/xbin:/system/xbin в on init.
  • В init.rc убрали установку свойства setprop selinux.reload_policy 1, а также добавили:
    
    # mount /data/su.img to /su
    on property:sukernel.mount=1
        mount ext4 loop@/data/su.img /su noatime
    
    # launch SuperSU daemon
    service daemonsu /sbin/launch_daemonsu.sh
        class late_start
        user root
        seclabel u:r:init:s0
        oneshot
    

    Этим кстати и объясняется названием метода systemless , как видно бинарник su у нас уже не хранится в /system. Хотя вообще-то подробный анализ всего этого дела - это отдельная история, которая не входит в рамки данного поста.
  • Удален verity_key.

Для тех кого интересует вопрос что такое systemless метод установки root в целом - рекомендую ознакомиться со статьей на How-To Geek: What Is “Systemless Root” on Android, and Why Is It Better?.

Ну а на этом все ... жду ваших комментариев с отзывами об успешном получении root на 6.0.1 на 6039Y ;)

12 комментариев :

  1. Спасибо Огромное... Благодарен вам от всего сердца

    ОтветитьУдалить
  2. есть кто мне такое сотворить в Москве ?

    ОтветитьУдалить
  3. Вроде все делал чётко по мануалу, в итоге bootloop.

    ОтветитьУдалить
    Ответы
    1. Вывод может быть только один - что-то вы сделали не по мануалу, либо версию SuperSU взяли древнюю, либо ошиблись где-то в процессе выполнения шагов инструкции, либо еще что-нибудь ... Расскажите подробно, желательно с приложением скриншотов, как и что вы делали - попробуем разобраться.

      Удалить
    2. Не знаю как тут правильно прикрепить фото, заранее извиняюсь !!!

      Удалить
    3. Фото можно выложить на любой файлообменник, например Google Drive, Яндекс.Диск, DropBox, а здесь просто разместить ссылку на него.

      Удалить
  4. Decker Спасибо что отозвались !

    Итак, TWRP прошился без проблем, далее отформатировал microSD в FAT32 и закинул на неё BETA-SuperSU-v2.74-2-20160519174328.zip. Вставил карту в смарт и загрузился в TWRP. Захожу Advanced -> Terminal, каталог выбираю external SD - куда предварительно положил supersu, жму select. в терминале набираю echo SYSTEMLESS=true >> /data/.supersu, затем проверяю ( cat /data/.supersu ) - получаю положительный ответ в виде SYSTEMLESS=true. Через INSTAL ставлю supersu, reboot - в результате bootloop... ждал долго, перезагружался несколько раз. Что делаю явно не так !!! Кстати в процессе установки supersu не было стадии Boot Image Patcher, как у Вас на скриншоте. Прошу помощи...

    ОтветитьУдалить
    Ответы
    1. Если стадии Boot Image Patcher у вас не было, значит установка SuperSU по каким-то причинам не была произведена в режиме systemless и в этом случае неудивительно что вы получили Bootloop. На всякий случай проверьте, чтобы раздел /data был у вас смонтирован в TWRP перед тем как вы выполняете все действия.

      Также, вы можете попробовать открыть zip с SuperSU, который вы используете и найти в файле \META-INF\com\google\android\update-binary в нем следующие строки:

      if [ -z "$SYSTEMLESS" ]; then
      # detect if we need systemless, based on Android version and boot image
      SYSTEMLESS=detect
      fi

      И заменить SYSTEMLESS=detect на SYSTEMLESS=true в этой строке. Если в вашем zip'е с SuperSU отсутствуют данные строки, значит у вас старая версия, которая не поддерживает systemless установку.

      Удалить
  5. Спасибо огромное за отзывчивость всё получилось! Просто раздел /Data не был смонтирован. С меня денежка на поддержку проекта. И ещё раз благодарю !!!

    ОтветитьУдалить
  6. Это не системный рут к сожалению. А как поставить системный?

    ОтветитьУдалить
    Ответы
    1. Что входит в ваше понимание словосочетания "системный root"?

      Удалить
    2. Я надеюсь это был сарказм или риторический вопрос от человека, который увлекается подобным и создал тут целую тему по этому поводу.
      systemless root (несистемный рут)
      Это такой способ получения рут-прав, при котором бинарники суперпользователя устанавливаются не в раздел /system, а в /su, в результате чего появляется возможность получать OTA-обновления стоковых прошивок даже при наличии проверки целостности системных блоков (а также быстро избавляться от рута и т. д. - более подробно всегда может рассказать всемогущий Гугл).

      Удалить