See this thread on XDA for the original generic ICS root method [ROOT][HOW-TO]Working Root Method for ICS 4.0.4 - xda-developers
An automated script has been written that installs and verifies the version.
- Download the zip or gz file below.
- Unpack to any convenient directory or folder.
- Open directory and double click on "menu.bat" (Windows) or "./root.sh" *Nix
- Double check you phone has USB Debugging enabled.
- Double check your USB mode is set to CAMERA (may not be necessary)
- Plug in your phone and press enter when it asks you to...
- If running Linux make sure Android SDK or Android platform-tools is installed
Download the latest version of the zip hack from my site Index of /.
Added a menu for windows batch file, option to update busybox, unroot, install Superuser, install Titanium backup, install rootkeeper, install OTA Rootkeeper etc.
Now installs the latest version of Busybox:
BusyBox v1.8.1 (2007-11-14 10:11:37 EST) multi-call binary
Copyright (C) 1998-2006 Erik Andersen, Rob Landley, and others.
Licensed under GPLv2. See source distribution for full notice.
Before you run this hack make sure your phone is in USB Debugging mode (Menu-Settings-My Phone-Developer options). It might also need to be in "Camera" sdcard mode (pull down notifications and make sure it says "as camera" NOT "Mass Storage"). The original method from XDA copied files to sdcard first but this hack doesn't so it probably doesn't matter how the sdcard is mounted. If it gets messed up and drops a lot of errors it's safe to run it a few times. It deletes all temporary files each time so you may need to run it a couple times if you ran it without debugging mode enabled. Just check for root after each run.
You can install Busybox package (creates symlinks in /system/xbin) HERE
What are all those symlinks in my system/xbin directory pointing to busybox after I install the busybox app?
Busybox runs as a normal utility when run from command prompt. In command mode you must supply a tool or applet name as a command-line parameter. When it is symlinked, however, it gets it's tool/applet name from the symlink name so a symlink of "ls->busybox" runs "busybox ls" and a symlink of "zcat->buxybox" runs "busybox zcat". That makes it a much more useful tool because it's easier to use and it doesn't duplicate existing system tools.
Install Superuser from store HERE
Titanium Backup is available HERE.