poniedziałek, 11 listopada 2013

Jak zrootować Androida przy pomocy Fedory (oraz jak to cofnąć ;-) )

Ten post jest bardziej o Androidzie i usuwaniu pewnych "przeszkód" dających nad nim całkowitą władzę niz o Fedorze, ale pokazuje jak przy pomocy Fedory można łatwo "zrootować" dowolne urządzenie z Androidem.

UWAGA!!! Tzw. rootowanie urządzenia z Androidem zazwyczaj narusza warunki gwarancji. Należy rozważyć możliwe konsekwencje przed przystąpieniem do wykonania poniższej procedury.

Wszystkie podane poniżej polecenia sprawdziłem i wykonałem na posiadanym przeze mnie urzadzeniu. Są one bezpieczne dla tabletu jednak nie biorę żadnej odpowiedzialności za uszkodzenia systemu i/lub sprzętu, które wynikną z przeprowadzenia powyższej procedury.


W tym przypadku moja zasługa jest stosunkowo niewielka. Posłużyłem się świetnym i prostym opisem stworzonym przez PMS z polskiego forum tematycznego android.com.pl.
Dla osób chcących skorzystać z oryginału (lub wykonać rootowanie z systemu Kubuntu/Ubuntu/Xubuntu) podaję → bezpośredni link do postu.

Czynności wykonałem na tablecie Mistral traveler II (MI-T72A) z wgranym Androidem 4.0.3. Podawane przeze mnie nazwy opcji pochodzą z tego tabletu, ale w zależności od urządzenia i wersji systemu mogą się nieco różnić.
Do dzieła...

  1. Przede wszystkim należy przejść do ustawień (na tablecie lub telefonie) do "Opcji programistycznych" i włączyć "Debugowanie USB" oraz w części "Zabezpieczenia" włączyć "Nieznane źródła"
  2. W Fedorze włączamy terminal i instalujemy niezbędne narzędzia
    yum install android-tools
  3. Podłączamy tablet przez USB (nie montujemy) i sprawdzamy poleceniem lsusb czy urządzenie jest widoczne w systemie. W moim przypadku wygladało to tak:
    $ lsusb
    Bus 001 Device 003: ID 18d1:deed Google Inc.
    ID urządzenia w przypadku wszystkich tabletów MI-T72A powinien byc ten sam: 18d1:deed
  4. Następne polecenia będziemy wykonywać jako root na Fedorze:
    su -
    Hasło: podajemy hasło roota
  5. Z konsoli uruchamiamy edytor tekstu
    [root@localhost ~]# nano /etc/udev/rules.d/51-android.rules
    wpisujemy w jednej linii:
    SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", SYSFS{idProduct}=="deed", MODE="0666"
    i wychodzimy z zapisem.
  6. restartujemy udev oraz - na wszelki wypadek, bo na razie nie powinien działać - serwer ADB
    [root@localhost ~]# systemctl restart systemd-udevd.service
    [root@localhost ~]# adb kill-server
    [root@localhost ~]# adb start-server
    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
  7. Sprawdzamy czy ADB widzi nasze urządzenie
    [root@localhost ~]# adb devices
    List of devices attached
    13010710000000000022 device
    numer urządzenia może się różnić od widocznego powyżej.
  8. Przygotowania po stronie Fedory skończone - teraz będziemy z Fedory działać na Androidzie.
    Najpierw zachowamy ustawienia naszego tabletu, żeby móc je pod koniec procesu odtworzyć.
    Dla ustalenia uwagi zakładam, że pliki zapisujemy i rozpakowujemy do katalogu /katalog. Oczywiście można zapisać pliki w dowolnym innym katalogu i odpowiednio zmodyfikować dalsze polecenia.
    [root@localhost ~]# adb backup -f /katalog/settings.ab com.android.settings
    Now unlock your device and confirm the backup operation.
    W tym miejscu Fedora czeka na zezwolenie wykonania backupu. Pozwolenie takie dajemy odblokowując urządzenie z Androidem i wciskając widoczny na ekranie Andka przycisk "Utwórz kopię zapasową danych".
    Upewniamy się, że plik został utworzony:
    [root@localhost ~]# ls -l /katalog/settings.ab
    -rw-r----- 1 root root 796971 11-11 10:37 settings.ab
  9. Instalujemy plik special_ab.bin, który utworzy w tablecie plik /data/local.prop. Ściągamy go ze strony Android ICS "adb restore" directory traversal vulnerability. Plik jest załącznikiem do zamieszczonego pod tym adresem posta.
    [root@localhost ~]# adb restore /katalog/special_ab.bin
  10. Restartujemy tablet.


  11. W czasie restartu tabletu ze strony AndroidSU.com ściągamy plik Superuser-3.1.3-arm-signed.zip i rozpakowujemy.


  12. Wciąż jako root wykonujemy polecenia:
    [root@localhost ~]# adb remount
    [root@localhost ~]# adb push /katalog/system/bin/su /system/bin
    [root@localhost ~]# adb shell chmod 4755 /system/bin/su
    [root@localhost ~]# adb push /katalog/system/bin/su /system/xbin
    [root@localhost ~]# adb shell chmod 4755 /system/xbin/su
    [root@localhost ~]# adb install /katalog/system/app/Superuser.apk
    i pliki su i Superuser.apk znalazły się na tablecie


  13. Usuwamy z tabletu /data/local.prop (zmodyfikowany wcześniej przez special_ab.bin) oraz odtwarzamy nasze ustawienia zapisane wcześniej do settings.ab
    [root@localhost ~]# adb shell rm /data/local.prop
    [root@localhost ~]# adb restore /katalog/settings.ab


  14. Restartujemy ponownie tablet i możemy cieszyc się zrootowanym systemem Android :)


BARDZO WAŻNE - unroot urządzenia Niestety niektóre aplikacje wymagają, żeby nasz Android nie był zrootowany. W takim przypadku należy z naszego Androida zajrzeć na stronę sklepu Google i pobrać darmowy program "OTA rootkeeper". Umożliwia ot zarówno tymczasowe ukrycie plików "su" na naszym tablecie jak i ich całkowite wykasowanie (czyli usunięcie roota) na Androidzie. To ostatnie może być przydatne, gdy np. trzeba odnieść sprzęt do serwisu.