大破ログ

日々大破、それと側転少々。PC関連その他、気になったことなどをつらつらと。

BHR-4GRV2へのOpenWrt (ath79)インストール

書いた方がいいかなーとは思いつつ、commitへのリンクは貼ってあるし問題無いかな、と思ってそのままになっていたものです。うだうだしていてもしょうがないので書きます。

OpenWrt (ath79) インストール手順

TFTPサーバを用意
PCのNICIPアドレスを "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の制限に縛られることなく拡大できるようになっています。