rootedなGalaxy note GT-N7000でOpenVPNをサクッと動かす。

先日、OpenVPNiPot touch で動かして、公開Web鯖にしてしまおう、というpostをしたが、それに続き、今回はGalaxy Noteでやってみた。

Galaxy Noteは、メモをとるのに特化しているというユーザー視点からうれしいだけではなく、
iPod touchにくらべるとはるかにハイスペック
・しかも/dev/tunがデフォでサポートされている
という、大きな利点があって、開発者としてもうれしい。
# ls -l /dev/tun
crw-rw---- vpn vpn 10, 200 2011-12-06 17:46 tun

ようするに、root権をとって、OpenVPNのバイナリさえ引っ張ってこれば、この前iPod touchでやったようなことが、より高性能・高機能なハードで実現できるということだ。
ちなみに、このへんの情報を見るに、Galaxy S2でも同じようにできそう。持ってないからしらんけど。

rootとる
ぐぐれば出てくるので簡単に概要だけ。
「zergRush」というバイナリでrootシェルに入る。

suバイナリを/system/xbin/ に放りこむ

busybox --install /system/xbin で、コマンドセットを放り込む

ls と su だけはオリジナルのものを使う
# cd /system/xbin/
mv ls ls.org
ln -s /system/sbin/ls ls
みたいな感じで。

OpenVPN
前準備として、以下が必要
adb shell
# mkdir /system/xbin/bb
# cd /system/xbin/bb
# ln -s /system/xbin/ifconfig ifconfig
# ln -s /system/xbin/route route
これをしないとVPN接続時に変なエラーが出る。
---(参考)---
Tue Dec  6 21:08:53 2011 Linux ifconfig failed: could not execute external program
Tue Dec  6 21:08:53 2011 Exiting
↑/system/xbin/bb/ifconfig がないとき

Tue Dec  6 21:13:29 2011 ERROR: Linux route add command failed: could not execute external program
Tue Dec  6 21:13:29 2011 ERROR: Linux route add command failed: could not execute external program

↑/system/xbin/bb/route がないとき
 -----------------
以上の準備がそろえば、あとはバイナリ(→http://github.com/downloads/fries/android-external-openvpn/openvpn-static-2.1.1.bz2)を 適当な場所に放り込んで、
./openvpn --config client.conf
で動いた。client.confや、鍵はPCとかiPod touch で用いたものと同様の構成のもの。