SquashFS

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page SquashFS and the translation is 100% complete.
Other languages:

SquashFS は、オープンソースの、読み込み専用の圧縮されたファイルシステムです。他のファイルシステムのように、SquashFS は渡されたデータの重複排除を行うことができ、データをさらに圧縮するのを助けます。正しく動作するためには必須ではありませんが、Live メディア (LiveUSB や LiveCD) で使用される場合、SquashFS は典型的にはなんらかのユニオンファイルシステムと組み合わせて使用されます。

インストール

カーネル

SquashFS サポートのためには、以下のカーネルオプションの有効化が必須です:

カーネル SquashFS 4.0 サポートを有効化する
File systems  --->
   [*] Miscellaneous filesystems  --->
      [*]   SquashFS 4.0 - Squashed file system support

オプションの SquashFS サポート

カーネル SquashFS のオプション機能を有効化する
File systems  --->
   [*] Miscellaneous filesystems  --->
         File decompression options (Decompress file data into an intermediate buffer)  --->
         Decompressor parallelisation options (Single threaded compression)  --->
      [*]     Squashfs XATTR support
      [*]     Include support for ZLIB compressed file systems
      [*]     Include support for LZ4 compressed file systems
      [*]     Include support for LZO compressed file systems
      [*]     Include support for XZ compressed file systems
      [*]     Use 4K device block size?
      [*]     Additional option for memory-constrained systems
      (3)       Number of fragments cached

USE フラグ

Linux の多くのファイルシステムと同様に、SquashFS ファイルシステムツールは個別のパッケージとして提供されます。このパッケージは sys-fs/squashfs-tools と呼ばれています。USE フラグを調節して、パッケージに求めるサポートを設定してください。

USE flags for sys-fs/squashfs-tools Tools to create and extract Squashfs filesystems

debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
lz4 Enable support for lz4 compression (as implemented in app-arch/lz4)
lzma Support for LZMA compression algorithm
lzo Enable support for lzo compression
xattr Add support for extended attributes (filesystem-stored metadata)
zstd Enable support for ZSTD compression

emerge

フラグを希望通り設定したら、変更を反映するためにシステムを更新してください:

root #emerge --ask --changed-use --deep sys-fs/squashfs-tools

使い方

ファイルシステムの作成

SquashFS ファイルシステムの作成は mksquashfs コマンドを使用して行われます。larry という名前のユーザのホームディレクトリのSquashFS ファイルシステムを作成するには、次のコマンドを使用できます:

larry@example $mksquashfs /home/larry /home/larry/home.squashfs

カーネルの SquashFS サポートで選択されている機能に応じて、mksquashfs コマンドの出力は次のようになるでしょう:

Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on /home/larry/home.squashfs, block size 131072.
[=========================================================================|] 4/4 100%

Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
        compressed data, compressed metadata, compressed fragments, compressed xattrs
        duplicates are removed
Filesystem size 0.82 Kbytes (0.00 Mbytes)
        58.79% of uncompressed filesystem size (1.39 Kbytes)
Inode table size 104 bytes (0.10 Kbytes)
        46.02% of uncompressed inode table size (226 bytes)
Directory table size 96 bytes (0.09 Kbytes)
        77.42% of uncompressed directory table size (124 bytes)
Number of duplicate files found 1
Number of inodes 7
Number of files 5
Number of fragments 1
Number of symbolic links  0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 2
Number of ids (unique uids + gids) 1
Number of uids 1
        larry (1001)
Number of gids 1
        larry (1001)

コマンドは、新しく作成された home.squashfs ファイルに何が入れられたかについて、すばらしいサマリを提供しています。ファイルシステム、inode テーブル、ディレクトリテーブルのサイズや、重複ファイル、UID、GID の数といった情報がすぐに分かりります。この情報はファイルシステムの特定の情報を収集しようとするときにとても便利です。

マウント

SquashFS をマウントするには、昇格された特権を使用して mount コマンドの -o loop オプションを使用してください:

larry@example $mkdir ~/tmp
larry@example $mount -o loop ~/home.squashfs ~/tmp
メモ
mount コマンドが失敗した場合、下のトラブルシューティング節の関連する項目を確認してください。

これで home.squashfs に含まれるすべてのファイルが ~/tmp マウントポイントの下で利用可能になりました。すべてのファイルを確認するために -la オプションを使用して、ディレクトリ内のファイルを一覧表示してください:

larry@example $ls -la ~/tmp
total 3
drwxr-xr-x 3 larry larry 125 Mar 31 13:51 .
drwxr-xr-x 1 larry larry 130 Mar 31 13:52 ..
-rw------- 1 larry larry  10 Mar 31 13:49 .bash_history
-rw-r--r-- 1 larry larry 127 Mar 24 13:19 .bash_logout
-rw-r--r-- 1 larry larry 193 Mar 24 13:19 .bash_profile
-rw-r--r-- 1 larry larry 551 Mar 24 13:19 .bashrc
-rw-r--r-- 1 larry larry   0 Mar 31 13:51 home.squashfs
drwx------ 2 larry larry   3 Oct 23 06:52 .ssh

アンマウント

ファイルシステムをアンマウントするには、昇格された特権を使用して umount を使用してください:

larry@example $sudo umount ~/tmp

展開

SquashFS ファイルは unsquashfs を使用して展開することができます。上の手順で、~/tmp ディレクトリと ~/home.squashfs ファイルがすでに作成されていると仮定すると:

larry@example $unsquashfs -d tmp/ -f home.squashfs
重要
* ファイルシステムターゲットが指定されていない場合 (上の例では ~/tmp がターゲットです)、unsquashfssquashfs-root という名前のフォルダをカレントディレクトリ内に作成し、そこにファイルを展開します。[1]
  • unsquashfs コマンドが実行される前からディレクトリが存在している場合、既存のディレクトリへの SquashFS の展開を強制するには、-d <ディレクトリ>-f オプションを使用する必要があります。[1]
  • 新しいディレクトリへ展開する場合は、-f オプションは不要です。

unsquashfs は SquashFS 内の特定のファイルを展開するためにも使用できます。再び、上の手順で ~/home.squashfs ファイルが作成されていると仮定して、.bashrc ファイルを ~/tmp ディレクトリに展開するには:

larry@example $unsquashfs -d ~/tmp -f ~/home.squashfs -e .bashrc
Parallel unsquashfs: Using 4 processors
1 inodes (1 blocks) to write

[===========================|] 1/1 100%

created 1 files
created 1 directories
created 0 symlinks
created 0 devices
created 0 fifos

ls コマンドを使用して展開されたファイルを確認してください:

larry@example $ls -la ~/tmp
total 4
drwxr-xr-x 1 larry larry  14 Mar 31 13:51 .
drwxr-xr-x 1 larry larry 156 Mar 31 14:32 ..
-rw-r--r-- 1 larry larry 551 Mar 24 13:19 .bashrc

トラブルシューティング

mount: "--options" オプションを使用できるのは root だけです (mount: only root can use "--options" option)

エラーメッセージの言う通りです。root としてログインするか、sudo を使用して、昇格された特権を使ってファイルシステムをマウントしてください。

関連項目

  • Aufs — an advanced multi-layered unification filesystem.
  • OverlayFS — Linux 上でユニオンファイルシステムの機能を提供する、カーネル内の試みです。
  • Wikipedia:ja:UnionFS - オリジナルのユニオンファイルシステム。

外部資料

参照

  1. 1.0 1.1 Artemiy I. Pavlov、Marco Cecchetti。The SquashFS tools exposedThe Linux Documentation Project、2008 年 7 月 24 日。2015 年 4 月 8 日取得