ルータファームウェアOpenWrtを拡張するX-Wrt

 OpenWrtをLinksys製ルータで使い始めて約1年になるが、今はそれが当たり前の状態になっている。何の問題もなく機能しているので、その存在を忘れてしまうくらいだ。ところが、X-Wrt.orgという、OpenWrtの関連プロジェクト(競合関係にあるわけではない)のサイトを見て、このプロジェクトの開発者たちが、OpenWrtを拡張すると同時に使いやすいものにする新しいユーザインタフェースの開発を懸命に進めていることを知った。

 X-Wrtのインストールは決して難しくない。私はすでにOpenWrtのRC9、“White Russian”を利用していたので、やるべきことといえばX-Wrtの最新版と安定版のどちらをインストールするかの判断だけだった。あとは、X-Wrt.orgのインストールページでどちらか適切なボタンをクリックするだけでよい。1分ほど経過してルータがリブートされると、私の環境でX-Wrtが実行されていた。

 先ほどのX-Wrt.orgのページには、White Russianを動作させていない人のために、22種類のルータについてのインストール手順が詳しく記されている。これらの手順は、ルータで手持ちのファームウェアを実行していてスクラッチからインストールを始める場合と、OpenWrtの他のバージョンをインストールしている場合の双方のケースに対応している。

 X-WrtとOpenWrtの大きな違いは、ユーザインタフェースにある。OpenWrt向けのWebベースのインタフェースはwebifだが、X-Wrtではwebif²が使われている。しかし、違いは他にもある。X-Wrtには、MiniUPnP(ユニバーサルプラグアンドプレイ)用のパッケージ群やtarfsというルータ用の疑似ファイルシステムのアルファ版が加えられているほか、OpenWrtのWhite Russianリリースで入手できるものよりバージョンの新しいBusyBox(バージョン1.4.1)、wireless-tools、ipkgが用意されている。

 ブラウザベースのwebif²インタフェースには、トップレベルのページとして「Info」、「Graphs」、「Status」、「Log」、「System」、「Network」、「VPN」、「Hotspot」、「Log Out」の9つがある。下位レベルも合わせるとページ数は40を超え、それぞれのページでは、ルータの状況把握やインストール環境の調整が行える。

トラフィックのデータをグラフで見たければ、「Graphs」ページでCPU利用率またはlo、eth0、eth1、br0、vlan0、vlan1のトラフィックから気になるものを選択すればよい。データだけが欲しければ、「Status」ページをクリックし、実行中のプロセス、インタフェース、UMTS、DHCPクライアント、netstat、IPtables、QoS、USB、PPPoE、PPTP、Asterisk、OpenVPN、サイト調査、診断のうちから好きな項目のステータスを表示すればよい。

コラム:Jeremy Collake氏とOpenWrt/X-Wrt

 X-Wrtプロジェクトの創設者Jeremy Collake氏は、同プロジェクトについて以下のように語ってくれた。X-Wrtの開発を思い立ったのは、OpenWrtプロジェクトがWebベースの管理コンソールに積極的に取り組んでいなかったからだ。OpenWrt White RussianはWebベース管理コンソールの基本的なフレームワークが備えていたが、OpenWrtプロジェクトはこのフレームワークを廃棄してリライトすることを決定した。ところが、リライトがまったく行われなかったばかりか、この決定によって既存のフレームワークに対する新たな貢献も下火になってしまった。私を含む何人かは、完全なリライトなんて待っていられないし、始めたくもないと思っていた。そこで、我々は既存のフレームワークを受け入れて発展させる活動を開始した。そこからプロジェクトは急速に拡大し、低レベルの開発にはOpenWrtの開発者たちも積極的に参加してくれた。

 OpenWrtはモジュール化されていて拡張性があるので、完全にフォークさせる必要はなかった。我々はただOpenWrtを拡張するためのパッケージを作り、ビルド済みのファームウェアを配布しただけだ。また、X-Wrtファームウェアのベースがどんなコードであるかを明確にしておきたかったので、こうした活動はOpenWrtに敬意を払う形で行うことを当初から重視していた。事実、たいてい我々は、OpenWrtをインストールしてその上にX-Wrtパッケージをインストールするように人々に勧めている。

 OpenWrt開発者との協力は不可欠だった。コア部分のコードに機能を追加する必要があるときは、彼らが我々に代わって作業をしてくれた。当時、こうした協力がもしなかったとしたら、おそらく我々はコードの一部をフォークさせなければならなくなっていただろう。それも、好んでやるのではなく、やむを得ずである。絶対に必要なときにしかフォークは行わない、それが私のやり方だからだ。

 今日、X-Wrtはアクティブなプロジェクトとして取り組みを続け、日常的に活動している開発者が数名いる。オープンでコミュニティ指向という性質が、このプロジェクトの存続と繁栄につながっている。現在は、Thepeople氏とlubek氏の2人が最大の貢献者であり、私自身はあまり役に立っていない。

 ちなみに、「Site Survey(サイト調査)」は管理対象LANへのアクセスのポーリング結果を表示するためのものではなく、ルータによって無線ネットワークを検出し、もしあればそれらをすべてを表示するものである。また、実行していない機能(例えば、Asteriskなど)のオプションを選択すると、その機能が実行されていない旨がページに表示されるだけでなく、そのインストールの機会まで提供してくれる。

 では、話を外観の部分から機能へと移すとしよう。「System」→「Packages」と順にページを選択すると、特定のパッケージの追加や削除に加えて、パッケージリポジトリの追加や削除、URL指定によるインターネットからのパッケージのインストール、利用可能なパッケージ一覧のアップデートが簡単に行える。X-Wrtのインストール環境におけるデフォルトのリポジトリ設定には、フリーではないBackports 0.9、White Russian、non-free、X-Wrtの各パッケージが含まれている。

 次に、NVRAMオプションの確認と設定についてはどうだろうか。「System」→「NVRAM」を順に選択すると、すべてのNVRAM変数とその内容の一覧が読みやすい形で表示されるだけでなく、クリック1つで変数の編集や新規追加が行える。ただし、無線のWEP/WPAパスワードも表示されるので、このページを閲覧するときには周囲に誰かいないか注意する必要がある。

 もう1つ便利なのが、設定ファイルやスクリプトの編集機能である。「System」→「File Editor」を選択し、必要であればディレクトリを展開して、編集したいファイルの(ファイル名ではなく)鉛筆アイコンをクリックすると、編集ウィンドウにそのファイルが表示される。このとき、赤い×印をクリックしてしまうとファイルが削除されるので、注意してもらいたい。また、ファイルまたはディレクトリのアイコン上にマウスカーソルを置くと、パーミッション、所有者、所有グループ、作成日時の各情報が表示される。

 X-Wrtでは、「System」→「Backup & Restore」ページによって、設定のバックアップとリストアも簡単に行えるようになっている。ある開発者は、設定の名称に日付を表す文字列を使うように推奨している。ただし、バックアップファイル自体の名前はテキストボックスに入力した名前に関係なくconfig.tgzになり、入力した名前はそのファイル内に保存される。

 X-WrtプロジェクトのWebサイトには、先ほど述べたインストール手順だけでなく、トラブルシューティング、サポート、プロジェクトへの参加に関するセクションも含む立派なマニュアルが用意されている。また、プロジェクトのフォーラムWiki、メーリングリスト、Freenode.netのIRCチャンネル#x-wrtにも、X-Wrtに役立つ追加リソースが存在する。

まとめ

 X-Wrtは、OpenWrtをこれまでより簡単に楽しく使えるようにしてくれる優れた新プロジェクトである。細かい部分への配慮が行き届いており、マニュアルやIRCでのサポートも非常に良好で、OpenWrtと同様にソフトウェアの品質も高い。10点満点で9点、というのが私の評価だ。

 共通のゴールに向かって力を合わせて取り組んでいるOpenWrtとX-Wrtの両プロジェクトには、格別の賛辞を送りたい。確かに協力して然るべき状況なのだが、現実にはなかなかできないことだ。