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はマウント済みファイルシステム上のディレクトリを重ねて1つにするファイルシステムなため、
rootを1つのデバイスしか指定できない通常の起動方法では利用できず、initrdやinitramfsを使用してrootを変更しないと利用できないと思われます。
私は、initrdやinitramfsは使用せずにrootfs全体をSquashfsで作成して、書き換えしたい箇所のみ別のパーティションをマウントする方法にしました。
やり方は init.sh を参照してください。

[編集]   [AD]
rentafree.net