From ceb86b571c1cabf2a0890603b140a1af99912fd9 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Wed, 27 May 2020 14:57:48 +0200 Subject: Cleanup: move man pages to the respective program source directories Signed-off-by: David Oberhollenzer --- bin/Makemodule.am | 4 + bin/gensquashfs/gensquashfs.1 | 201 ++++++++++++++++++++++++++++++++++++++++++ bin/rdsquashfs/rdsquashfs.1 | 99 +++++++++++++++++++++ bin/sqfs2tar/sqfs2tar.1 | 93 +++++++++++++++++++ bin/sqfsdiff/sqfsdiff.1 | 72 +++++++++++++++ bin/tar2sqfs/tar2sqfs.1 | 154 ++++++++++++++++++++++++++++++++ doc/Makemodule.am | 3 - doc/gensquashfs.1 | 201 ------------------------------------------ doc/rdsquashfs.1 | 99 --------------------- doc/sqfs2tar.1 | 93 ------------------- doc/sqfsdiff.1 | 72 --------------- doc/tar2sqfs.1 | 154 -------------------------------- 12 files changed, 623 insertions(+), 622 deletions(-) create mode 100644 bin/gensquashfs/gensquashfs.1 create mode 100644 bin/rdsquashfs/rdsquashfs.1 create mode 100644 bin/sqfs2tar/sqfs2tar.1 create mode 100644 bin/sqfsdiff/sqfsdiff.1 create mode 100644 bin/tar2sqfs/tar2sqfs.1 delete mode 100644 doc/gensquashfs.1 delete mode 100644 doc/rdsquashfs.1 delete mode 100644 doc/sqfs2tar.1 delete mode 100644 doc/sqfsdiff.1 delete mode 100644 doc/tar2sqfs.1 diff --git a/bin/Makemodule.am b/bin/Makemodule.am index 2328d5c..298734d 100644 --- a/bin/Makemodule.am +++ b/bin/Makemodule.am @@ -41,4 +41,8 @@ if WITH_SELINUX gensquashfs_CPPFLAGS += -DWITH_SELINUX endif +dist_man1_MANS += bin/gensquashfs/gensquashfs.1 bin/rdsquashfs/rdsquashfs.1 +dist_man1_MANS += bin/sqfs2tar/sqfs2tar.1 bin/tar2sqfs/tar2sqfs.1 +dist_man1_MANS += bin/sqfsdiff/sqfsdiff.1 + bin_PROGRAMS += sqfs2tar tar2sqfs gensquashfs rdsquashfs sqfsdiff diff --git a/bin/gensquashfs/gensquashfs.1 b/bin/gensquashfs/gensquashfs.1 new file mode 100644 index 0000000..9ef4ee8 --- /dev/null +++ b/bin/gensquashfs/gensquashfs.1 @@ -0,0 +1,201 @@ +.TH GENSQUASHFS "1" "June 2019" "generate squashfs images" "User Commands" +.SH NAME +gensquashfs \- generate squashfs images +.SH SYNOPSIS +.B gensquashfs +[\fI\,OPTIONS\/\fR] \/\fR +.SH DESCRIPTION +Generate a SquashFS image. +.SH OPTIONS +.TP +\fB\-\-pack\-file\fR, \fB\-F\fR +Use a \fBgen_init_cpio\fR style description file. The file format is specified +below. If \fB\-\-pack\-dir\fR is used, input file paths are relative to the +pack directory, otherwise they are relative to the directory the pack file +is in. +.TP +\fB\-\-pack\-dir\fR, \fB\-D\fR +If \fB\-\-pack\-file\fR is used, this is the root path relative to which to +read files. If no pack file is specified, pack the contents of the given +directory into a SquashFS image. The directory becomes the root of the file +system. +.TP +\fB\-\-compressor\fR, \fB\-c\fR +Select the compressor to use. +Run \fBgensquashfs \-\-help\fR to get a list of all available compressors +and the default selection. +.TP +\fB\-\-comp\-extra\fR, \fB\-X\fR +A comma separated list of extra options for the selected compressor. Specify +\fBhelp\fR to get a list of available options. +.TP +\fB\-\-num\-jobs\fR, \fB\-j\fR +If libsquashfs was compiled with a built in thread pool based, parallel data +compressor, this option can be used to set the number of compressor +threads. If not set, the default is the number of available CPU cores. +.TP +\fB\-\-queue\-backlog\fR, \fB\-Q\fR +Maximum number of data blocks in the thread worker queue before the packer +starts waiting for the block processors to catch up. Higher values result +in higher memory consumption. Defaults to 10 times the number of workers. +.TP +\fB\-\-block\-size\fR, \fB\-b\fR +Block size to use for Squashfs image. +Defaults to 131072. +.TP +\fB\-\-dev\-block\-size\fR, \fB\-B\fR +Device block size to padd the image to. +Defaults to 4096. +.TP +\fB\-\-keep\-time\fR, \fB\-k\fR +When using \fB\-\-pack\-dir\fR only, use the timestamps from the input files +instead of setting defaults on all input paths. The root inode and the +modification time on the SquashFS image itself will still be set to defaults. +.TP +\fB\-\-one\-file\-system\fR, \fB\-o\fR +When using \fB\-\-pack\-dir\fR only, stay in the local filesystem and do not +cross mount points. +.TP +\fB\-\-defaults\fR, \fB\-d\fR +A comma separated list of default values for +implicitly created directories. +The following values can be set: +.TS +tab(;) allbox; +l l +l l +l l +l l +l l +rd. +\fBOption\fR;\fBDefault\fR +uid=;0 +gid=;0 +mode=;0755 +mtime=;\fB$SOURCE\_DATE\_EPOCH\fR if set, 0 otherwise +.TE +.TP +.TP +\fB\-\-set\-uid\fR, \fB\-u\fR +Force the owners user ID for ALL inodes to this value, no matter what the pack +file or directory entries actually specify. +.TP +\fB\-\-set\-gid\fR, \fB\-g\fR +Force the owners group ID for ALL inodes to this value, no matter what the pack +file or directory entries actually specify. +.TP +\fB\-\-all\-root\fR +A short hand for `\-\-set\-uid 0 \-\-set\-gid 0`. +.TP +\fB\-\-selinux\fR, \fB\-s\fR +If built with SELinux support, use the given SELinux label file to add context +labels to the elements packed into the SquashFS image. +.TP +\fB\-\-exportable\fR, \fB\-e\fR +Generate an export table for NFS support. +.TP +\fB\-\-no\-tail\-packing\fR, \fB\-T\fR +Do not perform tail end packing on files that are larger than the specified +block size. +.TP +\fB\-\-force\fR, \fB\-f\fR +Overwrite the output file if it exists. +.TP +\fB\-\-quiet\fR, \fB\-q\fR +Do not print out progress reports. +.TP +\fB\-\-help\fR, \fB\-h\fR +Print help text and exit. +.TP +\fB\-\-version\fR, \fB\-V\fR +Print version information and exit. +.SH INPUT FILE FORMAT +The input file contains a simple, newline separated list that describe the +files to be included in the squashfs image: +.PP +.in +4n +.nf +# a comment +file [] +dir +nod +slink +link +pipe +sock +.fi +.in + +.TS +tab(;) allbox; +l l +l l +l l +l l +l l +l l +l l +l l +l l +rd. +;T{ +Absolute path of the entry in the image. Can be put in quotes +if some components contain spaces. +T} +;T{ +Optional location of the input file. Can be specified relative to either the +description file or the pack directory. If omitted, the image path is used +as a relative path. +T} +;Symlink or hardlink target. +;Mode/permissions of the entry. +;Numeric user id. +;Numeric group id. +;Device type (b=block, c=character). +;Major number of a device special file. +;Minor number of a device special file. +.TE + +.PP +Example: +.PP +.in +4n +.nf +# A simple squashfs image +dir /dev 0755 0 0 +nod /dev/console 0600 0 0 c 5 1 +dir /root 0700 0 0 +dir /sbin 0755 0 0 + +# Add a file. Input is relative to pack dir or listing path +file /sbin/init 0755 0 0 ../init/sbin/init + +# Read from ./bin/bash relative to pack dir or listing path +# /bin is created implicitly with default attributes. +file /bin/bash 0755 0 0 + +# file name with a space in it and a "special" name +file "/opt/my app/\\"special\\"/data" 0600 0 0 +.fi +.in +.SH ENVIRONMENT +If the command line switch \fB\-\-defaults\fR is not used or no default mtime +is specified, the value of the environment variable \fBSOURCE\_DATE\_EPOCH\fR +is used for all file and filesystem timestamps. + +If \fBSOURCE\_DATE\_EPOCH\fR is not set, not a parsable number or it is out of +range, the timestamps default to 0. + +Environment variables are only used if no explicit command line switches +are set. Explicit command line switches are always preferred over the +environment variables. +.SH SEE ALSO +rdsquashfs(1), tar2sqfs(1) +.SH AUTHOR +Written by David Oberhollenzer. +.SH COPYRIGHT +Copyright \(co 2019 David Oberhollenzer +License GPLv3+: GNU GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. diff --git a/bin/rdsquashfs/rdsquashfs.1 b/bin/rdsquashfs/rdsquashfs.1 new file mode 100644 index 0000000..a5e1d77 --- /dev/null +++ b/bin/rdsquashfs/rdsquashfs.1 @@ -0,0 +1,99 @@ +.TH RDSQUASHFS "1" "May 2019" "inspect SquashFS filesystems" "User Commands" +.SH NAME +rdsquashfs \- tool to examine or uncompress SquashFS filesystems +.SH SYNOPSIS +.B rdsquashfs +[\fI\,OPTIONS\/\fR] \fI\,\/\fR +.SH DESCRIPTION +View or extract the contents of a squashfs image. +.PP +The following options can be used to specify what operation to perform. One +of those has to be present: +.TP +\fB\-\-list\fR, \fB\-l\fR +Produce a directory listing similar to \fBls \-l\fR for a given path in +the SquashFS image. +.TP +\fB\-\-cat\fR, \fB\-c\fR +If the specified path is a regular file in the image, extract it and dump +its contents to stdout. +.TP +\fB\-\-xattr\fR, \fB\-x\fR +If the inode that the specified path resolves to has extended attributes, dump +them as key value pairs to stdout. +.TP +\fB\-\-unpack\-path\fR, \fB\-u\fR +Unpack the specified sub directory from the image. To unpack everything, +simply specify /. +.TP +\fB\-\-describe\fR, \fB\-d\fR +Produce a file listing from the image compatible with the format consumed by +gensquashfs. +.PP +The following options can be used to control the behaviour of the specified +operation: +.TP +\fB\-\-unpack\-root\fR, \fB\-p\fR +If used with \fB\-\-unpack\-path\fR, this is where the +data is unpacked to. If used with \fB\-\-describe\fR, this +is used as a prefix for the input path of +regular files. +.TP +\fB\-\-no\-dev\fR, \fB\-D\fR +Skip device special files when parsing the filesystem tree. +.TP +\fB\-\-no\-sock\fR, \fB\-S\fR +Skip socket files when parsing the filesystem tree. +.TP +\fB\-\-no\-fifo\fR, \fB\-F\fR +Skip named pipes when parsing the filesystem tree. +.TP +\fB\-\-no\-slink\fR, \fB\-L\fR +Skip symbolic links when parsing the filesystem tree. +.TP +\fB\-\-no\-empty\-dir\fR, \fB\-E\fR +Skip empty directories, including ones that are empty after applying +the above rules. +.PP +The following options are specific to unpacking files from a SquashFS image +to disk: +.TP +\fB\-\-no\-sparse\fR, \fB\-Z\fR +Do not create sparse files. Always unpack sparse files by +writing blocks of zeros to disk. +.TP +\fB\-\-set\-xattr\fR, \fB\-X\fR +Set the extended attributes from the SquashFS image. +.TP +\fB\-\-set\-times\fR, \fB\-T\fR +Set the create and modify timestamps of the file to the mtime +from the SquashFS image. +.TP +\fB\-\-chmod\fR, \fB\-C\fR +Change permission flags of unpacked files to +those stored in the SquashFS image. +.TP +\fB\-\-chown\fR, \fB\-O\fR +Change ownership of unpacked files to the +UID/GID set in the SquashFS image. +.TP +\fB\-\-quiet\fR, \fB\-q\fR +Do not print out progress while unpacking. +.PP +Other options: +.TP +\fB\-\-help\fR, \fB\-h\fR +Print help text and exit. +.TP +\fB\-\-version\fR, \fB\-V\fR +Print version information and exit. +.SH SEE ALSO +gensquashfs(1), sqfs2tar(1), sqfsdiff(1) +.SH AUTHOR +Written by David Oberhollenzer. +.SH COPYRIGHT +Copyright \(co 2019 David Oberhollenzer +License GPLv3+: GNU GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. diff --git a/bin/sqfs2tar/sqfs2tar.1 b/bin/sqfs2tar/sqfs2tar.1 new file mode 100644 index 0000000..0fc69f6 --- /dev/null +++ b/bin/sqfs2tar/sqfs2tar.1 @@ -0,0 +1,93 @@ +.TH SQFS2TAR "1" "June 2019" "sqfs2tar" "User Commands" +.SH NAME +sqfs2tar \- turn a SquashFS image into a tar archive +.SH SYNOPSIS +.B sqfs2tar +[\fI\,OPTIONS\/\fR...] \fI\,\/\fR +.SH DESCRIPTION +Quickly and painlessly turn a SquashFS filesystem image into a tar archive +that can then be examined and processed by any tool that can work on tar +archives. The resulting archive is written to stdout. +.PP +Possible options: +.TP +\fB\-\-root\-becomes\fR, \fB\-r\fR +Prefix all paths in the tarball with the given directory name and add an +entry for this directory that receives all meta data (permissions, ownership, +extended attributes, et cetera) of the root inode. + +The special value \fB.\fR can be used since many tar archivers themselves pack +the attributes of the root directory that way and naturally support this. + +If this option is not used, all meta data from the root inode IS LOST! +.TP +\fB\-\-subdir\fR, \fB\-d\fR +Unpack the given sub directory instead of the filesystem root. Can be specified +more than once to select multiple directories. If only one is specified, it +becomes the new root of the archive filesystem tree. +.TP +\fB\-\-keep\-as\-dir\fR, \fB\-k\fR +If \fB\-\-subdir\fR is used only once, don't make the subdir the archive root, +instead keep it as prefix for all unpacked files. Using \fB\-\-subdir\fR more +than once implies \fB\-\-keep\-as\-dir\fR. +.TP +\fB\-\-no\-xattr\fR, \fB\-X\fR +Discard extended attributes from the SquashFS image. The default behavior is +to copy all xattrs attached to SquashFS inodes into the resulting tar archive. +.TP +\fB\-\-no\-hard\-links\fR, \fB\-L\fR +Normally, sqfs2tar runs hard link detection and generates hard links for +entries that refer to the same inode. If this flag is set, hard link +detection is not performed and duplicate data records are generated +instead. +.TP +\fB\-\-no\-skip\fR, \fB\-s\fR +Abort if a file cannot be stored in a tar archive. For instance, the tar format +does not support socket files, but SquashFS does. The default behaviour of +\fBsqfs2tar\fR is to emit a warning to stderr and skip the entry. If this flag +is set, processing is aborted and \fBsqfs2tar\fR exits with an error status. +.TP +\fB\-\-help\fR, \fB\-h\fR +Print help text and exit. +.TP +\fB\-\-version\fR, \fB\-V\fR +Print version information and exit. +.SH COMPATIBILITY +The output format is pre-POSIX ustar using GNU extensions where necessary. +Experimentation determined that this is most widely supported by activeley +used tar implementations (besides GNU tar), even more than the newer POSIX +format with PAX extensions. + +If any file or directory is encountered that cannot be converted, it is +skipped and a warning is written to stderr. Unless the \fB\-\-no\-skip\fR +option is set, which aborts processing if a file cannot be converted. + +This mainly affects socket files which are supported by SquashFS but not by +POSIX tar, GNU tar or PAX. + +Since the tar format contains a sequence of files with absolute names, it has +no direct concept of a tree or an unnamed root node. Consequently, meta data +from the SquashFS root inode is lost, unless the \fB\-\-root\-becomes\fR option +is used. +.SH EXAMPLES +Turn a SquashFS image into a tar archive: +.IP +sqfs2tar rootfs.sqfs > rootfs.tar +.TP +Turn a SquashFS image into a gzip'ed tar archive: +.IP +sqfs2tar rootfs.sqfs | gzip > rootfs.tar.gz +.TP +Turn a SquashFS image into an LZMA2 compressed tar archive: +.IP +sqfs2tar rootfs.sqfs | xz > rootfs.tar.xz +.SH SEE ALSO +rdsquashfs(1), tar2sqfs(1) +.SH AUTHOR +Written by David Oberhollenzer. +.SH COPYRIGHT +Copyright \(co 2019 David Oberhollenzer +License GPLv3+: GNU GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. diff --git a/bin/sqfsdiff/sqfsdiff.1 b/bin/sqfsdiff/sqfsdiff.1 new file mode 100644 index 0000000..c0ee550 --- /dev/null +++ b/bin/sqfsdiff/sqfsdiff.1 @@ -0,0 +1,72 @@ +.TH SQFSDIFF "1" "August 2019" "sqfsdiff" "User Commands" +.SH NAME +sqfsdiff \- compare two squashfs images by contents and metadata +.SH SYNOPSIS +.B sqfsdiff +[\fI\,OPTIONS\/\fR...] \-\-old \fI\,\fR \-\-new \fI\,\/\fR +.SH DESCRIPTION +Compare two squashfs images. In contrast to doing a direct diff of the +images, this actually parses the filesystems and generates a more +meaningful difference report. +.PP +If only contents are compared, any differences in packed file layout, +ordering, compression, inode meta data and so on is ignored and the two +images are considered equal if each directory contains the same entries, +symlink with the same paths have the same targets, device nodes the same +device number and files the same size and contents. +.PP +A report of any difference is printed to stdout. The exit status is similar +that of diff(1): 0 means equal, 1 means different, 2 means problem. +.PP +Possible options: +.TP +\fB\-\-old\fR, \fB\-a\fR +Specify the first filesystem image or source directory, relativ to which the +changes are evaluated. +.TP +\fB\-\-new\fR, \fB\-b\fR +Specify the second filesystem image to source directory to compare to the +first one. +.TP +\fB\-\-no\-contents\fR, \fB\-C\fR +Do not compare file contents. +.TP +\fB\-\-no\-owner\fR, \fB\-O\fR +Do not compare file owners. +.TP +\fB\-\-no\-permissions\fR, \fB\-P\fR +Do not compare permission bits. +.TP +\fB\-\-timestamps\fR, \fB\-T\fR +Compare file timestamps. +.TP +\fB\-\-inode\-num\fR, \fB\-I\fR +Compare inode numbers of all files. +.TP +\fB\-\-super\fR, \fB\-S\fR +Also compare meta data in super blocks. +.TP +\fB\-\-extract\fR, \fB\-e\fR +Extract files that exist in both images but have different contents to the +specified directory. Contents of the first image end up in a sub directory +named \fBold\fR and the contents of the second image in a sub directory +named \fBnew\fR. +.TP +\fB\-\-help\fR, \fB\-h\fR +Print help text and exit. +.TP +\fB\-\-version\fR, \fB\-V\fR +Print version information and exit. +.SH EXIT STATUS +The exit status is similar that of diff(1): 0 means equal, 1 means different, +2 means problem. +.SH SEE ALSO +rdsquashfs(1), sqfs2tar(1) +.SH AUTHOR +Written by David Oberhollenzer. +.SH COPYRIGHT +Copyright \(co 2019 David Oberhollenzer et al +License GPLv3+: GNU GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. diff --git a/bin/tar2sqfs/tar2sqfs.1 b/bin/tar2sqfs/tar2sqfs.1 new file mode 100644 index 0000000..da344ec --- /dev/null +++ b/bin/tar2sqfs/tar2sqfs.1 @@ -0,0 +1,154 @@ +.TH TAR2SQFS "1" "June 2019" "tar2sqfs" "User Commands" +.SH NAME +tar2sqfs \- create a SquashFS image from a tar archive +.SH SYNOPSIS +.B tar2sqfs +[\fI\,OPTIONS\/\fR...] \fI\,\/\fR +.SH DESCRIPTION +Quickly and painlessly turn a tar ball into a SquashFS filesystem image. +.PP +Possible options: +.TP +\fB\-\-root\-becomes\fR, \fB\-r\fR +If set, only pack entries that are underneath the specified directory. The +prefix is stripped and the meta data for the directory itself is copied to the +root inode (i.e. the ownership, permissions, extended attributes, +modification time). + +If this option is not set, tar2sqfs implicitly treats \fB./\fR or absolute +paths this way, i.e. if the archive contains an entry for \fB./\fR, it becomes +the root node and the prefix is stripped from all paths (and similar for +absolute paths and \fB/\fR). +.TP +\fB\-\-compressor\fR, \fB\-c\fR +Select the compressor to use. +Run \fBtar2sqfs \-\-help\fR to get a list of all available compressors +and the default selection. +.TP +\fB\-\-comp\-extra\fR, \fB\-X\fR +A comma separated list of extra options for the selected compressor. Specify +\fBhelp\fR to get a list of available options. +.TP +\fB\-\-num\-jobs\fR, \fB\-j\fR +If libsquashfs was compiled with a thread pool based, parallel data +compressor, this option can be used to set the number of compressor +threads. If not set, the default is the number of available CPU cores. +.TP +\fB\-\-queue\-backlog\fR, \fB\-Q\fR +Maximum number of data blocks in the thread worker queue before the packer +starts waiting for the block processors to catch up. Higher values result +in higher memory consumption. Defaults to 10 times the number of workers. +.TP +\fB\-\-block\-size\fR, \fB\-b\fR +Block size to use for SquashFS image. +Defaults to 131072. +.TP +\fB\-\-dev\-block\-size\fR, \fB\-B\fR +Device block size to padd the image to. +Defaults to 4096. +.TP +\fB\-\-defaults\fR, \fB\-d\fR +A comma separated list of default values for +implicitly created directories. +The following values can be set: +.TS +tab(;) allbox; +l l +l l +l l +l l +l l +rd. +\fBOption\fR;\fBDefault\fR +uid=;0 +gid=;0 +mode=;0755 +mtime=;\fB$SOURCE\_DATE\_EPOCH\fR if set, 0 otherwise +.TE +.TP +.TP +\fB\-\-no\-keep\-time\fR, \fB\-k\fR +Replace the time stamps from the tar archive with default time stamps for all +entries. + +The default behavior is to preserve the time stamps from the archive to the +extent possible (SquashFS has second resolution and 32 bit time stamps; tar can +use extensions to specify much larger timestamps with arbitrary precision). The +root inode (unless \fB\-\-root\-becomes\fR is used) and the modification time on +the SquashFS image itself will still be set to defaults. +.TP +\fB\-\-no\-xattr\fR, \fB\-x\fR +Do not copy extended attributes from archive. Default behaviour is to copy all +extended attributes and skip the ones that cannot be encoded in SquashFS. +.TP +\fB\-\-no\-skip\fR, \fB\-s\fR +Abort if a tar record cannot be read instead of skipping it. +.TP +\fB\-\-exportable\fR, \fB\-e\fR +Generate an export table for NFS support. +.TP +\fB\-\-no\-tail\-packing\fR, \fB\-T\fR +Do not perform tail end packing on files that are larger than the +specified block size. +.TP +\fB\-\-force\fR, \fB\-f\fR +Overwrite the output file if it exists. +.TP +\fB\-\-quiet\fR, \fB\-q\fR +Do not print out progress reports. +.TP +\fB\-\-help\fR, \fB\-h\fR +Print help text and exit. +.TP +\fB\-\-version\fR, \fB\-V\fR +Print version information and exit. +.SH COMPATIBILITY +Currently the program can process v7 format, pre-POSIX ustar, POSIX tar and GNU +tar archives. PAX extension headers are also supported. Global PAX headers are +ignored. + +The support for GNU tar is limited to commonly used subset (i.e. some legacy +extensions that GNU tar itself no longer generates are not supported; neither +are mutli volume archives). + +Extended attributes are supported through the SCHILY.xattr PAX extension +(favoured by GNU tar and star) or through the LIBARCHIVE.xattr PAX extension. + +If any unsupported section or extended attribute key is encountered in an +archive, a warning message is written to stderr. If the \fB\-\-no\-skip\fR +option is set, processing aborts. By default, unknown sections and unsupported +extended attributes are simply skipped after issuing a warning. +.SH ENVIRONMENT +If the command line switch \fB\-\-defaults\fR is not used or no default mtime +is specified, the value of the environment variable \fBSOURCE\_DATE\_EPOCH\fR +is used for all file and filesystem timestamps. + +If \fBSOURCE\_DATE\_EPOCH\fR is not set, not a parsable number or it is out of +range, the timestamps default to 0. + +Environment variables are only used if no explicit command line switches +are set. Explicit command line switches are always preferred over the +environment variables. +.SH EXAMPLES +.TP +Turn an uncompressed tar archive into a SquashFS image: +.IP +tar2sqfs rootfs.sqfs < rootfs.tar +.TP +Turn a gzip'ed tar archive into a SquashFS image: +.IP +zcat rootfs.tar.gz | tar2sqfs rootfs.sqfs +.TP +Turn an LZMA2 compressed tar archive into a SquashFS image: +.IP +xzcat rootfs.tar.xz | tar2sqfs rootfs.sqfs +.SH SEE ALSO +gensquashfs(1), rdsquashfs(1), sqfs2tar(1) +.SH AUTHOR +Written by David Oberhollenzer. +.SH COPYRIGHT +Copyright \(co 2019 David Oberhollenzer +License GPLv3+: GNU GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/Makemodule.am b/doc/Makemodule.am index 9963467..f6870c8 100644 --- a/doc/Makemodule.am +++ b/doc/Makemodule.am @@ -1,4 +1 @@ -dist_man1_MANS += doc/gensquashfs.1 doc/rdsquashfs.1 doc/sqfs2tar.1 -dist_man1_MANS += doc/tar2sqfs.1 doc/sqfsdiff.1 - EXTRA_DIST += doc/format.txt doc/parallelism.txt doc/mainpage.dox diff --git a/doc/gensquashfs.1 b/doc/gensquashfs.1 deleted file mode 100644 index 9ef4ee8..0000000 --- a/doc/gensquashfs.1 +++ /dev/null @@ -1,201 +0,0 @@ -.TH GENSQUASHFS "1" "June 2019" "generate squashfs images" "User Commands" -.SH NAME -gensquashfs \- generate squashfs images -.SH SYNOPSIS -.B gensquashfs -[\fI\,OPTIONS\/\fR] \/\fR -.SH DESCRIPTION -Generate a SquashFS image. -.SH OPTIONS -.TP -\fB\-\-pack\-file\fR, \fB\-F\fR -Use a \fBgen_init_cpio\fR style description file. The file format is specified -below. If \fB\-\-pack\-dir\fR is used, input file paths are relative to the -pack directory, otherwise they are relative to the directory the pack file -is in. -.TP -\fB\-\-pack\-dir\fR, \fB\-D\fR -If \fB\-\-pack\-file\fR is used, this is the root path relative to which to -read files. If no pack file is specified, pack the contents of the given -directory into a SquashFS image. The directory becomes the root of the file -system. -.TP -\fB\-\-compressor\fR, \fB\-c\fR -Select the compressor to use. -Run \fBgensquashfs \-\-help\fR to get a list of all available compressors -and the default selection. -.TP -\fB\-\-comp\-extra\fR, \fB\-X\fR -A comma separated list of extra options for the selected compressor. Specify -\fBhelp\fR to get a list of available options. -.TP -\fB\-\-num\-jobs\fR, \fB\-j\fR -If libsquashfs was compiled with a built in thread pool based, parallel data -compressor, this option can be used to set the number of compressor -threads. If not set, the default is the number of available CPU cores. -.TP -\fB\-\-queue\-backlog\fR, \fB\-Q\fR -Maximum number of data blocks in the thread worker queue before the packer -starts waiting for the block processors to catch up. Higher values result -in higher memory consumption. Defaults to 10 times the number of workers. -.TP -\fB\-\-block\-size\fR, \fB\-b\fR -Block size to use for Squashfs image. -Defaults to 131072. -.TP -\fB\-\-dev\-block\-size\fR, \fB\-B\fR -Device block size to padd the image to. -Defaults to 4096. -.TP -\fB\-\-keep\-time\fR, \fB\-k\fR -When using \fB\-\-pack\-dir\fR only, use the timestamps from the input files -instead of setting defaults on all input paths. The root inode and the -modification time on the SquashFS image itself will still be set to defaults. -.TP -\fB\-\-one\-file\-system\fR, \fB\-o\fR -When using \fB\-\-pack\-dir\fR only, stay in the local filesystem and do not -cross mount points. -.TP -\fB\-\-defaults\fR, \fB\-d\fR -A comma separated list of default values for -implicitly created directories. -The following values can be set: -.TS -tab(;) allbox; -l l -l l -l l -l l -l l -rd. -\fBOption\fR;\fBDefault\fR -uid=;0 -gid=;0 -mode=;0755 -mtime=;\fB$SOURCE\_DATE\_EPOCH\fR if set, 0 otherwise -.TE -.TP -.TP -\fB\-\-set\-uid\fR, \fB\-u\fR -Force the owners user ID for ALL inodes to this value, no matter what the pack -file or directory entries actually specify. -.TP -\fB\-\-set\-gid\fR, \fB\-g\fR -Force the owners group ID for ALL inodes to this value, no matter what the pack -file or directory entries actually specify. -.TP -\fB\-\-all\-root\fR -A short hand for `\-\-set\-uid 0 \-\-set\-gid 0`. -.TP -\fB\-\-selinux\fR, \fB\-s\fR -If built with SELinux support, use the given SELinux label file to add context -labels to the elements packed into the SquashFS image. -.TP -\fB\-\-exportable\fR, \fB\-e\fR -Generate an export table for NFS support. -.TP -\fB\-\-no\-tail\-packing\fR, \fB\-T\fR -Do not perform tail end packing on files that are larger than the specified -block size. -.TP -\fB\-\-force\fR, \fB\-f\fR -Overwrite the output file if it exists. -.TP -\fB\-\-quiet\fR, \fB\-q\fR -Do not print out progress reports. -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH INPUT FILE FORMAT -The input file contains a simple, newline separated list that describe the -files to be included in the squashfs image: -.PP -.in +4n -.nf -# a comment -file [] -dir -nod -slink -link -pipe -sock -.fi -.in - -.TS -tab(;) allbox; -l l -l l -l l -l l -l l -l l -l l -l l -l l -rd. -;T{ -Absolute path of the entry in the image. Can be put in quotes -if some components contain spaces. -T} -;T{ -Optional location of the input file. Can be specified relative to either the -description file or the pack directory. If omitted, the image path is used -as a relative path. -T} -;Symlink or hardlink target. -;Mode/permissions of the entry. -;Numeric user id. -;Numeric group id. -;Device type (b=block, c=character). -;Major number of a device special file. -;Minor number of a device special file. -.TE - -.PP -Example: -.PP -.in +4n -.nf -# A simple squashfs image -dir /dev 0755 0 0 -nod /dev/console 0600 0 0 c 5 1 -dir /root 0700 0 0 -dir /sbin 0755 0 0 - -# Add a file. Input is relative to pack dir or listing path -file /sbin/init 0755 0 0 ../init/sbin/init - -# Read from ./bin/bash relative to pack dir or listing path -# /bin is created implicitly with default attributes. -file /bin/bash 0755 0 0 - -# file name with a space in it and a "special" name -file "/opt/my app/\\"special\\"/data" 0600 0 0 -.fi -.in -.SH ENVIRONMENT -If the command line switch \fB\-\-defaults\fR is not used or no default mtime -is specified, the value of the environment variable \fBSOURCE\_DATE\_EPOCH\fR -is used for all file and filesystem timestamps. - -If \fBSOURCE\_DATE\_EPOCH\fR is not set, not a parsable number or it is out of -range, the timestamps default to 0. - -Environment variables are only used if no explicit command line switches -are set. Explicit command line switches are always preferred over the -environment variables. -.SH SEE ALSO -rdsquashfs(1), tar2sqfs(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/rdsquashfs.1 b/doc/rdsquashfs.1 deleted file mode 100644 index a5e1d77..0000000 --- a/doc/rdsquashfs.1 +++ /dev/null @@ -1,99 +0,0 @@ -.TH RDSQUASHFS "1" "May 2019" "inspect SquashFS filesystems" "User Commands" -.SH NAME -rdsquashfs \- tool to examine or uncompress SquashFS filesystems -.SH SYNOPSIS -.B rdsquashfs -[\fI\,OPTIONS\/\fR] \fI\,\/\fR -.SH DESCRIPTION -View or extract the contents of a squashfs image. -.PP -The following options can be used to specify what operation to perform. One -of those has to be present: -.TP -\fB\-\-list\fR, \fB\-l\fR -Produce a directory listing similar to \fBls \-l\fR for a given path in -the SquashFS image. -.TP -\fB\-\-cat\fR, \fB\-c\fR -If the specified path is a regular file in the image, extract it and dump -its contents to stdout. -.TP -\fB\-\-xattr\fR, \fB\-x\fR -If the inode that the specified path resolves to has extended attributes, dump -them as key value pairs to stdout. -.TP -\fB\-\-unpack\-path\fR, \fB\-u\fR -Unpack the specified sub directory from the image. To unpack everything, -simply specify /. -.TP -\fB\-\-describe\fR, \fB\-d\fR -Produce a file listing from the image compatible with the format consumed by -gensquashfs. -.PP -The following options can be used to control the behaviour of the specified -operation: -.TP -\fB\-\-unpack\-root\fR, \fB\-p\fR -If used with \fB\-\-unpack\-path\fR, this is where the -data is unpacked to. If used with \fB\-\-describe\fR, this -is used as a prefix for the input path of -regular files. -.TP -\fB\-\-no\-dev\fR, \fB\-D\fR -Skip device special files when parsing the filesystem tree. -.TP -\fB\-\-no\-sock\fR, \fB\-S\fR -Skip socket files when parsing the filesystem tree. -.TP -\fB\-\-no\-fifo\fR, \fB\-F\fR -Skip named pipes when parsing the filesystem tree. -.TP -\fB\-\-no\-slink\fR, \fB\-L\fR -Skip symbolic links when parsing the filesystem tree. -.TP -\fB\-\-no\-empty\-dir\fR, \fB\-E\fR -Skip empty directories, including ones that are empty after applying -the above rules. -.PP -The following options are specific to unpacking files from a SquashFS image -to disk: -.TP -\fB\-\-no\-sparse\fR, \fB\-Z\fR -Do not create sparse files. Always unpack sparse files by -writing blocks of zeros to disk. -.TP -\fB\-\-set\-xattr\fR, \fB\-X\fR -Set the extended attributes from the SquashFS image. -.TP -\fB\-\-set\-times\fR, \fB\-T\fR -Set the create and modify timestamps of the file to the mtime -from the SquashFS image. -.TP -\fB\-\-chmod\fR, \fB\-C\fR -Change permission flags of unpacked files to -those stored in the SquashFS image. -.TP -\fB\-\-chown\fR, \fB\-O\fR -Change ownership of unpacked files to the -UID/GID set in the SquashFS image. -.TP -\fB\-\-quiet\fR, \fB\-q\fR -Do not print out progress while unpacking. -.PP -Other options: -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH SEE ALSO -gensquashfs(1), sqfs2tar(1), sqfsdiff(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/sqfs2tar.1 b/doc/sqfs2tar.1 deleted file mode 100644 index 0fc69f6..0000000 --- a/doc/sqfs2tar.1 +++ /dev/null @@ -1,93 +0,0 @@ -.TH SQFS2TAR "1" "June 2019" "sqfs2tar" "User Commands" -.SH NAME -sqfs2tar \- turn a SquashFS image into a tar archive -.SH SYNOPSIS -.B sqfs2tar -[\fI\,OPTIONS\/\fR...] \fI\,\/\fR -.SH DESCRIPTION -Quickly and painlessly turn a SquashFS filesystem image into a tar archive -that can then be examined and processed by any tool that can work on tar -archives. The resulting archive is written to stdout. -.PP -Possible options: -.TP -\fB\-\-root\-becomes\fR, \fB\-r\fR -Prefix all paths in the tarball with the given directory name and add an -entry for this directory that receives all meta data (permissions, ownership, -extended attributes, et cetera) of the root inode. - -The special value \fB.\fR can be used since many tar archivers themselves pack -the attributes of the root directory that way and naturally support this. - -If this option is not used, all meta data from the root inode IS LOST! -.TP -\fB\-\-subdir\fR, \fB\-d\fR -Unpack the given sub directory instead of the filesystem root. Can be specified -more than once to select multiple directories. If only one is specified, it -becomes the new root of the archive filesystem tree. -.TP -\fB\-\-keep\-as\-dir\fR, \fB\-k\fR -If \fB\-\-subdir\fR is used only once, don't make the subdir the archive root, -instead keep it as prefix for all unpacked files. Using \fB\-\-subdir\fR more -than once implies \fB\-\-keep\-as\-dir\fR. -.TP -\fB\-\-no\-xattr\fR, \fB\-X\fR -Discard extended attributes from the SquashFS image. The default behavior is -to copy all xattrs attached to SquashFS inodes into the resulting tar archive. -.TP -\fB\-\-no\-hard\-links\fR, \fB\-L\fR -Normally, sqfs2tar runs hard link detection and generates hard links for -entries that refer to the same inode. If this flag is set, hard link -detection is not performed and duplicate data records are generated -instead. -.TP -\fB\-\-no\-skip\fR, \fB\-s\fR -Abort if a file cannot be stored in a tar archive. For instance, the tar format -does not support socket files, but SquashFS does. The default behaviour of -\fBsqfs2tar\fR is to emit a warning to stderr and skip the entry. If this flag -is set, processing is aborted and \fBsqfs2tar\fR exits with an error status. -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH COMPATIBILITY -The output format is pre-POSIX ustar using GNU extensions where necessary. -Experimentation determined that this is most widely supported by activeley -used tar implementations (besides GNU tar), even more than the newer POSIX -format with PAX extensions. - -If any file or directory is encountered that cannot be converted, it is -skipped and a warning is written to stderr. Unless the \fB\-\-no\-skip\fR -option is set, which aborts processing if a file cannot be converted. - -This mainly affects socket files which are supported by SquashFS but not by -POSIX tar, GNU tar or PAX. - -Since the tar format contains a sequence of files with absolute names, it has -no direct concept of a tree or an unnamed root node. Consequently, meta data -from the SquashFS root inode is lost, unless the \fB\-\-root\-becomes\fR option -is used. -.SH EXAMPLES -Turn a SquashFS image into a tar archive: -.IP -sqfs2tar rootfs.sqfs > rootfs.tar -.TP -Turn a SquashFS image into a gzip'ed tar archive: -.IP -sqfs2tar rootfs.sqfs | gzip > rootfs.tar.gz -.TP -Turn a SquashFS image into an LZMA2 compressed tar archive: -.IP -sqfs2tar rootfs.sqfs | xz > rootfs.tar.xz -.SH SEE ALSO -rdsquashfs(1), tar2sqfs(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/sqfsdiff.1 b/doc/sqfsdiff.1 deleted file mode 100644 index c0ee550..0000000 --- a/doc/sqfsdiff.1 +++ /dev/null @@ -1,72 +0,0 @@ -.TH SQFSDIFF "1" "August 2019" "sqfsdiff" "User Commands" -.SH NAME -sqfsdiff \- compare two squashfs images by contents and metadata -.SH SYNOPSIS -.B sqfsdiff -[\fI\,OPTIONS\/\fR...] \-\-old \fI\,\fR \-\-new \fI\,\/\fR -.SH DESCRIPTION -Compare two squashfs images. In contrast to doing a direct diff of the -images, this actually parses the filesystems and generates a more -meaningful difference report. -.PP -If only contents are compared, any differences in packed file layout, -ordering, compression, inode meta data and so on is ignored and the two -images are considered equal if each directory contains the same entries, -symlink with the same paths have the same targets, device nodes the same -device number and files the same size and contents. -.PP -A report of any difference is printed to stdout. The exit status is similar -that of diff(1): 0 means equal, 1 means different, 2 means problem. -.PP -Possible options: -.TP -\fB\-\-old\fR, \fB\-a\fR -Specify the first filesystem image or source directory, relativ to which the -changes are evaluated. -.TP -\fB\-\-new\fR, \fB\-b\fR -Specify the second filesystem image to source directory to compare to the -first one. -.TP -\fB\-\-no\-contents\fR, \fB\-C\fR -Do not compare file contents. -.TP -\fB\-\-no\-owner\fR, \fB\-O\fR -Do not compare file owners. -.TP -\fB\-\-no\-permissions\fR, \fB\-P\fR -Do not compare permission bits. -.TP -\fB\-\-timestamps\fR, \fB\-T\fR -Compare file timestamps. -.TP -\fB\-\-inode\-num\fR, \fB\-I\fR -Compare inode numbers of all files. -.TP -\fB\-\-super\fR, \fB\-S\fR -Also compare meta data in super blocks. -.TP -\fB\-\-extract\fR, \fB\-e\fR -Extract files that exist in both images but have different contents to the -specified directory. Contents of the first image end up in a sub directory -named \fBold\fR and the contents of the second image in a sub directory -named \fBnew\fR. -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH EXIT STATUS -The exit status is similar that of diff(1): 0 means equal, 1 means different, -2 means problem. -.SH SEE ALSO -rdsquashfs(1), sqfs2tar(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer et al -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. diff --git a/doc/tar2sqfs.1 b/doc/tar2sqfs.1 deleted file mode 100644 index da344ec..0000000 --- a/doc/tar2sqfs.1 +++ /dev/null @@ -1,154 +0,0 @@ -.TH TAR2SQFS "1" "June 2019" "tar2sqfs" "User Commands" -.SH NAME -tar2sqfs \- create a SquashFS image from a tar archive -.SH SYNOPSIS -.B tar2sqfs -[\fI\,OPTIONS\/\fR...] \fI\,\/\fR -.SH DESCRIPTION -Quickly and painlessly turn a tar ball into a SquashFS filesystem image. -.PP -Possible options: -.TP -\fB\-\-root\-becomes\fR, \fB\-r\fR -If set, only pack entries that are underneath the specified directory. The -prefix is stripped and the meta data for the directory itself is copied to the -root inode (i.e. the ownership, permissions, extended attributes, -modification time). - -If this option is not set, tar2sqfs implicitly treats \fB./\fR or absolute -paths this way, i.e. if the archive contains an entry for \fB./\fR, it becomes -the root node and the prefix is stripped from all paths (and similar for -absolute paths and \fB/\fR). -.TP -\fB\-\-compressor\fR, \fB\-c\fR -Select the compressor to use. -Run \fBtar2sqfs \-\-help\fR to get a list of all available compressors -and the default selection. -.TP -\fB\-\-comp\-extra\fR, \fB\-X\fR -A comma separated list of extra options for the selected compressor. Specify -\fBhelp\fR to get a list of available options. -.TP -\fB\-\-num\-jobs\fR, \fB\-j\fR -If libsquashfs was compiled with a thread pool based, parallel data -compressor, this option can be used to set the number of compressor -threads. If not set, the default is the number of available CPU cores. -.TP -\fB\-\-queue\-backlog\fR, \fB\-Q\fR -Maximum number of data blocks in the thread worker queue before the packer -starts waiting for the block processors to catch up. Higher values result -in higher memory consumption. Defaults to 10 times the number of workers. -.TP -\fB\-\-block\-size\fR, \fB\-b\fR -Block size to use for SquashFS image. -Defaults to 131072. -.TP -\fB\-\-dev\-block\-size\fR, \fB\-B\fR -Device block size to padd the image to. -Defaults to 4096. -.TP -\fB\-\-defaults\fR, \fB\-d\fR -A comma separated list of default values for -implicitly created directories. -The following values can be set: -.TS -tab(;) allbox; -l l -l l -l l -l l -l l -rd. -\fBOption\fR;\fBDefault\fR -uid=;0 -gid=;0 -mode=;0755 -mtime=;\fB$SOURCE\_DATE\_EPOCH\fR if set, 0 otherwise -.TE -.TP -.TP -\fB\-\-no\-keep\-time\fR, \fB\-k\fR -Replace the time stamps from the tar archive with default time stamps for all -entries. - -The default behavior is to preserve the time stamps from the archive to the -extent possible (SquashFS has second resolution and 32 bit time stamps; tar can -use extensions to specify much larger timestamps with arbitrary precision). The -root inode (unless \fB\-\-root\-becomes\fR is used) and the modification time on -the SquashFS image itself will still be set to defaults. -.TP -\fB\-\-no\-xattr\fR, \fB\-x\fR -Do not copy extended attributes from archive. Default behaviour is to copy all -extended attributes and skip the ones that cannot be encoded in SquashFS. -.TP -\fB\-\-no\-skip\fR, \fB\-s\fR -Abort if a tar record cannot be read instead of skipping it. -.TP -\fB\-\-exportable\fR, \fB\-e\fR -Generate an export table for NFS support. -.TP -\fB\-\-no\-tail\-packing\fR, \fB\-T\fR -Do not perform tail end packing on files that are larger than the -specified block size. -.TP -\fB\-\-force\fR, \fB\-f\fR -Overwrite the output file if it exists. -.TP -\fB\-\-quiet\fR, \fB\-q\fR -Do not print out progress reports. -.TP -\fB\-\-help\fR, \fB\-h\fR -Print help text and exit. -.TP -\fB\-\-version\fR, \fB\-V\fR -Print version information and exit. -.SH COMPATIBILITY -Currently the program can process v7 format, pre-POSIX ustar, POSIX tar and GNU -tar archives. PAX extension headers are also supported. Global PAX headers are -ignored. - -The support for GNU tar is limited to commonly used subset (i.e. some legacy -extensions that GNU tar itself no longer generates are not supported; neither -are mutli volume archives). - -Extended attributes are supported through the SCHILY.xattr PAX extension -(favoured by GNU tar and star) or through the LIBARCHIVE.xattr PAX extension. - -If any unsupported section or extended attribute key is encountered in an -archive, a warning message is written to stderr. If the \fB\-\-no\-skip\fR -option is set, processing aborts. By default, unknown sections and unsupported -extended attributes are simply skipped after issuing a warning. -.SH ENVIRONMENT -If the command line switch \fB\-\-defaults\fR is not used or no default mtime -is specified, the value of the environment variable \fBSOURCE\_DATE\_EPOCH\fR -is used for all file and filesystem timestamps. - -If \fBSOURCE\_DATE\_EPOCH\fR is not set, not a parsable number or it is out of -range, the timestamps default to 0. - -Environment variables are only used if no explicit command line switches -are set. Explicit command line switches are always preferred over the -environment variables. -.SH EXAMPLES -.TP -Turn an uncompressed tar archive into a SquashFS image: -.IP -tar2sqfs rootfs.sqfs < rootfs.tar -.TP -Turn a gzip'ed tar archive into a SquashFS image: -.IP -zcat rootfs.tar.gz | tar2sqfs rootfs.sqfs -.TP -Turn an LZMA2 compressed tar archive into a SquashFS image: -.IP -xzcat rootfs.tar.xz | tar2sqfs rootfs.sqfs -.SH SEE ALSO -gensquashfs(1), rdsquashfs(1), sqfs2tar(1) -.SH AUTHOR -Written by David Oberhollenzer. -.SH COPYRIGHT -Copyright \(co 2019 David Oberhollenzer -License GPLv3+: GNU GPL version 3 or later . -.br -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. -- cgit v1.2.3