What is the SFS file format?
An .sfs file is a Squashfs read-only compressed filesystem image, most commonly found as the live root filesystem inside Linux Live CD and USB distributions. The Linux kernel can mount .sfs images directly with mount -t squashfs, and the unsquashfs command (from the squashfs-tools package) extracts all files without mounting.
Squashfs packs an entire directory tree into a single compressed binary image. A 96-byte superblock at the start identifies the format - magic bytes hsqs (little-endian) or sqsh (big-endian) - and records the compression algorithm, block size, and table offsets for inodes, directories, and fragment data. Files are stored in independently compressed blocks, enabling random access without decompressing the entire image.
Multiple compression algorithms are supported and selected at creation time: gzip (original), lzma, lzo, xz, lz4, and zstd. Modern mksquashfs defaults to xz for best ratio; embedded firmware images often use lzo for faster decompression on low-power hardware.
Linux Live ISOs (Ubuntu, Fedora, Kali Linux) embed the root filesystem as filesystem.squashfs or filesystem.sfs inside an .iso container. Android uses Squashfs for /system partitions. OpenWrt routers and IP cameras store firmware in Squashfs. The .squashfs extension is also widely used for the same format.
- Squashfs was created by Phillip Lougher in 2002 and merged into the Linux kernel in version 2.6.29 (March 2009).
- EROFS (merged in Linux 5.4, 2019) is the modern successor for Android and embedded deployments.
mksquashfscreates images;unsquashfsextracts them; both are in thesquashfs-toolspackage.
Security & safety
RISK: LOWSquashfs images are filesystem containers - the same security considerations apply as mounting any disk image: the extracted files could contain malicious executables or symlink attacks. When mounting with 'mount -o loop', use a read-only mount (already default for Squashfs). Extract with unsquashfs and inspect before running any binaries. Firmware images from unofficial sources could be backdoored.
Format details
in a nutshell- Puppy Linux SFS module - Puppy Linux uses .sfs specifically for modular add-on packages layered on top of the base system.
- StarCraft/Blizzard archive (unofficial) - Some Blizzard game data files were historically named with .sfs but are a completely different proprietary format.
Programs that open SFS files
Technical details
deep spec| File signature | 68 73 71 73 ("hsqs", little-endian) at offset 0; big-endian variant: 73 71 73 68 ("sqsh") |
| Superblock size | 96 bytes - fixed; contains magic, version, inode count, block size, compression type, and table offsets |
| Filesystem type | Read-only compressed - no write support once created; remount as overlay for live systems |
| Compression options | gzip, lzma, lzo, xz/lzma2, lz4, zstd - selectable at mksquashfs creation time |
| Default compression | xz in modern mksquashfs; gzip in older versions; lzo common in embedded firmware |
| Block size | 4 KB - 1 MB (configurable at creation; default 128 KB) |
| On-disk version | Squashfs 4.0 (2009); version field at superblock byte offset 28 |
| Integrity | No per-file checksum; CRC on inode and directory metadata blocks in v4.0 |
| Typical image size | 4-64 MB (embedded firmware); 400-900 MB (Linux Live ISO root filesystem) |
| Maximum files | ~4 billion (32-bit inode number limit) |
| Byte order | Little-endian (host-native); big-endian variant exists for older embedded systems |
| Creation tool | mksquashfs (squashfs-tools package) |
| Extraction tool | unsquashfs (squashfs-tools); 7-Zip on Windows |
| Common use cases | Linux Live ISO root filesystem, Android /system partitions, OpenWrt router and IP camera firmware |
| Released | 2002 (Squashfs 1.0 by Phillip Lougher) |
| Latest version | Squashfs 4.0 (2009, merged into Linux kernel 2.6.29) |
| Open standard | Yes · royalty-free |
| Specification | docs.kernel.org |
SFS conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about SFS files.