jmhobbs

Fixing Broken Droid2 Root

I had previously rooted my Droid2, but it was broken when the OTA Gingerbread came down. I don't really use root for much now that I don't really develop for Android anymore, but I found a need today, so I decided to re-root.

I found a nicely packaged exploit on rootzwiki, but when I ran it I hit a snag.

* daemon started successfully *
* Running exploit [part 3 of 3]...
remount succeeded
5524 KB/s (1867568 bytes in 0.330s)
651 KB/s (26264 bytes in 0.039s)
5928 KB/s (196521 bytes in 0.032s)
	pkg: /data/local/tmp/Superuser.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
link failed File exists

My old root was blocking my new root. Lame.

Easy to fix after poking around on the file system.

Essentially it boils down to this:

  1. Manually remove old Superuser.apk
  2. Clean up Superuser.apk data files
  3. Install new super user apk
  4. Link up new su

Details below, but as always YMMV.

Manually remove old Superuser.apk

Make sure you know the full namespace before you delete this file, you will need it later (i.e. com.noshufou.android.su)

jmhobbs@Cordelia:~/root$ ./adb.linux shell
# cd /system/app
# rm Superuser.apk

Clean up Superuser.apk data files

jmhobbs@Cordelia:~/root$ ./adb.linux uninstall com.noshufou.android.su
Success

Install new super user apk

From here on out you are essentially just finishing up the root script that got skipped.

jmhobbs@Cordelia:~/root$ ./adb.linux install Superuser.apk 
3217 KB/s (196521 bytes in 0.059s)
	pkg: /data/local/tmp/Superuser.apk
Success

Link up new su

jmhobbs@Cordelia:~/root$ ./adb.linux shell
# cd /system/bin
# mv su su.orig
# ln -s /system/xbin/su /system/bin/su

All done! You should be rooted again.