DD-WRT編 > optwareによるパッケージ追加

「DD-WRT編/optwareによるパッケージ追加」の編集履歴(バックアップ)一覧に戻る
DD-WRT編/optwareによるパッケージ追加」を以下のとおり復元します。
*DD-WRT編/optwareによるパッケージ追加

**WHR-G54S で稼働する dd-wrt に、追加パッケージをインストールする

こんな古い機種でも、スペックに見合った用途を見極めれば、わりと普通に動くという一例を、紹介します。
ルータとしての機能以外に、簡単なウェブサーバを作ったり、ファイルサーバにしたりと、可能性が広がります。


**リポジトリを使うには、ソフトウェアを保存する領域が必要

まず、optwareとして公開されているリポジトリを有効にするには、パッケージ管理に必要となる基本的なツールや、ツールを動かすために必要となるライブラリ、インストールしたバイナリファイルを保存する領域が必要になる。

実機のフラッシュメモリでは、ぜんぜん足りない。ほとんどの旧機種は4MBや8MBで、空き領域は1MB~数MBしか得られない。
もともと付いてるフラッシュメモリを張り替えて、容量を増やせたら解決だが、不可能ではないが厳しい。上位容量のフラッシュメモリの部品調達が困難な上、単純に張り替えただけではダメで、ブートローダの移植が必要など、多くの課題を解決しなければならないからである。

簡単に増やすために、SDcardを取り付ける改造がおすすめである。
どこの家にも、低容量のSDcardの1枚や2枚、余ってるはず。これを生かす。


**SDカードを取り付ける

半田付け必須ですが、なんとかググって、改造してください。

ICや電子部品を空中配線したり基板を作成する必要はなく、SDカードと本体基板とをケーブルでつないで、引き回すだけ。

電子工作のレベルとしては、かなり初級な領域なので、さほど難しくもないはず。

***SDカードのソケット調達

100均ショップのカードリーダを購入して解体するとか、これまた家に数枚余ってるであろう「microSDcard←→標準SDcard 変換アダプタ」を流用するなど、正規のソケットを購入する以外に、いろいろな方法がある。


**SDカードの取り付けが成功していることを確認

dd-wrtの標準的なバージョンでは、SDcardを読み書きするコードが同梱されている。
取り付けが成功すれば、/mmcというディレクトリを自由に使えるようになる。

こんな感じで、管理画面にSDカードの容量が出たら成功している

Total / Free Size
387.33 MB / 387.31 MB 
Card Info 
 Card Type : SD 
 Spec Version : 1.00 - 1.01 
 Card Size : 491 MB 

(上記は512MBのSDカードを、400MBのデータ領域と、100MBのswapに区切ってあり、
 400MBのほうが容量として出ている)

なお、SDcardを経由した読み書きは、およそ2.5MB/secほどの速度が出る。

ルータのログを詳細に長期間保存したり、LAN内の端末に、ファイルを配布したり、
FTPサーバやウェブサーバを立ち上げて、自分用のアップローダや倉庫を設置する程度の使い方なら、
問題なく使える。


**ipkgコマンドは標準で入っているが、そのままでは使えない

標準状態だと、jffsがない(or 少ない)ので、ipkgは使えない。

ipkg update
↓
please enable jffs first, you can't use IPKG without jffs support

これは、jffsディレクトリがないよ、というエラーメッセージだが、
たとえjffs領域が少しあっても、おそらくほとんどの機種で、jffsの余剰領域だけでは
容量不足に陥る。なので標準搭載のipkg updateは、使わない(と自分は理解した)

**広大な/jffs領域を作る

多くの先駆者様たちの情報を見た結果、/mmc配下を土台にし、jffsを作ればよいと判明

mount -o bind /mmc /jffs

さらに/optを作る。ここに実行ファイル等がインストールされる。
mkdir /jffs/opt
mount -o bind /jffs/opt /opt

**リポジトリを有効にするインストーラをダウンロード

今回の対象となるリポジトリはこれ
http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/

2chのかたのご指摘により、このページに示す方法は、配布されたスクリプトの仕様により、
mips機のみで使える方法とのこと。古めの白い筐体、銀の筐体の機種は、mips機であることが多い。

USBのついたWZR-HP-G300NHなど黒いツヤツヤした筐体の多くは、SoCのアーキテクチャが異なる可能性が高いので、要確認。


リポジトリを有効化するための、dd-wrt用シェルスクリプトが公開されてるので、wgetする

wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d '\r' > /tmp/optware-install.sh
↑長いけど、ここは1行なので注意。1行にまとめて実行する。
 Connecting to www.3iii.dk (46.30.212.129:80)

**ダウンロードしたスクリプトを実行
sh /tmp/optware-install.sh
↓
Installing package uclibc-opt_0.9.28-13_mipsel.ipk ...

待ってるだけで、さまざまな環境設定を自動でやってくれる、大変ありがたいスクリプトである。

**パッケージの一覧を表示

インストールが終わったら

ipkg-opt list

でパッケージ一覧が出る。

**パッケージのインストール

使いたいパッケージを見つけたら、

ipkg-opt install php

などと実行すれば、インストールが実行される。

これ以降はOpenWrtのパッケージ導入と全く変わらなくなるので、OpenWrtについて言及されたページなどを参考に、パッケージの使い方等を学べばよい。

OpenWrtと1つ違うところは、設定ファイルのインストール先の/etcが/opt/etcになったりと、必ず先頭に/optが付く。けど問題なく動くので、慣れるだけ。


**おまけ lighttpd + php を動かしてみた

ルータの能力というか限界点を探るため、画像のギャラリーページ的な物を試しに動かしてみた。

phpでGDライブラリを呼び出し、文字入れをした画像ファイルを、動的に生成することができた。
ただしTrueTypeFontをつかって埋め込むことはできなかった(メモリ不足)。

画像を小さくリサイズ処理して、サムネ一覧を作りたかったのだが、これは厳しい結果となった。
100KB以下のjpgファイルなら可能だった。しかし、結果が出るまで、かなり待たされる。
100KBを超えると、さすがにメモリ不足で、読み込む時点でhttpdがタイムアウトでエラーになった。

タイムアウトと無縁なコンソール上でphpを実行してみたが、盛大にswap領域を使う形で処理が遅くなり、実用的な使い方はできそうになかった。(一応それでもルータがリブートするなどの挙動不審な動作はなかったので、単純にメモリ不足が原因と思われる)

以上の実験から、ルータの状況表示のような使い方で、グラフを動的に描画する用途なら、問題なく使えそう。

復元してよろしいですか?