LoginSignup
30
27

More than 5 years have passed since last update.

SquashFSをマウントするまで

Last updated at Posted at 2014-05-14

簡単な概要からマウントするまでを説明します。

SquashFSとは

SquashFS (.sfs) は Linux 向けの 圧縮された読み込み専用ファイルシステムである。SquashFS はファイル、inode とディレクトリを圧縮し、高圧縮のためブロックサイズを1024KBまでサポートする。SquashFS は SquashFS ファイルシステムにアクセスするための(GPLでライセンスされた)フリーソフトウェアでもある。
SquashFS は一般的な読み込み専用ファイルシステムの使用や低いオーバーヘッドが必要な(組み込みシステムのような)制限されたブロックデバイス/メモリシステム内を対象としている

引用元:SquashFS(http://ja.wikipedia.org/wiki/SquashFS)

要するに、組み込みLinuxやLiveCDにおいて、容量使用量減少や読み込み速度向上を目的として、
読み込み専用のデータやアプリケーションを圧縮したファイルシステムとして利用しよう、というものです。

squashfsの特徴

https://www.kernel.org/doc/Documentation/filesystems/squashfs.txt より抜粋

  • リードオンリー(読み取り専用)のファイルシステム
  • 圧縮方法はzlib(標準)/lzo/xzの3種類が使用できる
  • ブロックサイズは4K~1MB(デフォルトは128K)
  • ファイルシステムの最大サイズは2^64Byte
  • ファイルの最大サイズは2TiB
  • ファイル数、ディレクトリ数は無制限

導入

Linuxカーネルのバージョン2.6.29にマージされたらしいので、だいたいの環境で使えるはず(適当
以下はrasberian(3.10.25+)で確認した環境となる

カーネルサポートがsquashfsをサポートしているかを確認する。

$ cat /proc/filesystems
nodev   sysfs
nodev   rootfs
(省略)
nodev   autofs
    f2fs
nodev   mqueue

無い...

と思ったが、どうやらカーネルコンフィグやらを確認するとカーネルモジュールで提供されているようなので、気にせず進める。

squashfs-tools

squashfsイメージの作成などに必要なsquashfs-toolsをインストールする

# apt-get install squashfs-tools

SquashFSイメージの作成

mksquashfsコマンドを使用してファイルシステムイメージを作成します。
使用方法は以下の通りです(今回オプション等は省略)

mksquashfs [圧縮対象ファイル] ...  [squshfsイメージ名]

今回は/usr/share/docをSquashFSイメージにします(/usr丸ごとは時間がかかったので)

$ mksquashfs /usr/share/doc doc.sfs
Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on doc.sfs, block size 131072.
[=============================================================\] 6534/6534 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 38181.01 Kbytes (37.29 Mbytes)
    63.31% of uncompressed filesystem size (60311.59 Kbytes)
Inode table size 83073 bytes (81.13 Kbytes)
    33.04% of uncompressed inode table size (251454 bytes)
Directory table size 76747 bytes (74.95 Kbytes)
    33.55% of uncompressed directory table size (228740 bytes)
Number of duplicate files found 44
Number of inodes 7366
Number of files 6424
Number of fragments 386
Number of symbolic links  68
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 874
Number of ids (unique uids + gids) 3
Number of uids 3
    root (0)
    unknown (2625)
    pi (1000)
Number of gids 3
    root (0)
    unknown (2625)
    pi (1000)

容量を確認すると78MBから38MBに圧縮されました。

$ du -sh /usr/share/doc doc.sfs
78M /usr/share/doc
38M doc.sfs

作成したイメージファイルの中身を取り出す場合はunsquashfsコマンドを使用する。

$ unsquashfs doc.sfs
Parallel unsquashfs: Using 1 processor
7426 inodes (6602 blocks) to write

[=============================================================-] 6602/6602 100%
created 6424 files
created 874 directories
created 68 symlinks
created 0 devices
created 0 fifos

マウント

先ほど作成したイメージを/mntにマウントする

# mount -t squashfs doc.sfs /mnt
mount: warning: /mnt seems to be mounted read-only.

リードオンリーなファイルシステムがマウントされたことが確認できました。

$ mount
(省略)
/home/pi/doc.sfs on /mnt type squashfs (ro,relatime)
$ df /mnt
Filesystem     1K-blocks  Used Available Use% Mounted on
/dev/loop0         38272 38272         0 100% /mnt

以上


SquashFSの圧縮形式について書きました

30
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
27