ユーザ用ツール

サイト用ツール


mae3xx_ope:firmware_structure:start

ファームウェアの構造

ストレージ(Flash Memory)の構成

Nand Flashメモリの構成

MA-E3xxシリーズには、256MiBのNAND Flashが搭載されています。
構成は、下表のようになっています。

デバイス サイズ 名前 備考
mtd0 255MiBUBI UBI1)
mtd1 1MiBOOPS OOPSメッセージ保存用
以下、UBI領域内のボリューム
mtd2 4158KiBkernel.0カーネル [0]
mtd3 4158KiBkernel.1カーネル [1]
mtd4 2142KiBinitramfs.0initramfs [0]
mtd5 2142KiBinitramfs.1initramfs [1]
mtd6 2142KiBkmod.0カーネルモジュール [0]
mtd7 2142KiBkmod.1カーネルモジュール [1]
mtd8 82026KiBrootfs.0root filesystem [0]
mtd9 82026KiBrootfs.1root filesystem [1]
mtd10 25704KiBoptJava SE Embedded 8
mtd11 44856KiBoverlay変更分保存用領域(オーバーレイ領域)


SPI Flashメモリの構成

ブートデバイス用として、2MiBのSPI Flashメモリが搭載されています。
構成は、下表のようになっています。

デバイス サイズ 名前 備考
mtd12 128KiBMLObootloader 1段目
mtd13 512KiBbarebox.binbootloader 本体
mtd14 128KiBbarebox.envbootloader 保存領域
mtd15 128KiBdtb.0DeviceTree blob [0]
mtd16 128KiBdtb.1DeviceTree blob [1]
mtd17 128KiBhist_firmupファームウェア更新履歴
mtd18 896KiBhist_boot起動履歴

カーネル、initramfs、カーネルモジュール、root filesystem、DeviceTree blob に “[0]”/“[1]” をつけているとおり、それぞれを2セット保持し、
ファームウェア更新などで万が一起動しなくなった場合にもう片方のセットで起動することができるようになっています。


ファイルシステムへのマウント

ディレクトリ構造は下記のようになっています。

  / (aufs) --+
             |
             +- ro/ (squashfs) -+- lib/modules (squashfs)
             |                  |
             |                  +- usr/lib/jvm (squashfs)
             |
             +- rw/ (tmpfs/ext4)
             |
             +- rw.tmpfs/ (tmpfs)

initramfs の scripts/init-bottom/__rootoverlay スクリプトにより、下記シーケンスでmount処理が行われます。

  1. (initramfs initスクリプトにより、UBIの “rootfs.x” 領域が ${rootmnt} へ mount される。)
  2. /overlay, /ro, /rw, /rw.tmpfs のディレクトリを作成 (mkdir)
  3. tmpfs を /rw.tmpfs へ mount
  4. tmpfs を /rw へ mount
  5. UBI の “kmod.x” 領域を /rw.tmpfs へコピーし、${rootmnt}/lib/modules へ mount
  6. UBI の “opt” 領域を /rw.tmpfs へコピーし、${rootmnt}/usr/lib/jvm へ mount
  7. ${rootmnt} を /ro へ 移動 (mount –move オプションにより)
  8. /ro と /rw を aufs2)3) でまとめて /overlay へ mount
  9. /rw.tmpfs に、var/log ディレクトリを作成 (syslog領域用)
  10. /rw.tmpfs/var/log と/ro/var/log を aufs でまとめて /overlay/var/log へ mount
  11. /rw/lib/modules と /ro/lib/modules を aufs でまとめて /overlay/lib/modules へ mount
  12. /rw/usr/lib/jvm と /ro/usr/lib/jvm を aufs でまとめて /overlay/usr/lib/jvm へ mount
  13. /ro を /overlay/ro へ 移動 (mount –move オプションにより)
  14. /rw を /overlay/rw へ 移動 (mount –move オプションにより)
  15. /rw.tmpfs を /overlay/rw.tmfs へ 移動 (mount –move オプションにより)
  16. /overlay を ${rootmnt} へ 移動 (mount –move オプションにより)

その後、init スクリプトにより ${rootmnt} ⇒ / へと rootfs の switch が行われ、/sbin/init が起動されます。

mae3xx_ope/firmware_structure/start.txt · 最終更新: 2018/12/28 08:43 by admin