mirror of https://github.com/ventoy/Ventoy
183 lines
7.2 KiB
Groff
183 lines
7.2 KiB
Groff
SQUASHFS 4.3 - A squashed read-only filesystem for Linux
|
|
|
|
Copyright 2002-2014 Phillip Lougher <phillip@lougher.demon.co.uk>
|
|
|
|
Released under the GPL licence (version 2 or later).
|
|
|
|
Welcome to Squashfs 4.3. This is the first release in over 3 years, and
|
|
there are substantial improvements to stability, new compression options
|
|
and compressors, speed optimisations, and new options for Mksquashfs/Unsquashfs.
|
|
|
|
This is a tools only release, support for Squashfs filesystems is
|
|
in mainline (2.6.29 and later).
|
|
|
|
Changes in Squashfs-tools 4.3
|
|
-----------------------------
|
|
|
|
1. Stability improvements. Better checking of user input for out of
|
|
range/invalid values. Better handling of corrupted Squashfs filesystems
|
|
(Mksquashfs append mode, and Unsquashfs). Better handling of buffer
|
|
overflow/underflow.
|
|
|
|
2. GZIP compressor now supports compression options, allowing different
|
|
compression levels to be used.
|
|
|
|
3. Rewritten LZO compressor with compression options, allowing different
|
|
LZO algorithms and different compression levels to be used.
|
|
|
|
4. New LZ4 compressor (note not yet in mainline kernel)
|
|
|
|
5. Better default memory usage for Mksquashfs. Mksquashfs by default now
|
|
uses 25% of physical memory.
|
|
|
|
6. Duplicate checking in Mksquashfs further optimised. With certain
|
|
"problem filesystems" greater than 2x performance improvement.
|
|
Filesystems with a lot of duplicates should see at least 10-20% speed
|
|
improvement.
|
|
|
|
7. The -stat option in Unsquashfs now displays the compression options
|
|
used to generate the original filesystem. Previously -stat only displayed
|
|
the compression algorithm used.
|
|
|
|
8. The file being compressed/uncompressed in Mksquashfs/Unsquashfs is now
|
|
displayed if CTRL-\ (SIGQUIT from keyboard) typed.
|
|
|
|
9. The status of the internal queues/caches in Mksquashfs/Unsquashfs is
|
|
now displayed if CTRL-\ (SIGQUIT from keyboard) is typed twice within
|
|
one second. Normally only useful for "power users", but it can be
|
|
used to discover if there's any bottlenecks affecting performance
|
|
(the bottleneck will normally be the compressors/fragment compressors).
|
|
|
|
10. Miscellaneous new options for Mksquashfs/Unsquashfs to fine tune behaviour.
|
|
|
|
11. Fixes for CVE-2012-4024 and CVE-2012-4025.
|
|
|
|
Compatiblity
|
|
------------
|
|
|
|
Mksquashfs 4.3 generates 4.0 filesystems. These filesystems are fully
|
|
compatible/interchangable with filesystems generated by Mksquashfs 4.0 and are
|
|
mountable on 2.6.29 and later kernels.
|
|
|
|
Compressors
|
|
-----------
|
|
|
|
New compression options and compressors are now supported.
|
|
|
|
The new options and compressors are:
|
|
|
|
1. gzip
|
|
-Xcompression-level <compression-level>
|
|
<compression-level> should be 1 .. 9 (default 9)
|
|
-Xwindow-size <window-size>
|
|
<window-size> should be 8 .. 15 (default 15)
|
|
-Xstrategy strategy1,strategy2,...,strategyN
|
|
Compress using strategy1,strategy2,...,strategyN in turn
|
|
and choose the best compression.
|
|
Available strategies: default, filtered, huffman_only,
|
|
run_length_encoded and fixed
|
|
|
|
2. lzo
|
|
-Xalgorithm <algorithm>
|
|
Where <algorithm> is one of:
|
|
lzo1x_1
|
|
lzo1x_1_11
|
|
lzo1x_1_12
|
|
lzo1x_1_15
|
|
lzo1x_999 (default)
|
|
-Xcompression-level <compression-level>
|
|
<compression-level> should be 1 .. 9 (default 8)
|
|
Only applies to lzo1x_999 algorithm
|
|
|
|
3. lz4
|
|
-Xhc
|
|
Compress using LZ4 High Compression
|
|
|
|
The compression specific options are, obviously, specific to the compressor
|
|
in question, and you should read the compressor documentation and check
|
|
their web sites to understand their behaviour.
|
|
|
|
In general the defaults used by Mksquashfs for each compressor are optimised
|
|
to give the best performance for each compressor, where what constitutes
|
|
best depends on the compressor. For gzip/xz best means highest compression
|
|
(trying multiple filters/strategies can improve compression, but this is
|
|
extremely expensive computationally, and hence, not suitable for the defaults),
|
|
for LZO/LZ4 best means a tradeoff between compression and (de)-compression
|
|
overhead (LZO/LZ4 by definition are intended for weaker processors).
|
|
|
|
New Mksquashfs options
|
|
----------------------
|
|
|
|
1. -mem <size>
|
|
|
|
Set the amount of memory used by Mksquashfs to <size> bytes. G/M and K
|
|
post-fixes are supported.
|
|
|
|
By default Mksquashfs uses 25% of the physical memory. Increasing
|
|
this with the -mem option can increase performance (note it does not have
|
|
any effect on compression). Reducing it can prevent thrashing if the
|
|
system is busy and there is not 25% of physical memory free (again, note
|
|
it does not have any effect on compression).
|
|
|
|
2. -exit-on-error
|
|
|
|
By default Mksquashfs treats certain errors as benign, if these
|
|
errors occur Mksquashfs prints the error on the console but continues.
|
|
These errors are typically failure to read a file from the source filesystem.
|
|
This is deliberate, in many cases users prefer Mksquashfs to flag
|
|
the error but continue rather than abort what may be hours of compression.
|
|
|
|
But there are times where failure to read any file is considered critical,
|
|
and users (especially in the case of automated scripts where the
|
|
errors output to the console may be missed) prefer Mksquashfs to exit.
|
|
|
|
The new -exit-on-error option can be used in this scenario. This option
|
|
makes Mksquashfs treat all benign errors as fatal.
|
|
|
|
3. -progress
|
|
|
|
By default if -info is specified, the progress bar is disabled as it gets
|
|
in the way. Occasionally you might want the progress bar enabled whilst
|
|
-info is enabled. This option forces Mksquashfs to output the progress
|
|
bar when -info is specified.
|
|
|
|
4. -Xhelp
|
|
|
|
Display the usage text for the currently selected compressor.
|
|
|
|
New Unsquashfs options
|
|
----------------------
|
|
|
|
1. -u[ser-xattrs]
|
|
|
|
Only write user xattrs. This forces Unsquashfs to ignore system xattrs.
|
|
This is useful when Unsquashing a filesystem as a non-root user, and the
|
|
filesystem contains system xattrs which are only writable by root.
|
|
|
|
Major bugs fixed
|
|
----------------
|
|
|
|
1. If Mksquashfs ran out of space in the destination filesystem, this
|
|
would not cause Mksquashfs to immediately abort, and Mksquashfs would
|
|
continue to process the source filesystem. Mksquashfs now immediately
|
|
aborts on out of space in the destination filesystem.
|
|
|
|
2. Unsquashfs ignored the maximum number of open files limit, and if that
|
|
was lower than the default limit for Linux, it would run out of file
|
|
descriptors. Unsquashfs now limits the number of open files to the
|
|
limit currently in force (e.g. specified by setrlimit).
|
|
|
|
3. If huge numbers of dynamic pseudo files were specified, Mksquashfs
|
|
could exceed the maximum number of open files limit. This was because
|
|
Mksquashfs created all the dynamic file processes up front before
|
|
commencing source filesystem reading and compression. Mksquashfs
|
|
now creates the dynamic file processes on demand whilst reading
|
|
and compressing the source filesystem, thus limiting the number of
|
|
dynamic pseudo file processes in existence at any one time.
|
|
|
|
4. When outputting Unsquashfs used to set the permissions of directories
|
|
as it recursively descended. This in hindsight had an obvious oversight,
|
|
if a directory had only read permission (or was otherwise restricted), then
|
|
Unsquashfs would fail to write its contents when descending into it. Fixed
|
|
by setting directory permissions as Unsquashfs recursively unwinds.
|