[Captivate Q&A, Help & Troubleshooting] Gromlakh:
I've tried just about every automated/one click/whatever method for rooting my spiffy new Captivate, and they all failed for one reason or another. I finally got it to work using adb & the command line. Here's how I did it. Oh, and before someone asks "Why didn't you just use Windoze?", it's because all my computers run Linux so that's not an option.

STANDARD DISCLAIMER: If you root your phone, the ceiling will collapse on your head and your family will die. No one should ever follow these instructions. In fact, I should probably be banned for even posting them.

MY SETUP:

Ubuntu 11.04 (natty)

Samsung Captivate i897, stock, KB2

AT&T

1. Download SuperOneClick

http://xdaforums.com/showthread.php?t=803682

I used 1.9.5, only because another poster told me he had successfully rooted his Captivate using that specific version. This may also work with the files from a newer version; I don't see why it wouldn't.

2. Extract everything

Duh.

3. Put adblinux, psneuter, busybox, su-v2, and Superuser.apk in one directory.

I don't know that it has to specifically be su-v2, but that one worked for me, so huzzah.

4. Put the phone in USB debug mode; plug it in to your computer.

Settings -> Applications -> Development (check the box for USB debugging). Linux users need no drivers.

5. Open a terminal, cd into wherever you extracted the SOC files.

6. Let's dance:

./adblinux push psneuter /data/local/tmp
./adblinux push su-v2 /data/local/tmp
./adblinux push busybox /data/local/tmp
./adblinux shell
$ cd /data/local/tmp

Make everything you just pushed over executable:

$ chmod 6755 psneuter
$ chmod 6755 su-v2
$ chmod 6755 busybox

Run the exploit:

$ /data/local/tmp/psneuter

Running psneuter successfully kicked me out of the shell, so go back. You should also notice when you re-enter the shell that your prompt has changed from "$" to "#", indicating psneuter was successful. This also means you have root privileges, at least temporarily, for the rest of your work.

./adblinux shell
# mount

"mount" should spit out something that looks like this:

On your phone, that output might look a little different, but you're looking for the line in BOLD. In the example above, "/dev/block/stl9" is the mount point for "/system". If "mount" gives you a different mount point, then use that in the commands below. The stuff after that tells you the properties of "/system"; "ro" is the one we're concerned with. That tells us that "/system" is mounted as "read-only". We need to change that so we can move some files over.

# mount -o remount,rw /dev/block/stl9 /system

"/system" is now writable. Let's move some files over.

# /data/local/tmp/busybox cp /data/local/tmp/busybox /system/xbin
# chmod 6755 /system/xbin/busybox
# /data/local/tmp/busybox chown 0.2000 /system/xbin/busybox

A functional copy of busybox now resides at /system/xbin, so from now on you can just call it with "busybox" instead of having to use the full path to the one we pushed over earlier.

# busybox mv /data/local/tmp/su-v2 /system/xbin/su
# chmod 6755 /system/xbin/su
# busybox chown 0.2000 /system/xbin/su
# busybox ln -s /system/xbin/su /system/bin/su

IMPORTANT: Do not leave your "/system" mounted as read-write; change it back and exit the shell:

# mount -o remount,ro /dev/block/stl9 /system
# exit
$ exit

You should be back at your basic Linux command prompt now. Install the Superuser app.

./adblinux install Superuser.apk

7. Reboot your phone

When everything loads back up, you should have root privileges. Update BusyBox from the market. If everything went according to plan, when you try to install BusyBox you should get a prompt from the Superuser app asking if you want to grant the BusyBox installer superuser privileges. If so, everything worked the way it was supposed to, and you're now a 1337 h@><0r or something.

8. Troubleshooting

Mine didn't take the first time for some reason. After reboot, I installed BusyBox and Titanium Backup, both of which failed to get root privileges. I went back into the phone with adblinux, remounted /system as rw, again set the privileges for "/system/xbin/su" to 6755, then remounted /system as ro and rebooted. It took the second time, so I'm assuming I may have typed something wrong.

Another thing I was keen to try is installing the Superuser app FIRST, then running the hacks to root the phone. The phone does not need to be rooted to install Superuser, only for it to work as designed. I am curious if "SU->root->reboot" would work the first time, instead of "Root->SU->Reboot->Re-Root->Reboot", which is how it's been working now. If I happen to reinstall and try this again, I'll update. If anyone else gives it a whirl, post a comment and I'll update accordingly.

I hope this helps someone else. Please comment below with questions/criticisms/flames.