本記事はルーターハックAdvent Calendar 6日目の記事です。
1日遅れてしまった!なんとかして取り戻さないと…
昨日(というよりおととい)は番外編として PlayStation Classic の eMMC を吸い出したレポートに変更したが、PlayStation Classic の粗熱が取れてきたところで OpenWrt に戻ることにする。
おことわり
技適 に関する筆者の配慮や考えについてはカレンダー1日目「技適とルーターハック」をご覧ください。本記事で紹介する内容は、法を遵守するための慎重な注意をもって書かれています。
ビルド完了
前回は make
を実行したところで一旦切った。ビルドはうまく行っただろうか?
リポジトリのrootで ./bin/targets/ar71xx/tiny/
を ls
してみよう。
このうち、 openwrt-ar71xx-tiny-whr-g301n-squashfs-factory.bin
をインストールに使用する。
ブラウザで流し込む
OpenWrt のインストール方法は、電源通電直後のブートローダーの間にTFTPクライアントでファームを送りつけるのが典型だ。だがこの機種 Buffalo WHR-G301N はことさら簡単で、上記の openwrt-ar71xx-tiny-whr-g301n-squashfs-factory.bin
をルーターの設定画面から流し込むだけでインストールができる。
PC とルーターを Ethernet で接続し、PC 側 IP アドレスを 192.168.11.0/24
の適当なアドレスに設定する(DHCPでもいい)。次に 192.168.11.1
に接続して
- ユーザー名: root
- パスワード: (空白)
で設定画面のBASIC認証を通過。
あとはファーム更新画面でさっきのバイナリ openwrt-ar71xx-tiny-whr-g301n-squashfs-factory.bin
を指定し雑にアップデートするだけだ。
アップロードが終わると本体は再起動する。完全に起動し切るまで本体のLEDが消えたりついたりするので、この隙に PC 側 IP アドレスを 192.168.1.0/24
なアドレス、例えば 192.168.1.2
にでも変えておこう。
ssh!!
あとは ssh で root@192.168.1.1
に接続すればパスワード無しでログインできるはずだ。ルーターに ssh!!ドキドキの瞬間である。
WARNING とあるように root のパスワードは初期設定で空白になっている。このままでは言わずもがな危険なので passwd
でパスワードを設定しておこう。
設定を変えてみる
いわゆる民生品のルーターは、利用者の障壁を下げるためすべてブラウザを通してグラフィカルに設定できる(OpenWrt でもグラフィカルな設定はできるのだが、後述)。一方でこちらは shell 越しが基本となる。
ちなみに、Wi-Fi は初期設定で disable
が 1
になっているため安心だ。
例: IP アドレス
Interface ごとの IP アドレス、スイッチ、VLAN等の設定は /etc/config/network
を編集する。初期設定はシンプルであり見た目にわかりやすい。
root@OpenWrt:~# cat /etc/config/network config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fdaf:7e24:c331::/48' config interface 'lan' option type 'bridge' option ifname 'eth0.1' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60' config interface 'wan' option ifname 'eth1' option proto 'dhcp' config interface 'wan6' option ifname 'eth1' option proto 'dhcpv6' config switch option name 'switch0' option reset '1' option enable_vlan '1' config switch_vlan option device 'switch0' option vlan '1' option ports '1 2 3 4 0t'
設定を変えたら、 reload_config
で設定を反映できる。
パッケージを増やしてみる
以前紹介したように、パッケージはかなりいろいろ追加できる。この追加は非常に簡単で、OpenWrt の Git リポジトリの root で make menuconfig
を再び起動し、 Base system
より下のジャンル別項目から欲しいソフトにチェックを入れることでいい感じにファームに追加される。
枚挙に暇がないので説明は LuCI だけに留めるが、Samba といった鉄板daemonに始まり、 mjpeg-streamer のようなおもしろパッケージまである。眺めてみると面白いだろう。
例: LuCI
初手としてよくインストールされるのは、ブラウザで各種設定ができる LuCI だ。容量も案外食わないため WHR-G301N でも追加することが可能。日本語の翻訳もあるので設定の障壁としては大きく下がるだろう。
LuCI はネットワークにまつわる設定だけでなく、Module を追加することで他の daemon も設定できるようになるため便利である。
追加してビルドし、後述の sysupgrade でインストールすれば、再起動後に 192.168.1.1 に接続するだけでログイン画面を拝むことができる。ワクワク!
ファームをふたたび書き込むには
最初に OpenWrt をインストールする時は factory
イメージを使用したが、以降は sysupgrade
イメージを sysupgrade
コマンドに渡すことでファームウェアのインストールができる。
$ scp ./bin/targets/ar71xx/tiny/openwrt-ar71xx-tiny-whr-g301n-squashfs-sysupgrade.bin root@192.168.1.1:/tmp $ ssh root@192.168.1.1 sysupgrade /tmp/openwrt-ar71xx-tiny-whr-g301n-squashfs-sysupgrade.bin
通常であれば、 openwrt-ar71xx-tiny-whr-g301n-squashfs-factory.bin
の横に openwrt-ar71xx-tiny-whr-g301n-squashfs-sysupgrade.bin
も生成されるのだが、「ビルド完了」の節のスクショを見ると存在しないことがわかる。実は、 WHR-G301N は内蔵フラッシュがとりわけ小さいことが原因で初期 config では sysupgrade
イメージが生成できない。 make
に V=s
という変数を設定して実行すると、データ量が大きすぎてイメージが生成できていない旨が表示される。
$ make V=s ...(中略)... Warning: /home/takumi/dev/router/openwrt_stable/bin/targets/ar71xx/tiny/openwrt-ar71xx-tiny-whr-g301n-squashfs-sysupgrade.bin is too big (> 3538944 bytes)
生成されたrootfsの中身を見ると、pppd
が比較的容量を食っていた。筆者の場合 pppd
は必要ではないので、make menuconfig
以下より pppd
を選択解除すると sysupgrade
イメージが生成されるようになった。ここで LuCI を追加しても生成されたことから、pppd
は結構容量を食っていたことがわかる。
無線ももちろん使えないので、wpa-supplicant のような無線関係のソフトウェアやドライバを選択解除するのもアリだろう。
次回
今回は OpenWrt をビルドして実機に流し込むところまで解説した。次回は過去作供養シリーズ第1弾として、以前イベント等では発表したものの記事にしていなかったものを文章にしたためようと思う。