+=head2 RECONSTRUCTING THE APPLIANCE
+
+The separate tool L<febootstrap-supermin-helper(8)> is used to
+reconstruct an appliance from the hostfiles and base image files.
+
+This program in fact iterates recursively over the files and
+directories passed to it. A common layout is:
+
+ supermin.d/
+ supermin.d/base.img
+ supermin.d/extra.img
+ supermin.d/hostfiles
+
+and then invoking febootstrap-supermin-helper with just the
+C<supermin.d> directory path as an argument.
+
+In this way extra files can be added to the appliance just by creating
+another cpio file (C<extra.img> in the example above) and dropping it
+into the directory. When the appliance is constructed, the extra
+files will appear in the appliance.
+
+=head3 DIRECTORIES BEFORE FILES
+
+In order for febootstrap-supermin-helper to run quickly, it does not
+know how to create directories automatically. Inside hostfiles and
+the cpio files, directories must be specified before any files that
+they contain. For example:
+
+ /usr
+ /usr/sbin
+ /usr/sbin/serviced
+
+It is fine to list the same directory name multiple times.
+
+=head3 LEXICOGRAPHICAL ORDER
+
+febootstrap-supermin-helper visits the supermin control files in
+lexicographical order. Thus in the example above, in the order
+C<base.img> -E<gt> C<extra.img> -E<gt> C<hostfiles>.
+
+This has an important effect: files contained in later cpio files
+overwrite earlier files, and directories do not need to be specified
+if they have already been created in earlier control files.
+
+=head3 EXAMPLE OF CREATING EXTRA CPIO FILE
+
+You can create a file like C<extra.img> very easily using a shell
+snippet similar to this one:
+
+ cd $tmpdir
+ mkdir -p usr/sbin
+ cp /path/to/serviced usr/sbin/
+ echo -e "usr\nusr/sbin\nusr/sbin/serviced" |
+ cpio --quiet -o -H newc > extra.img
+ rm -rf usr
+
+Notice how we instruct cpio to create intermediate directories.
+
+=head2 MINIMIZING THE SUPERMIN APPLIANCE
+
+You may want to "minimize" the supermin appliance in order to save
+time and space when it is instantiated. Typically you might want to
+remove documentation, info files, man pages and locales. We used to
+provide a separate tool called C<febootstrap-minimize> for this
+purpose, but it is no longer provided. Instead you can post-process
+C<hostfiles> yourself to remove any files or directories that you
+don't want (by removing lines from the file). Be careful what you
+remove because files may be necessary for correct operation of the
+appliance.
+
+For example:
+
+ < supermin.d/hostfiles \
+ grep -v '^/usr/share/man/' |
+ grep -v '^/usr/share/doc/' |
+ grep -v '^/usr/share/info/' > supermin.d/hostfiles-t
+ mv supermin.d/hostfiles-t supermin.d/hostfiles
+
+=head2 KERNEL AND KERNEL MODULES
+
+Usually the kernel and kernel modules are I<not> included in the
+supermin appliance. When the appliance is instantiated, the kernel
+modules from the host kernel are copied in, and it is booted using the
+host kernel. febootstrap-supermin-helper is able to choose the best
+host kernel available to boot the appliance.
+
+=head2 BOOTING AND CACHING THE SUPERMIN APPLIANCE
+
+For fastest boot times you should cache the output of
+febootstrap-supermin-helper. See the libguestfs source file
+C<src/appliance.c> for an example of how this is done.
+
+=head2 ENFORCING AVAILABILITY OF HOSTFILES
+
+febootstrap-supermin-helper builds the appliance by copying in host
+files as listed in C<hostfiles>. For this to work those host files
+must be available. We usually enforce this by adding requirements
+(eg. RPM C<Requires:> lines) on the package that uses the supermin
+appliance, so that package cannot be installed without pulling in the
+dependent packages and thus making sure the host files are available.
+