You can subscribe to this list here.
| 2003 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
| 2009 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
(2) |
Aug
(2) |
Sep
|
Oct
(1) |
Nov
|
Dec
(1) |
| 2020 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2021 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|
From: David O. <go...@in...> - 2022-12-03 14:44:16
|
Hi, I am pleased to announce the release of squashfs-tools-ng 1.2.0. This release adds support for loading xattrs from a description file, as well as micromanaging file packing order through a "sort file". A few new library features are also added, that have been held back for a long time during the previous bug-fix-only releases. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.2.0.tar.xz Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.2.0.tar.xz.asc Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v1.2.0 https://git.infraroot.at/squashfs-tools-ng.git v1.2.0 Pre-compiled Windows binaries, built using a MinGW cross toolchain, are available here: https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.2.0-mingw32.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.2.0-mingw32.zip.asc https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.2.0-mingw64.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.2.0-mingw64.zip.asc At this point, version 1.0.0 is now ~2.5 years old. And the public libsquashfs library, originally added in version 0.7, has been extended several times in ABI compatible ways. With lessons learnt from various API shortcomings, the next release with new features will likely be version 2.0. Until then, fixes for both 1.2.0, and 1.1.0 will be further maintained on their respective branches, with occasional patch level releases. Going forward, the 1.0.x branch will no longer be maintained. The same will likely also happen to 1.1.x after version 2.0, but support for 1.2.x will continue past that. Fixed from 1.1.4 to 1.2.0: - Only use actually available CPUs in `gensquashfs` and `tar2sqfs` - Overzealous bounds check in the `libsquashfs `block processor (#110) - In `sqfs_compressor_create`, clear the output pointer on error (#110) - Typo in `gensquashfs` and `tar2sqfs` block count statistics (#108) - Hard link resolution: report error if path cannonicalization fails - Documentation: signedness of the directory header inode number - Seek position in `libsquashfs` meta data reader erroneously out-of-bounds - Memory leak in `libfstree` error path - Double-free in `libfstree` error path - Hard link counter in `libfstree` now uses full 32 bit hard link count New features in 1.2.0: - `gensquashfs` can add xattrs from a description file - `gensquashfs` can read file packing order from a "sort file" - `libsquashfs` directory reader supports `.` and `..` directory browsing - `libsquashfs` can reconstruct the full path for a tree node - Make the `sqfs_destroy` function safely support NULL pointers Other changes in 1.2.0: - Internal cleanup and restructuring - Upgrade autotools version - Check in `autogen.sh` if the required tools are available - Trigger a build failure if no compressor library is available Regards, David |
|
From: Phillip L. <phi...@gm...> - 2021-07-22 22:52:26
|
Hi, I'm pleased to announce the release of Squashfs tools 4.5. This release marks 20 years since development started on Squashfs, and there are substantial new features: find-style actions, tar file reading, cpio style input, Sqfscat, etc. The release can be downloaded either from Sourceforge, or GitHub. https://sourceforge.net/projects/squashfs/files/latest/download https://github.com/plougher/squashfs-tools/archive/refs/tags/4.5.tar.gz The README with a summary of changes is below. Phillip Summary of changes (and sections below) --------------------------------------- 1. Major improvements in Mksquashfs =================================== 1.1 Mksquashfs now supports "Actions". These are modelled on "find" and allow compression, fragment packing, file exclusion and file attributes to be changed on a per-file basis (see section 4). 1.2 New sqfstar command which will create a Squashfs image from a tar archive (see section 5). 1.3 Tar style handling of source pathnames in Mksquashfs. If option is specified, Mksquashfs will not strip leading directories (see section 6). 1.4 Cpio style handling of source pathnames in Mksquashfs. If this option is specified, files will be read in from stdin. No leading directories will be stripped (see section 7). 1.5 New option to throttle the amount of CPU and I/O Mksquashfs uses (see section 8). 1.6 New Pseudo file definitions which support timestamps (see section 9). 1.7 New Pseudo file definitions to create File references (Hard Links) (see section 10). 1.8 New Pseudo file definitions to create Sockets/Fifos (see section 11). 1.9 Mksquashfs now allows no source directory ( specified as - ) to be specified, with all input from pseudo file definitions (see section 12). 1.10 New Pseudo file "R" definition which allows a Regular file to be created with data stored within the Pseudo file (see 2.5 below). 2. Major improvements in Unsquashfs =================================== 2.1 New Sqfscat command which outputs the contents of files to standard out (see section 13). 2.2 Symbolic links are now followed in extract files, if -follow-symlinks or -missing-symlinks option specified (see section 14). 2.3 Unsquashfs now supports "exclude" files in addition to "extract" files (see section 15). 2.4 Max depth traversal option added (see section 16). 2.5 Unsquashfs can now output a "Pseudo file" representing the input Squashfs filesystem. This can be altered and given as input to Mksquashfs to re-generate the filesystem without unpacking it (see section 17). 3. Minor improvements and bug fixes =================================== 3.1 The progress bar is now displayed and updated whilst the input is being scanned (blocks to be compressed will increase). This means on large (or slow to read) input sources, Mksquashfs will not appear to hang doing nothing. 3.2 New -one-file-system option in Mksquashfs, which tells Mksquashfs to not cross filesystem boundaries when scanning the sources. 3.3 New -no-hardlinks option in Mksquashfs, which makes Mksquashfs treat hardlinked files as duplicates instead. 3.4 New -help options in Mksquashfs and Unsquashfs which output to standard out, rather than standard error. 3.5 New -root-uid option in Mksquashfs, which allows the uid of the root directory to be set. 3.6 New -root-gid option in Mksquashfs, which allows the gid of the root directory to be set. 3.7 New -root-time option in Mksquashfs, which allows the time of the root directory to be set. 3.8 -no-exit-code option added to Unsquashfs which makes it not output an error exit code. 3.9 Exit code in Unsquashfs changed to distinguish between non-fatal errors (exit of 2), and fatal errors (exit code of 1). 3.10 Mksquashfs when appending, now writes the recovery file to the home directory ($HOME), rather than the current directory. A new option -recovery-path <name> has been added, which specifies that <name> is to be used as the recovery file directory. 3.11 Xattr id count added in Unsquashfs "-stat" output. 3.12 Unsquashfs "write outside directory" exploit fixed. 3.13 Error handling in Unsquashfs writer thread fixed. 3.14 Fix failure to truncate destination file when appending aborted in Mksquashfs. 3.15 Prevent Mksquashfs reading the destination file as input. 4. Mksquashfs Actions Introduction ================================== The new Mksquashfs Actions code allows an "action" to be executed on a file if one or more "tests" succeed. If you're familiar with the "find" command, then an action is similar to "-print", and a test is similar to say "-name" or "-type". To illustrate this it is useful to give two concrete examples. example 1: the fragment action % mksquashfs /home/phillip/github github.sqsh -action "fragment(cfiles) @ name(*.[ch])" -action "fragment(ofiles) @ name(*.o)" This example defines two "fragment actions" which control the packing of files within fragments. Specifically, it creates a specialised fragment called "cfiles" which packs files matching the wildcard name "*.[ch]". It also creates another specialised fragment called "ofiles" which packs files matching the wilcard name "*.o". Producing specialised fragments which only pack files which match a range of tests, can produce better compression and/or I/O performance as it can optimise similarity or access patterns. But it can also produce worse compression, and so you should always test the effect. Additionally, you should be able to see that an action definition is split into an action function before the "@", and one or more test functions after the @. Quoting is necessary here to protect it from interpretation by the shell. Also the spacing before and after the "@" isn't necessary and is used here for added readability. example 2: the uncompressed action % mksquashfs /home/phillip backup.sqsh -action "uncompressed @ ( name(*.jpg) || name(*.mpg) ) || ( name(*.img) && filesize(+1G) )" This is a more complex example. It tells Mksquashfs to not try and compress any file which matches the wildcard names "*.jpg" and "*.mpg". But it also tells Mksquashfs not to try and compress files which match the wildcard name "*.img" and are also 1 Gigabyte in size or larger. This example introduces the fact that tests can be combined using the logical operators && (and), || (or) and ! (not), and can be bracketed. Please see the ACTIONS-README file for syntax and extra information. 5. New Sqfstar command to create image from a tar archive ========================================================= Mksquashfs when run as "sqfstar" (either named as such, or via a hard or symbolic link) will read a tar archive from standard in (stdin), and create a Squashfs image from it. Syntax: sqfstar [options] image [list of exclude dirs/files] Where <image> is the output Squashfs filesystem. The tar archive should be uncompressed (pipe it though a decompressor if compressed). Sqfstar supports V7, ustar, bsdtar (libarchive), GNU tar and PAX extensions. Sparse file extensions are supported, including the "old GNU format, type S", and PAX formats, Versions 0.0, 0.1 and the current 1.0. Sqfstar supports extended attributes, and recognises the SCHILY xattr PAX extension (used by GNU tar), and the LIBARCHIVE xattr PAX extension (used by bsdtar). Files and directories may be excluded, and both anchored and non-anchored exclude files are supported (see section 3.5.2 in USAGE file and examples later). Wildcards (globbing) is supported by default. Sqfstar can also by invoked by running "mksquashfs source dest -tar", if the Sqfstar link isn't available. 5.1 Usage examples ------------------ % sqfstar image.sqfs < archive.tar Create a Squashfs image from archive.tar, using defaults (gzip compression, 128K blocks). % sqfstar -comp xz -b 1M image.sqfs < archive.tar As previous, but use XZ compression and 1Mbyte block sizes. % zcat archive.tgz | sqfstar image.sqfs Create a Squashfs image from a gzip compressed tar archive. % sqfstar -root-uid 0 -root-gid 0 image.sqfs < archive.tar Tar files do not supply a definition for the root directory, and the default is to make the directory owned/group owned by the user running Sqfstar. The above command sets the ownership/group ownership to root. % sqfstar -root-mode 0755 image.sqfs < archive.tar The default permissions for the root directory is 0777 (rwxrwxrwx). The above command sets the permissions to 0755 (rwxr-xr-x). % sqfstar image.sqsh dir1/file1 dir2/file2 < archive.tar Create a Squashfs image but exclude the files "file1" and "file2". % sqfstar image.sqsh "... *.[ch]" < archive.tar Create a Squashfs image but exclude any file matching "*.[ch]" anywhere in the archive. 5.2 Sqfstar options list ------------------------ The following is the full list of options supported by Sqfstar. Filesystem build options: -comp <comp> select <comp> compression Compressors available: gzip (default) -b <block_size> set data block to <block_size>. Default 128 Kbytes Optionally a suffix of K or M can be given to specify Kbytes or Mbytes respectively -reproducible build images that are reproducible (default) -not-reproducible build images that are not reproducible -mkfs-time <time> set mkfs time to <time> which is an unsigned int -fstime <time> synonym for mkfs-time -all-time <time> set all inode times to <time> which is an unsigned int -exports make the filesystem exportable via NFS -no-sparse don't detect sparse files -no-xattrs don't store extended attributes -xattrs store extended attributes (default) -noI do not compress inode table -noId do not compress the uid/gid table (implied by -noI) -noD do not compress data blocks -noF do not compress fragment blocks -noX do not compress extended attributes -no-fragments do not use fragments -no-tailends don't pack tail ends into fragments -no-duplicates do not perform duplicate checking -no-hardlinks do not hardlink files, instead store duplicates -all-root make all files owned by root -root-time <time> set root directory time to <time> -root-mode <mode> set root directory permissions to octal <mode> -root-uid <uid> set root directory owner to <uid> -root-gid <gid> set root directory group to <gid> -force-uid <uid> set all file uids to <uid> -force-gid <gid> set all file gids to <gid> -nopad do not pad filesystem to a multiple of 4K Filesystem filter options: -ef <exclude_file> list of exclude dirs/files. One per line -regex Allow POSIX regular expressions to be used in exclude dirs/files Sqfstar runtime options: -version print version, licence and copyright message -force force Sqfstar to write to block device or file -exit-on-error treat normally ignored errors as fatal -quiet no verbose output -info print files written to filesystem -no-progress don't display the progress bar -progress display progress bar when using the -info option -throttle <percentage> throttle the I/O input rate by the given percentage. This can be used to reduce the I/O and CPU consumption of Mksquashfs -limit <percentage> limit the I/O input rate to the given percentage. This can be used to reduce the I/O and CPU consumption of Mksquashfs (alternative to -throttle) -processors <number> Use <number> processors. By default will use number of processors available -mem <size> Use <size> physical memory. Currently set to 4096M Optionally a suffix of K, M or G can be given to specify Kbytes, Mbytes or Gbytes respectively Miscellaneous options: -root-owned alternative name for -all-root -offset <offset> Skip <offset> bytes at the beginning of <dest>. Optionally a suffix of K, M or G can be given to specify Kbytes, Mbytes or Gbytes respectively. Default 0 bytes. -o <offset> synonym for -offset -noInodeCompression alternative name for -noI -noIdTableCompression alternative name for -noId -noDataCompression alternative name for -noD -noFragmentCompression alternative name for -noF -noXattrCompression alternative name for -noX -help output this options text to stdout -h output this options text to stdout -Xhelp print compressor options for selected compressor 6. Tar style handling of source pathnames in Mksquashfs ========================================================= Mksquashfs has always stripped the leading directories of any source pathnames given on the command line. For example given the command line % mksquashfs dir-a/dir-b/dir-c/file1 dir-A/dir-B/file2 sqfs Mksquashfs will strip the leading directories, and put file1 and file2 into the same root directory. If file1 and file2 are directories it will place the directories into the same root directory, but, if only one directory is specified, it will put the contents of that directory into the root directory. Obviously, for a lot of the time this is what you want. But, if it isn't what you want it can be quite difficult to get Mksquashfs to do something different. A lot of people don't like this, and would prefer Mksquashfs acted like "tar", which does not strip leading directories. This allows you to create a directory hierarchy from the pathnames of the supplied files. In the above example, the tar archive would contain the pathnames "dir-a/dir-b/dir-c/file1" and "dir-A/dir-B/file2". Mksquashfs will now act like tar if given the option -no-strip, or -tarstyle. 7. Cpio style handling of source pathnames in Mksquashfs ======================================================== Mksquashfs now allows you to pipe the set of files to be added to the filesystem to standard in (stdin), if the -cpiostyle option is given. As with cpio, directories are not recursively scanned, and their contents added. Evey file to be added to the filesystem must be explicitly specified. Typically the list of files to be added will be produced via find, or a similar utility. For example % find /home/phillip/squashfs-tools | mksquashfs - img.sqfs -cpiostyle Will create an image containing everything in squashfs-tools and its sub-directories. Note, "-" is given as the source pathname in Mksquashfs, and indicates no commmand line sources. and the following will add just the files ending in .c, .h and .o. % find /home/phillip/squashfs-tools -name "*.[cho]" | mksquashfs - img.sqfs -cpiostyle 8. New option to throttle CPU and I/O Mksquashfs uses ===================================================== People have sometimes complained that Mksquashfs uses too much CPU and too much I/O, and can make a computer become very slow, or over-heat, and setting the processors option to 1 often doesn't have much effect. The reason for this is because Mksquashfs tries to run as fast as possible, as this is usually what people want. Due to this it is highly parallelised, and spawns multiple compression threads (for both blocks and fragments), and by default one each of those compression threads are spawned per core. In addition it also has separate reader and writer threads and large caches to ensure I/O through-put is maximised and performed in parallel with the compression threads (called read-ahead and write-behind). This means even when the "-processors 1" option is set, there is still a lot of parallel processing being performed, because the minmimum set of threads is a single block compression thread, a single fragment compression thread, and both a reader and writer thread. Unfortunately, these threads can easily still max out a single core, so that it is never idle. On a multi-core machine the "-processors 1" option usually produces a CPU load of around 130-180%. The solution adopted is to add an I/O "throttle", which will regulate the amount of I/O performed, and ultimately, how much CPU is consumed. This throttle can be set from 0 - 100, with the following two options added. -throttle <percentage> has the semantics of throttle the reader by X%. The higher the percentage, the greater the throughput of the reader thread is reduced. -limit <percentage> has the opposite sense of limit the output to X%. The higher the percentage, the greater the throughput of the reader thread. 9. New Pseudo file definitions with timestamps ============================================== The Pseudo file definitions previously supported did not allow the time of the file to be set. New extended pseudo file definitions have been added which take a <time> timestamp. These are distinquished from the previous definitions by using an upper-case type character. For example the "D" definition is identical to the previous "d" definition (it creates a directory), but it takes a <time> timestamp. The list of extended definitions are: filename D time mode uid gid filename M time mode uid gid filename B time mode uid gid major minor filename C time mode uid gid major minor filename F time mode uid gid command filename S time mode uid gid symlink <time> can be either an unsigned decimal integer (which represents the seconds since the epoch of 1970-01-01 01:00 UTC), or a "date string" which is parsed and converted into an integer since the epoch, by calling "date". Because most date strings have spaces, they will need to be quoted, and if entered on the command line, these quotes will need to be protected from the shell by backslashes, i.e. % mksquashfs x x.sqsh -p "file D \"1 jan 1980\" 0777 phillip phillip" Obviously anything "date" accepts as a valid string can be used, such as "yesterday", "last week" etc. 10. New Pseudo file definition to create File references (Hard Links) ===================================================================== The existing "f" Pseudo definition allows a regular file to be created from the output of a command (or shell). Often this is used to reference a file outside the source directories, by executing "cat", e.g. README f 0555 0 0 cat /home/phillip/latest-version/README Because this is quite a frequent use of the definition, a new faster "File reference" or Hard Link (in filesystem terms a File reference is a Hard Link) Pseudo definition has been added named 'l'. README l /home/phillip/latest-version/README Will create a reference to "/home/phillip/latest-version/README", and obviously the timestamp/mode and owership will be used. The definition also be used to create additional references to files within the source directories. For instance if "phillip/latest/README" was a file being added to the filesystem, then README l phillip/latest/README Will create a Hard Link (and increment the nlink count on the inode). In both cases, the Path to the file being referenced is the system filesystem path, and can be absolute (prefixed with /), or relative to the current working directory. There is an additional 'L' Pseudo definition, which closes a loophole in the above 'l' definition. The 'l' Pseudo definition cannot create references or Hard Links to files created by Pseudo definitions, because by definition they do not exist in the system filesystem. with 'L' the referenced file is expected to be a Pseudo file, and in this case the Path is taken to be from the root of the Squashfs filesystem being created, e.g. char-dev c 0555 0 0 1 2 link L char-dev Will create a Hard Link named "link" to the character device called "char-dev" created by the previous Pseudo definition. 11. New Pseudo file definitions to create Sockets/Fifos ======================================================= Two new definitions have been added which allows Sockets and Fifos to be created, which are: filename i mode uid gid [s|f] filename I time mode uid gid [s|f] The 'i' definition doesn't take a time value, whereas the 'I' definition does. To create a Unix domain socket, 's' should be used, i.e. filename i 0777 root root s and to create a FIFO, 'f' should be used, i.e. filename i 0777 root root f 12. Mksquashfs now allows no source directories ( specified as - ) ================================================================== Mksquashfs has removed the requirement to specify any physical source directories, and a Squashfs filesystem can now be built entirely with Pseudo definitions. For example the following command line % mksquashfs - img.sqfs -p "/ d 777 phillip users" -p "/hello l /tmp/typescript" -p "/link L hello" Will create a root directory, a file created by a reference to a file within the filesystem, and create a hard link to it. 13. New Sqfscat command which outputs the contents of files to standard out =========================================================================== Unsquashfs when run as "sqfscat" (either named as such, or via a hard or symbolic link) will output the contents of one or more files to standard out. The syntax and options supported are: SYNTAX: sqfscat [options] filesystem [files to cat] -v[ersion] print version, licence and copyright information -p[rocessors] <number> use <number> processors. By default will use number of processors available -o[ffset] <bytes> skip <bytes> at start of <dest>. Optionally a suffix of K, M or G can be given to specify Kbytes, Mbytes or Gbytes respectively (default 0 bytes). -ig[nore-errors] treat errors writing files to output as non-fatal -st[rict-errors] treat all errors as fatal -no-exit[-code] don't set exit code (to nonzero) on non-fatal errors -da[ta-queue] <size> set data queue to <size> Mbytes. Default 256 Mbytes -fr[ag-queue] <size> set fragment queue to <size> Mbytes. Default 256 Mbytes -no-wild[cards] do not use wildcard matching in extract names -r[egex] treat extract names as POSIX regular expressions rather than use the default shell wildcard expansion (globbing) -h[elp] output this options text to stdout The pathnames of the files to be output, like cat, can contain symbolic links, and "." and ".." elements. Sqfscat is a short-cut to using the equivalent Unsquashfs -cat option, i.e. the following will behave the same: % sqfscat img file % unsquashfs -cat img file 14. Symbolic links are now "followed" in extract files ====================================================== Unsquashfs walks the extract file paths as it recursively extracts the Squashfs filesystem from top to bottom. During that recursive extraction symbolic links are obviously not followed (see below). The consequence of this is if an extract file ends in a symbolic link (leaf component) it is extracted and left as a dangling symlink, unless the real file it links to has also specified as an extract file. Additionally, if the extract file pathname traverses symbolic links while walking the pathname (i.e. the extract file pathname has embedded symbolic links), the extraction will stop at that point. One way of solving this problem is by following (or dereferencing) the symbolic link(s), and replacing them with what they actually link to, in a similar way to "cp -L". But this is dangerous, and can cause Unsquashfs to produce output which does not match the input Squashfs filesystem, which is something Unsquashfs should never do. The reason for this is whereas "cp -L" is derefencing the *input*, Unsquashfs is dereferencing the *output*. If a filesystem has a real filename, say a/b/c/hello_world and two symlinks a/symlink1 ---> b/c/hello_world a/symlink2 ---> b/c There are multiple different ways (or paths) to the *single* hello_world file. a/b/c/hello_world a/symlink1 a/symlink2/hello_world If Unsquashfs was given all three paths as extract files, and Unsquashfs dereferenced them on output, you will get *three* copies of the hello_world file, and two copies of directory "c". Superficially the output may look the same, but, it may not work the same, and obviously edits to the one hello_world file will not get reflected in the other copies. Any option that can be accidently or maliciously used to produce such an output is too dangerous to be added. Unsquashfs solves the problem in an equivalent way, but which does not alter the output, and so it is a completely safe option. If the -follow-symlinks option is specified, Unsquashfs will canonicalise the extract files to produce the canonical pathname (that is the "real" pathname without any symbolic links). It will then add all the symbolic links necessary to ensure that the extract file can be resolved. The -missing-symlinks option is similar to -follow-symlinks except it will cause Unsquashfs to abort if any symbolic link cannot be resolved. Note: as a side effect of the canonicalisation, with the above options enabled extract filenames can also now have ".", ".." elements within the pathnames. 15. Unsquashfs now supports "exclude" files in addition to "extract" files ========================================================================== Unsquashfs now allows exclude files to be specified, either on their own, or in addition to extract files. An exclude file is, obviously, the opposite of an extract file. Whereas an extract file limits the output of Unsquashfs to the files/directories matched by the extract file(s), exclude file(s) output the entire filesystem, with the sub-set of files matched by the exclude file(s) excluded. Often you want to output the filesystem where you're only interested in some files, which is where extract files are useful. But equally, you often want to to output the entire filesystem, but, with some unwanted files removed. An example of this, perhaps, is where you've inadvertantly, archived binaries (.o files etc.) and you're only interested in extracting the source code. In the above example, trying to remove the binaries (.o etc) when you've only got "extract" files capability becomes extremely messy. It is a lot easier to do that with "exclude" files. Unsquashfs now supports two ways of specifying exclude files. The most straightforward way is to tell Unsquashfs to treat extract files as exclude files. That is extract files are specified on the command line as a list of files after the options and filesystem image. Giving the -excludes option tells Unsquashfs to treat them as exclude files. To make this clearer, % unsquashfs img file1 file2 file3 Tells Unsquashfs to extract file1, file2 and file3. But, % unsquashfs -excludes img file1 file2 file3 Tells Unsquashfs to exclude file1, file2, and file3. The perhaps obvious problem with this, is it allows you to choose between "extract" files or "exclude" files. But, it doesn't allow you to have both "extract" files and "exclude" files on the command line. To get around this problem Unsquashfs supports another way of specifying exclude files. That is to use the option -exclude-list. This option allows a list of exclude files to specified, terminated by a ";". The necessity of using ";" to terminate the list is because this is a normal option, without it, any further entries on the command line would be interpreted as being part of the list. For example, the following are equivalent: % unsquashfs -excludes img file1 file2 file3 % unsquashfs -exclude-list file1 file2 file3 \; img Note the black-slashing of ";" to prevent it from being interpreted by the shell as a special character. Obviously, where the -exclude-list option comes into its own is when it is mixed with extract files, for example: % unsquashfs -exclude-list dir1/file1 dir2/file2 \; img dir1 dir2 This tells Unsquashfs to extract directories "dir1" and "dir2", and then to exclude the files "dir1/file1" and "dir2/file2". >From this it should be clear that the precedence is extract files and then exclude files, because it doesn't make any sense otherwise. Extract files define the set of directories/files to be extracted, and exclude files remove directories/files from that sub-set. 16. Max depth traversal option added ==================================== Unsquashfs has added a -max-depth <n> option, which will limit output and/or file listing to <n> depth directories, where the top level directory is depth 1, e.g. % unsquashfs -max-depth 3 -ll img Will limit the filesystem output listing to be 3 directories in depth. 17. Unsquashfs Pseudo file output ================================= If the Pseudo file (-pf) option is given, Unsquashfs will output a Pseudo file representation of the input filesystem. This pseudo file can be used as input to Mksquashfs to reproduce the Squashfs filesystem without having to unpack the input filesystem image. The Pseudo file output is designed to be editable, and the pseudo file entries can be altered (name, date, ownership etc.) or added/deleted before any new filesystem is rebuilt. The format of the pseudo file, is obviously, the same as the pseudo file definitions supported by Msquashfs. In this release (see sections 8, 9 and 10) this has been extended to fully support any file type and timestamp information (extended attributes are not yet supported). Regular files (with data) are supported with the new "R" pseudo definition, which is filename R time mode uid gid length offset <length> specifies the size of the file, and <offset> is a byte offset into the pseudo file where the data is stored. This offset is taken from the start of the data section (see below), rather than from the start of the file (this is allow the pseudo file entries to be edited without altering the data offsets). Data is deliberately stored out of line (i.e. unlike tar), to make the file more easily editable manually. An example pseudo file output for a filesystem consisting of a directory, two regular files, and a symbolic link might be / D 1625536033 1777 0 0 test D 1625536969 755 1000 100 test/hello_world R 1625535696 644 1000 100 12 0 test/regfile R 1625536928 644 1000 100 37 12 test/symlink S 1625535712 777 1000 100 hello_world # # START OF DATA - DO NOT MODIFY # Hello World This is the data contents of regfile Here you should be able see the most important aspects of the layout, the pseudo file entries appear at the start of the file, and the data is stored at the end. The two sections are separated by 3 special marker lines, containing the words "START OF DATA - DO NOT MODIFY". The following is a small example of how someone might edit and rebuild a Squashfs image. $ unsquashfs -pf pseudo test.sqsh $ sed -i "0,/# START OF DATA/s/\([^ ]* . [0-9]* [0-7]* \)[0-9]*/\11234/g" pseudo $ sed -i "0,/# START OF DATA/s/hello_world/hello/g" pseudo $ mksquashfs - test2.sqsh -pf pseudo This will change the ownership to uid 1234, and change the name of "hello_word" to "hello". 18. Compatibility ================= Mksquashfs 4.5 generates 4.0 filesystems. These filesystems are fully compatible/interchangable with filesystems generated by Mksquashfs 4.x and are mountable on 2.6.29 and later kernels. |
|
From: David O. <go...@in...> - 2021-06-25 23:53:49
|
Hi,
I am pleased to announce the release of squashfs-tools-ng 1.1.2, as well as a
simultaneous release of 1.0.5 which contains bug-fixes that where back-ported
to a separate branch off of the 1.0.4 release tag.
The 1.1.2 release contains primarily another bug fix for tar2sqfs, regarding
support for bzip2 compressed archives that have been generated with parallel
compression, resulting in premature stream terminations in the tar archive.
Another fix for libsquashfs is added, regarding output block alignment. This
is a feature that is implemented in the library, but currently not exposed
through the command line tools.
In addition, new compiler warning flags were added and addressed accordingly
with further hardening against potential integer overflows, alignment issues,
and some printf format string signdness mismatches.
As mentioned above, any bug-fixes on the 1.1.x branch that also affect
the older 1.0.4 release have been continuously back-ported to a separate
branch called "fixes-1.0.0". Because those have become quite numerous
by now, a new 1.0.5 release tarball was generated. Individual patches on
top of the 1.0.4 tarball are also available here:
https://infraroot.at/pub/squashfs/patches-1.0.4/
Please note that the libtool so-version of 1.0.5 clashes with the one from
the 1.1.1 release. They implement the exact same API and should in theory be
perfectly ABI compatible, with the main difference being that the later
contains internal restructurings and performance improvements, while the former
only contains back-ported fixes.
Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.1.2.tar.xz
https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.5.tar.xz
Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.1.2.tar.xz.asc
https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.5.tar.xz.asc
Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v1.1.2
https://github.com/AgentD/squashfs-tools-ng.git v1.0.5
https://git.infraroot.at/squashfs-tools-ng.git v1.1.2
https://git.infraroot.at/squashfs-tools-ng.git v1.0.5
Pre-compiled Windows binaries, built using a MinGW cross toolchain,
are available here:
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.1.2-mingw32.zip
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.1.2-mingw32.zip.asc
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.5-mingw32.zip
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.5-mingw32.zip.asc
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.1.2-mingw64.zip
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.1.2-mingw64.zip.asc
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.5-mingw64.zip
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.5-mingw64.zip.asc
Fixed from 1.1.1 to 1.1.2:
- libsquashfs: preserve alignment flag in block processor
- libsquashfs: broken block alignment in block write
- allow concatenated Bzip2 streams
- Some documentation clarifications and typo fixes
- Use Automake conditional for zstd stream compression support
- Additional compiler warnings were turned on and addressed
- libfstream: Add printf format specifier attribute
- libfstream: guard against potential integer overflows
- libfstree: guard against link count and inode number overflow
- libfstree: guard against possible overflow in readlink()
- libcommon: potentially un-aligned data access in LZO compressor
- libsquashfs: potentially unaligned data access in meta data handling
- Some format string type/signedness mismatch issues
Fixed from 1.0.4 to 1.0.5:
- Fix format string type/signedness mismatch issues
- Add default cases for every switch block
- Remove casual un-const casting in various places
- libsquashfs: get rid of potentially unaligned access and VLAs
- libcommon: remove potentially un-aligned access in LZO compressor
- libfstree: guard against link count and inode number overflow
- Backport documentation clarifications and typo fixes
- Fix: libsquashfs: allow static linking on Windows
- Fix: libsquashfs: add sqfs_free() function
- libsquashfs: fix: also preserve alignment flag in block processor
- libsquashfs: fix block alignment if requested
- added shared read access when opening sqfs image with read-only flags (win32)
Regards,
David
|
|
From: David O. <go...@in...> - 2021-03-28 16:51:44
|
Hi,
I am pleased finally to announce the release of squashfs-tools-ng 1.1.0.
Besides more cleanups and a number of performance improvements, this version
adds two major features:
- Support for compressed tarballs, so e.g. a *.tar.xz or *.tar.bz2 can be
hosed directly into tar2sqfs, it will automagically determine the compressor
and unpack the tarball.
- gensquashfs now havs a "glob" keyword with arguments similar to the "find"
command for scanning parts of an input directory tree and applying file
type & shell globing filters.
The Windows port now also supports scanning directories, bringing it to feature
parity with the *nix version.
Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.1.0.tar.xz
Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.1.0.tar.xz.asc
Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v1.1.0
https://git.infraroot.at/squashfs-tools-ng.git v1.1.0
Pre-compiled Windows binaries, built using a MinGW cross toolchain,
are available here:
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.1.0-mingw32.zip
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.1.0-mingw32.zip.asc
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.1.0-mingw64.zip
https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.1.0-mingw64.zip.asc
New in 1.1.0:
- tar2sqfs: support reading compressed archives (xz, zstd, gzip, bzip2)
- sqfs2tar: support creating compressed archives (xz, zstd, gzip, bzip2)
- gensquashfs: support file globbing/filtering in the description file
- Implement directory packing for Windows
- Allow setting filesystem root permissions from the gensquashfs description
file using a "dir / ..." command.
- Drastic performance improvements of the xattr writer.
- Performance improvements in the thread pool block processor.
- Newer zstd & xz versions for Windows binary releases.
Fixed in 1.1.0:
- libsquashfs: Allow shared read access to generated images on Windows
- Lots of internal cleanups & restructuring, trying to improve maintainabillity
and testabillity of the code.
Regards,
David
|
|
From: David O. <go...@in...> - 2020-09-05 12:33:48
|
Hi, squashfs-tools-ng 1.0.2 is released, containing a number of mostly fixes. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.2.tar.xz Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.2.tar.xz.asc Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v1.0.2 https://git.infraroot.at/squashfs-tools-ng.git v1.0.2 Pre-compiled Windows binaries, built using a MinGW cross toolchain, are available here: https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.2-mingw32.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.2-mingw32.zip.asc https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.2-mingw64.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.2-mingw64.zip.asc Fixes added from 1.0.1 to 1.0.2: - libsquashfs: handle single data blocks with don't fragment flag correctly - libtar: handle link targets that are not null-terminated - libtar: correctly handle GNU tar sparse format 1.0 - rdsquashfs: extraction of single files - rdsquashfs: unpack failing on Windows if a directory exists - Documentation: clarify copyright status of documentation & build system Features added from 1.0.1 to 1.0.2: - A spec file to build RPM packages. - A `--stat` option for rdsquashfs. Regards, David |
|
From: David O. <go...@in...> - 2020-08-05 10:39:00
|
Hi, almost two months after version 1.0.0, squashfs-tools-ng 1.0.1 is released, containing the fixes collected so far. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.1.tar.xz Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.1.tar.xz.asc Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v1.0.1 https://git.infraroot.at/squashfs-tools-ng.git v1.0.1 Pre-compiled Windows binaries, built using a MinGW cross toolchain, are available here: https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.1-mingw32.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.1-mingw32.zip.asc https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.1-mingw64.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.1-mingw64.zip.asc Among the fixes in this release, one patches a block bounds checking issue in libsquashfs (the tools are not affected because they never try to read beyond file ends) and one patches an offset issue when reading extended attributes that were deduplicated. The later does affect the tools and extended attributes extracted using previous versions of sqfs2tar or rdsquashfs may have ended up truncated/garbled. The fixes are also available as separate patches here: https://infraroot.at/pub/squashfs/patches-1.0.0/ Fixes added from 1.0.0 to 1.0.1: - Xattr reader: re-read the header after seaking to an OOL value - Fix block bounds checking in libsquashfs data reader - Fix build issue caused by demo code that wasn't updated - Documentation: mention the file name limit imposed by the kernel - Documentation: fix wrong magic value and stray tabs in format.txt Regards, David |
|
From: David O. <go...@in...> - 2020-06-13 15:21:47
|
Hi, I'm happy to announce that squashfs-tools-ng 1.0.0 is finally released. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.0.tar.xz Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.0.tar.xz.asc Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v1.0.0 https://git.infraroot.at/squashfs-tools-ng.git v1.0.0 Pre-compiled Windows binaries, built using a MinGW cross toolchain, are available here: https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.0-mingw32.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.0-mingw32.zip.asc https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.0-mingw64.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-1.0.0-mingw32.zip.asc I've set up something vaguely similar to an official web site that also hosts the Doxygen generated reference manual for libsquashfs: https://infraroot.at/projects/squashfs-tools-ng/index.html The significance of this release is that it is supposed to freeze both the command line options of the tools and their semantics, as well as the current API & ABI of libsquashfs for the foreseeable future. Some effort has been put into overhauling parts of the libsquashfs API to make it possible to extend it or add fixes without breaking ABI compatibility. Any changes in the near to medium term future are supposed to be coming in the form of bug fixes and additional features, tools. Any breaking changes that warrant a new major version release are hopefully a few years out. Please note that along with the package major version, libtool SO version has been set to 1:0:0 and the pkg-config file was renamed to libsquashfs1. The pre-1.0 libsquashfs should be considered obsolete. Going forward, from the next minor release on, I will create branches for minor releases (e.g. 1.0 and 1.1) and back port bug fixes to the extent possible. I'm not sure yet for how far back the minor releases will receive those back ports, as it depends on the not yet known frequency of minor releases. Changes from 0.9.1 to 1.0.0: Features: - Expose more fine grained control values & flags on the XZ and LZMA compressors. - A flag for the `libsquashfs` block processor to micro manage block hashing and sparse block detection. - A raw block submission function for the very same. - A user pointer that can be forwarded to the block writer. Changed/Removed: - `sqfsdiff` doesn't abort if it fails to read the compressor options. - in `libsquashfs`, turn the block writer into an interface with a default implementation and remove the statistics and hooks. - Block processor can function without fragment table and without inode pointer. - Strictly enforce min/max dictionary size in XZ & LZMA compressors. - Make compression level a generic compression option in `libsquashfs`. - More `libsquashfs` API and internal cleanups. - Bumped the major version number for libsquashfs. Fixed: - Properly set the last block flag if fragments are disabled. - Compilation on GCC4 and below. - libtar: size computation of PAX line length. - Semantics of the super block deduplication flag. - Actually set the ZSTD compression level to something greater than 0. - Only add Selinux compile flags if WITH_SELINUX is set to fix Mingw cross build on Fedora. - Make `rdsquashfs` describe mode terminate with an error message if an illegal filename is encountered. - Don't include alloca.h on systems that don't provide that header. Regards, David |
|
From: David O. <go...@in...> - 2020-03-30 21:55:46
|
Hi, squashfs-tools-ng 0.9 is released. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.9.tar.xz Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.9.tar.xz.asc Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v0.9 Pre-compiled Windows binaries, built using a MinGW cross toolchain, are available here: https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-0.9-mingw32.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-0.9-mingw32.zip.asc https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-0.9-mingw64.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-0.9-mingw32.zip.asc After more time than anticipated and with a backlog of commits that kept piling up, I decided to try and reach a stable state which is now released as version 0.9. Hopefully be the last release before version 1.0. This version contains mainly internal & API cleanups for libsquashfs, as well as some performance improvements. Improvements in automated testing/CI has should have also resolved some build issues on some platforms (e.g. macOS). The intention is to, from now on focus primarily on cleanup, testing and improving stability, performance and avoid risky new features until 1.0, which is supposed to freeze both the command line interface of the tooling as well as the API/ABI of libsquashfs. It would have been tempting to call this an RC1, but keeping the major version at 0 still leaves the possibility of making API changes if necessary, especially to allow for "hey, why does the sqfs_frobulator_t not do foo here instead" kind of feedback, as my own current state could be described as "betriebsblind". Changes from 0.8 to 0.9: Features: - Support parsing size argument with SI suffix. - More through documentation on the on-disk format. - A few demo programs that make use of `libsquashfs`. - Lots of performance improvements. Changed/Removed: - Various API cleanups before reaching 1.0.0 - For better compatibility, sqfs2tar appends `/` to directory names. Fixed: - Build issues for Linux glibc platforms (i.e. a build error on GNU/Hurd). - Directory index accounting. - Memory leak in hard link detection code. - Broken iteration over directory children in sqfsdiff. - Data reader returning -1 instead of an error code. - Size accounting for sparse files in tar parsing code. - Stricter verification of the compressor configuration. - Broken builds with older liblz4 and zstd versions (e.g. on Ubuntu Xenial). - Various build issues on MacOS. Regards, David |
|
From: David O. <go...@in...> - 2019-12-30 22:41:41
|
Hi, squashfs-tools-ng 0.8 is released. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.8.tar.xz Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.8.tar.xz.asc Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v0.8 Besides mostly fixes/cleanups, this version also includes an experimental Windows port of libsquashfs and the tools. Pre-compiled Windows binaries, which where built using a MinGW cross toolchain, are available here: https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-0.8-mingw32.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-0.8-mingw32.zip.asc https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-0.8-mingw64.zip https://infraroot.at/pub/squashfs/windows/squashfs-tools-ng-0.8-mingw32.zip.asc NOTE: For legal reasons, this release removes LZO support from libsquashfs. This is to make sure that libsquashfs binaries can be distributed under the LGPL, which they cannot if linked against GPL licensed liblzo. The tools (which are GPL licensed) still support LZO by passing a liblzo based compressor implementation to libsquashfs if desired. Changes from 0.7 to 0.8: Features: - Experimental Windows port using MinGW cross compilation toolchain. - Port to BSD systems. - A --root-becomes option to tar2sqfs and sqfs2tar. - A --no-tail-packing option to tar2sqfs and gensquashfs. - Simple creation of an NFS export table through libsquashfs. - Support for non-directory hard links in gensquashfs, tar2sqfs and sqfs2tar. - CHANGELOG.md now references GitHub issue numbers. Changed/Removed: - LZO compressor removed from libsquashfs to avoid licensing problems. - Various API cleanups for libsquashfs before it reaches 1.0.0 Fixed: - Overriding configure variables for LZO library. - Do not follow symlinks when reading xattrs from input files. - Ignore directory entry named "./" in tar2sqfs. - Reject empty string as directory name in libsquashfs. - Memory leak in tar2sqfs if entries are skipped. - Various tests misbehaving if SOURCE_DATE_EPOCH is set. - The no_xattr flag being ignored by tar2sqfs and gensquashfs. - libsquashfs rejecting 1M block size. - Disable signal handling for worker threads in libsquashfs data processor. - Error handling in the zstd compressor. - Out of bounds write in the LZO compressor. - Queue accounting in the compressor thread pool. - Name of libsquashfs pkg-config file. - Parsing of binary (i.e. non-textual) xattr values from tar files. - Parsing of GNU.sparse.name PAX attribute from tar files. - sqfsdiff: recurse into directories that are only in one image. Regards, David |
|
From: David O. <go...@in...> - 2019-10-08 23:12:59
|
Hi, squashfs-tools-ng 0.7 is released. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.7.tar.xz Signature: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.7.tar.xz.asc Signed tag: https://github.com/AgentD/squashfs-tools-ng.git v0.7 The major change in this version consists of exposing all of the SquashFS handling code through a library called libsquashfs. The library code itself has been re-licensed and is now made available under the terms and conditions of the LGPL version 3 or later. This allows dynamic linking with programs under different licenses, including proprietary ones. The rest of the tools and static helper libraries stay under the GPLv3. They also contain 3rd party contributions, so that's no longer my call anyway. The new library allows SquashFS to be used in a wide variety of applications. Not only applications that work with standard SquashFS images, but also ones that require a powerful, flexible, archive or package format that can be easily customized and embedded. In theory this refactoring should have been easy, since the code was already neatly structured in sub-components and helper libraries to begin with. In practice however, it required a little more time than anticipated to cleanly separate the generic stuff from the tool specific code, polishing the API and re-testing a lot of things. Changes from 0.6.1 to 0.7: Features: - LGPLv3 licensed, library `libsquashfs` containing all the SquashFS logic. - Legacy LZMA 1 compression support. - User configurable queue backlog for tar2sqfs and gensquashfs. - Make sqfsdiff continue comparing even if the types are different, but compatible (e.g. extended directory vs basic directory). - In gensquashfs & tar2sqfs, try to determine the number of available CPU cores and use the maximum by default. - Make "--keep-time" the default for tar2sqfs and use a flag to disable it. Fixed: - An off-by-one error in the directory index count. - Typo in configure fallback path searching for LZO library. - Typo that caused LZMA2 VLI filters to not be used at all. - Possible out-of-bounds access in LZO compressor constructor. - Inverted logic in sqfs2tar extended attributes processing. - Start numbering inodes at 1, instead of 2. - Omit the mode bits in the inodes, only store permissions. Removed: - Comparison with directory from sqfsdiff. Regards, David |
|
From: Phillip L. <phi...@gm...> - 2019-08-29 04:13:52
|
Hi, I'm pleased to announce the release of Squashfs tools 4.4. This is the first release in over 5 years, and there are substantial improvements: reproducible builds, new compressors, CVE fixes, security hardening and new options for Mksquashfs/Unsquashfs. The new release can be downloaded here: http://sourceforge.net/projects/squashfs/files/latest/download?source=files Summary of changes in Squashfs tools 4.4 ---------------------------------------- 1. Mksquashfs now generates reproducible images by default. Mkfs time and file timestamps can also be specified. 2. Support for the Zstandard (ZSTD) compression algorithm has been added. 3. Pseudo files now support symbolic links. 4. CVE-2015-4645 and CVE-2015-4646 have been fixed. 5. Unsquashfs has been further hardened against corrupted filestems. 6. Unsquashfs is now more strict about error handling. 7. Miscellaneous new options and major bug fixes for Mksquashfs. 8. Miscellaneous new options and major bug fixes for Unsquashfs. 9. Squashfs-tools 4.4 is compatible with all earlier 4.x filesystems and releases. 1. Introducing reproducible builds ---------------------------------- Ever since Mksquashfs was parallelised back in 2006, there has been a certain randomness in how fragments and multi-block files are ordered in the output filesystem even if the input remains the same. This is because the multiple parallel threads can be scheduled differently between Mksquashfs runs. For example, the thread given fragment 10 to compress may finish before the thread given fragment 9 to compress on one run (writing fragment 10 to the output filesystem before fragment 9), but, on the next run it could be vice-versa. There are many different scheduling scenarios here, all of which can have a knock on effect causing different scheduling and ordering later in the filesystem too. Mkquashfs doesn't care about the ordering of fragments and multi-block files within the filesystem, as this does not affect the correctness of the filesystem. In fact not caring about the ordering, as it doesn't matter, allows Mksquashfs to run as fast as possible, maximising CPU and I/O performance. But, in the last couple of years, Squashfs has become used in scenarios (cloud etc) where this randomness is causing problems. Specifically this appears to be where downloaders, installers etc. try to work out the differences between Squashfs filesystem updates to minimise the amount of data that needs to transferred to update an image. Additionally, in the last couple of years has arisen the notion of reproducible builds, that is the same source and build environment etc should be able to (re-)generate identical output. This is usually for verification and security, allowing binaries/distributions to be checked for malicious activity. See https://reproducible-builds.org/ for more information. Mksquashfs now generates reproducible images by default. Images generated by Mksquashfs will be ordered identically to previous runs if the same input has been supplied, and the same options used. 1.1.1 Dealing with timestamps Timestamps embedded in the filesystem will stiil cause differences. Each new run of Mksquashfs will produce a different mkfs (make filesystem) timestamp in the super-block. Moreover if any file timestamps have changed (even if the content hasn't), this will produce a difference. To prevent timestamps from producing differences, the following new Mksquashfs options have been added. 1.1.2 -mkfs-time <time> This option takes a positive time value (which is the number of seconds since the epoch of 1970-01-01 00:00:00 UTC), and sets the file system timestamp to that. Squashfs uses an unsigned 32-bit integer to store time, and the time given should be in that range. Obviously you can use the date command to convert dates into this value, i.e. % mksquashfs source source.sqsh -mkfs-time $(date +%s -d "Jan 1 2019 19:00") 1.1.3 -all-time <time> This option takes a positive time value (which is the number of seconds since the epoch of 1970-01-01 00:00:00 UTC), and sets the timestamp on all files to that (but not the mkfs time). 1.1.4 environment variable SOURCE_DATE_EPOCH As an alternative to the above command line options, you can set the environment variable SOURCE_DATE_EPOCH to a time value. This value will be used to set the mkfs time. Also any file timestamps which are after SOURCE_DATE_EPOCH will be clamped to SOURCE_DATE_EPOCH. See https://reproducible-builds.org/docs/source-date-epoch/ for more information. Note: both SOURCE_DATE_EPOCH and the command line options cannot be used at the same time. They are different ways to do the same thing, and both have FORCE sematics which mean they can't be over-ridden elsewhere (otherwise it would defeat the purpose). 1.1.5 -not-reproducible This option tells Mksquashfs that the files do not have to be strictly ordered. This will make Mksquashfs behave like version 4.3. 2. Zstandard (ZSTD) compression added ------------------------------------- This is named zstd. It supports the following compression options. zstd -Xcompression-level <compression-level> <compression-level> should be 1 .. 22 (default 15) 3. Pseudo file symbolic link support added ------------------------------------------ Pseudo definition Filename s mode uid gid symlink uid and gid can be either specified as a decimal number, or by name. Note mode is ignored, as symlinks always have "rwxrwxrwx" permissions. For example: symlink s 0 root root example creates a symlink "symlink" to file "example" with root uid/gid. 4. CVE-2015-2015-4645 and CVE-2015-4646 --------------------------------------- These CVEs were raised due to Unsquashfs having variable overflow and stack overflow in a number of vulnerable functions. All instances of variable overflow and stack overflow have been removed. 5. Unsquashfs hardened against corrupted filestems -------------------------------------------------- The filesystem super-block values and filesystem metadata tables are further sanity checked. More importantly, these values are now checked for validity against other values in the metadata tables, and these values must match. 6. Unsquashfs is now more strict about error handling ----------------------------------------------------- Unsquashfs splits errors into two categories: fatal errors and non-fatal errors. In this release a significant number of errors that were previously non-fatal have been hardened to fatal. Fatal errors are those which cause Unsquashfs to abort instantly. These are generally due to failure to read the filesystem (corruption), and/or failure to write files to the output filesystem, due to I/O error or out of space. Generally anything which is unexpected is a fatal error. Non-fatal errors are generally where support is lacking in the output filesystem, and it can be considered to be an expected failure. This includes the inability to write extended attributes (xattrs) to a filesystem that doesn't support them, the inability to create files on filesystem that doesn't support them (i.e. symbolic links on VFAT), and the inability to execute privileged operations as a user-process. The user may well know the filesystem cannot support certain operations and would prefer Unsquashfs to ignore then without aborting. Two new options have been added: 6.1. -ignore-errors This makes Unsquashfs behave like previous versions, and treats more errors as non-fatal. 6.2. -strict-errors This makes Unsquashfs treat every error as fatal, and it will abort instantly. 7. Miscellaneous new options and major bug fixes for Mksquashfs --------------------------------------------------------------- 7.1. -root-mode <mode> This sets the permissions of the root directory to the octal <mode>. This is mostly intended for when multiple sources are specified on the command line. In this instance Mksquashfs produces a dummy top level directory with permissions 0777 (rwxrwxrwx). This option allows the permissions to be changed. But the option can also be used when a single source is specified. 7.2. -quiet This suppresses all output from Mksquashfs, except the progress bar. The progress bar can disabled with -no-progress to produce completely silent output. This new option is useful for scripts. 7.3. -noId This is similar to the pre-existing -noI option, except, it specifies that only the Id table (uids and gids) should be uncompressed. This option was added to enable a use-case where uids and gids need to be updated after filesystem generation. 7.4. -offset <offset> This option skips <offset> bytes at the beginning of the output filesystem. Optionally a suffix of K, M or G can be given to specify Kbytes, Mbytes or Gbytes respectively. 7.5. Update lz4 wrapper to use new functions introduced in 1.7.0 7.5. Bug fix, don't allow "/" pseudo filenames 7.6. Bug fix, allow quoting of pseudo files, to better handle filenames with spaces 7.7. Fix compilation with glibc 2.25+ 8. Miscellaneous new options and major bug fixes for Unsquashfs --------------------------------------------------------------- 8.1. -lln[umeric] This is similar to the "-lls" option but displays uids and gids numerically. 8.2. -lc option This is similar to the "-ls" option except it only displays files and empty directories. 8.3. -llc option As "-llc" option but displays file attributes. 8.4. -offset <offset> This option skips <offset> bytes at the beginning of the input filesystem. Optionally a suffix of K, M or G can be given to specify Kbytes, Mbytes or Gbytes respectively. 8.5. -quiet This suppresses all output from Unsquashfs, except the progress bar. The progress bar can disabled with -no-progress to produce completely silent output. This new option is useful for scripts. 8.6. -UTC This option makes Unsquashfs display all times in the UTC time zone rather than using the default local time zone. 8.7. Update lz4 wrapper to use new functions introduced in 1.7.0 8.8. Bug fix, fatal and non-fatal errors now set the exit code to 1 8.9. Bug fix, fix time setting for symlinks 8.10. Bug fix, try to set sticky-bit when running as a user process 8.11. Fix compilation with glibc 2.25+ 9. Compatiblity --------------- Mksquashfs 4.4 generates 4.0 filesystems. These filesystems are fully compatible/interchangable with filesystems generated by Mksquashfs 4.x and are mountable on 2.6.29 and later kernels. |
|
From: David O. <go...@in...> - 2019-08-27 23:13:38
|
Hi, squashfs-tools-ng 0.6.1 is released. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.6.1.tar.xz Signed git tag: https://github.com/AgentD/squashfs-tools-ng.git v0.6.1 For this release I would like to especially thank Zachary Dremann for the great work on fuzzing the SquashFS parser in squashfs-tools-ng. Since the publication of the findings coincided with the release of version 0.6, I decided to skip the release announcement and focus on fixing the problems for a quick 0.6.1 release instead. In short, this release contains a bunch of important fixes. A couple new features have been added in 0.6, namely the ability for all existing tools to read and process xattrs from SquashFS images, a faster, thread pool based data block processor and full data deduplication. A new tool called `sqfsdiff` has been added that can compare file meta data and contents of two SquashFS images (or a SquashFS image against a directory), produce a meaningful report and optionally extract files that differ. Changes from 0.6 to 0.6.1: Features: - Add a change log - Add test programs for fuzzing tar and gensquashfs file format parsers Fixes: - Harden against integer overflows when parsing SquashFS images - Test against format limits when parsing directory entries - More thorough bounds checking when reading metadata blocks Changes from 0.5 to 0.6: Features: - New utility `sqfsdiff` that can compare squashfs images - rdsquashfs can now dump extended attributes for an inode - rdsquashfs can now optionally set xattrs on unpacked files - rdsquashfs can now optionally restore timestamps on unpacked files - sqfs2tar can now optionally copy xattrs over to the resulting tarball - gensquashfs can now optionally read xattrs from input files - gensquashfs now has a --one-file-system option - tar2sqfs and gensquashfs now output some simple statistics - Full fragment and data block deduplication - Support for SOURCE_DATE_EPOCH environment variable - Optimized, faster file unpacking order - Faster, pthread based, parallel block compressor Fixes: - Return the correct value from data_reader_create - Fix free() of stack pointer in id_table_read error path - Fix missing initialization of file fragment fields - Fix xattr OOL position - Fix super block flags: clear "no xattr" flag when writing xattrs - Fix xattr writer size accounting - Fix explicit NULL dereference in deserialize_fstree failure path - Fix tar header error reporting on 32 bit systems - Make sure file listing generated by rdsquashfs -d is properly escaped - Fix functions with side effect being used inside asserts - Fix zero padding of extracted data blocks - Fix forward seek when unpacking sparse files - Fix wrong argument type for gensquashfs --keep-time - Fix memory leak in dir-scan error code path - Fix chmod of symlinks in restore_fstree - Add proper copyright headers to all source files Cleanups: - Various internal data structure and code cleanups - Overhaul README and convert it to markdown After 0.6, there should be just 1 or at most 2 more minor version releases with new features on the road to 1.0.0. As of right now, only the following things are still left in the pipeline: - Support for hard links (and hard link based inode deduplication). - Xattrs from a config file; similar to SELinux label files. - A tool that can append/edit existing images without unpacking. - Restructure the support libraries into one shared library with a sensible API and a more permissive license for external use. Regards, David |
|
From: David O. <go...@in...> - 2019-07-28 18:25:37
|
Hi, squashfs-tools-ng 0.5 is released. Tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.5.tar.xz Signed git tag: https://github.com/AgentD/squashfs-tools-ng.git v0.5 This release adds one big feature that was still missing from squashfs-tools, namely support for NFS export. A few minor features such as xattr value de-duplication were also added. Complete file de-duplication however is currently still in the pipeline and not quite stable yet for the current release. Primarily however, this release contains a load of fixes and cleanups. A lot of experiments have been performed using much larger real life filesystem images, including typical live CD images, leading to discovery of many corner cases that still had some issues. Most importantly, this is the first one to incorporate fixes and feedback received received from downstream contributors and other projects. Please also note that this release contains a sanitized README file which prompted an earlier than planned release, since there is currently an on-going dispute around that on the bugs.debian.org mailing list: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=931965#29 Changes from 0.4.2 to 0.5: Features: - Implement generating an inode table for NFS export - Add support for xattr value deduplication - Add a way to optionally keep the original time stamps - Enable largefile support - Implement simple, fork() based parallel unpacking in rdsquashfs Fixes: - Remove unfriendly words about squashfs-tools from README - Propper error message for ZSTD compressor - Correct copy-and-paste mistake in the build system - Make sure xattr string table is propperly initialized - More lenient tar checksum verification - Fix xattr unit test - Fix possible leak in tar2sqfs if writing xattrs fails - Fix corner cases in directory list parsing - Fix processing of tar mtime on 32 bit systems - libfstree: fix signed/unsigned comparisons - Fix fragment reader out of bounds read when loading table - Fix checks of super block block size - Fix potential resource leak in deserialize_tree - Enforce reasonable upper and low bounds on the size of tar headers - Make sure target in fstree_mknode is always set when creating a symlink - Use safer string copy function to fill tar header Cleanups: - Cleanup xattr handling - Remove atime/ctime processing code - Replace reads in squashfs with positional reads - Rename table.c to write_table.c in accordance to function it contains - Cleanup sqfs_write_table - Add generic read_table function similar to write_table - Remove some redundant header inclusions - Remove unneccessary conditionals from automake files Regards, David |
|
From: David O. <go...@in...> - 2019-07-04 23:47:31
|
Hi, this announcement marks the release of a new, much improved version of the squashfs tooling initially proposed in early June. Release tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.4.tar.xz git tree: https://github.com/AgentD/squashfs-tools-ng Since the initial announcement (version 0.1), a lot of work has gone into cleanup and more extensive testing. A number of issues have also been discovered through static code analysis (coverity scan and similar tools) and have been fixed, leaping closer to a stable code base. Feature wise, two additional tools have been added: - sqfs2tar - tar2sqfs Doing exactly what the name says, sqfs2tar turns a squashfs image into a tar ball, written to stdout and tar2sqfs reads a tar ball from stdin (GNU tar, v7, pre-POSIX ustar, POSIX tar/PAX; supporting Xattrs and sparse files) and generates a squashfs image. Regards, David |
|
From: David O. <go...@in...> - 2019-06-09 23:46:04
|
Thanks for checking it out! On 6/9/19 8:58 AM, Guan Xin wrote: > BTW, "empty directories cannot have xattrs" -- Might actually be implemented. > Just tried with squash-tools 4.3 with setfattr on empty dir/mksquashfs > -xattrs/mount > and getfattr succeeded. My concern was that a directory needs to have an LDIR inode to have xattrs. The LDIR inode requires a directory index, which (in theory) cannot be empty (count is off by 1, so count=0 means 1 entry). I took a look at the mksquashfs source again and examined a sample file system with a hex editor. The index count is simply set to 0 but the index is omitted. The kernel and unsquashfs don't seem to bother since the directory has size 0. It feels very much like this is working out by chance rather than by design. Anyway, I went ahead and patched the gensquahfs tool to do the same. Thanks, David |
|
From: Guan X. <gua...@gm...> - 2019-06-09 06:59:23
|
Hi, Interesting tool! Nice to have it with syntax similar to that of archive utilities. BTW, "empty directories cannot have xattrs" -- Might actually be implemented. Just tried with squash-tools 4.3 with setfattr on empty dir/mksquashfs -xattrs/mount and getfattr succeeded. Regards, Guan On Sun, Jun 9, 2019 at 9:49 AM Goliath <go...@in...> wrote: > > Hi, > > after running into a bunch of limitations with the existing tools, I took > the liberty of piecing together a new squashfs packer and extractor that > intend to be feature wise compatible with the existing ones, but with a > few important improvements, such as: > > - Tooling inspired to `gen_init_cpio` from the kernel > - Easy micro management of the file system structure > - Precise control of permissions and ownership > - Allows non-root users to easily build images with e.g. SUID binaries > and device special files > - SELinux support through SELinux context files (see selabel_file(5)) > - Deterministic, reproducible image generation > > > My initial plan was to integrate this into upstream squashfs-tools, but > upstream development appears to be pretty stale and the code base itself > is actually in a fairly messy state, so I started afresh. > > The programs in the package have been specifically named to not clash with > the existing tools, so they can be installed and used side by side. > > For the time being, I published the git tree on GitHub. A link to a release > tarball can also be found below. > > I only did some basic testing so far with a few variations of root file systems > that I could boot from in Qemu and on some embedded boards I have sitting > around. > > Any feedback would be welcome. > > > Release tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.1.tar.xz > > git tree: https://github.com/AgentD/squashfs-tools-ng > > > Regards, > > David > > > _______________________________________________ > Squashfs-devel mailing list > Squ...@li... > https://lists.sourceforge.net/lists/listinfo/squashfs-devel |
|
From: Goliath <go...@in...> - 2019-06-09 01:48:54
|
Hi,
after running into a bunch of limitations with the existing tools, I took
the liberty of piecing together a new squashfs packer and extractor that
intend to be feature wise compatible with the existing ones, but with a
few important improvements, such as:
- Tooling inspired to `gen_init_cpio` from the kernel
- Easy micro management of the file system structure
- Precise control of permissions and ownership
- Allows non-root users to easily build images with e.g. SUID binaries
and device special files
- SELinux support through SELinux context files (see selabel_file(5))
- Deterministic, reproducible image generation
My initial plan was to integrate this into upstream squashfs-tools, but
upstream development appears to be pretty stale and the code base itself
is actually in a fairly messy state, so I started afresh.
The programs in the package have been specifically named to not clash with
the existing tools, so they can be installed and used side by side.
For the time being, I published the git tree on GitHub. A link to a release
tarball can also be found below.
I only did some basic testing so far with a few variations of root file systems
that I could boot from in Qemu and on some embedded boards I have sitting
around.
Any feedback would be welcome.
Release tarball: https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.1.tar.xz
git tree: https://github.com/AgentD/squashfs-tools-ng
Regards,
David
|
|
From: Glass c. in s. s. &P. M. i. c. <ki...@cf...> - 2016-06-05 00:42:19
|
Dear Sir, Nice to know you through website. We know you purchasing castings from China,so our factory hope to have a chance on our cooperation. We mainly produce lost-wax casting for steel parts. We have own CNC machining shop. We specialize in this field for several years, with good quality and pretty competitive price. Any questions and enquiries will be highly regarded. Just email us the drawing and detailed requirement, you will get a complete quotation with technical analysis within 24 hours. FREE SAMPLES can be sent on request. Reply me, let“s talk more! Thanks and best regards, Yang Shengwu General Manager Add: Linqing,Shandong, China ********************************************************************** From: Flying ants company (Professional global business promotion team) If you need to product promotion, please reply to product promotion consultation Global Business Development ! *********************************************************************** https://picasaweb.google.com/lh/sredir?uname=117160737930366981427&target=ALBUM&id=6292502110013577489&authkey=Gv1sRgCI_lzJTL6MSBBw&invite=CNvzikg&feat=email |
|
From: Renato <ren...@gm...> - 2015-09-26 18:30:59
|
Hi, I have made a custom linux distribution to use inside my company. The system basic relys on 10 squashfs that are mounted and "merged" using aufs acording to the person who is loggin. I have noticed that mksquashfs doesn't generates the same image (I mean, the content is the same, but the image signature is not) for the same source. Just a simple example to explain what I mean: cd /tmp mkdir test echo "Hello world" >test/file.txt mksquashfs test test1.img sleep 2s mksquashfs test test2.img sha1sum test1.img test2.img sha1sum will tell that test1 and test2 have different signatures. But if I run the same command without the sleep (aka, the two mksquashfs on the same second), then the images get the same signature. Looks lime mksquashfs uses time() function to add some salt to the image. I couldn't find any parameter to disable it. Is it possible? Thanks |
|
From: ---VENGAN A L. DE CALIFORNIA-TE:360-3673/360*0416--A 30 M. DE
LIMA.---G. <lad...@mi...> - 2008-10-04 21:30:31
|
Haga click en el siguiente link http://img299.imageshack.us/my.php?image=veranoenladeras1ow6.jpg MIERCOLES,JUEVES,VIERNES,SABADO,DOMINGO VENGAN A PASAR EL DIA CON NOSOTROS HAGA SU RESERVA. (Dias de semana, previa llamada telefonica) 360-0416 /360-3673 /360-2189 NEXTEL 824*9320 / 824*9306 * VEINTE MIL M2 DE AREAS VERDES * ALQUILER DE BUNGALOWS * RESTAURANT,BAR,POLLOS A LA LEÑA,ALQUILER DE PARRILLAS * PISCINAS,PISCINA PARA NIÑOS,CANCHA DE FULBITO,PALETA FRONTON,VOLEY * PING PONG,BILLAR,FULBITO DE MANO,JUEGOS DE MESA * SUBIBAJA,CAMA ELASTICA,COLUMPIOS,PASAMANOS * EXCELENTE MICROCLIMA Y SOL TODO EL AÑO " DISPONEMOS DE EQUIPO DE KARAOKE * AREA DE CAMPING,CONSULTENOS INVITA A TU FAMILIA Y/O AMIGOS. ATENDEMOS COLEGIOS,RETIROS,CUMPLEAÑOS,FIESTAS INFANTILES, ALMUERZOS DE CAMARADERÍA,CONVENCIONES O EMPRESAS LOS ESTAREMOS ESPERANDO GUSTOSOS DE PODER ATENDERLOS. DIRECCION:AV EL BOSQUE 401 URBANIZACION CALIFORNIA ALTA,PASANDO CHACLACAYO ANTES DEL PUENTE LOS ANGELES NO LO CRUCE, SIGA DE FRENTE,PARALELO AL RIO. SIGA 2KM (TENEMOS SEÑALIZACION CARTELES FLECHAS DESDE 3.3KM ANTES. TELEFONOS:3603673,3600416 SI USTED TIENE INTERES EN QUE LE ENVIEMOS VISTAS DE NUESTRO LOCAL ENVIENOS UN E-MAILS SOLICITANDO FOTOS E-MAIL: las...@la... inv...@la... Si solo desea pasar el día, hay un consumo mínimo de S/. 30.00 por persona adulta. El alquiler de parrilla: US. $ 10.00 ( Carbon, utensilios y todo tipo de salsas ) Aceptamos Tarjetas de Crédito ( Master Card, Visa, Diners Club.American Express y Ripley ). Para mayor información y reservaciones sírvase llamar a nuestros teléfonos 3603673 - 3600416 Atentamaente ivan otero jhonattan................ LIMA-PERU LAS LADERAS DE CALIFORNIA AGRADECE LA RECEPCION DE NUESTRO E-MAIL. Para no volver a recibir estos mensajes responda por favor escribiendo a: rem...@la... REMOVER Y SERA REMOVIDO A LA BREVEDAD MUCHAS GRACIAS SI NO SE MOSTRASEN LAS IMAGENES POR FAVOR HACER CLICK EN EL SIGUIENTE LINK: http://perso.gratisweb.com/elpalmo112/empresas.doc hjmhghggcf |
|
From: Peter K. <ja...@su...> - 2006-08-21 07:22:45
|
>>>>> "Phillip" == Phillip Lougher <ph...@lo...> writes:
Hi,
Phillip> Comments, especially any performance results of the new parallelised
Phillip> Mksquashfs are welcome.
It seems to work nicely.
Performance results of mksquashfs'ing a kernel tree on a quad 2.2GHz
Opteron with 5GB RAM:
% time ./squashfs3.0/squashfs-tools/mksquashfs ~/localsvn/linux-trunk
~/tmp/squashfs3.0.squash
Creating little endian 3.0 filesystem on
/home/peko/tmp/squashfs3.0.squash, block size 65536.
Little endian filesystem, data block size 65536, compressed data,
compressed metadata, compressed fragments
Filesystem size 55909.60 Kbytes (54.60 Mbytes)
12.47% of uncompressed filesystem size (448289.73 Kbytes)
Inode table size 621676 bytes (607.11 Kbytes)
19.80% of uncompressed inode table size (3140085 bytes)
Directory table size 764627 bytes (746.71 Kbytes)
37.09% of uncompressed directory table size (2061409 bytes)
Number of duplicate files found 64623
Number of inodes 99489
Number of files 85860
Number of fragments 3079
Number of symbolic links 0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 13629
Number of uids 1
peko (1000)
Number of gids 0
./squashfs3.0/squashfs-tools/mksquashfs ~/localsvn/linux-trunk
40.99s user 3.04s system 96% cpu 45.719 total
vs:
% time ./squashfs3.1/squashfs-tools/mksquashfs ~/localsvn/linux-trunk
~/tmp/squashfs3.1.squashfs
Parallel mksquashfs: Using 4 processors
Creating little endian 3.0 filesystem on
/home/peko/tmp/squashfs3.1.squashfs, block size 65536.
Little endian filesystem, data block size 65536, compressed data,
compressed metadata, compressed fragments
Filesystem size 55890.57 Kbytes (54.58 Mbytes)
12.47% of uncompressed filesystem size (448289.73 Kbytes)
Inode table size 601962 bytes (587.85 Kbytes)
19.17% of uncompressed inode table size (3140085 bytes)
Directory table size 764659 bytes (746.74 Kbytes)
37.09% of uncompressed directory table size (2061409 bytes)
Number of duplicate files found 64624
Number of inodes 99489
Number of files 85860
Number of fragments 3079
Number of symbolic links 0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 13629
Number of uids 1
peko (1000)
Number of gids 0
./squashfs3.1/squashfs-tools/mksquashfs ~/localsvn/linux-trunk
41.28s user 2.72s system 230% cpu 19.055 total
The machine isn't idle, so take the numbers with a grain of salt -
nifty nonetheless.
--
Bye, Peter Korsgaard
|
|
From: Phillip L. <ph...@lo...> - 2006-08-21 02:13:44
|
Hi,
I'm pleased to announce Squashfs version 3.1. Squashfs 3.1 has some
major improvements to the squashfs-tools, a couple of major bug fixes,
lots of small improvements/bug fixes, and new kernel patches.
The detailed list of changes from the change-log are as follows:
1. Mksquashfs has been rewritten to be multi-threaded. It has the
following improvements
1.1. Parallel compression. By default as many compression and
fragment compression threads are created as there are available
processors. This significantly speeds up performance on SMP
systems.
1.2. File input and filesystem output is peformed in parallel on
separate threads to maximise I/O performance. Even on single
processor systems this speeds up performance by at least 10%.
1.3. Appending has been significantly improved, and files within the
filesystem being appended to are no longer scanned and
checksummed. This significantly improves append time for large
filesystems.
1.4. File duplicate checking has been optimised, and split into two
separate phases. Only files which are considered possible
duplicates after the first phase are checksummed and cached in
memory.
1.5 The use of swap memory was found to significantly impact
performance. The amount of memory used to cache files is now a
command line option, by default this is 512 Mbytes.
2. Unsquashfs has the following improvements
2.1 Unsquashfs now allows you to specify the filename or the
directory within the Squashfs filesystem that is to be
extracted, rather than always extracting the entire filesystem.
2.2 A new -force option has been added which forces Unsquashfs to
output to the destination directory even if files and directories
already exist in the destination directory. This allows you to
update an already existing directory tree, or to Unsquashfs to
a partially filled directory tree. Without the -force option
Unsquashfs will refuse to output.
3. The following major bug fixes have been made
3.1 A fragment table rounding bug has been fixed in Mksquashfs.
Previously if the number of fragments in the filesystem
were a multiple of 512, Mksquashfs would generate an
incorrect filesystem.
3.2 A rare SMP bug which occurred when simultaneously acccessing
multiply mounted Squashfs filesystems has been fixed.
4. Miscellaneous improvements/bug fixes
4.1 Kernel code stack usage has been reduced. This is to ensure
Squashfs works with 4K stacks.
4.2 Readdir (Squashfs kernel code) has been fixed to always
return 0, rather than the number of directories read. Squashfs
should now interact better with NFS.
4.3 Lseek bug in Mksquashfs when appending to larger than 4GB
filesystems fixed.
4.4 Squashfs 2.x initrds can now been mounted.
4.5 Unsquashfs exit status fixed.
4.6 New patches for linux-2.6.18 and linux-2.4.33.
Comments, especially any performance results of the new parallelised
Mksquashfs are welcome.
Phillip
|
|
From: Phillip L. <ph...@lo...> - 2003-03-13 05:30:45
|
Hi, Squashfs1.2 has been released! Squashfs1.2 adds append capability to mksquashfs. Mksquashfs can now add new sourcec files/directories to existing squashfs filesystems. Three new options "-noappend", "-keep-as-directory" and "-root-beomes" have been added. Regards Phillip Lougher |
|
From: <ang...@ya...> - 2003-02-04 15:29:51
|
Hello sir, Can anybody tell me in detail that what is Squash FS.I am very keen to know about it as how the compression is done, Bye Catch all the cricket action. Download Yahoo! Score tracker |