Provided by: squashfs-tools-ng_1.1.3-2_amd64 bug

NAME

       gensquashfs - generate squashfs images

SYNOPSIS

       gensquashfs [OPTIONS] <squashfs-file>

DESCRIPTION

       Generate a SquashFS image.

OPTIONS

       --pack-file, -F <file>
              Use  a gen_init_cpio style description file. The file format is specified below. If
              --pack-dir is used, input file paths are relative to the pack directory,  otherwise
              they are relative to the directory the pack file is in.

       --pack-dir, -D <directory>
              If  --pack-file  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.

       --compressor, -c <name>
              Select  the  compressor  to  use.   Run  gensquashfs  --help  to  get a list of all
              available compressors and the default selection.

       --comp-extra, -X <options>
              A comma separated list of extra options for the selected compressor.  Specify  help
              to get a list of available options.

       --num-jobs, -j <count>
              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.

       --queue-backlog, -Q <count>
              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.

       --block-size, -b <size>
              Block size to use for Squashfs image.  Defaults to 131072.

       --dev-block-size, -B <size>
              Device block size to padd the image to.  Defaults to 4096.

       --keep-time, -k
              When  using  --pack-dir  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.

       --one-file-system, -o
              When  using  --pack-dir  only,  stay in the local filesystem and do not cross mount
              points.

       --defaults, -d <options>
              A comma separated list of default values for implicitly created  directories.   The
              following values can be set:

              ┌──────────────┬────────────────────────────────────────┐
              │OptionDefault                                │
              ├──────────────┼────────────────────────────────────────┤
              │uid=<value>   │ 0                                      │
              ├──────────────┼────────────────────────────────────────┤
              │gid=<value>   │ 0                                      │
              ├──────────────┼────────────────────────────────────────┤
              │mode=<value>  │ 0755                                   │
              ├──────────────┼────────────────────────────────────────┤
              │mtime=<value> │ $SOURCE_DATE_EPOCH if set, 0 otherwise │
              └──────────────┴────────────────────────────────────────┘

       --set-uid, -u <number>
              Force the owners user ID for ALL inodes to this value, no matter what the pack file
              or directory entries actually specify.

       --set-gid, -g <number>
              Force the owners group ID for ALL inodes to this value, no  matter  what  the  pack
              file or directory entries actually specify.

       --all-root
              A short hand for `--set-uid 0 --set-gid 0`.

       --selinux, -s <file>
              If  built  with  SELinux  support,  use the given SELinux label file to add context
              labels to the elements packed into the SquashFS image.

       --exportable, -e
              Generate an export table for NFS support.

       --no-tail-packing, -T
              Do not perform tail end packing on files that are larger than the  specified  block
              size.

       --force, -f
              Overwrite the output file if it exists.

       --quiet, -q
              Do not print out progress reports.

       --help, -h
              Print help text and exit.

       --version, -V
              Print version information and exit.

INPUT FILE FORMAT

       The  input  file  contains  a simple, newline separated list that describe the files to be
       included in the squashfs image:

           # a comment
           file <path> <mode> <uid> <gid> [<location>]
           dir <path> <mode> <uid> <gid>
           nod <path> <mode> <uid> <gid> <dev_type> <maj> <min>
           slink <path> <mode> <uid> <gid> <target>
           link <path> <dummy> <dummy> <dummy> <target>
           pipe <path> <mode> <uid> <gid>
           sock <path> <mode> <uid> <gid>
           glob <path> <mode|*> <uid|*> <gid|*> [OPTIONS...] <location>

       ┌───────────┬────────────────────────────────────────┐
       │<path>     │ Absolute path  of  the  entry  in  the │
       │           │ image.  Can  be  put in quotes if some │
       │           │ components contain spaces.             │
       ├───────────┼────────────────────────────────────────┤
       │<location> │ 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.            │
       ├───────────┼────────────────────────────────────────┤
       │<target>   │ Symlink or hardlink target.            │
       ├───────────┼────────────────────────────────────────┤
       │<mode>     │ Mode/permissions of the entry.         │
       ├───────────┼────────────────────────────────────────┤
       │<uid>      │ Numeric user id.                       │
       ├───────────┼────────────────────────────────────────┤
       │<gid>      │ Numeric group id.                      │
       ├───────────┼────────────────────────────────────────┤
       │<dev_type> │ Device type (b=block, c=character).    │
       ├───────────┼────────────────────────────────────────┤
       │<maj>      │ Major number of a device special file. │
       ├───────────┼────────────────────────────────────────┤
       │<min>      │ Minor number of a device special file. │
       └───────────┴────────────────────────────────────────┘

   File Globbing
       The glob command requires an input location which is  interpreted  relative  to  the  pack
       directory  (or  the  input  file  if no directory was specified). This location is scanned
       recursively and the contents are added to the specified virtual path.

       The specified mode, uid and gid are applied to all new entries added by the glob. They can
       alternatively be set to the special value * to use the value from the input directory.

       In  front  of  the source location, several additional options can be specified to control
       the behavior of the glob command:

       ┌────────────────┬────────────────────────────────────────────────────┐
       │OptionDescription                                        │
       ├────────────────┼────────────────────────────────────────────────────┤
       │-type           │ Followed by a single space and a single, lowercase │
       │                │ character  describing  the  inode  type to accept. │
       │                │ Works similar to the  -type  option  of  the  find │
       │                │ command.                                           │
       │                │                                                    │
       │                │ Possible   values   are   b   (block  devices),  c │
       │                │ (character devices),  d  (directories),  p  (named │
       │                │ pipes),  f  (regular  files),  l  (symlinks) and s │
       │                │ (sockets).                                         │
       │                │                                                    │
       │                │ If -type is not used, all are accepted. The  first │
       │                │ use clamps the selection down to a single type and │
       │                │ subsequent uses allow additional types.            │
       ├────────────────┼────────────────────────────────────────────────────┤
       │-xdev           │ Do not cross mount points during a recursive glob. │
       ├────────────────┼────────────────────────────────────────────────────┤
       │-mount          │ An alias for -xdev                                 │
       ├────────────────┼────────────────────────────────────────────────────┤
       │-keeptime       │ Use the time stamps from the scanned files.        │
       ├────────────────┼────────────────────────────────────────────────────┤
       │-nonrecursive   │ Do not descend into directories.                   │
       │                │                                                    │
       │                │ Even  if  the  type  argument  does  not   include │
       │                │ directories,  it  is still possible to recursively │
       │                │ scan a hierarchy. In that case, the scanning  will │
       │                │ not  add  new  directory  nodes, but still recurse │
       │                │ into a directory if a  coresponding  node  already │
       │                │ exist in the virtual filesystem tree.              │
       │                │                                                    │
       │                │ So a typicall use case might be to first scan only │
       │                │ the directories,  and  then  do  several  narrower │
       │                │ globs to fill them.                                │
       ├────────────────┼────────────────────────────────────────────────────┤
       │-name <pattern> │ Only  add  entries  if  their name matches a shell │
       │                │ glob pattern.                                      │
       │                │                                                    │
       │                │ If the pattern is supposed to contain  spaces,  it │
       │                │ can  be  wrapped  in  quotation  marks  ("..."  or │
       │                │ '...').                                            │
       ├────────────────┼────────────────────────────────────────────────────┤
       │-path <pattern> │ Only add entries if their full resulting  path  in │
       │                │ the  SquashFS  image matches a shell glob pattern. │
       │                │ Slashes in  the  path  are  only  matched  against │
       │                │ slashes in the pattern and will never match a wild │
       │                │ card character or a bracket expression  containing │
       │                │ a slash.                                           │
       │                │                                                    │
       │                │ The path is normalized, so it won't have a leading │
       │                │ or trailing slash.                                 │
       └────────────────┴────────────────────────────────────────────────────┘
       Any other, unknown string starting with - will be rejected  as  unknown  option.   If  the
       input path starts with -, the sequence -- can be used to stop argument parsing, similar to
       many command line tools.

   Example
       # 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

       # collect the contents of ./lib and put it under /usr/lib
       # mode and uid/gid are explictly set. First we collect the directory tree,
       # then all so files, then all symlinks that don't end in ".so"
       glob /usr/lib 0755 0 0 -type d ./lib
       glob /usr/lib 0755 0 0 -type f -name "*.so.*" ./lib
       glob /usr/lib 0777 0 0 -type l -name "*.so.*" ./lib

ENVIRONMENT

       If the command line switch --defaults is not used or no default mtime  is  specified,  the
       value  of  the  environment variable SOURCE_DATE_EPOCH is used for all file and filesystem
       timestamps.

       If SOURCE_DATE_EPOCH 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.

SEE ALSO

       rdsquashfs(1), tar2sqfs(1)

AUTHOR

       Written by David Oberhollenzer.

COPYRIGHT

       Copyright ©  2019  David  Oberhollenzer  License  GPLv3+:  GNU  GPL  version  3  or  later
       <https://gnu.org/licenses/gpl.html>.
       This  is free software: you are free to change and redistribute it.  There is NO WARRANTY,
       to the extent permitted by law.