Rooting the official Froyo (2.2) on the Dell Streak.
This was done on a US AT&T (locked) Streak that had been previously rooted, and upgraded to the official O2 (European) 2.1. Since it was running the O2 2.1, I got the official upgrade notifications to 2.2
As one might expect, doing the update removes root access.
Here's how to get it back.
I did this on a Mac, but it should work on any platform. You do not need .NET/Mono
This gives you ownership of your Streak. It does NOT unlock it for use on other carriers.
Prerequisites:
Android sdk, or at least a working adb for your platform. You should be able to use the adb executable included in SuperOneClick.
Knowledge of how to use adb and type commands.
The Intestinal Fortitude to deal with the possibility of permanently ruining your Dell Streak. Understand what you are doing, and the consequences before proceeding. I am providing a list of commands I used, I am not telling you to root your device, or suggesting that you should or should not.
Assumptions:
Mac or Linux with android-sdk installed. We are in the tools directory where the adb executable is.
Stuff we download goes in ~/Downloads.
USB Debugging is checked in Settings >> Applications >> Debug (on phone)
What You Need:
SuperOneClick: We are going to download SuperOneClick, and then NOT USE IT. Get it from this thread:
http://forum.xda-developers.com/showthread.php?t=803682 (1.5.5 was the latest as of this writing.)
Unpackage it.
The Procedure:
Connect the Streak to the Computer with a USB cable.
Open a terminal (Applications >> Utilities >> Terminal on a Mac)
Install Superuser
In the terminal, do:
Code:./adb install ~/Downloads/SuperOneClickv1.5.5-ShortFuse/Superuser.apk
You can get it from the market if you'd rather, but you can't escape the command line forever.
Don't Open it, don't touch it,... don't even look at the icon yet.
Copy the su binary, and the busybox binary to the sdcard. I don't care how you do this -- card reader, USB storage, adb push, just do it. Here's how to do it via adb:
Code:./adb push ~/Downloads/SuperOneClickv1.5.5-ShortFuse/su /sdcard/su
./adb push ~/Downloads/SuperOneClickv1.5.5-ShortFuse/busybox /sdcard/busybox
Push rageagainstthecage directly to the place where we will execute the attack from:
Code:./adb push ~/Downloads/SuperOneClickv1.5.5-ShortFuse/rageagainstthecage /data/local/tmp
Log in via adb:
Code:./adb shell
(Prompt will change to just a $) In the adb shell, do:
Code:cd /data/local/tmp
chmod 755 rageagainstthecage
Run the attack:
Code:./rageagainstthecage
Wait. rageagainstthecage will spit out some text. You'll eventually get dumped out of adb, and you will return to the terminal prompt.
Wait some more (about 30 sec to 1 min) adb on the Streak is restarting as root.
Try to adb shell back in again:
Code:./adb shell
If you cannot connect, wait a few more seconds/minutes and try again. You should get back in within a few tries.
This time the cursor should be a #
If not, try the attack again, or re-boot the Streak and try the attack again.
If it is a #, congratulations, you're in. Now we need to make it a useable root shell so we can actually do stuff as root, make it permanent. From the # prompt do:
Code:mount -o rw,remount -t yaffs2 /dev/block/mtdblock6 /system
We need to copy su and busybox from the sdcard to their proper places, but we have no copy command (yet), so we use dd:
Code:dd if=/sdcard/su of=/system/bin/su
dd if=/sdcard/busybox of=/system/bin/busybox
Make them executable, with the proper permissions:
Code:chmod 4755 /system/bin/su
chmod 4755 /system/bin/busybox
Remove rageagainstthecage:
Code:rm /data/local/tmp/rageagainstthecage
(One can assume that you rooted the machine for a reason. You can do what you needed to do as root now, if you want)
Remount the filesystem read only.
Code:mount -o ro,remount -t yaffs2 /dev/block/mtdblock6 /system
exit
Reboot the Streak to make sure root stuck.
Log back in again (You can do this from adb, or from a Terminal on the Streak)
Try to become root:
Code:su
Superuser.apk should warn you that something is trying to run as root (Either adb or the Terminal app), grant it permission.
You should again get the # root prompt. You can do what you need to do as root.