From Android Wiki
These methods can only be done on RC29 or lower. If you are already on RC30 (RC8/UK) you must first downgrade to RC29 using the leaked firmware and get the root access that you seek to keep.
Using JesusFreke's (JF) modified rom
JesusFreke has created modified roms that you can flash that will give you RC33 (RC8 for the UK) and still have root.
If you copy files over USB to /sdcard remember to unmount before unplugging the USB.
- Download the modified recovery image:
- Copy (or adb push) recovery.img to /sdcard
- Download the modified ROM (Do not unzip it!)
- copy (or adb push) this file to /sdcard/update.zip - Make sure that if you copy over USB that you unmount before unplugging
- tip: If you are on windows, and have the "hide file extensions for windows" option turned on, once you rename the file to update.zip, right click on the file and go to properties and read the filename. Make sure it is "update.zip" and not "update.zip.zip" because it will fail.
- Copy the recovery image to the /system partition:
- In a terminal as root (you might need to type su to get root if you get errors on any of these commands)
mount -o remount,rw /dev/block/mtdblock3 /system
cat /sdcard/recovery.img > recovery.img
flash_image recovery recovery.img
- Turn off phone
- Turn back on the phone and let it boot normally (don't go into recovery mode yet)
- Once the phone finished booting, turn off the phone again (yes, you really should let the phone start up normally once. Don't skip this)
- Hold down power and home to enter recovery mode
- At the exclamation point and phone image hit Alt-L look for test-keys on the second line. If missing, the above steps failed and you should hold Home and Back to reboot and start over. If not, continue.
- Press Alt+S. The system will proceed to verify the image and install it. When done, it will say to reboot by pressing Home + Back.
- Press Home + Back. The system should show an open box and arrow into phone, then an arrow onto a chip, then reboot twice.
This will give you an rc33/rc8 that has 'su' for gaining root access.
Once you've installed JF's firmware, you can check which version you are running by running:
on the command line.
Source(s): Android solutions