最近マージされた、WRC-1166DSのfactoryイメージに絡む修正についてです。書くかどうするか少し迷いましたが備忘録も兼ねて書いておくことにしました。
きっかけ
周囲でWCR-1166DSにOpenWrtを導入しようとした人から、factoryイメージを使用した結果文鎮化したということを聞いたのがきっかけです。
調べてみると既にいくつか同様の事例があるようで、サポートがマージされているということは当時問題無かったはずなのに何故だろうと気になって修正作業をすることにしました。
ただし、当初はやるかどうするかそれなりに迷いました。サポート済みの機種ではあることからわざわざ購入するのが若干心理的障壁に。結局は確保したけれども。
原因
過去に既に雑記で書いた通り、WCR-1166DSにおいてファームウェアに使用されているTRX形式のマジックナンバーが特殊なものであることが原因です。標準の 0x48445230
("HDR0
") であれば何も問題無いものの、WCR-1166DSにおいては 0x5C436F74
("\Cot
") が使用されている為に、OpenWrtでブートする際TRX形式であることを認識できず、rootfs領域の検出に失敗してKernelがマウントできずにpanicします。
サポート追加当時
あまりその辺は自分では調べていなかったので、修正を投げ込んだ時に対応して頂いたOpenWrtチームメンバーの人から聞いて知りました。
サポート追加時は、OpenWrtが抱えているTRX用のrootfs検出用ドライバにおいて、WCR-1166DS用に上記のマジックナンバーを検出できるようpatchが追加されており、それにより問題無く機能していました。(ここ)
しかし、その後WCR-1166DSが属するramips targetにおいてLinux Kernelのメジャーバージョンが引き上げられた際、そのpatchが見落としか何かで新しいバージョンに引き継がれずに削除され、その結果WCR-1166DS特有のマジックナンバーを検出できなくなり、factoryイメージが正常に機能しなくなる状態に陥りました。(ここ)
修正内容
ついでにSPI-NOR Flashのクロックを引き上げてアクセスを高速化したり(sysupgradeが速くなるなどする)、MACアドレスの構成周りをOpenWrt標準の関数を使用するようにしたりする変更も行っています
コミット
ramips: increase spi frequency for Buffalo WCR-1166DS · openwrt/openwrt@621d88d
SPI-NOR Flashの動作周波数引き上げ(10MHz → 40MHz)
ramips: update MAC address configuration for Buffalo WCR-1166DS · openwrt/openwrt@770cfe9
MACアドレス構成周りをOpenWrt標準の関数へ置き換え
kernel: move parser_trx patches of custom magic to generic · openwrt/openwrt@cc49abc
Linux KernelにおけるTRX用パーサーの特定マジックナンバーサポート追加patchを、mediatek targetからgeneric targetへ移動
kernel: backport patch to allow using parser_trx from ramips · openwrt/openwrt@d339de2
最近投げて mtd/next にマージされた、MediaTekのMIPS SoCにおいてLinux KernelのTRX用パーサーを使用可能にするpatchをbackport
ramips: switch parser of trx for mt76x8 subtarget · openwrt/openwrt@5403def
ramips/mt76x8 subtargetにおいて、TRX用パーサーをOpenWrtのモノからLinux Kernelのモノへ切り替え
ramips: use parser_trx for Buffalo WCR-1166DS · openwrt/openwrt@f7f9e6b
WCR-1166DSにおいてLinux KernelのTRX用パーサーを使用するように変更(機種特有のマジックナンバーも指定)
上記の変更により、現在はfactoryイメージをメーカーファームウェアのWebUIから投入した場合も、問題無くOpenWrtが起動する状態になっています。21.02リリースについては恐らく今後この修正がbackportされることは無く、次期メジャーリリースから直るものと思われます。
その他
今回の変更に絡んでWSR-2533DHPL (WSR-2533DHP)等でfactoryイメージを追加することができるようになりましたが、今現在作業中の機種が多すぎて時間が取れないため、作業予定は未定です。