Armadillo-220 で「グローバル・固定 IPv6 アドレス割当型トンネル接続実験サービス」にチャレンジしてみた
結果
搭載メモリ量,要求ライブラリ等が原因で今のところ無理でした
経緯
IPv4 の接続性しかない一般の家庭に IPv6 を導入するにはどうするのがいいのかと考えると
- 機器を設置すればいい
- 設定をしなくていい
- 場所を取らない
- 電気を食わない
- トラブルシュートを要求しない
- 既存のネットワークの構成を変更しない
という条件がでてくる.
こういった条件のもとで IPv6 を簡単に導入する方法を考えた結果,Armadillo で筑波大学の「グローバル・固定 IPv6 アドレス割当型トンネル接続実験サービス」の「Bridge接続」を使うのが良い(おもしろい)と思いチャレンジしてみた.
Armadillo(アルマジロ) | ARM+Linuxの組み込みプラットフォーム
グローバル・固定 IPv6 アドレス割当型トンネル接続実験サービス トップページ
「グローバル・固定 IPv6 アドレス割当型トンネル接続実験サービス」で使用する VPN アプリケーションは,かの有名な PacketiX VPN である.見たところ PacketiX 3.0 では ARM をサポートしているし,省メモリで組み込み機器向けにも使えますとか見た記憶があるので Armadillo でも使えそうである.
今回は Armadillo-220 を使った.
ダウンロード
開発環境の準備
ARM 用のバイナリをコンパイルする必要がある.Armadilloのクロスコンパイル用のダウンロードサイトから .deb をダウンロードして dpkg -i でインストール.arm-linux-gnu-gcc(g++-4.1-arm-linux-gnu_4.1.1-21_i386.deb) が動くようにインストールしていく.
OS には Ubuntu 10.04 を利用した.
libssp0-arm-cross をインストールしようとしたところ gcc-4.1-base のバージョンが合わずに依存関係が壊れているというエラーが出るが特に問題ない.dpkg -i --force-depends でインストール.
libssp0-arm-cross: 依存: gcc-4.1-base (= 4.1.1-21) [4.1.2-27ubuntu1 が既にインストール済みです]
aptitude だとこのエラーで他のパッケージ管理もできなくなってしまったので,/var/lib/dpkg/statu の libssp0-arm-cross の Depends: を gcc-4.1-base (>= 4.1.1-21) に修正した.
コンパイル
vpnbridge を展開する.Makefile の CC を gcc から arm-linux-gnu-gcc に書き換える.
make でコンパイルする.
vpncmd のチェックで失敗するが,当然なので無視する.
インストール
Armadillo-220 に scp や USB メモリを介してバイナリを転送する.バイナリは各 2.6MB 程度であるが Armadillo-220 は 32MB SDRAM 8MB Flash なので,そのままだと入らない(USBメモリ上ではバイナリを実行できない).
仕方無しに /var や /bin,挙句の果てに /lib の中身を消して,必要ないプロセスを殺しまくる.
- ログを吐かないようにする
- いらないデーモンやプロセスを全て殺す
- /var/run 以外を消す
- /bin は busybox と scp 以外を消す
- /lib は必要無さそうなものを消す
これでなんとか入った.
librt が必要なので開発環境から持ってくる必要がある.
実行してみる
[root@WSNode (ttyp0)]# ./vpncmd /tool /cmd:Check -- Alert: PacketiX VPN Kernel -- String Library Init Failed. Please check your locale settings and iconv() libraries.
ダメでした.
locale とか iconv とか要求されます.キツいっす...
あとがき
PacketiX VPN Server 2.0 には Embedded Edition があるみたいなので,こういうのを使わないとできなさそうです.
VPN Bridge にも Embedded Edition 出ないかなー