また、ハードウェアネタです。

一時期、一世を風靡したLa Foneraですが、先日La Fonera+を手に入れました。
これにOpenWrtをインストールして、自宅のルータにしようと。

一番の問題はこの手のインストールで必須なシリアルコンソールの確保。
しかし、そのためにLa Fonera+の蓋を空けたり(ネジが星型なんで、専用のドライバが必要)、線をつなぐのはかなり面倒。

ということで、今回はシリアルコンソールなしのインストールに挑戦して、何とかインストールが出来ました。
その、悪戦苦闘の記録はこちらから…。

せっかくなんで、最新版である10.03をインストールします。

用意するもの

1. 前準備

  • windowsマシンのIPを192.168.1.254/255.255.255.0に設定。
  • windowsマシンとLa Fonera+をケーブルで直結。
  • windowsマシンで、コマンドプロンプトを開き、"ping -t 192.168.1.1"を実行。
    • 作業が終了するまで、ずーっとそのままにしておくこと!
  • La Fonera+はまだ電源をつながない。

2. RedBootコンソールへの接続

  • windowsマシンでputtyを起動。接続情報に以下を指定して準備。
    • IPアドレス: 192.168.1.1
    • 種別: telnet
    • ポート: 9000
  • La Fonera+に電源を接続。
  • しばらくすると、コマンドプロンプトにpingの応答が表示されるので、すぐにputtyの接続ボタンを押し、すぐにCntl + Cを叩く!
  • RedBootのコンソールが表示されたら、WindowsマシンのIPである192.168.1.254をtftpサーバのアドレスに指定。
  • RedBoot> set serverip 192.168.1.254
    

    3. イメージの流し込み。

    ここまで準備ができたら、いよいよイメージを内蔵メモリに書き込みます。
    まずはメモリの初期化から。

    RedBoot> fis init -f
    About to initialize [format] FLASH image system - continue (y/n)? y
    *** Initialize FLASH Image System
    ... Erase from 0xa8030000-0xa87e0000: ...........................................................................................................................
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    

    初期化ができたら、イメージをダウンロードして書き込みします。
    イメージを書き込む"fis create"コマンドの実行には時間がかかるので(10分 ~ 20分)、その間余計なキーとかは叩かないこと!
    接続が切れてしまいます。(この場合は最初からやりなおし。)
    コマンドプロンプトのpingの応答が戻るようになったら書き込み完了です。

    RedBoot> load -r -b 0x80041000 openwrt-atheros-root.squashfs
    Using default protocol (TFTP)
    Raw file loaded 0x80041000-0x80200fff, assumed entry at 0x80041000
    RedBoot> fis create -l 0x06D0000 rootfs
    ... Erase from 0xa8030000-0xa8700000: .............................................................................................................
    ... Program from 0x80041000-0x80201000 at 0xa8030000: ............................
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    

    また、別のイメージをダウンロード&書き込みます。
    これも時間がかかるので、終了まで気長に待ちましょう。

    RedBoot> load -r -b 0x80041000 openwrt-atheros-vmlinux.lzma
    Using default protocol (TFTP)
    Raw file loaded 0x80041000-0x80120fff, assumed entry at 0x80041000
    RedBoot>  fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
    ... Erase from 0xa8700000-0xa87e0000: ..............
    ... Program from 0x80041000-0x80121000 at 0xa8700000: ..............
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    

    4. 起動設定

    これで、イメージの書き込みは終了。最後に起動設定を行います。
    fconfigのBoot scriptのところでvmlinux.bin.l7の読み込みと、それを実行するためのコマンドを書き換えます。

    RedBoot> fconfig
    Run script at boot: true
    Boot script:
    .. fis load -l vmlinux.bin.l7
    .. exec
    Enter script, terminate with empty line
    >> fis load -l vmlinux.bin.l7
    >> exec
    >>
    Boot script timeout (1000ms resolution): 2
    Use BOOTP for network configuration: false
    Gateway IP address:
    Local IP address: 192.168.1.1
    Local IP address mask: 255.255.255.0
    Default server IP address: 192.168.1.254
    Console baud rate: 9600
    GDB connection port: 9000
    Force console for special debug messages: false
    Network debug at boot time: false
    Update RedBoot non-volatile configuration - continue (y/n)? y
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    

    5. 再起動

    最後に祈るような気持ちで"reset"コマンドを叩いて、再起動を行います。

    RedBoot> reset
    

    うまく起動すれば、コマンドプロンプトのpingが再度戻るようになります。

    ブラウザからhttp://192.168.1.1/にアクセスをすると、管理画面が表示されます。
    IPの変更などはこの管理画面から実行できますので、後はお好きなように…。