I ran into a weird problem on an Android 2.2 (Froyo) phone that I had. Although it was rooted, and Superuser was installed, su wouldn’t come up. Trying to root it again with SuperOneClick didn’t seem to work either. Starting Titanium Backup (which worked in the past) yielded “asking for root rights”, and trying to run Terminal Emulator and su just hung.
Finally, I stumbled my way to something working. I ran SuperOneClick 2.3.1 first. I turned off the “automatically start” option of LBE Privacy Guard. I rebooted, then ran ADB shell and was able to get root from there:
C:\super1click\adb\adb shell $ su #
From there, I figured out what device /system was:
# cat /proc/mounts
From this I determined that /system was mounted on /dev/block/stl9, so:
# mount -ro remount,rw /dev/block/stl9 /system # chown root.root /system/bin/su # chmod 6777 /system/bin/su
At this point, I was able to start su and do the “check for update”. su determined that it was out of date, and downloaded a new version, fixing the permissions as it did so. (6777 is a little lax, but I couldn’t remember what su was supposed to be.)
I have no explanation as to why su would break. I have no explanation why this would fix it, but it did for me. Maybe it will for you as well.