SFS ファイル形式とは?
.sfsファイルは、Squashfs読み取り専用圧縮ファイルシステムイメージであり、一般的にLinux Live CDやUSB配布版のライブルートファイルシステムとして使用されます。Linuxカーネルは mount -t squashfs を使用して直接 .sfs イメージをマウントでき、unsquashfs コマンド(squashfs-tools パッケージに含まれる)を使用すると、マウントせずにすべてのファイルを展開できます。
Squashfsは、ディレクトリツリー全体を単一の圧縮バイナリイメージにパックします。開始位置にある96バイトのスーパーブロックがフォーマットを識別し、マジックバイト hsqs(リトルエンディアン)または sqsh(ビッグエンディアン)が含まれ、圧縮アルゴリズム、ブロックサイズ、およびiノード、ディレクトリ、フラグメントデータのテーブルオフセットが記録されます。ファイルは独立して圧縮されたブロックに保存されるため、イメージ全体を解凍せずにランダムアクセスが可能です。
作成時に選択可能な複数の圧縮アルゴリズムをサポートしています:gzip(オリジナル)、lzma、lzo、xz、lz4、zstd。現代の mksquashfs は、最高の圧縮率を得るためにデフォルトでxzを使用します。組み込みファームウェアイメージでは、低電力ハードウェアでの高速な展開のためにlzoがよく使用されます。
Linux Live ISO(Ubuntu、Fedora、Kali Linux)は、ルートファイルシステムを filesystem.squashfs または filesystem.sfs として .iso コンテナ内に埋め込みます。Androidは /system パーティションにSquashfsを使用します。OpenWrtルーターやIPカメラは、ファームウェアをSquashfsに保存します。.squashfs 拡張子も同じフォーマットで広く使用されています。
- Squashfsは2002年にPhillip Lougherによって作成され、2009年3月のバージョン2.6.29でLinuxカーネルに統合されました。
- EROFS(2019年のLinux 5.4で統合)は、Androidや組み込み展開向けの現代的な後継フォーマットです。
mksquashfsはイメージを作成し、unsquashfsはそれらを展開します。どちらもsquashfs-toolsパッケージに含まれています。
セキュリティと安全性
リスク: LOWSquashfsイメージはファイルシステムコンテナです。ディスクイメージのマウントと同様のセキュリティ上の考慮事項が適用されます。展開されたファイルに悪意のある実行ファイルやシンボリックリンク攻撃が含まれている可能性があります。'mount -o loop' でマウントする場合は、読み取り専用マウント(Squashfsではデフォルト)を使用してください。バイナリを実行する前に、unsquashfsで展開して検査してください。非公式なソースからのファームウェアイメージにはバックドアが仕掛けられている可能性があります。
形式の詳細
概要- Puppy Linux SFSモジュール - Puppy Linuxは、ベースシステムの上に重ねられるモジュール式アドオンパッケージに特化して .sfs を使用します。
- StarCraft/Blizzardアーカイブ(非公式) - 一部のBlizzardゲームデータファイルは歴史的に .sfs という名前でしたが、これとは全く異なる独自のフォーマットです。
SFS ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルシグネチャ | オフセット0に 68 73 71 73 ("hsqs", リトルエンディアン); ビッグエンディアン版: 73 71 73 68 ("sqsh") |
| スーパーブロックサイズ | 96バイト - 固定。マジック、バージョン、iノード数、ブロックサイズ、圧縮タイプ、テーブルオフセットを含む |
| ファイルシステムタイプ | 読み取り専用圧縮 - 作成後の書き込みは不可。ライブシステムではオーバーレイとして再マウント |
| 圧縮オプション | gzip, lzma, lzo, xz/lzma2, lz4, zstd - mksquashfs作成時に選択可能 |
| デフォルト圧縮 | 現代のmksquashfsではxz、古いバージョンではgzip、組み込みファームウェアではlzoが一般的 |
| ブロックサイズ | 4 KB - 1 MB(作成時に設定可能、デフォルトは128 KB) |
| ディスク上のバージョン | Squashfs 4.0 (2009); スーパーブロックのバイトオフセット28にバージョンフィールド |
| 整合性 | ファイルごとのチェックサムはなし。v4.0ではiノードとディレクトリメタデータブロックにCRCあり |
| 一般的なイメージサイズ | 4-64 MB(組み込みファームウェア)、400-900 MB(Linux Live ISOルートファイルシステム) |
| 最大ファイル数 | 約40億(32ビットiノード番号制限) |
| バイト順序 | リトルエンディアン(ホストネイティブ)。古い組み込みシステム用にビッグエンディアン版も存在 |
| 作成ツール | mksquashfs (squashfs-toolsパッケージ) |
| 展開ツール | unsquashfs (squashfs-tools)、Windowsでは7-Zip |
| 一般的なユースケース | Linux Live ISOルートファイルシステム、Android /systemパーティション、OpenWrtルーターおよびIPカメラのファームウェア |
| リリース日 | 2002 (Squashfs 1.0 by Phillip Lougher) |
| 最新バージョン | Squashfs 4.0 (2009, merged into Linux kernel 2.6.29) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | docs.kernel.org |
SFS の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。SFS ファイルについて最初の質問をしてみましょう。