Squashfs

(圧縮・ファイルシステムの作成)
mksquashfs [含めたいファイルやディレクトリ...] [出力ファイル] ([オプション...])

(内容の展開)
unsquashfs ([オプション...]) [ファイルシステムファイルの場所] ([取り出したいファイルやディレクトリ...])

(ファイルシステムのマウント)
sudo mount -t squashfs -o loop [ファイルシステムファイルの場所] [マウントポイント]
  • mksquashfsunsquashfsは読み込み専用圧縮ファイルシステムSquashfsのファイルを操作するためのツールで、ともに複数のCPU(マルチコア含む)がある環境ではその数に応じた並列処理を行い、高速に動作する

  • mksquashfsは最後から2番目までの引数のファイルやディレクトリの内容を圧縮し、最後の引数の場所のSquashfsファイルシステムファイルとして書き出す

  • mksquashfsで作成したファイルシステムの中ではアクセス権が保持されるが、所有者については-all-rootオプションを付けることでrootを所有者とすることができる

  • unsquashfsは作業ディレクトリ以下にsquashfs-rootというディレクトリ(-dest [ディレクトリ]もしくは-d [ディレクトリ]オプションで変更可)を作ってその中に1番目の引数に指定したSquashfsファイルシステムファイルから取り出したファイルやディレクトリを書き出し、2番目の引数があればその項目だけを取り出す

  • Squashfsファイルシステムファイルは読み込み専用ファイルシステムとしてマウントすることができ、圧縮されたファイルはマウントポイント以下において通常のファイルのように(透過的に)扱える

  • ファイルシステムにはバージョンがあり、Linux 2.6.29以上がマウントできるファイルシステムバージョンは4.0で、このバージョンのファイルシステムを作成できるツールのバージョンは4.x系

  • バージョン4.2以上のツールではmksquashfs-comp xzオプションを付けると通常のgzip方式の代わりにXZ方式の高圧縮率な圧縮を用いることができ、SquashfsのXZサポートが有効なLinux 2.6.38以上でマウントできる

  • LZMA圧縮のサポートも存在したが、XZ圧縮で置き換えられており、互換性もないため、LZMAを用いて圧縮したファイルシステムがあればXZ圧縮で作り直す必要がある

[ヒント]ヒント

XZ圧縮されたSquashfsファイルシステムは、CPUコアが多数ある環境では、圧縮率と速度の両面で優れた圧縮方法となる(圧縮アルゴリズム的には不利だが、マルチコアの恩恵が受けられるため)。