Orange Pi R1 のSPIフラッシュにOSを入れてルーターにする

メニュー

JFFS2

MTD用のファイルシステムで、ウェアレベリングしてくれて圧縮にも対応しているようです。
書き換えも可。
なので、rwパーティションに採用しました。

Kernel config
File systems  --->
  [*] Miscellaneous filesystems  --->
    <*>   Journalling Flash File System v2 (JFFS2) support
      [*]     JFFS2 XATTR support
      [*]     Advanced compression options for JFFS2
      [*]       JFFS2 ZLIB compression support (NEW)
先にMTDを有効にしないと項目が出てきません。
JFFS2をOverlayFSで利用する場合はXATTR supportが無いとエラーがでます。(無くてもマウントはできます。)

母艦側(Arch Linux)でイメージを作成するのにmkfsが必要ですが、mtd-utilsパッケージに入っています。
$ sudo mkfs.jffs2 -X zlib -r /mnt -o jffs2.img
-rオプションで指定したディレクトリをルートディレクトリとして、-oオプションの指定ファイルにパーティションイメージが出力されます。
-Xオプションで圧縮
ブロックデバイス用のファイルシステムではないので普通の方法ではイメージファイルはmountできません。

イメージファイルはflashcp等でmtdデバイスに書き込みます。
# flashcp jffs2.img /dev/mtd5

空っぽのパーティションでいい場合はイメージファイルを使わずに、
# flash_erase /dev/mtd5 0 0
の様に全消去するだけで利用できます。

# mount -t jffs2 /dev/mtdblock5 /mnt
-tを指定しないとマウントできません。


JFFS2以外にUBIFSというファイルシステムもMTDデバイス用に使われることが多いようですが、容量の多いNANDフラッシュではなく容量の少ないNORフラッシュにはJFFS2の方が良いような?
[編集]   [AD]
rentafree.net