Dropbox

小米WiFiルーター青春版は小型ながらsoftetherまで動かすことが出来ました。ただ動いただけではなく、メモリーの使用状況やCPUの稼働率を見ると何とか実用的に稼働できそうです。そこで欲張ってパケットリピーターstoneも動かしてみることにしました。

参考webサイト:
stone version 2.3e stoneの公式ページです。
La Fonera 上で stone を走らせてみる 開発者の方の記事です。
OpenWrt – Cross Compile OpenWrt公式WiKiのCross Compileのための設定です。

[ Cross Compileのための設定 ]

SDKの導入が終わっていることを前提とします。詳しくは「小米ルーター青春版 + OpenWrtにSoftether VPNを導入する」をご覧ください。

OpenWrtの公式ガイドにあるようにstaging dirのtoolchainにパスを通し、環境変数STAGING_DIRを設定します。わたしの場合は以下のような設定を ./.bash_profile に入れました。
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-5.3.0_musl-1.1.15/bin

export PATH

STAGING_DIR=$HOME/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-5.3.0_musl-1.1.15

export STAGING_DIR
openwrt以下の部分はTarget Systemによって変わります。

[ stoneのビルド ]
stoneの公式ページよりソースコード一式をダウンロードし展開します。

$ wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz
$ tar xvf stone-2.3e.tar.gz
$ cd stone-2.3d-2.3.2.7/

Makefileを少々変更しなければなりません。以下、変更部分のみです。

fon:
$(MAKE) CC="mipsel-openwrt-linux-gcc" FLAGS="-O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL -D_GNU_SOURCE $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
mipsel-openwrt-linux-strip stone

fon-pop:
$(MAKE) CC="mipsel-openwrt-linux-gcc" TARGET=fon pop_stone

fon-ssl:
$(MAKE) CC="mipsel-openwrt-linux-gcc" SSL_LIBS="-lssl -lcrypto" TARGET=fon ssl_stone

fon用の設定を流用しました。
– “-D_GNU_SOURCE”を追加。これは通常のLinux用にmakeするときも必要かもです。
– CC=の部分を”mips-linux-uclibc-gcc”から”mipsel-openwrt-linux-gcc”に書き換える。
– mips-linux-uclibc-stripをmipsel-openwrt-linux-stripに書き換える。

以上でmake fonは通るようになりました。ところがmake fon-sslを実行するとopenssl/crypto.hが無いと言って怒られます。

確かにSTAGING_DIR以下を探しても見つかりません。というか$STAGING_DIR/usr/以下にはinludeとlibがありますが空っぽです。探してみると~/openwrt/staging_dir/target-mipsel_24kec+dsp_musl-1.1.15/usrには全てのファイルが揃っているようです。正しい解決方法は分かりませんが、とりあえずスタティック・リンクを貼ってみました。

$ cd ~/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-5.3.0_musl-1.1.15
$ mv usr usr.xx
$ ln -s ~/openwrt/staging_dir/target-mipsel_24kec+dsp_musl-1.1.15/usr ./usr

再びstoneに戻ってmake fon-sslでstoneが出来上がりです。

$ cd ~/stone-2.3d-2.3.2.7/
$ make fon-ssl

[ 導入 ]
単純に/usr/bin/にstoneをおきました。使い方については、ここでは詳しくは書きません。
/etc/init.d/にスクリプトを置けばLuCIからコントロール可能と思います。わたしの場合は常に起動しますので単純に/etc/rc.localから起動することにしました。

Trackback

no comment untill now

Add your comment now