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

メニュー

Squashfs

読み込み専用ですが、高い圧縮率で利用できるファイルシステムです。

kernelビルド

File systems  --->
  [*] Miscellaneous filesystems  --->
    <*>   SquashFS 4.0 - Squashed file system support
      [*]     Include support for XZ compressed file systems
SquashFSを有効にしてkernelをビルドすると利用できます。
標準ではXZではなくZLIBが有効になっていますが、ZLIBだとgzip圧縮が利用できますがXZだと高圧縮率の
LZMAが利用できます。

イメージの作成

$ sudo mount rootfs.ext2 /mnt
$ sudo mksquashfs /mnt rootfs.squashfs -comp xz -b 128k
mksquashfsコマンドでファイルシステムのイメージが作成できます。
出力先ファイルが存在する場合はクリーンなイメージが作成できないようなので、存在する場合は削除してから作成する必要があります。
無圧縮のファイルシステムと比較して1/3程度はいけます。
bオプションは最大の1mでいいと思いますが、その場合無圧縮の1/4くらいのサイズが期待できます。


読み込み専用なので、Overlayfsなどを利用して書き換え可能にする事例が多いようですが、書き換えしたい箇所は別のパーティションを普通にマウントする方法にしたのでOverlayfsは使用しませんでした。
やり方は init.sh を参照してください。

initramfsを使用することも考えたのですが、initramfsをxz圧縮で作成した場合とrootfsをxz圧縮のSquashfsで作成した場合でさほどストレージ消費量は変わらないと思われ、initramfsの場合はRAMを消費することになるので使わないことにしました。
[編集]   [AD]
rentafree.net