Guide pratique SquashFS

  Version franaise du SquashFS HOWTO

  Artemiy I. Pavlov

   ArtemioLabs [http://artemiolabs.com/]

   <ap CHEZ artemio POINT net>

   Adaptation franaise : Matthieu Thomassin

   Relecture de la version franaise : Yvon Benoist

   Prparation de la publication de la v.f. : Jean-Philippe Gurard

   1.7.fr.1.0

   2008-03-06

   +------------------------------------------------------------------------+
   | Historique des versions                                                |
   |------------------------------------------------------------------------|
   | Version 1.7.fr.1.0          | 2008-03-06          | MT, YB, JPG        |
   |------------------------------------------------------------------------|
   | Premire adaptation franaise.                                         |
   |------------------------------------------------------------------------|
   | Version 1.7                 | 2005-03-25          | AP                 |
   |------------------------------------------------------------------------|
   | Changements selon la version 2.1 de SquashFS.                          |
   |------------------------------------------------------------------------|
   | Version 1.6                 | 2004-11-10          | AP                 |
   |------------------------------------------------------------------------|
   | Changements selon la version 2.0 de SquashFS. Corrections dans le      |
   | texte.                                                                 |
   |------------------------------------------------------------------------|
   | Version 1.5                 | 2004-06-07          | AP                 |
   |------------------------------------------------------------------------|
   | Changements selon la version 2.0 alpha de SquashFS. Beaucoup de        |
   | descriptions amliores et clarifies. Dcoupage des instructions pour |
   | le noyau Linux 2.6.x (nouveau) et les versions 2.4.x.                  |
   |------------------------------------------------------------------------|
   | Version 1.1                 | 2004-05-22          | AP                 |
   |------------------------------------------------------------------------|
   | Changements selon la version 1.3r3 de SquashFS.                        |
   |------------------------------------------------------------------------|
   | Version 1.0                 | 2004-02-19          | AP                 |
   |------------------------------------------------------------------------|
   | Version initial, revu par LDP.                                         |
   |------------------------------------------------------------------------|
   | Version 0.2                 | 2003-12-08          | AP                 |
   |------------------------------------------------------------------------|
   | Corrections du texte, licence ajoute.                                 |
   |------------------------------------------------------------------------|
   | Version 0.1                 | 2003-11-24          | AP                 |
   |------------------------------------------------------------------------|
   | Version initial. Instructions pour la version 1.3r2 de SquashFS.       |
   +------------------------------------------------------------------------+

   Rsum

   Ce guide pratique dcrit l'utilisation de SquashFS -- un systme de
   fichier en lecture seule hautement compress pour Linux, qui est prvu
   pour tre utilis dans des systmes embarqus et de petite taille, et
   partout o on peut avoir besoin d'utiliser un systme de fichier
   compress. Avec ce document, vous allez apprendre comment prparer un
   noyau Linux  l'utilisation de SquashFS, crer un systme de fichier
   compress et l'utiliser en toute srnit.

   --------------------------------------------------------------------------

   Table des matires

   1. Qu'est-ce que SquashFS

                1.1. Introduction

                1.2. Aperu de SquashFS

                1.3. Mettons cela au clair

   2. On se prpare pour SquashFS

                2.1. Acquisition de SquashFS

                2.2. Prparation d'un noyau compatible SquashFS

                2.3. Compilation de l'outil mksquashfs

   3. L'outil mksquashfs expliqu

                3.1. Utilisation de mksquashfs

                3.2. Options en lignes de commande

   4. Cration et utilisation des systmes de fichiers compresss

                4.1. tapes principales

                4.2. Compression des systmes de fichiers

                4.3. Cration de micro-systmes incorpors/minuscules

   5. Remerciements

   6. Licence

1. Qu'est-ce que SquashFS

  1.1. Introduction

   Lors de la cration de systmes Linux de petite taille et embarqus,
   chaque octet du priphrique de stockage (disquette, disque  mmoire
   flash, etc.) est trs important, ainsi la compression est utilise partout
   o elle est possible. En outre, des systmes de fichiers compresss sont
   frquemment ncessaires pour l'archivage. Pour les trs grosses archives
   publiques, ainsi que pour les archives sur support personnel, elle est
   essentielle.

   Avec SquashFS, on passe  un niveau suprieur. C'est un systme de fichier
   en lecture seule qui permet de compresser l'intgralit d'un systme de
   fichiers ou un rpertoire unique, les crire sur d'autres
   priphriques/partitions ou vers des fichiers ordinaires, pour ensuite les
   monter directement (si c'est un priphrique) ou en utilisant un
   dispositif en local (s'il s'agit d'un fichier). Par sa conception compacte
   et modulaire, le systme SquashFS n'est que pur bonheur. Pour l'archivage,
   SquashFS offre une souplesse et des performances beaucoup plus grandes
   qu'une archive .tar.gz.

   SquashFS est distribue comme correctif applicable sur le noyau source de
   Linux (qui active dans le support de SquashFS dans le noyau), et l'outil
   mksquashfs, qui cre un systme de fichiers compress (dans un fichier ou
   un priphrique d'entre-sortie par blocs).

   La dernire version de SquashFS est la 2.x, la premire tant la 1.x. Ce
   document dcrit les deux versions avec des notes donnes propres  l'une
   ou l'autre. Par exemple, s'il y a des caractristiques ou paramtres
   diffrents entre ces versions, ce sera crit de cette faon : nouvelle
   valeur (2.x) ou ancienne valeur (1.x)

  1.2. Aperu de SquashFS

     * Donnes, nuds d'index et rpertoires compresss

     * SquashFS enregistre tous les uid/gids (32 bits), et l'heure de
       cration de fichier

     * Fichiers jusqu' 2^32 octets supports; les systmes de fichiers
       peuvent aller jusqu' 2^32 octets

     * Nuds d'index et rpertoires de donnes hautement compresss, et
       groups par multiplets; chaque nud d'index compress fait en moyenne
       8 octets de long (la longueur exacte varie selon le type de fichier,
       c'est--dire que les nuds d'index de fichier courant, de rpertoire,
       de lien symbolique ainsi que les nuds des units d'entre-sortie de
       caractres ou par blocs ont des tailles diffrentes)

     * SquashFS peut utiliser des blocs dont la taille va jusqu' 32 Kb (1.x)
       et 64 Kb (2.x), ce qui garantit un meilleur rapport de compression
       qu'avec un bloc normal de 4 Kb

     * SquashFS 2.x introduit le concept de blocs de fragments : la capacit
        joindre/regrouper de multiples fichiers plus petits que la taille
       d'un bloc dans un seul bloc, ce qui amliore les taux de compression
       d'archivage

     * Les fichiers dupliqus sont dtects et supprims

     * Les architectures big endian et little endian [gros-boutiens et
       petits-boutiens] sont supportes toutes les deux; SquashFS peut monter
       des systmes de fichiers cres sur des machines ayant un ordre
       d'octets diffrents

  1.3. Mettons cela au clair

   Assurons-nous maintenant que vous comprendrez plus facilement tout ce qui
   sera abord ici. La procdure de base pour faire marcher SquashFS est la
   suivante :

    1. Application du correctif et recompilation du noyau Linux cible pour
       activer le support de SquashFS

    2. Compilation de l'outil mksquashfs

    3. Cration d'un systme de fichier compress avec mksquashfs

    4. Essai : montage d'un systme de fichiers compress  un emplacement
       temporaire

    5. Modification du fichier /etc/fstab ou des scripts de dmarrage de
       votre systme Linux cible pour monter le nouveau systme de fichiers
       compress quand ce sera ncessaire

2. On se prpare pour SquashFS

  2.1. Acquisition de SquashFS

   Le site principal de SquashFS est bas  l'adresse
   http://squashfs.sourceforge.net/ [http://squashfs.sourceforge.net/] ; il
   contient les informations pour les dernires versions et la liste des
   changements apports, ainsi que les informations gnrales sur SquashFS.
   On peut obtenir la dernire version de SquashFS en allant sur la page
   [http://sourceforge.net/project/showfiles.php?group_id=63835] du projet
   SquashFS de SourceForge.

  2.2. Prparation d'un noyau compatible SquashFS

   Pour pouvoir l'utiliser, SquashFS doit tre support dans votre noyau,
   exactement comme s'il s'agissait d'un systme de fichiers reiserfs ou ext3
   . Il faut s'assurer qu'il existe un correctif appropri pour la version de
   votre noyau ; il devrait tre dans le sous-rpertoire linux-2.x.y de
   l'arborescence de SquashFS. En outre, rappelez vous que dans la plupart
   des cas vous aurez besoin d'un noyau source Linux propre (original)
   rcuprer sur kernel.org [http://kernel.org/]. Si votre noyau source vient
   d'un revendeur de distribution, il aura peut-tre t pr-corrig par le
   revendeur, et l'application du correctif de SquashFS ne donnera trs
   certainement aucun rsultat, car les correctifs SquashFS sont faits par
   rapport aux noyaux Linux d'origine

    2.2.1. Application du correctif sur la source du noyau

   Avec la source du noyau et le correctif SquashFS qui convient, il n'y a
   qu' faire ceci (on suppose que la source de votre noyau est dans
   /usr/src/linux et que la source de SquashFS est dans /usr/src/squashfs) :

   Passer dans le rpertoire source de SquashFS et copiez le correctif du
   noyau (on supposera qu'il se nomme squashfs-patch) vers /usr/src/linux.

 bash# cd /usr/src/squashfs
 bash# cp linux-2.x.y/squashfs-patch /usr/src/linux

   Allez dans le rpertoire source du noyau Linux /usr/src/linux :

 bash# cd /usr/src/linux

   [1][Note] Note
             Il faut se rappeler qu'on ne quittera pas ce rpertoire  aucun
             moment au cours des procdures prochaines lies au noyau, et que
             tous les chemins seront donns par rapport au chemin
             /usr/src/linux.

   Maintenant appliquez le correctif de SquashFS sur la source :

 bash# patch -p1 < squashfs-patch

    2.2.2. Compilation d'un noyau 2.6.x

   Nettoyez et prparez la source du noyau :

 bash# make distclean
 bash# make mrproper

   Configurez le noyau en utilisant votre mthode prfre
   (config/menuconfig/xconfig/gconfig) :

 bash# make menuconfig

    1. Dans la partie  File systems , sous-partie  Miscellaneous file
       systems , activez l'option  Squashed filesystem , aussi bien comme
       module ou empaquet dans le noyau. Il n'est ncessaire de compiler
       SquashFS  l'intrieur du noyau que si vous prvoyez d'utiliser un
       disque RAM initial compress (initrd).

    2. Si vous voulez utiliser un disque RAM initial compress, activez le
        Initial RAM disk support  dans la partie  Device drivers ,
       sous-partie  Block devices .

    3. Si vous voulez avoir,  l'avenir, la possibilit de monter le systme
       de fichier compress via un priphrique local, vous devrez activer le
        Loopback device support  dans la partie  Device drivers , dans la
       sous-partie Block devices .

   Maintenant on peut compiler le noyau et les modules :

 bash# make

    2.2.3. Compilation d'un noyau 2.4.x

   Configuration du noyau :

 bash# make menuconfig

    1. Dans la partie  File systems , activez l'option  Squashed
       filesystems , aussi bien comme module ou empaquet dans le noyau. Il
       n'est pas ncessaire de compiler SquashFS  l'intrieur du noyau que
       si vous prvoyez d'utiliser un disque RAM initial compress (initrd).

    2. Si vous voulez utiliser un disque RAM initial compress, activez le
        Initial RAM disk support  dans la partie  Block devices .

    3. Si vous voulez avoir,  l'avenir, la possibilit de monter le systme
       de fichiers compress via un priphrique local, vous devrez activer
       le  Loopback device support  dans la partie  Block devices .

   Maintenant on peut compiler le noyau et les modules :

 bash# make dep
 bash# make bzImage
 bash# make modules

    2.2.4. Installation et test du noyau

   C'est maintenant que l'on va installer le nouveau noyau qui est prt pour
   SquashFS. Les instructions ci-dessous expliquent l'installation et le
   dmarrage du noyau sur la machine hte. Si on veut, on peut l'installer et
   le tester sur le systme cible.

   On suppose que le noyau tait compil pour une architecture x86, et que
   l'image du noyau compress est situ dans le sous-rpertoire
   arch/i386/boot/ de l'arborescence du noyau. Maintenant copiez le noyau
   dans le rpertoire /boot (et appelez-le bzImage-sqsh par commodit si vous
   voulez) :

 bash# cp arch/i386/boot/bzImage /boot/bzImage-sqsh

   N'oubliez pas d'installer les modules du noyau si vous en avez :

 bash# make modules_install

   Modifiez la configuration de votre chargeur de dmarrage pour inclure
   votre nouveau noyau et installez (mettez  jour) le chargeur de dmarrage.
   Maintenant vous pouvez redmarrer avec votre nouveau noyau. Quand la
   machine redmarre, vrifiez que tout va bien :

 bash# cat /proc/filesystems

   Ou, si vous avez construit votre support de SquashFS un module du noyau :

 bash# insmod squashfs
 bash# cat /proc/filesystems

   Si vous voyez la ligne squashfs  l'intrieur d'autres systmes de
   fichiers, cela signifie que vous avez correctement activ SquashFS dans
   votre noyau.

  2.3. Compilation de l'outil mksquashfs

   Maintenant il faut compiler mksquashfs, l'outil pour crer des systmes de
   fichiers compresss.

 bash# cd /usr/src/squashfs/squashfs-tools

   Compilez et installez mksquashfs :

 bash# make
 bash# cp mksquashfs /usr/sbin

   Si tout s'est bien pass, en tapant mksquashfs dans un interprteur de
   commandes vous devriez avoir le message sur l'utilisation .

3. L'outil mksquashfs expliqu

  3.1. Utilisation de mksquashfs

   mksquashfs est un outil qui permet de crer de nouveaux systmes de
   fichiers compresss, et d'ajouter de nouvelles donnes dans des systmes
   de fichiers compresss existants. Le format gnral de la ligne de
   commande pour mksquashfs est :

 bash# mksquashfs source1 source2 ... destination [options]

     * source1, source2, etc. : les fichiers et rpertoires  ajouter au
       systme de fichiers obtenu, donns avec les chemins relatifs ou
       absolus, ou les deux.

     * destination : fichier ordinaire (fichier image d'un systme de
       fichiers), ou un priphrique de type bloc (tel que /dev/fd0 ou
       /dev/hda3) o vous voulez mettre votre systme de fichiers compresss.

   Remarques concernant le comportement par dfaut de mksquashfs :

     * Quand on ajoute les nouveaux fichiers au nouveau systme de fichiers
       ou qu'on les rajoute  un systme de fichiers existant, mksquashfs va
       automatiquement renommer les fichiers avec des noms dupliqus de la
       faon suivante : si deux fichiers ou plus nomms text apparaissent
       dans le mme rpertoire, le second fichier sera renomm text_1, le
       troisime text_2 et ainsi de suite.

     * Les fichiers dupliqus seront supprims ; il n'y aura donc qu'une
       seule instance physique d'un fichier (avec SquashFS 2.x, on peut
       dsactiver la dtection/suppression des fichiers dupliqus avec
       l'option -no-duplicates).

     * Si la destination possde dj un systme de fichiers compresss, par
       dfaut, les nouveaux lments sources seront ajouts au rpertoire
       racine existant. Voir les tables d'options en ci-dessous pour forcer
       mksquashfs  craser par rcriture sur l'ensemble de la destination
       et/ou changer la faon dont les nouveaux lments source sont ajouts.
       A noter qu'il n'est pas possible d'ajouter un systme de fichiers cr
       avec mksquashfs version 1.x en utilisant mksquashfs version 2.x. Il
       faudra monter le systme de fichiers au format SquashFS 1.x et copier
       les fichiers au mme endroit, puis les assembler avec les autres
       fichiers ncessaires pour crer un systme de fichiers au format
       SquashFS 2.x.

     * Si un seul fichier source ou rpertoire est donn, il devient la
       racine du systme de fichiers nouvellement cr. Si a plus d'un
       fichier source, ils deviendront tous des sous-lments de la racine du
       nouveau systme de fichiers ; il en sera de mme pour les rpertoires.

     * Les espaces inoccups du systme de fichiers se complteront par blocs
       multiples de 4 Ko : ceci est indispensable pour pouvoir utiliser les
       systmes de fichiers sur des priphriques de bloc. Si vous tes
       absolument sr que vous n'en avez pas besoin, utilisez l'option -nopad
       pour dsactiver cette fonctionnalit.

   Voir la section suivante pour plus d'information sur l'ensemble des
   options disponibles.

  3.2. Options en lignes de commande

   Tableau des options pour mksquashfs :

   Tableau 1.  Options en ligne de commande de l'outil mksquashfs

   +------------------------------------------------------------------------+
   |             Option             |              Description              |
   |--------------------------------+---------------------------------------|
   | -2.0                           | Force mksquashfs version 2.1  crer  |
   |                                | un systme de fichiers en version 2.0 |
   |--------------------------------+---------------------------------------|
   |                                | Avec cette option, tous les fichiers  |
   | -all-root ou -root-owned       | du systme de fichiers cible          |
   |                                | appartiendront au compte root (UID=0, |
   |                                | GID=0)                                |
   |--------------------------------+---------------------------------------|
   |                                | Divise en fragments tous les fichiers |
   | -always-use-fragments          | dpassant la taille d'un bloc         |
   |                                | (version 2.x uniquement, les taux de  |
   |                                | compression en seront plus levs)    |
   |--------------------------------+---------------------------------------|
   |                                | Sert  dfinir la taille d'un bloc    |
   |                                | [block size] du systme de fichiers   |
   | -b [block size]                | (32 Ko par dfaut) ; cela peut tre   |
   |                                | aussi 512, 1024, 2048, 4096, 8192,    |
   |                                | 16384 ou bien 32768                   |
   |--------------------------------+---------------------------------------|
   |                                | Force un systme de fichiers,         |
   | -be ou -le                     | respectivement, en big endian ou en   |
   |                                | little endian                         |
   |--------------------------------+---------------------------------------|
   |                                | Active des vrifications              |
   | -check-data                    | supplmentaires du systme de         |
   |                                | fichiers                              |
   |--------------------------------+---------------------------------------|
   |                                | Spcifie les fichiers et/ou           |
   | -e [file1] ( [file2] ... )     | rpertoires sont  ne pas mettre dans |
   |                                | le nouveau systme de fichiers qui va |
   |                                | tre cre                             |
   |--------------------------------+---------------------------------------|
   |                                | Spcifie un fichier qui contient la   |
   | -ef [file]                     | liste des fichiers/rpertoires       |
   |                                | exclure                               |
   |--------------------------------+---------------------------------------|
   |                                | Met tous les identifiants de groupe   |
   | -force-gid [GID]               | du systme de fichier cible  la      |
   |                                | valeur [GID] (peut tre spcifi avec |
   |                                | un nom ou un nombre)                  |
   |--------------------------------+---------------------------------------|
   |                                | Met tous les identifiants             |
   | -force-uid [UID]               | d'utilisateur du systme de fichier   |
   |                                | cible  la valeur [UID] (peut tre    |
   |                                | spcifi avec un nom ou un nombre)    |
   |--------------------------------+---------------------------------------|
   |                                | Affiche les fichiers, leurs tailles   |
   | -info                          | originales et le taux de compression, |
   |                                | tels qu'ils ont t ajouts dans le   |
   |                                | systme de fichiers                   |
   |--------------------------------+---------------------------------------|
   |                                | Si la source est un rpertoire        |
   | -keep-as-directory             | unique, force ce rpertoire  devenir |
   |                                | un sous-rpertoire de la racine du    |
   |                                | systme de fichiers cr              |
   |--------------------------------+---------------------------------------|
   |                                | Avec cette option, si le              |
   |                                | fichier/priphrique de destination   |
   |                                | contient dj un systme de fichiers  |
   | -noappend                      | compresss, il sera cras, et les    |
   |                                | nouvelles donnes ne seront donc pas  |
   |                                | rajoutes dans le systme de fichiers |
   |                                | existant                              |
   |--------------------------------+---------------------------------------|
   | -no-duplicates                 | Ne dtecte/ni ne supprime les noms de |
   |                                | fichiers dupliqus                    |
   |--------------------------------+---------------------------------------|
   | -noD ou -noDataCompression     | Ne compresse pas les donnes          |
   |--------------------------------+---------------------------------------|
   | -noF ou -noFragmentCompression | Ne compresse pas les fragments de     |
   |                                | fichier (versions 2.x uniquement)     |
   |--------------------------------+---------------------------------------|
   |                                | Ne gnre pas de blocs en fragments   |
   | -no-fragments                  | (versions 2.x uniquement, on aura     |
   |                                | alors pratiquement le mme systme de |
   |                                | fichiers qu'avec les versions 1.x)    |
   |--------------------------------+---------------------------------------|
   | -noI ou -noInodeCompression    | Ne compresse pas la table d'inodes    |
   |--------------------------------+---------------------------------------|
   |                                | Pour supprimer le remplissage du      |
   | -nopad                         | systme de fichiers par blocs en      |
   |                                | multiples de 4 Ko                     |
   |--------------------------------+---------------------------------------|
   |                                | Peut tre utilis pendant l'ajout    |
   |                                | un systme de fichiers dj           |
   | -root-becomes [nom]            | existant : cela crera un nouveau     |
   |                                | compte root, et le rpertoire [nom]   |
   |                                | contiendra tous les                   |
   |                                | fichiers/rpertoires dj existants   |
   |--------------------------------+---------------------------------------|
   | -version                       | Affiche un message avec la version,   |
   |                                | les droits et la licence              |
   +------------------------------------------------------------------------+

   Dans la plupart des cas, vous devrez laisser toutes les options de
   compression/bloc par dfaut, car elles permettent  mksquashfs de raliser
   les meilleurs taux de compression possibles.

4. Cration et utilisation des systmes de fichiers compresss

  4.1. tapes principales

   Pour crer un systme de fichiers compresss  partir d'un rpertoire
   unique (disons, /rpertoire/quelconque), et de le sortir dans un fichier
   ordinaire (produisant ainsi une image du systme de fichiers), vous n'avez
   qu' dire la phrase magique :

 bash# mksquashfs /rpertoire/quelconque dir.sqsh

   mksquashfs excutera la compression et affichera le nombre d'inodes et la
   taille des donnes crits qui en rsultent, ainsi que le taux de
   compression moyen. Maintenant vous avez l'image de votre rpertoire
   /rpertoire/quelconque dans le fichier dir.sqsh. Vous pouvez maintenant
   utiliser la commande mount pour la monter en utilisant un dispositif
   local :

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

   Pour vrifier si on obtient bien le rsultat escompt :

 bash# ls /mnt/dir

   Si vous voulez faire sortir directement le systme de fichiers dans un
   priphrique (disons, votre lecteur de disquette /dev/fd0) :

 bash# mksquashfs /rpertoire/quelconque /dev/fd0

   Ensuite il n'y a qu' monter le priphrique avec la commande mount :

 bash# mount /dev/fd0 /mnt/floppy -t squashfs

   Puis vrifiez si c'est bon :

 bash# ls /mnt/floppy

  4.2. Compression des systmes de fichiers

   Les oprations dcrites ici correspondent  la plupart des cas o le
   systme de fichiers en lecture seule peut tre utilis, que vous le
   vouliez sur un priphrique 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 compresse /usr et toute chose du
   mme genre.

    4.2.1. Exemple 1

   Supposons que vous ayez un rpertoire /var/arch avec beaucoup de fichiers
   et que vous voulez le transformer en un systme de fichiers compresss et
   le garder sur votre partition racine en tant que fichier (il sera une
   image du systme de fichiers que vous monterez en local). Voici les
   oprations  excuter

   Compressez le rpertoire, puis montez le en local pour le tester :

 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

   Si tout marche comme prvu, faites monter ce systme de fichiers
   automatiquement au moment du dmarrage en ajoutant cette ligne  votre
   /etc/fstab :

 /var/arch.sqsh  /var/arch       squashfs        ro,defaults     0 0

   Dmontez le systme de fichiers du point de montage temporaire, et montez
   en utilisant cette entre fstab :

 bash# umount /mnt/tmp
 bash# mount /var/arch

   Maintenant il n'y a plus qu' vrifier que tout fonctionne bien :

 bash# ls /var/arch

    4.2.2. Exemple 2

   Disons que vous avez deux partitions sur le disque dur, /dev/hda6 (qui est
   vide) et /dev/hda7 (elle est plus grosse que /dev/hda6, est monte sur
   /var/arch, contient des donnes et est pleine). Maintenant, disons que
   vous voulez compresser le systme de fichiers /dev/hda7 et le dplacer
   dans /dev/hda6, puis utiliser /dev/hda7 pour d'autres choses. Nous
   supposerons que vous avez la ligne suivante dans /etc/fstab (reiserfs est
   juste un exemple de systme de fichiers utilis sur /dev/hda7) :

 /dev/hda7       /var/arch       reiserfs        defaults        0 0

   De la mme manire que dans l'exemple prcdent :

 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

   Si tout s'est bien pass, dmontez /dev/hda7 (si besoin est) et utilisez
   dd pour copier /var/arch.sqsh dans /dev/hda6 :

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

   Maintenant remplacez la ligne /dev/hda7 dans /etc/fstab par :

 /dev/hda6       /var/arch       squashfs        ro,defaults     0 0

   Montez le nouveau systme de fichiers et vrifiez si tout s'est bien
   pass :

 bash# mount /var/arch
 bash# ls /var/arch

   N'oubliez pas d'effacer l'image du systme de fichiers dont on n'a plus
   besoin :

 bash# rm /var/arch.sqsh

  4.3. Cration de micro-systmes incorpors/minuscules

   En disant "incorpors/minuscules", je veux parler de systmes Linux
   construits pour dmarrer  partir de disquettes, de disque IDE/USB 
   mmoire flash, de CD-ROM iso-9660, de petits disques durs et autres. Que
   vous vouliez avoir votre systme de fichiers racine en entier sur un
   support unique (une seule partition, une seule disquette), ou avoir un
   systme modulaire (plusieurs disquettes ou partitions de disques), la
   procdure est presque identique. La cration des systmes Linux en
   question n'entre pas dans le cadre de ce Guide Pratique ; il existe des
   guides pratiques et autres qui y sont consacrs (comme le Bootdisk HOWTO
   et Linux From Scratch ; visitez http://www.tldp.org [http://www.tldp.org]
   pour rcuprer ces documents).

    4.3.1.  Systmes de fichiers compresss sur disquette/mmoire flash/disques
    durs

   Pour utiliser SquashFS pour la cration de systmes Linux sur des petits
   disques, vous n'avez juste qu' suivre les tapes habituelles de cration
   d'un systme minimal, en excutant les oprations suivantes au moment o
   c'est ncessaire :

    1. Quand vous dployez un noyau sur votre systme, vrifiez que vous avez
       bien activer le support de SquashFS afin qu'il puisse monter les
       systmes de fichiers compresss.

    2. Utilisez mksquashfs pour la cration des disques RAM initiaux en
       lecture seule et/ou du rpertoire racine et/ou des autres systmes de
       fichiers.

    3. N'oubliez pas de paramtrer les types de systme de fichiers 
       squashfs dans /etc/fstab ou les scripts de dmarrage de votre systme
       pour monter les systmes de fichiers compresss.

   Exemple avec la disquette. Disons que vous avez l'arborescence de votre
   systme de disquettes dans /home/user/floppylinux et que vous voulez
   placer le systme de fichiers racine sur l'une d'entre elles et /usr sur
   une autre. Voici ce que vous devrez faire :

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

   [2][Note] Note
             Vous voyez ici comment nous utilisons l'option -e pour exclure
             le rpertoire /usr pour l'image des systmes de fichiers racine.

   [3][Note] Note
             N'oubliez pas de spcifiez squashfs dans le /etc/fstab de votre
             disque racine ou dans les scripts de dmarrage lorsque vous
             montez le systme de fichiers /usr.

   Insrez un disque racine dans votre lecteur de disquettes 3,5" (je suppose
   que vous avez lilo ou grub dessus et que, donc, un systme de fichiers
   existe sur cette disquette, et le systme de fichier racine sera sous le
   rpertoire /boot de ce systme de fichiers) :

 bash# mount /mnt/floppy
 bash# cp root.sqsh /mnt/floppy/boot

   Quand c'est fait, dmontez la disquette racine, remplacez la disquette par
   un disque /usr et utilisez dd pour transfrer le systme de fichiers usr :

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

    4.3.2. Systmes de fichiers compresss sur CD-ROM

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

    1. Activez SquashFS dans le noyau Linux du systme cible.

    2. Crez un systme de fichiers compresss racine.

    3. Modifier le /etc/fstab ou les scripts de dmarrage du systme cible
       pour monter le systme de fichiers compresss quand vous en aurez
       besoin.

   Si vous crez un systme de fichiers racine  partir d'un systme de
   fichiers Linux qui tourne, utilisez l'option -e pour que mksquashfs exclue
   tous les pseudos systmes de fichiers tels que /proc, /sys (sur les noyaux
   Linux aprs 2.5.x) et /dev (quand vous utilisez DevFS). En outre,
   n'oubliez pas d'ajouter l'image du systme de fichiers elle-mme qui est
   cre avec mksquashfs (Je pense que vous comprenez les raisons de ces
   exclusions).

5. Remerciements

   Je souhaiterais exprimer mes sincres remerciements et mon immense respect
    :

     * Phillip Lougher -- pour son brillant travail sous SquashFS, pour la
       cration d'un correctif exclusif pour Linux-2.4.18, pour l'aide qu'il
       a apport  l'amlioration de ce Guide Pratique et ses rponses  mes
       courriels.

     * Tabatha Marshall de TLDP pour m'avoir aid  amener ce Guide Pratique
        la version finale 1.0.

     * Tous les participants  The Linux Documentation Project
       http://www.tldp.org [http://www.tldp.org] pour leur superbe travail
       sur tous les guides pratiques et autres guides qui m'ont beaucoup aid
       pour explorer et bidouiller Linux.

     * Tous les abonns des listes de distribution de TLDP qui m'ont aid 
       dmarrer.

     * Je remercie infiniment et adresse mon respect  toutes les personnes
       qui dveloppent les logiciels libres.

6. Licence

   Ce document peut tre utilis et distribu selon les termes et conditions
   tablies en avant dans la licence Open Content. Pour faire court, cela
   signifie que vous pouvez librement modifier et re-distribuer ce Guide
   Pratique  condition expresse que vous y conserviez intgralement l'auteur
   et les droits. Le texte complet de la licence est disponible sur
   http://www.opencontent.org/opl.shtml
   [http://www.opencontent.org/opl.shtml]

