[Droid Incredible Themes and Apps] fang0654:
Easy way - OpenVPN on rooted/S_OFF Incredible with BusyBox installed:

This is by far the easiest way to set up OpenVPN. Make sure you copy your config file and any relevant keys to a folder on your sdcard. First, you need to know where BusyBox is installed, and if you already have the tun.ko module. For BusyBox, for most Roms based off the 2.2 8/1 leak, the location is /system/xbin. An easy way to check on your phone:

adb shell

find / -iname "iptunnel"

The path containing the file is where BusyBox is installed. If you don't have it installed, you can follow the instructions at the bottom of this post to install it.

The tun.ko module depends on your kernel. With the hydra 2.2 kernels, the location is /system/lib/modules/tun.ko . Easy way to check:

adb shell

find / -iname "tun.ko"

If you do not have tun.ko on your system, then you can download it for 2.2 (tun.zip) or 2.1 (inside openvpn.zip) attached to this post.

Next, download the following two apps from the Android Market:

OpenVPN Installer

OpenVPN Settings

Next, run OpenVPN installer, click install, give it an install path (I prefer /system/xbin), and give it the path to BusyBox.

Finally, run OpenVPN Settings. Go to Menu -> Advanced, make sure "Load tun kernel module" is checked.

Click on "TUN module settings"

Change "Load module using" to insmod

Change "Path to tun module" to... the path to your tun.ko file. Click back.

Update "Path to configurations" and "Path to openvpn binary".

That should be it!

This is how to run OpenVPN on a rooted Incredible using unrEVOked root and the stock 2.1 ROM with S_ON

NOTE: This is only for rooted Stock 2.1 without S_OFF. If you have S_OFF via unrevoked forever, just use Openvpn Installer and Openvpn Settings, both available in the market. Much easier!

This is my first time doing something like this, so bear with me if it is a little rough!

You must have root access to set this up. You do NOT need to go back into recovery adb though.

First, download the attached openvpn.zip containing the following:

tun.ko - kernel module for 2.1.

openvpn-static - statically compiled openvpn

If you are using 2.2, tun.zip contains the module compiled for the 2.2 kernel (thanks Apalyan!)

You will already need to have a working client.conf, and any associated keys. Copy the following files into a folder named 'openvpn' on the sdcard, or push with the following:

adb mkdir /sdcard/openvpn

adb push tun.ko /sdcard/openvpn/tun.ko

adb push client.conf /sdcard/openvpn/client.conf

adb push client.key /sdcard/openvpn/client.key

adb push client.crt /sdcard/openvpn/client.crt

adb push ca.crt /sdcard/openvpn/ca.crt

adb push openvpn-static /sdcard/openvpn/openvpn-static

The following must be done in a root shell:

adb shell

su

mkdir /data/openvpn

dd if=/sdcard/openvpn/openvpn-static of=/data/openvpn/openvpn

chmod 700 /data/openvpn/openvpn

Use the OpenVPN Settings configuration below to start/stop openvpn.

Note: All of the code was already written and ported to Android by the guys behind OpenVPN Settings. I just compiled a new tun.ko from the Incredible kernel source, and recompiled the statically linked openvpn with updated paths to ifconfig and route.

ADDED (thanks wraithdu!):

If you have trouble with post-connection routing, you may need to install busybox for a more powerful route/ipconfig. Instructions are here:

---

busybox is installed by the latest rooting process, but it's not a full install, ie it does not create all the command links. I got the file from the Titanium Backup site:

http://www.matrixrewriter.com/android/files/busybox-1.15.3.zip

To install:

1) extract and push busybox to your sdcard, reboot into recovery

2) mount /system

3) if you don't have /system/xbin (you should), create it

adb shell:

# mkdir /system/xbin (if necessary)

dd if=/sdcard/busybox of=/system/xbin/busybox

cd /system/xbin

chmod 755 busybox

./busybox --install .

4) reboot and done

OPTIONAL - before rebooting replace the busybox installed by the root process in /system/bin

1) mv /system/bin/busybox /system/bin/busybox.bak

2) cp /system/xbin/busybox /system/bin/busybox