Squashfs project is a compressed read-only filesystem for Linux. Squashfs is intended for general read-only filesystem use, for archival use (i.e. in cases where a .tar.gz file may be used), and in constrained block device/memory systems (e.g. embedded systems) where low overhead is needed.
The filesystem is currently stable, and has been tested on PowerPC, i586, Sparc and ARM architectures.
Here are some key features of "Squashfs":
· Data, inodes and directories are compressed.
· Squashfs stores full uid/gids (32 bits), and file creation time.
· Files up to 2^32 bytes are supported. Filesystems can be up to 2^32 bytes.
· Inode and directory data are highly compacted, and packed on byte boundaries. Each compressed inode is on average 8 bytes in length (the exact length varies on file type, i.e. regular file, directory, symbolic link, and block/char device inodes have different sizes).
· Squashfs can use block sizes up to 64K (the default size is 64K). Using 64K blocks achieves greater compression ratios than the normal 4K block size.
· File duplicates are detected and removed.
· Both big and little endian architectures are supported. The mksquashfs program can generate filesystems for different endian architectures for cases where the host byte ordering is different to the target. This is useful for embedded systems.
What's New in This Release:
· This release has a lot of improvements, both to the filesystem itself (bigger blocks and sparse files) and to the tools Mksquashfs and Unsquashfs, which now support wildcard pattern matching in exclude/extract files.
· There are other improvements and bugfixes.
What's New in This Release: [ read full changelog ]
1. Kernel code improvements:
· 1.1 Internal Squashfs kernel metadata and fragment cache implementations have been merged and optimised. Spinlocks are now used, locks are held for smaller periods and wakeups have been minimised. Small race condition fixed where if two or more processes tried to read the same cache block simultaneously they would both read and decompress it. 10-20% speed improvement has been seen on tests.
· 1.2 NFS export code rewritten following VFS changes in linux-2.6.24
· 1.3 New patches for linux-2.6.25, linux-2.6.26, and linux-2.6.27. Fixed patch for linux-2.6.24.
· 1.4 Fixed small buffer_head leak in squashfs_read_data when handling badly corrupted filesystems.
· 1.5 Fixed bug in get_dir_index_using_offset.
2. Unsquashfs improvements:
· 2.1 Unsquashfs has been parallelised. Filesystem reading, writing and decompression is now multi-threaded. Up to 40% speed improvement seen on tests.
· 2.2 Unsquashfs now has a progress bar. Use -no-progress to disable it.
· 2.3 Fixed small bug where unistd.h wasn't being included on some distributions, leading to lseek being used rather than lseek64 - which meant on these distributions Unsquashfs couldn't unsquash filesystems larger than 4GB.
3. Mksquashfs improvements:
· 3.1 Removed some small remaining parallelisation bottlenecks. Depending on source filesystem, up to 10% speed improvement. 3.2 Progress bar improved, and moved to separate thread.
· 3.3 Sparse file handling bug in Mksquashfs 3.3 fixed.
· 3.4 Two rare appending restore bugs fixed (when ^C hit twice).