BHR-4GRV2とKernel 4.14

最近BHR-4GRV2が公式のbuildbotにおいてar71xx/tinyをfailさせる一因になっていたので、それに関連するメモ。

どうする

ar71xx/tinyのほうは今から変更するのは厳しいため、諦める。
一方ath79/tinyのほうは、ath79がまだ公式ではビルドされていないこともあって変更の余地はあるため、以下のように変更しようかと思案中。→ 既存のサポートに対する修正としてPRを投げた。
この変更を行うと、ar71xxからのsysupgradeができない*、factoryファームを作れないなどの弊害は出る。
(*: 正確にはar71xxからsysupgradeで書き込むことはできるけど、U-Bootの環境変数を変更してから実行しないと再起動後にath79のKernelを起動できず止まる。危険なのでar71xx -> ath79は不可にしてしまうほうが良さそう。)

rootfs,kernelをfirmwareとして結合
Kernelがサイズ制限を受ける原因となっているmtdパーティションの構成を変更し、生成されたKernelのサイズに従って柔軟にRootfsの位置が変化できる “firmware” パーティションを使用する。
U-BootのKernelオフセットを変更
前項でmtdパーティションの構成を変更しただけではU-Bootが起動時にKernelを見つけられなくなるため、U-Bootの環境変数内に格納されているオフセットを変更する。
メーカーファーム -> OpenWrtインストール方法の変更
mtdパーティションを変更した場合、本来のKernelサイズ制限を超過するKernelが許容されるようになるため、factoryは作成できなくなる。
これに伴い、メーカーファームからOpenWrtへ入れ替える方法を以下の通りに変更する。

  • ECOボタンを押しながらinitramfsファームでブート
  • initramfsファーム上でU-Bootの環境変数を変更
  • squashfs-sysupgradeファームでsysupgrade
  • 完了

ざっくりと日本語で書く分には楽だけれども、英文で詳細に記述するのはしんどい。