poloniumv's

Получение root-прав на планшете с Rockchip RK3066

7 мая 2015 г. 16:04

Некоторое время назад приобрел планшет Mystery MID-722 и, естественно, столкнулся с недостатком места на внутреннем накопителе. Дополнительная SD-карта для музыки, видео, книг и всякого такого пригодилась, но вот кэш и данные программ на нее не поместишь просто так (внутрення карта монтировалась как /mnt/sdcard, внешняя же как /mnt/external_sd). Любой из способов, будь то перемонтирование/симлинки/изменение fstab, требовал наличия root-прав.
Никакое из приложений для самого устройства результата никакого не принесли. Решено было подключить планшет к компьютеру, включить отладку через USB и root'ать.
На домашней машине Windows 7 x64. Скачал необходимые драйвера, Android SDK, программу UnlockRoot. Все установилось, но, руки наверное кривые, результата так же не принесло. Вроде и система железяку видит, и все необходимое на планшете включено, а анлокер не видит. Ну, думаю, на работе поставлю Windows XP x32 в виртуальную машину, проброшу на нее USB и буду пробовать там. Что и сделал. С тем же результатом. Также попробовал, помимо UnlockRoot, iRoot и ERoot. Также безрезультатно.
Нашел несколько советов как из под GNU/Linux получить root-права на планшете. Воспользовался и получил.

Сначала необходимо поставить пакет android-tools-adb. Поскольку у меня Linux Mint, то:

sudo apt-get install android-tools-adb

Решил посмотреть есть ли поддержка "из коробки" моего планшета. Несколько ранее, играясь под Windows, выписал Vendor ID планшета (2207). Посмотрел:

sudo grep 2207 /etc/udev/rules.d/51-android.rules

Увы. Ну и ладно. Добавил необходимую строку в /etc/udev/rules.d/51-android.rules:

SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666", GROUP="plugdev" 

Добавил своего пользователя в группу plugdev:

useradd -G plugdev poloniumv 

Перезагрузил правила доступа к USB:

sudo udevadm control --reload-rules

Добавил Vendor ID своего планшета в конфиг adb:

echo "0x2207" >> ~/.android/adb_usb.ini

И перезапустил сервер adb:

adb kill-server; adb start-server

Список подключенных устройств порадовал наличием в нем планшета:

adb devices
List of devices attached
NCGS6PZX0N device 

Подключил планшет USB-кабелем к ноутбуку и включил отладку по USB. Далее скачал архив (на случай 404) с набором необходимых бинарников и пакетов: su, SuperSU, busybox, RootExplorer и распаковал в отдельный каталог.

Перейдя в этот каталог начал получать root'а:

adb shell mv /data/local/tmp /data/local/tmp.bak
adb shell ln -s /data /data/local/tmp
adb reboot 

После перезагрузки планшета (первой из трех), продолжил:

adb shell rm /data/local.prop > nul
adb shell "echo \"ro.kernel.qemu=1\" > /data/local.prop
adb reboot 

Перезагрузка (вторая из трех) завершилась, проверил, от root'а ли я сейчас буду заливать необходимые бинарники да пакеты и "човнить" да "чмодить" :)

adb shell id
uid=0(root) gid=0(root) 

Удовлетворенный результатом, продолжил:

adb remount
adb push su /system/bin/su
adb shell chown root.shell /system/bin/su
adb shell chmod 6755 /system/bin/su
adb push busybox /system/bin/busybox
adb shell chown root.shell /system/bin/busybox
adb shell chmod 0755 /system/bin/busybox
adb push SuperSU.apk /system/app/SuperSU.apk
adb chown root.root /system/app/SuperSU.apk
adb chmod 0644 /system/app/SuperSU.apk
adb push RootExplorer.apk /system/app/RootExplorer.apk
adb chown root.root /system/app/RootExplorer.apk
adb chmod 0644 /system/app/RootExplorer.apk
adb shell rm /data/local.prop
adb shell rm /data/local/tmp
adb shell mv /data/local/tmp.bak /data/local/tmp
adb reboot

После перезагрузки запустил SuperSU и обрадовался - получилось!