Skip to content

Releases: plougher/squashfs-tools

Squashfs tools 4.7.2

18 Aug 20:35
Compare
Choose a tag to compare
4.7.2   18 AUG 2025     Fix build with non-static inline

        1. print_pager: make inline quoted_bs_char() static.

Squashfs tools 4.7.1

18 Aug 18:04
Compare
Choose a tag to compare
4.7.1   18 AUG 2025     Minor improvements and bug fix release

        1. Fix regression in -offset (-o) where it stopped working in Mksquashfs
           and Sqfstar.
        2. Allow arguments (spaces) in the PAGER environment variable, rather
           than just a command name.  Also support quoted strings, string
           concatenation and backslashes.
        3. Don't use a pager to display the help text if the PAGER environment
           variable is empty.
        4. Add -no-pager option which if specified means a pager won't be used
           to display the help text.
        5. Add -cols option which specifies the number of columns used to
           display the help text.  This is useful if output is not to a
           terminal.
        6. Fix regression in tar file reading, where file exclusion would leak
           cache (memory) leading in some cases to Sqfstar hanging.
        7. Handle negative dates in tar files (before the start of the epoch of
           1970-01-01), and round them up to the start of the epoch.
        8. Add --version spelling in addition to -version, as this appears to be
           a common mistake.
        9. Add missing include files in print_pager.c (Ros Burton).
        10. Add missing include file in thread.c (Shiji Yang).
        11. Fix BLOCK_READER_THREADS typo in Makefile (Alexandru Ardelean).

Squashfs tools 4.7

03 Jun 19:58
Compare
Choose a tag to compare
4.7	03 JUNE 2025	Parallel file reading, new help system, new
			reproducible filesystem image options, removal
			of "fragment block stall"

	1. Mksquashfs now reads files in parallel from the input directories

		1.1 This can significantly increase I/O when reading lots of
		    small files, and/or the input media benefits from parallel
		    reading e.g. modern SSD drives, or network filesystems etc.
		1.2 In cases where speed of I/O is the bottleneck in Mksquashfs,
		    this can make Mksquashfs run significantly faster, in some
		    cases Mksquashfs can be more than ten times faster.
		1.3 New -small-readers option to specify number of parallel
		    small file reader threads (files less than a block size).
		    Default 4 threads.
		1.4 New -block-readers option to specify number of parallel
		    block reader threads (files one block or larger).  Default
		    4 threads.
		1.5 New -single-reader option to specify a single reader thread,
		    similar to previous Mksquashfs versions.

	2. Rewritten and improved help system (Mksquashfs/Unsquashfs)

		2.1 Help text now uses the full width of the terminal (rather
		    than being pre-formatted to 80 columns).
		2.2 The help text is now automatically paged (using pager, less
		    or more).
		2.3 The tools now print a summary on failure to parse the
		    command line (or encountering other errors that prevent the
		    tool from running), rather than displaying the help text.
		2.4 The help text can be displayed in full, by section, or by
		    option using regex matching.
		2.5 New -help-all option to display all help text
		2.6 New -help-section option to display help for a particular
		     section
		2.7 New -help-option to display all options matching regex.
		2.8 New -help-comp option to display compressor options for
		    given compressor.

	3. New options for building reproducible filesystems (Mksquash/Sqfstar)

		3.1 Low level timestamp setting options extended:
			-mkfs-time inode sets filesystem creation time to the
			 latest inode timestamp
			-inode-time inode sets all inode timestamps to the
			 latest inode timestamp
			-root-time inode sets the root directory timestamp to
			 the latest inode timestamp

		3.2 New easier to remember shorthand options
			-repro builds a reproducible filesystem image, it is
			 shorthand for -mkfs-time inode.
			-repro-time <time> builds a reproducible image, it is
			 shorthand for specifying -mkfs-time <time>
			 and -inode-time <time>.

	4. Elimination of "fragment block stall" and -(not-)reproducible options

		A technical issue called "the fragment block stall" has been
		eliminated in this release in a way that generates a
		reproducible ordering of files in the filesystem image.  This
		can increase performance by 20% or more, in addition to the
		parallel reader performance improvements.

		This "fragment block stall" was introduced in release 4.4 (2019)
		to produce a reproducible ordering of files in the filesystem,
		but which led to a reduction in parallelisation and performance.
		Due to this reduction, the previous behaviour was retained and
		enabled using the -not-reproducible option.  As the "fragment
		block stall" has now been removed, the options -not-reproducible
		and -reproducible now do nothing, but are still recognised for
		backwards compatibility.

	5. Other improvements for Mksquashfs/Sqfstar

		3.1 New -force-file-mode option, which sets all file
		    (non-directory) permissions to the given mode.
		3.2 New -force-dir-mode option, which sets all directory
		    permissions to the given mode.
		3.3 -root-mode and above new -force-file-mode/-force-dir-mode
		    options now take a symbolic mode in addition to an octal
		    mode.
		3.4 New -info-file option, which prints files written to the
		    filesystem to a file rather than stdout.  Allows -info-file
		    to be used in conjunction with the progress bar.
		3.5 New -pseudo-dir (or -pd) option which supplies a default
		    directory if any directories in a pseudo file definition
		    pathname doesn't exist.
		3.6 New pseudo file 'h' definition which creates a hard link to
		    a file, and follows symbolic links.
		3.7 Previously if a directory was missing (or not a directory)
		    in a Pseudo file definition pathname, the pseudo file
		    definition would be ignored.  This has been hardened to a
		    fatal error.

	6. Other improvements for Unsquashfs/Sqfscat

		4.1 New -mem option, which sets the amount of memory to be used,
		    K, M and G can be used to specify Kbytes, Mbytes and Gbytes.
		4.2 New -mem-percent option, which sets the anount of memory to
		    be used as percentage of available physical memory.
		4.3 Memory specified is limited to 75% of physical memory or
		    less.

	7. New environment variable SQFS_CMDLINE (Mksquashfs/Unsquashfs)

		If set, this is used as the directory to write the file
		sqfs_cmdline which contains the command line arguments given to
		Mksquashfs etc.  Intended to be used to debug scripts/discover
		what is being passed to Mksquashfs.

Squashfs tools 4.6.1

25 Mar 21:04
Compare
Choose a tag to compare
4.6.1	25 MAR 2023	Bug fix release to fix race condition and XATTRs
			code

	1. Race condition which can cause corruption of the "fragment table"
	   fixed.  This is a regression introduced in August 2022, and it has
	   been seen when tailend packing is used (-tailends option).
	2. Fix build failure when the tools are being built without extended
	   attribute (XATTRs) support.
	3. Fix XATTR error message when an unrecognised prefix is found
	   (Christian Hesse).
	4. Fix incorrect free of pointer when an unrecognised XATTR prefix is
	   found.

Squashfs tools 4.6

18 Mar 01:17
Compare
Choose a tag to compare
4.6	17 MAR 2023	Major improvements in extended attribute handling,
			pseudo file handling, and miscellaneous new options and
			improvements

	1. Extended attribute handling improved in Mksquashfs and Sqfstar

		1.1.New -xattrs-exclude option to exclude extended attributes
		    from files using a regular expression.
		1.2 New -xattrs-include option to include extended attributes
		    from files using a regular expression.
		1.3 New -xattrs-add option to add extended attributes to files.
		1.4 New Pseudo file xattr definition to add extended attributes
		    to files.
		1.5 New xattrs-add Action to add extended attributes to files
		    (Mksquashfs only).

	2. Extended attribute handling improved in Unsquashfs

		2.1 New -xattrs-exclude option to exclude extended attributes
		    from files using a regular expression.
		2.2 New -xattrs-include option to include extended attributes
		    from files using a regular expression.
		2.3 Extended attributes are now supported in Pseudo file output.

	3. Other major improvements

		3.1 Unsquashfs can now output Pseudo files to standard out.
		3.2 Mksquashfs can now input Pseudo files from standard in.
		3.3 Squashfs filesystems can now be converted (different block
		    size compression etc) without unpacking to an intermediate
		    filesystem or mounting, by piping the output of Unsquashfs
		    to Mksquashfs.
		3.4 Pseudo files are now supported by Sqfstar.
		3.5 "Non-anchored" excludes are now supported by Unsquashfs.

	4. Mksquashfs minor improvements

		4.1 A new -max-depth option has been added, which limits
		    the depth Mksquashfs descends when creating the filesystem.
		4.2 A new -mem-percent option which allows memory for caches to
		    be specified as a percentage of physical RAM, rather than	
		    requiring an absolute value.
		4.3 A new -percentage option added which rather than generating
		    the full progress-bar instead outputs a percentage.  This
		    can be used with dialog --gauge etc.
		4.4 -mkfs-time, -all-time and -root-time options now take
		    a human date string, in addition to the seconds since
		    the epoch of 1970 00:00 UTC.  For example "now",
		    "last week", "Wed Mar 8 05:55:01 GMT 2023" are supported.
		4.5 -root-uid, -root-gid, -force-uid and -force-gid options now
		     take a user/group name in addition to the integer uid/gid.
		4.6 A new -mem-default option which displays default memory
		    usage for caches in Mbytes.
		4.7 A new -no-compression option which produces no compression,
		    and it is a short-cut for -noI, -noD, -noF and -noX.
		4.8 A new -pseudo-override option which makes pseudo file uids
		    and gids override -all-root, -force-uid and -force-gid
		    options.  Normally these options take precedence.

	5. Unsquashfs minor improvements

		5.1 New -all-time option which sets all file timestamps to
		    <time>, rather than the time stored in the filesystem
		    inode.  <time> can be an integer indicating seconds since
		    the epoch (1970-01-01) or a human string value such as
		    "now", "last week", or "Wed Feb 15 21:02:39 GMT 2023".
		5.2 New -full-precision option which uses full precision when
		    displaying times including seconds.  Use with -linfo, -lls,
		    -lln and -llc options.
		5.3 New -match option where Unsquashfs will abort if any
		    extract file does not match on anything, and can not be
		    resolved.
		5.4 New -percentage option added which rather than generating
		    the full progress-bar instead outputs a percentage.  This
		    can be used with dialog --gauge etc.

	6. Sqfstar minor improvements

		6.1 A new -ignore-zeros option added which allows tar files to
		    be concatenated together and fed to Sqfstar.  Normally a
		    tarfile has two consecutive 512 byte blocks filled with
		    zeros which means EOF and Sqfstar will stop reading after
		    the first tar file on encountering them. This option makes
		    Sqfstar ignore the zero filled blocks.
		6.2 A new -mem-percent option which allows memory for caches to
		    be specified as a percentage of physical RAM, rather than	
		    requiring an absolute value.
		6.3 A new -percentage option added which rather than generating
		    the full progress-bar instead outputs a percentage.  This
		    can be used with dialog --gauge etc.
		6.4 -mkfs-time, -all-time and -root-time options now take
		    a human date string, in addition to the seconds since
		    the epoch of 1970 00:00 UTC.  For example "now",
		    "last week", "Wed Mar 8 05:55:01 GMT 2023" are supported.
		6.5 -root-uid, -root-gid, -force-uid and -force-gid options now
		     take a user/group name in addition to the integer uid/gid.
		6.6 A new -mem-default option which displays default memory
		    usage for caches in Mbytes.
		6.7 A new -no-compression option which produces no compression,
		    and it is a short-cut for -noI, -noD, -noF and -noX.
		6.8 A new -pseudo-override option which makes pseudo file uids
		    and gids override -all-root, -force-uid and -force-gid
		    options.  Normally these options take precedence.
		6.9 Do not abort if ZERO filled blocks indicating end of the
		    TAR archive are missing.

	7. Other minor improvements

		7.1 If Mksquashfs/Unsquashfs fails to execute generating the
		    manpages because they have been cross-compiled, fall back
		    to using the pre-built manpages.
		7.2 Add new Makefile configure option USE_PREBUILT_MANPAGES
		    to always use pre-built manpages rather than generating
		    them when "make install" is run.

	8. Major bug fixes

		8.1 Following a symlink in Sqfscat or where -follow-symlinks
		    option is given with Unsquashfs, incorrectly triggered the
		    corrupted filesystem loop detection code.
		8.2 In Unsquashfs if a file was not writable it could not add
		    extended attributes to it.
		8.3 Sqfstar would incorrectly reject compressor specific
		    options that have an argument.
		8.4 Sqfstar would incorrectly strip pathname components in PAX
		    header linkpath if symbolic.
		8.5 Sqfstar -root-uid, -root-gid and -root-time options were
		    documented but not implemented.
		8.6 Mksquashfs -one-file-system option would not create empty
		    mount point directory when filesystem boundary crossed.
		8.7 Mksquashfs did not check the close() return result.

Squashfs tools 4.5.1

17 Mar 19:53
Compare
Choose a tag to compare

This release adds Manpages, a fix for CVE-2021-41072 and the usual minor
improvements and bug fixes.

1. Major improvements

	1.1 This release adds Manpages for Mksquashfs(1), Unsquashfs(1),
	    Sqfstar(1) and Sqfscat(1).
	1.2 The -help text output from the utilities has been improved
	    and extended as well (but the Manpages are now more
	    comprehensive).
	1.3 CVE-2021-41072 which is a writing outside of destination
	    exploit, has been fixed.

2. Minor improvements

	2.1 The number of hard-links in the filesystem is now also
	    displayed by Mksquashfs in the output summary.
	2.2 The number of hard-links written by Unsquashfs is now
	    also displayed in the output summary.
	2.3 Unsquashfs will now write to a pre-existing destination
	    directory, rather than aborting.
	2.4 Unsquashfs now allows "." to used as the destination, to
	    extract to the current directory.
	2.5 The Unsquashfs progress bar now tracks empty files and
	    hardlinks, in addition to data blocks.
	2.6 -no-hardlinks option has been implemented for Sqfstar.
	2.7 More sanity checking for "corrupted" filesystems, including
	    checks for multiply linked directories and directory loops.
	2.8 Options that may cause filesystems to be unmountable have
	    been moved into a new "experts" category in the Mksquashfs
	    help text (and Manpage).

3. Bug fixes

	3.1 Maximum cpiostyle filename limited to PATH_MAX.  This
	    prevents attempts to overflow the stack, or cause system
	    calls to fail with a too long pathname.
	3.2 Don't always use "max open file limit" when calculating
	    length of queues, as a very large file limit can cause
	    Unsquashfs to abort.  Instead use the smaller of max open
	    file limit and cache size.
	3.3 Fix Mksquashfs silently ignoring Pseudo file definitions
	    when appending.
	3.4 Don't abort if no XATTR support has been built in, and
	    there's XATTRs in the filesystem.  This is a regression
	    introduced in 2019 in Version 4.4.
	3.5 Fix duplicate check when the last file block is sparse.