mirror of https://github.com/tLDP/LDP
114 lines
3.9 KiB
XML
114 lines
3.9 KiB
XML
<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
|
|
|
|
<sect1 id="whatis">
|
|
|
|
<title>What is SquashFS</title>
|
|
|
|
<sect2 id="intro">
|
|
|
|
<title>Introduction</title>
|
|
|
|
<para>
|
|
When creating tiny-sized and embedded Linux systems, every byte of the storage device (floppy, flash disk, etc.)
|
|
is very important, so compression is used everywhere possible. Also, compressed file systems are frequently needed
|
|
for archiving purposes. For huge public archives, as well as for personal media archives, this is essential.
|
|
</para>
|
|
|
|
<para>
|
|
SquashFS brings all this to a new level. It is a read-only file system that lets you compress whole file systems or
|
|
single directories, write them to other devices/partitions or to ordinary files, and then mount them directly (if
|
|
a device) or using a loopback device (if it is a file). The modular, compact system design of SquashFS is bliss.
|
|
For archiving purposes, SquashFS gives you a lot more flexibility and performance speed than a tarball archive.
|
|
</para>
|
|
|
|
<para>
|
|
SquashFS is distributed as a Linux kernel source patch (which enables SquashFS read support in your kernel),
|
|
the <command>mksquashfs</command> tool, which creates squashed file systems (in a file or on a block device) and
|
|
the <command>unsquashfs</command> tool, which extracts multiple files from an existing squashed file system.
|
|
</para>
|
|
|
|
<para>
|
|
The latest SquashFS release tree is 3.x, the former one was 2.x. This document
|
|
describes both these releases with proper notes given. For example, if some feature or
|
|
parameter is different in these release trees, it will be written as follows:
|
|
<emphasis>new value (3.x) or old value (2.x)</emphasis>
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="overview">
|
|
|
|
<title>Overview of SquashFS</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Data, inodes and directories are compressed
|
|
</para></listitem>
|
|
|
|
<listitem><para>SquashFS stores full uid/gids (32 bits), and file creation time
|
|
</para></listitem>
|
|
|
|
<listitem><para>Files up to 2^64 bytes are supported; file systems can be up to 2^64 bytes
|
|
</para></listitem>
|
|
|
|
<listitem><para>Inode and directory data are highly compacted, and packed on byte
|
|
boundaries; each compressed inode is on average 8 bytes in length
|
|
(the exact length varies on file type, i.e. regular file, directory,
|
|
symbolic link, and block/character device inodes have different sizes)
|
|
</para></listitem>
|
|
|
|
<listitem><para>SquashFS can use block sizes up to up to 64 Kb (2.x) and 1Mb (3.x). The default size is 128Kb (3.x), which achieves
|
|
greater compression ratios than the normal 4K block size
|
|
</para></listitem>
|
|
|
|
<listitem><para>By the 2.x release it was introduced the concept of <emphasis>fragment blocks</emphasis>:
|
|
an ability to join multiple files smaller than block size into a single
|
|
block, achieving greater compression ratios
|
|
</para></listitem>
|
|
|
|
<listitem><para>File duplicates are detected and removed
|
|
</para></listitem>
|
|
|
|
<listitem><para>Both big and little endian architectures are supported; SquashFS can
|
|
mount file systems created on different byte-order machines
|
|
</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="makingclear">
|
|
|
|
<title>Making it clear</title>
|
|
|
|
<para>
|
|
Now let's make sure any further discussions will be clearer
|
|
for you to understand.
|
|
The procedure of getting SquashFS working basically
|
|
consists of the following steps:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
|
|
<listitem><para>Patching and recompiling the target Linux kernel to enable SquashFS support
|
|
</para></listitem>
|
|
|
|
<listitem><para>Compiling the <command>mksquashfs </command> and the <command>unsquashfs </command> tools
|
|
</para></listitem>
|
|
|
|
<listitem><para>Creating a compressed file system with <command>mksquashfs</command>
|
|
</para></listitem>
|
|
|
|
<listitem><para>Testing: mounting a squashed file system to a temporary location
|
|
</para></listitem>
|
|
|
|
<listitem><para>Modifying the <filename>/etc/fstab </filename> or startup scripts of
|
|
your target Linux system to mount the new squashed file system when needed
|
|
</para></listitem>
|
|
|
|
</orderedlist>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|