書いた方がいいかなーとは思いつつ、commitへのリンクは貼ってあるし問題無いかな、と思ってそのままになっていたものです。うだうだしていてもしょうがないので書きます。
OpenWrt (ath79) インストール手順
- TFTPサーバを用意
- PCのNICのIPアドレスを "
192.168.12.10
" に設定したうえでBHR-4GRV2のinitramfsファームを "bhr4grv2-uImage-initramfs-gzip.bin
" にリネームしTFTPディレクトリに配置、BHR-4GRV2とPCをLANケーブルで接続 - BHR-4GRV2を起動
- BHR-4GRV2の "ECO" ボタンを押しながら電源ケーブルを接続してBHR-4GRV2を起動
- BHR-4GRV2がinitramfsファームをダウンロード
- 橙色の "DIAG" LEDが点滅したら "ECO" ボタンから指を離すと、BHR-4GRV2がTFTPサーバからinitramfsファームをダウンロードし、自動的にそれを使用してブートを行う。
- U-Bootの環境変数を書き換え
- initramfsファームでブートしたOpenWrt上で以下を全て実行し、Flash内からath79のOpenWrtファームをブートできるように変更する
[sourcecode]
fw_setenv ipaddr 192.168.12.1
fw_setenv serverip 192.168.12.10
fw_setenv ethaddr 00:aa:bb:cc:dd:ee
fw_setenv bootcmd "bootm 0x9f050000 || bootm 0x9fe80000"
[/sourcecode]
上記を実行後、
fw_printenv
で全て正しく登録されているか確認する。誤った値が設定されている、または設定が漏れている場合、メーカーファームまたはOpenWrtをブートできず停止してしまい、その場合復旧するにはシリアルコンソールへの接続が必要となってしまうので注意。 - sysupgradeを実行
- wgetやscpなど何らかの方法でBHR-4GRV2用のsysupgradeファームをBHR-4GRV2上にダウンロードし、それを用いてsysupgradeを実行
- 完了
- sysupgrade完了後再起動され、OpenWrtで起動してくれば完了。
ath79でBHR-4GRV2にfactoryが使えないのは何故か
この機種特有の問題によるものです。
BHR-4GRV2ではメーカーファームにおいて、以下の通りKernelがRootfsの後ろに存在します。
(Firmware) 16,000KiB | |
---|---|
rootfs | kernel |
14,528KiB | 1,472KiB |
ar71xxでもこの構成を維持することでメーカーファームとの互換性を持たせ、factoryファームを用意できていました。が、上記の構造上Kernelサイズが1,472KiBに制限されてしまい、ar71xxがKernel 4.14へ引き上げられた際にこの制限を超過するようになってしまいました。この結果、ar71xxではKernel 4.14以降でBHR-4GRV2ファームウェアが生成されず、それ以降のファームウェアへ更新することができなくなってしまっています。
ath79でも当初同じ構成にし、factoryファームを用意していましたが、こちらでもこの問題が発生することを確認したため、パーティション構成を以下の通りに変更しました。
(Firmware) 16,000KiB | |
---|---|
firmware | |
16,000KiB |
KernelをRootfsの前に移動したうえで、2つを "firmware" として単一のパーティションに結合しています。その結果メーカーファームとの互換性が無くなり、factoryファームの生成コードはath79から削除しました。その代わり、Kernelが1,472KiBの制限に縛られることなく拡大できるようになっています。