大破雑記帳

個人用メモな雑記ブログ いろんなことをざっくりと。

FortiGate 50Eメモ

ファームウェアヘッダ

gzip圧縮前のデータに付するヘッダ

  0x0 - 0xf  : ?
 0x10 - 0x2f : Image Name
 0x30 - 0x17f: ?
0x180 - 0x183: Kernel Offset*
0x184 - 0x187: Kernel Length*
0x188 - 0x18b: RootFS Offset (ext2)*
0x18c - 0x18f: RootFS Length (ext2)*
0x190 - 0x193: DTB Offset
0x194 - 0x197: DTB Length
0x198 - 0x19b: Data Offset (jffs2)
0x19c - 0x19f: Data Length (jffs2)
0x1a0 - 0x1ff: ?

*: required for bootloader tftp
  • initramfsイメージとして投入する場合、Kernel Offset/Length, RootFS Offset/Lengthのみでチェックを通せた。RootFSの値2つについては、initramfsイメージにおいてはデータが存在しない為、0xFFFF0000(LE値の為、実際の値は 0x0000FFFF (65535 bytes))を置くことで通せた。マイナスにすると恐らくデータが存在しない扱いになってエラーとなる。
  • DTBのOffset/Lengthが存在しない場合、ブートローダはTFTPで渡したイメージを直接ブートする際bootargsを渡さなくなる模様。

その他

  • ブートローダにTFTPで渡すデータはgzipで圧縮されている必要がある。gzip圧縮する際のファイル名もチェックされているようで、 "FGT50E-0.00-FW-build0000-000000-patch00" の名前で通ることを確認済み。恐らくいくらか短縮可能で、最初の "FGT50E-" くらいしか見ていないような気もする(未検証)。→ "FGT50E" だけでチェックを通せた。
  • フロントのLAN1-5のSPEED LED 2色(緑/橙)とWAN1, WAN2のSPEED LED 2色のうち緑の計12個のLEDは、PHYやSwitchの直接管理ではなくI2CのGPIOエキスパンダにより提供されている。OpenWrtにおいてはPHYやSwitchがリンクスピードによるLEDトリガを提供しない為、メーカーファームのような挙動は恐らく不可。
    尚、WAN1, WAN2のSPEED LEDのうち橙 (100Mbps)についてはPHYの直接管理となっている為、100Mbpsでリンクした際問題無く点灯する。
    また、LINK/ACT LEDは全てPHY/Switchによる管理である為、これも問題無く機能する。
  • フロントに存在するLEDのうち、1か所に2色を持つものは両方を同時に点灯させることはできない配線になっている模様。
    片方を点けた状態でもう片方を点けようとすると、先に点いていた方が消灯し、後に点けようとした方も点灯しない。