<?xml version="1.0" encoding="utf-8"?>

<sect1 id="creatingandusing">

<title>Création et utilisation des systèmes de fichiers compressés</title>

<sect2 id="creating">
<title>Étapes principales</title>

<para>

Pour créer un système de fichiers compressés à partir d'un répertoire 
unique (disons, <filename>/répertoire/quelconque</filename>), et de le sortir dans un 
fichier ordinaire (produisant ainsi une image du système de fichiers), 
vous n'avez qu'à dire la phrase magique&nbsp;:

</para>

<programlisting>
bash# mksquashfs /répertoire/quelconque dir.sqsh
</programlisting>

<para>

<command>mksquashfs</command> exécutera la compression et affichera le 
nombre d'inodes et la taille des données écrits qui en résultent, ainsi 
que le taux de compression moyen. Maintenant vous avez l'image de votre 
répertoire <filename>/répertoire/quelconque</filename> dans le fichier 
<filename>dir.sqsh</filename>. Vous pouvez maintenant utiliser la 
commande <command>mount</command> pour la monter en utilisant un 
dispositif local&nbsp;:

</para>

<programlisting>
bash# mkdir /mnt/dir
bash# mount dir.sqsh /mnt/dir -t squashfs -o loop
</programlisting>

<para>
Pour vérifier si on obtient bien le résultat escompté&nbsp;:
</para>

<programlisting>
bash# ls /mnt/dir
</programlisting>

<para>

Si vous voulez faire sortir directement le système de fichiers dans un 
périphérique (disons, votre lecteur de disquette 
<filename>/dev/fd0</filename>)&nbsp;:

</para>

<programlisting>
bash# mksquashfs /répertoire/quelconque /dev/fd0
</programlisting>

<para>

Ensuite il n'y a qu'à monter le périphérique avec la commande 
<command>mount</command>&nbsp;:

</para>

<programlisting>
bash# mount /dev/fd0 /mnt/floppy -t squashfs
</programlisting>

<para>

Puis vérifiez si c'est bon&nbsp;:

</para>

<programlisting>
bash# ls /mnt/floppy
</programlisting>

</sect2>


<sect2 id="squashing">

<title>Compression des systèmes de fichiers</title>

<para>

Les opérations décrites ici correspondent à la plupart des cas où le 
système de fichiers en lecture seule peut être utilisé, que vous le 
vouliez sur un périphérique de bloc ou dans un fichier. Il pourra s'agir 
tout aussi bien des immenses archives FTP/HTTP qui ne changent pas 
souvent, que l'obtention d'une partition compressée 
<filename>/usr</filename> et toute chose du même genre.

</para>

<sect3 id="squashing-ex1">
<title>Exemple 1</title>

<para>

Supposons que vous ayez un répertoire <filename>/var/arch</filename> 
avec beaucoup de fichiers et que vous voulez le transformer en un 
système de fichiers compressés et le garder sur votre partition racine 
en tant que fichier (il sera une image du système de fichiers que vous 
monterez en local). Voici les opérations à exécuter

</para>

<para>

Compressez le répertoire, puis montez le en local pour le tester&nbsp;:

</para>

<programlisting>
bash# mksquashfs /var/arch /var/arch.sqsh
bash# mkdir /mnt/tmp
bash# mount /var/arch.sqsh /mnt/tmp -t squashfs -o loop
bash# ls /mnt/tmp
</programlisting>

<para>

Si tout marche comme prévu, faites monter ce système de fichiers 
automatiquement au moment du démarrage en ajoutant cette ligne à votre 
<filename>/etc/fstab</filename>&nbsp;:

</para>

<programlisting>
/var/arch.sqsh  /var/arch       squashfs        ro,defaults     0 0
</programlisting>

<para>

Démontez le système de fichiers du point de montage temporaire, et 
montez en utilisant cette entrée fstab&nbsp;:

</para>

<programlisting>
bash# umount /mnt/tmp
bash# mount /var/arch
</programlisting>

<para>

Maintenant il n'y a plus qu'à vérifier que tout fonctionne bien&nbsp;:

</para>

<programlisting>
bash# ls /var/arch
</programlisting>

</sect3>

<sect3 id="squashing-ex2">

<title>Exemple 2</title>

<para>

Disons que vous avez deux partitions sur le disque dur, 
<filename>/dev/hda6</filename> (qui est vide) et 
<filename>/dev/hda7</filename> (elle est plus grosse que 
<filename>/dev/hda6</filename>, est montée sur 
<filename>/var/arch</filename>, contient des données et est pleine). 
Maintenant, disons que vous voulez compresser le système de fichiers 
<filename>/dev/hda7</filename> et le déplacer dans 
<filename>/dev/hda6</filename>, puis utiliser 
<filename>/dev/hda7</filename> pour d'autres choses. Nous supposerons 
que vous avez la ligne suivante dans <filename>/etc/fstab</filename> 
(<command>reiserfs</command> est juste un exemple de système de fichiers 
utilisé sur <filename>/dev/hda7</filename>)&nbsp;:

</para>

<programlisting>
/dev/hda7       /var/arch       reiserfs        defaults        0 0
</programlisting>

<para>

De la même manière que dans l'exemple précédent&nbsp;:

</para>

<programlisting>
bash# mksquashfs /var/arch /var/arch.sqsh
bash# mkdir /mnt/tmp
bash# mount /var/arch.sqsh /mnt/tmp -t squashfs -o loop
bash# ls /mnt/tmp
</programlisting>

<para>

Si tout s'est bien passé, démontez <filename>/dev/hda7</filename> (si 
besoin est) et utilisez <command>dd</command> pour copier 
<filename>/var/arch.sqsh</filename> dans 
<filename>/dev/hda6</filename>&nbsp;:

</para>

<programlisting>
bash# umount /dev/hda7
bash# dd if=/var/arch.sqsh of=/dev/hda6
</programlisting>

<para>

Maintenant remplacez la ligne <filename>/dev/hda7</filename> dans 
<filename>/etc/fstab</filename> par&nbsp;:

</para>

<programlisting>
/dev/hda6       /var/arch       squashfs        ro,defaults     0 0
</programlisting>

<para>

Montez le nouveau système de fichiers et vérifiez si tout s'est bien 
passé&nbsp;:

</para>

<programlisting>
bash# mount /var/arch
bash# ls /var/arch
</programlisting>

<para>

N'oubliez pas d'effacer l'image du système de fichiers dont on n'a plus 
besoin&nbsp;:

</para>

<programlisting>
bash# rm /var/arch.sqsh
</programlisting>

</sect3>

</sect2>

<sect2 id="tinyemb">

<title>Création de micro-systèmes incorporés/minuscules</title>

<para>

En disant "incorporés/minuscules", je veux parler de systèmes Linux 
construits pour démarrer à partir de disquettes, de disque IDE/USB à 
mémoire flash, de CD-ROM iso-9660, de petits disques durs et autres. Que 
vous vouliez avoir votre système de fichiers racine en entier sur un 
support unique (une seule partition, une seule disquette), ou avoir un 
système modulaire (plusieurs disquettes ou partitions de disques), la 
procédure est presque identique. La création des systèmes Linux en 
question n'entre pas dans le cadre de ce Guide Pratique&nbsp;; il existe 
des guides pratiques et autres qui y sont consacrés (comme le 
<emphasis>Bootdisk HOWTO</emphasis> et <emphasis>Linux From 
Scratch</emphasis>&nbsp;; visitez <ulink url="http://www.tldp.org"/> 
pour récupérer ces documents).

</para>

<sect3 id="sqflash">
<title>

Systèmes de fichiers compressés sur disquette/mémoire flash/disques durs

</title>

<para>

Pour utiliser SquashFS pour la création de systèmes Linux sur des petits 
disques, vous n'avez juste qu'à suivre les étapes habituelles de 
création d'un système minimal, en exécutant les opérations suivantes au 
moment où c'est nécessaire&nbsp;:

</para>

<orderedlist>

<listitem><para>

Quand vous déployez un noyau sur votre système, vérifiez que vous avez 
bien activer le support de SquashFS afin qu'il puisse monter les 
systèmes de fichiers compressés.

</para></listitem>

<listitem><para>

Utilisez <command>mksquashfs</command> pour la création des disques RAM 
initiaux en lecture seule et/ou du répertoire racine et/ou des autres 
systèmes de fichiers.

</para></listitem>

<listitem><para>

N'oubliez pas de paramétrer les types de système de fichiers à 
<filename>squashfs</filename> dans <filename>/etc/fstab</filename> ou 
les scripts de démarrage de votre système pour monter les systèmes de 
fichiers compressés.

</para></listitem>

</orderedlist>

<para>

<emphasis>Exemple avec la disquette</emphasis>. Disons que vous avez 
l'arborescence de votre système de disquettes dans 
<filename>/home/user/floppylinux</filename> et que vous voulez placer le 
système de fichiers racine sur l'une d'entre elles et 
<filename>/usr</filename> sur une autre. Voici ce que vous devrez 
faire&nbsp;:

</para>

<programlisting>
bash# cd /home/user
bash# mksquashfs floppylinux root.sqsh -e usr
bash# mksquashfs floppylinux/usr usr.sqsh
</programlisting>

<note><para>

Vous voyez ici comment nous utilisons l'option <command>-e</command> 
pour exclure le répertoire <filename>/usr</filename> pour l'image des 
systèmes de fichiers racine.

</para></note>

<note><para>

N'oubliez pas de spécifiez <filename>squashfs</filename> dans le 
<filename>/etc/fstab</filename> de votre disque racine ou dans les 
scripts de démarrage lorsque vous montez le système de fichiers 
<filename>/usr</filename>.

</para></note>

<para>

Insérez un disque racine dans votre lecteur de disquettes 3,5" (je 
suppose que vous avez lilo ou grub dessus et que, donc, un système de 
fichiers existe sur cette disquette, et le système de fichier racine 
sera sous le répertoire <filename>/boot</filename> de ce système de 
fichiers)&nbsp;:

</para>

<programlisting>
bash# mount /mnt/floppy
bash# cp root.sqsh /mnt/floppy/boot
</programlisting>

<para>

Quand c'est fait, démontez la disquette racine, remplacez la disquette par 
un disque <filename>/usr</filename> et utilisez <command>dd</command> 
pour transférer le système de fichiers <filename>usr</filename>&nbsp;:

</para>

<programlisting>
bash# dd if=usr.sqsh of=/dev/fd0
</programlisting>

</sect3>

<sect3 id="sqfloppy">
<title>Systèmes de fichiers compressés sur CD-ROM</title>

<para>

Avec SquashFS, on peut compresser de gros systèmes de fichiers qu'on 
pourra mettre sur des CD "Live" (par exemple).

</para>

<orderedlist>

<listitem><para>

Activez SquashFS dans le noyau Linux du système cible.

</para></listitem>

<listitem><para>

Créez un système de fichiers compressés racine.

</para></listitem>

<listitem><para>

Modifier le <filename>/etc/fstab</filename> ou les scripts de démarrage 
du système cible pour monter le système de fichiers compressés quand 
vous en aurez besoin.

</para></listitem>

</orderedlist>

<para>

Si vous créez un système de fichiers racine à partir d'un système de 
fichiers Linux qui tourne, utilisez l'option <command>-e</command> pour 
que <command>mksquashfs</command> exclue tous les pseudos systèmes de 
fichiers tels que <filename>/proc</filename>, <filename>/sys</filename> 
(sur les noyaux Linux après 2.5.x) et <filename>/dev</filename> (quand 
vous utilisez DevFS). En outre, n'oubliez pas d'ajouter l'image du 
système de fichiers elle-même qui est créée avec 
<command>mksquashfs</command> (Je pense que vous comprenez les raisons 
de ces exclusions).

</para>

</sect3>

</sect2>

</sect1>

Site hébergé sur un Cloud Public IKOULA Ikoula