Wednesday, January 15, 2014, 18:13 - OS / Unix, *BSD, Solaris
どうもDD-WRTでの需要も一定数ありそうなので、テスト環境が闇に葬られないうちに試すことにした

検証したFirmwareはr23320

DD-WRTはOpenWRTとは異なり、パッケージ管理システムは名残のようなものがあるものの、事実上存在しないと言える
従ってOpenWRTのように1パッケージとして組み込むことは不可能で、面倒な若干の手間が発生するし、綺麗に収まらない

そうなるとDD-WRTのバイナリを作成してしまうのが最もスマートだが、ここではまず力技でもなんでも動作させることを優先する

まずWebコンソールからAdministration/ManagementのJFFS2 Supportを有効にする
これはDD-WRTのシステムに書き換え可能な領域を確保するために必要で、/dev/mtdblock/3が/jffs以下に割り当てられ、ここへ書き込んだデータは再起動しても失われなくなる
これが無効だと何もできない

次にOpenWRTのリポジトリから必要になるパッケージを持ってきてインストール
# cd /tmp
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libc_0.9.33.2-1_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/zlib_1.2.7-1_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libpthread_0.9.33.2-1_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/librt_0.9.33.2-1_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libreadline_5.2-2_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libncurses_5.7-5_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libiconv-full_1.11.1-1_ar71xx.ipk
# ipkg install *.ipk;rm *.ipk

エラーが出るものの、何の問題もない
これらは/jffs以下に保存され、DD-WRTのシステムとは干渉しない

最後にOpenWRT用にmakeしたバイナリのインストール
# wget http://b.mikomoe.jp/download/1389215611/attach/libopenssl_1.0.1e-1_ar71xx.ipk
# wget http://b.mikomoe.jp/download/1389215570/attach/softethervpnserver_4.03-9408_ar71xx.ipk
# ipkg install *.ipk;rm *.ipk


またこの時点までの違う方法としてopkgを使用する方法もある
# cd /tmp
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/opkg_618-3_ar71xx.ipk
# ipkg install *.ipk

もしかしたらこの時点で後述するlibcが必要になる状況が発生するかもしれない
(参考:http://arouter.blogspot.jp/2011/07/software-installation-on-dd-wrt.html)

opkg.confを環境にあわせて変更し
# sed -i 's/ \(\(\/[[:alnum:]-]*\)\+\)$/ \/jffs\1/' /jffs/etc/opkg.conf
実行に必要になるディレクトリの作成
# mkdir -p /jffs//var/lock/

以降のインストールはlibc依存で引っかかるが、libcはなぜかPackages.gzに含まれていないため、手動でインストールする必要がある
# opkg -f /jffs/etc/opkg.conf install http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libc_0.9.33.2-1_ar71xx.ipk

あとはOpenWRTでシェルから作業する場合と同一
# opkg -f /jffs/etc/opkg.conf update
# opkg -f /jffs/etc/opkg.conf install zlib libpthread librt libreadline libncurses libiconv-full
# rm /jffs/var/opkg-lists/*
# opkg -f /jffs/etc/opkg.conf install http://b.mikomoe.jp/download/1389215570/attach/softethervpnserver_4.03-9408_ar71xx.ipk
# opkg -f /jffs/etc/opkg.conf install http://b.mikomoe.jp/download/1389215611/attach/libopenssl_1.0.1e-1_ar71xx.ipk


そしてLD_LIBRARY_PATHを与えて実行する
LD_LIBRARY_PATHを与えない場合、/usr/lib/libssl.so.1.0.0を読みに行ってしまい、これはOpenWRTと同様にno-sha0でmakeされているため動かない
# env LD_LIBRARY_PATH=/jffs/lib:/jffs/usr/lib vpnserver start
これで正常に動作する(ように見える)

しかし動作はするものの、このままだと起動時毎回シェルからコマンドを発行しなければならないので、自動で実行できるよう設定する必要がある

WebコンソールのAdministration/Commandで
env LD_LIBRARY_PATH=/jffs/lib:/jffs/usr/lib vpnserver start
としてSave Startup
env LD_LIBRARY_PATH=/jffs/lib:/jffs/usr/lib vpnserver stop
としてSave Shutdown

これで起動時に自動的に実行され、煩わしくなくなる

Comments

Sunday, November 29, 2015, 05:39
Thank you for writing this Tutorial .But my jp is not good ,I learned it so hard.It would be great help if you add some pictures in it.

Fill out the form below to add your own comments.









Insert Special: