			INSTALLING SQUASHFS

The squashfs2.2-r2.tar.gz file contains this file, a README file,
an ACKNOWLEDGEMENTS file, a CHANGES file, the squashfs patch
directories/files, and the squashfs-tools directory (mksquashfs).

1. Patching the kernel
----------------------

There are twelve kernel patch directories depending on your linux kernel
version.  If your kernel version isn't listed then try the patch for the nearest
kernel listed.

To patch your kernel, cd into the top level directory, and run the "patch"
comand, e.g. assuming linux-2.4.20

%cd /usr/src/linux-2.4.20
%patch -p1 < location-of-squashfs/linux-2.4.20/squashfs2.2-patch

Where "location-of-squashfs" is the path to the squashfs2.2 source directory.

The squashfs patches patch the relevant kernel files to add configure support,
initrd support, include files, and the squashfs directory under linux/fs/.
Once patched, the kernel must be reconfigured, with squashfs support turned on
(either Y/M) to ensure that inflate support is built into the kernel.  The
squashfs kernel option can be found in the filesystems submenu of the
configure menus.  In the 2.6.x kernels, the squashfs option is hiding in
the new miscellaneous filesystems submenu near the bottom of the filesystems
submenu.

In SquashFS 2.2 there are a new set of options which are intended for use by
embedded systems with low memory.  At the "Additional options for
memory-constrained systems" prompt, please say NO unless you know what you're
doing!  Saying Y here allows you to specify cache sizes and how Squashfs
allocates memory.

The "Number of fragments cached" prompt allows the number of fragments cached
to be controlled.  By default SquashFS caches the last 3 fragments read from
the filesystem.  Increasing this amount may mean SquashFS has to re-read
fragments less often from disk, at the expense of extra system memory.
Decreasing this amount will mean SquashFS uses less memory at the expense of
extra reads from disk.  Note there must be at least one cached fragment.
Anything much more than three will probably not make much difference.

The "Use Vmalloc rather than Kmalloc" prompt allows you to tell SquashFS to
use Vmalloc.  By default SquashFS uses kmalloc to obtain fragment cache memory.
Kmalloc memory is the standard kernel allocator, but it can fail on memory
constrained systems.  Because of the way Vmalloc works, Vmalloc can succeed
when kmalloc fails.  Specifying this option will make SquashFS always use
Vmalloc to allocate the fragment cache memory.

2. Building squashfs tools
--------------------------

The squashfs-tools directory contains the mksquashfs program.  This can be
made by typing make.  The source files use a local copy of squashfs_fs.h
(included in the kernel patches) allowing the tools to be made without needing
to patch the kernel.  The program uses Large File Support
(64 bit offsets etc.) and so a relatively recent glibc is needed.
