FONルータ「La Fonera 2.0」を小型Linux機に改造してみる

 

La Fonera 2.0とは

La Fonera 2.0

世界最大のwifiコミュニティを持つFONと言えば、超低価格ルータ「La Fonera(ラ・フォネラ)」が有名ですが。新しくUSBポートを備えた 新バージョン「La Fonera 2.0」が登場したようです。 USBポートにハードディスクやプリンタ、Webカメラを使用できるように なり、それらを使用するためのプラグインを開発することも可能になったようです。またハードウェアの面でもメインメモリの増加など 性能が向上しています。ただし、値段は5000円程度と以前より 高くなってしまいました。

これだけ性能が向上したFONルータを改造しないわけには行きません。以前購入したFONルータはそのままFONとして 活動してもらって、新しく購入したLa Fonera 2.0を改造してみましょう。

 

必要なもの

la Fonera 2.0改造に必要なもの
  1. La Fonera 2.0
    FON LA FONERA 2.0 (ラ・フォネラ2.0) FON機能搭載 無線LANルータ FON2202E
  2. 9-KE (UP-12Cでも可)
  3. Linuxが入っているパソコン
  4. ファームウェアイメージ
  5. 日経Linux 2009年9月号
 

La Fonera 2.0スペック

  • モデル名: FON2202
  • 寸法:93.5 mm x 25.5 mm x 110 mm (アンテナは除く)(LaFonera+と同じ大きさ)
  • アンテナコネクタ:RP-SMAコネクタ(リバースSMA)
  • USBポート: USB Aタイププラグ(USB 2.0)
  • アンテナ: 外部取り外し可能アンテナ(1.5dBi)
  • 認証: WEP 64ビット/128ビット, WPA, WPA2, WPA混合
  • 暗号化: TKIP, AES, 混合
  • 無線LAN規格:IEEE 802.11b / 802.11g
  • 周波数範囲: 2412 MHz~2462MHz (802.11b/g, チャンネル1~チャンネル11)
  • 最大出力電力: 112.460mW
  • ポート:WANポート×1、LANポート×1 (10/100Mbps)
  • プラットフォーム/周波数: Atheros AR2315 @ 180MHz
  • フラッシュ: 8MB / Ram: 32MB
  • ワイヤレスNIC: Atheros SoC, LANスイッチ: Marvell 88E6060
 

OpenWrtとは

La Fonera 2.0は組み込み機器向けのLinuxディストリビューションである「OpenWrt」が組み込まれているようですが、 それをオリジナルのOpenWrtへと書き換えることで自由に使える小型Linux機へと変更させるのが今回の目的です。

OpenWrtをインストールするにはOpenWrtのファームウェアを公開するLinux PC、La Fonera 2.0とLinux PCを接続するRS-232Cケーブル の作成が必要です。

USBとシリアルを変換するには回路が必要で、市販のPCと携帯電話を接続している製品(UP-12Cや9-KE)を加工して使用します。

UP-12C

私はUP-12Cを購入し、そこらへんに落ちていたマイコンのソケットを利用して無理やり作りました。

 

minicomの設定

シリアルケーブルで接続したLa Fonera 2.0とPCを通信するするにはminicomというソフトウェアを使用します。

$ sudo aptitude install minicom

インストールが終わったらminicomの設定を行います。

$ minicom -s

-sをつけることで設定モードで起動できるようです。私の場合はシリアルケーブルが「/dev/ttyUSB0」として認識していたのでそれに変更。 接続ポートが「/dev/tty8」とかになってると思われるので「/dev/ttyUSB0」に変更しないといけないのですが、どうにもこうにも 私の環境では元に戻ってしまいます。元に戻るとは「/dev/ttyUSB0」と変更しても開きなおすと「/dev/tty8」になっているという ことです。

似たような症状が無いかと検索してみるも、みなさん難なくこなしている様で、この部分は何か基礎的な知識がないとできないのかなぁと 悩んでいたらUbuntu Forums(英語)を見つけました。

症状が同じなのでとりあえずそちらの回答を頼りにやってみることに。

$ sudo chmad -R 777 /etc/minicom
$ cd /etc/minicom
$ touch minirc.mdmcfg
$ gedit minirc.mdmcfg (またはその他のテキストエディターで編集する)

minirc.mdmcfgは「minicom -s」をした時に生成されるファイルです。それを下記のように書き換えます。(UP-12Cの例)

#UP-12Cでの設定例 pu port /dev/ttyUSB0
pu baudrate 9600
pu minit
pu rtscts No

これで設定は完了です。日経Linuxとは起動方法が違い

$ minicom mdmcfg

と、mdmcfgを読み込んで起動する形になるようです。

 

TFTPのインストールと設定

La Fonera 2.0がOpenWrtのファームウェアをダウンロードするにはTFTPサーバが必要になります。下記の方法でインストールします。

$ sudo aptitude update
$ sudo aptitude install atftpd
$ sudo /etc/init.d/openbsd-inetd start

TFTPサーバが使えるかの確認。

$ sudo netstat -an | grep ':69'

「udp 0 0 0.0.0.0:69 0.0.0.0:*」とレスポンスが来れば問題ないようです。

次にLa Fonera 2.0がダウンロードするファームウェアイメージをダウンロードします。 ファームウェアイメージはここからダウンロードできます。 必要なのは

openwrt-atheros-root.squashfs
openwrt-atheros-vmlinux.lzma

の2つです。Firefox等を使ってダウンロードした後、「/var/lib/tftpboot」ディレクトリにコピーしたあと下記のようにパーミッションを 設定します。

$ sudo chmod o+r /var/lib/tftpboot/openwrt-*

TFTPの設定は以上で完了です。

 

ネットワークの設定

TFTPの通信はシリアルケーブルではなくLANケーブルですのでネットワーク設定が必要です。Linux PC側のLANポートとLa Fonera 2.0の COMPUTERと書かれた黒色のLANポートをLANケーブルで接続します。

次にLinux PCの「システム→設定→ネットワーク接続」から「Auto eth0」(eth1,eth2など複数ある場合はLa Fonera 2.0と接続したものを 選択して下さい。)を選択して編集ボタンをクリック。「IPv4設定タブ」からアドレス「192.168.1.10」ネットマスク「255.255.255.0」を 設定して「適用」を押します。

これで設定はネットワークの設定は完了です。

 

OpenWrtのインストール

インストール環境が整ったので実際にインストールを始めます。

$ minicom mdmcfg

「-s」をつけてminicomが指定したとおり通りになっているか確認してみるのも良いかもしれません。設定モードを抜けるには「minicomを終了」 ではなく「終了」を選択することで、minicomを起動した状態のまま設定モードから抜けれます。 minicom自体の終了は「Ctrl+A」を押した後、「q」です。

次にLa Fonera 2.0の電源を入れます。

minicom上にLa Fonera 2.0の起動メッセージが表示され

Executing boot script in 1.000 seconds -enter ^C to abort

と表示されるので言われた通り、「Ctrl+C」を上の文字が表示されてから1秒以内に押してください。 失敗したらおもむろにLa Fonera 2.0の電源を切ってやりなおしましょう。

成功すればRedBoodコンソールが表示されます

RedBoot>

まずはTFTPサーバと接続できるようにするため、La Fonera2.0のIPアドレスを設定、フラッシュメモリーを初期化 するコマンドを入力し、本当に初期化するか聞かれるので「y」を入力しエンターを押します。

RedBoot> ip_address -l 192.168.0.1/24 -h 192.168.1.10 RedBoot> fis init About to initialize [format] FLASH image system - continue (y/n)? y

TFTPサーバからLinuxカーネルイメージをダウンロード、フラッシュメモリーに書き込みします。

RedBoot> Load -r -b %{FREEMEMLO} openwrt-atheroe-vmlinux.lzma RedBoot> fis create -e 0x8004100 -r 0x8001000 vmlinux.bin.l7

フラッシュメモリーの空き領域を調べ、ルートファイルシステムイメージをダウンロードします。

RedBoot> fis free 0xA80F0000.. 0xA87E0000 RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-root.squashfs

次にフラッシュメモリーの空き容量を調べた16進数の2つの値の差分を指定し、ルートファイルシステムイメージ を書き込みます。

16進数の差分の計算はWindowsの電卓でもできます。電卓のメニューから「表示→関数電卓」、「表示→16進数」にします。 あとは「A87E0000(後に表示された数値)-A80F0000(先に表示された数値)」と入力します。今回の値だと「6F0000」になりますので「0x006F0000」と入力します。

RedBoot> fis create -l 0x006F0000 rootfs

起動スクリプトを書き換えます。

RedBoot> fconfig boot_script_data
boot_script_data:
.. fis load -b 0x80100000 loader
.. go 0x80100000
Enter script, terminate with empty line
>> fis load -l vmlinux.bin.l7
>> exec
>> Update RedBoot non-volatile configuration - continue (y/n) y

最後にリセットします。

RedBoot> reset

以上でインストールは完了です。

 

Telnetでの初期設定

OpenWrtの初期IPアドレスは「192.168.1.1」です。OpenwWrtが起動したらTelnetが開始しているのでTelnet経由でアクセスできます。

$ telnet 192.168.1.1

接続できたらパスワードを設定しておきましょう。「passwd」コマンドを入力後、パスワードを2回入力します。

# passwd

パスワードが設定できたのでTelnet接続を終了し、SSHで接続しなおしましょう。パスワード設定以降のTelnet接続の使用は不可能になります。

# exit
# ssh -l root 192.168.1.1

SSHで接続するホスト認証鍵を確認、管理者のパスワードを入力することでログインできます。

 

初期設定

ホスト名やタイムゾーン等を設定します。OpenWrtはuciコマンドが利用できるので手軽に設定できます。

# uci set system.@system[0].hostname=xxx(お好きな名前で)
# uci set system.@system[0].timezone=JST-9
# uci commit system

これらの設定はLa Fonera 2.0を再起動することによって反映されます。

 

有線LANの設定

COMPUTERポートのネットワーク設定を変更します。日経Linuxでは
# uci set network.lan.proto=static
# uci set network.lan.ipaddr=192.168.1.100
# uci set network.lan.netmask=255.255.255.0
# uci set network.lan.gateway=192.168.1.1
# uci set network.lan.dns.192.168.1.2
# uci commit network
# reboot

となっていましたが、私の場合はルータがMACアドレスを判別してIPアドレスを割り当てるので静的である必要は無いので下記のようにしました。

# uci set network.lan.proto=dhcp

また、wan側は「network.wan.***」で設定できます。

 

無線LANの設定

無線LANの設定はデフォルトで無効になっているので有効にします。このとき注意すべきは無線電波の出力値を日本の電波法に沿った 10mデシベル以下にしないといけません。

無線通信のセキュリティ方式に「WPA2-PSK」を暗号化アルゴリズムに「AES」を指定します。

# uci set wireless.wifi0.disabled=0
# uci set wireless.wifi0.txpower=10(10より上にはしないこと)
# uci set wireless.@wifi-iface[0].ssid=TMP_AP
# uci set wireless.@wifi-iface[0].key=(パスワード)
# uci commit
# wifi

これでwifiの設定が完了しました。

Windowsのネットワーク接続で確認してみる。きちんとありました。

 

使い方は自由

日経Linuxの方には画面やキーボードを繋げて完全にPC化、サウンドデバイスを繋げてネットワーク音楽プレイヤーなど 様々な応用例が書かれています。USBポートがひとつついただけで可能性はここまで広がるんですね。

私はネットワークストレージを作ろうかと考えています。お手軽な小型Linux機、みなさんもいかがですか?

 

このカテゴリのその他の記事