<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Guide pratique SquashFS</title><link rel="stylesheet" href="style.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.75.1"/><meta name="description" content="Ce guide pratique décrit l'utilisation de SquashFS — un système de fichier en lecture seule hautement compressé pour Linux, qui est prévu pour être utilisé dans des systèmes embarqués et de petite taille, et partout où on peut avoir besoin d’utiliser un système de fichier compressé. Avec ce document, vous allez apprendre comment préparer un noyau Linux à l'utilisation de SquashFS, créer un système de fichier compressé et l'utiliser en toute sérénité."/><meta name="keywords" content="linux, squashfs, squashed, squash, compressed, filesystem, kernel, embedded, tiny"/></head><body><div xml:lang="fr" class="article" title="Guide pratique SquashFS"><div class="titlepage"><div><div><h2 class="title"><a xmlns:saxon="http://icl.com/saxon" id="d0e1"/>Guide pratique SquashFS</h2></div><div><h3 class="subtitle"><i>
  
     Version française du <span xml:lang="en" class="foreignphrase"><em xml:lang="en" class="foreignphrase">SquashFS 
     HOWTO</em></span>
  
  </i></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Artemiy</span> <span class="othername">I.</span> <span class="surname">Pavlov</span></h3><div class="affiliation"><span class="orgname"><a class="ulink" href="http://artemiolabs.com/" target="_top">ArtemioLabs</a><br/></span><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:ap CHEZ artemio POINT net">ap CHEZ artemio POINT net</a>&gt;</code></p></div></div></div></div><div><p class="othercredit"><span class="contrib">Adaptation française</span> : <span class="firstname">Matthieu</span> <span class="surname">Thomassin</span></p></div><div><p class="othercredit"><span class="contrib">Relecture de la version française</span> : <span class="firstname">Yvon</span> <span class="surname">Benoist</span></p></div><div><p class="othercredit"><span class="contrib">Préparation de la publication de la v.f.</span> : <span class="firstname">Jean-Philippe</span> <span class="surname">Guérard</span></p></div><div><p class="releaseinfo">1.7.fr.1.0</p></div><div><p class="pubdate">2008-03-06</p></div><div><div class="revhistory"><table border="1" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Historique des versions</b></th></tr><tr><td align="left">Version 1.7.fr.1.0</td><td align="left">2008-03-06</td><td align="left">MT, YB, JPG</td></tr><tr><td align="left" colspan="3">
			
			  Première adaptation française.
			
			</td></tr><tr><td align="left">Version 1.7</td><td align="left">2005-03-25</td><td align="left">AP</td></tr><tr><td align="left" colspan="3">Changements selon la version 2.1 de SquashFS.
			</td></tr><tr><td align="left">Version 1.6</td><td align="left">2004-11-10</td><td align="left">AP</td></tr><tr><td align="left" colspan="3">Changements selon la version 2.0 de SquashFS.
			Corrections dans le texte.
			</td></tr><tr><td align="left">Version 1.5</td><td align="left">2004-06-07</td><td align="left">AP</td></tr><tr><td align="left" colspan="3">

			Changements selon la version 2.0 alpha de 
			SquashFS. Beaucoup de descriptions améliorées et 
			clarifiées. Découpage des instructions pour le 
			noyau Linux 2.6.x (nouveau) et les versions 
			2.4.x.
			
			</td></tr><tr><td align="left">Version 1.1</td><td align="left">2004-05-22</td><td align="left">AP</td></tr><tr><td align="left" colspan="3">Changements selon la version 1.3r3 de SquashFS.</td></tr><tr><td align="left">Version 1.0</td><td align="left">2004-02-19</td><td align="left">AP</td></tr><tr><td align="left" colspan="3">Version initial, revu par LDP.</td></tr><tr><td align="left">Version 0.2</td><td align="left">2003-12-08</td><td align="left">AP</td></tr><tr><td align="left" colspan="3">Corrections du texte, licence ajoutée.</td></tr><tr><td align="left">Version 0.1</td><td align="left">2003-11-24</td><td align="left">AP</td></tr><tr><td align="left" colspan="3">Version initial. Instructions pour la version 1.3r2 de SquashFS.</td></tr></table></div></div><div><div class="abstract" title="Résumé"><p class="title"><b>Résumé</b></p><p>
		
		Ce guide pratique décrit l'utilisation de SquashFS 
		— un système de fichier en lecture seule hautement 
		compressé pour Linux, qui est prévu pour être utilisé 
		dans des systèmes embarqués et de petite taille, et 
		partout où on peut avoir besoin d’utiliser un système de 
		fichier compressé. Avec ce document, vous allez 
		apprendre comment préparer un noyau Linux à 
		l'utilisation de SquashFS, créer un système de fichier 
		compressé et l'utiliser en toute sérénité.
		
		</p></div></div></div><hr/></div><div class="toc"><p><b>Table des matières</b></p><dl><dt><span class="sect1"><a href="#whatis">1. Qu'est-ce que SquashFS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#intro">1.1. Introduction</a></span></dt><dt><span class="sect2"><a href="#overview">1.2. Aperçu de SquashFS</a></span></dt><dt><span class="sect2"><a href="#makingclear">1.3. Mettons cela au clair</a></span></dt></dl></dd><dt><span class="sect1"><a href="#gettingready">2. On se prépare pour SquashFS</a></span></dt><dd><dl><dt><span class="sect2"><a href="#acquiring">2.1. Acquisition de SquashFS</a></span></dt><dt><span class="sect2"><a href="#preparing">2.2. Préparation d’un noyau compatible SquashFS</a></span></dt><dt><span class="sect2"><a href="#mksquashfs">2.3. Compilation de l'outil <span class="command"><strong>mksquashfs</strong></span></a></span></dt></dl></dd><dt><span class="sect1"><a href="#mksqoverview">3. L'outil mksquashfs expliqué</a></span></dt><dd><dl><dt><span class="sect2"><a href="#mksqusing">3.1. Utilisation de mksquashfs</a></span></dt><dt><span class="sect2"><a href="#mksqoptions">3.2. Options en lignes de commande</a></span></dt></dl></dd><dt><span class="sect1"><a href="#creatingandusing">4. Création et utilisation des systèmes de fichiers compressés</a></span></dt><dd><dl><dt><span class="sect2"><a href="#creating">4.1. Étapes principales</a></span></dt><dt><span class="sect2"><a href="#squashing">4.2. Compression des systèmes de fichiers</a></span></dt><dt><span class="sect2"><a href="#tinyemb">4.3. Création de micro-systèmes incorporés/minuscules</a></span></dt></dl></dd><dt><span class="sect1"><a href="#acknowledgements">5. Remerciements</a></span></dt><dt><span class="sect1"><a href="#license">6. Licence</a></span></dt></dl></div><div class="sect1" title="1. Qu'est-ce que SquashFS"><div class="titlepage"><div><div><h2 class="title"><a xmlns:saxon="http://icl.com/saxon" id="whatis"/>1. Qu'est-ce que SquashFS</h2></div></div></div><div class="sect2" title="1.1. Introduction"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="intro"/>1.1. Introduction</h3></div></div></div><p>

Lors de la création de systèmes Linux de petite taille et embarqués, 
chaque octet du périphérique de stockage (disquette, disque à mémoire 
flash, etc.) est très important, ainsi la compression est utilisée 
partout où elle est possible. En outre, des systèmes de fichiers 
compressés sont fréquemment nécessaires pour l'archivage. Pour les très 
grosses archives publiques, ainsi que pour les archives sur support 
personnel, elle est essentielle.

</p><p>

Avec SquashFS, on passe à un niveau supérieur. C'est un système de 
fichier en lecture seule qui permet de compresser l'intégralité d'un 
système de fichiers ou un répertoire unique, les écrire sur d'autres 
périphériques/partitions ou vers des fichiers ordinaires, pour ensuite 
les monter directement (si c'est un périphérique) ou en utilisant un 
dispositif en local (s'il s'agit d'un fichier). Par sa conception 
compacte et modulaire, le système SquashFS n'est que pur bonheur. Pour 
l'archivage, SquashFS offre une souplesse et des performances beaucoup 
plus grandes qu'une archive .tar.gz.

</p><p>

SquashFS est distribuée comme correctif applicable sur le noyau source de 
Linux (qui active dans le support de SquashFS dans le noyau), et l'outil 
<span class="command"><strong>mksquashfs</strong></span>, qui crée un système de fichiers compressé 
(dans un fichier ou un périphérique d’entrée-sortie par blocs).

</p><p>

La dernière version de SquashFS est la 2.x, la première étant la 1.x. Ce 
document décrit les deux versions avec des notes données propres à l'une 
ou l'autre. Par exemple, s’il y a des caractéristiques ou paramètres 
différents entre ces versions, ce sera écrit de cette façon : 
<span class="emphasis"><em>nouvelle valeur (2.x) ou ancienne valeur (1.x)</em></span>

</p></div><div class="sect2" title="1.2. Aperçu de SquashFS"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="overview"/>1.2. Aperçu de SquashFS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>

Données, nœuds d'index et répertoires compressés

</p></li><li class="listitem"><p>

SquashFS enregistre tous les uid/gids (32 bits), et l'heure de création 
de fichier

</p></li><li class="listitem"><p>

Fichiers jusqu’à 2^32 octets supportés; les systèmes de fichiers peuvent 
aller jusqu’à 2^32 octets

</p></li><li class="listitem"><p>

Nœuds d'index et répertoires de données hautement compressés, et 
groupés par multiplets; chaque nœud d'index compressé fait en moyenne 8 
octets de long (la longueur exacte varie selon le type de fichier, 
c'est-à-dire que les nœuds d’index de fichier courant, de répertoire, de 
lien symbolique ainsi que les nœuds des unités d’entrée-sortie de 
caractères ou par blocs ont des tailles différentes)

</p></li><li class="listitem"><p>

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

</p></li><li class="listitem"><p>

SquashFS 2.x introduit le concept de <span class="emphasis"><em>blocs de 
fragments</em></span> : la capacité à joindre/regrouper de multiples 
fichiers plus petits que la taille d'un bloc dans un seul bloc, ce qui 
améliore les taux de compression d'archivage

</p></li><li class="listitem"><p>

Les fichiers dupliqués sont détectés et supprimés

</p></li><li class="listitem"><p>

Les architectures big endian et little endian [gros-boutiens et 
petits-boutiens] sont supportées toutes les deux; SquashFS peut monter 
des systèmes de fichiers crées sur des machines ayant un ordre d'octets 
différents

</p></li></ul></div></div><div class="sect2" title="1.3. Mettons cela au clair"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="makingclear"/>1.3. Mettons cela au clair</h3></div></div></div><p>

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

</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>

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

</p></li><li class="listitem"><p>

Compilation de l'outil <span class="command"><strong>mksquashfs</strong></span>

</p></li><li class="listitem"><p>

Création d’un système de fichier compressé avec 
<span class="command"><strong>mksquashfs</strong></span>

</p></li><li class="listitem"><p>

Essai : montage d'un système de fichiers compressé à un emplacement 
temporaire

</p></li><li class="listitem"><p>

Modification du fichier <code class="filename">/etc/fstab</code> ou des scripts 
de démarrage de votre système Linux cible pour monter le nouveau système 
de fichiers compressé quand ce sera nécessaire

</p></li></ol></div></div></div><div class="sect1" title="2. On se prépare pour SquashFS"><div class="titlepage"><div><div><h2 class="title"><a xmlns:saxon="http://icl.com/saxon" id="gettingready"/>2. On se prépare pour SquashFS</h2></div></div></div><div class="sect2" title="2.1. Acquisition de SquashFS"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="acquiring"/>2.1. Acquisition de SquashFS</h3></div></div></div><p>

Le site principal de SquashFS est basé à l'adresse <a class="ulink" href="http://squashfs.sourceforge.net/" target="_top">http://squashfs.sourceforge.net/</a> ; il contient les 
informations pour les dernières versions et la liste des changements 
apportés, ainsi que les informations générales sur SquashFS. On peut 
obtenir la dernière version de SquashFS en allant sur la <a class="ulink" href="http://sourceforge.net/project/showfiles.php?group_id=63835" target="_top">page</a> 
du projet SquashFS de SourceForge.

</p></div><div class="sect2" title="2.2. Préparation d’un noyau compatible SquashFS"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="preparing"/>2.2. Préparation d’un noyau compatible SquashFS</h3></div></div></div><p>

Pour pouvoir l’utiliser, SquashFS doit être supporté dans votre noyau, 
exactement comme s’il s’agissait d’un système de fichiers 
<code class="filename">reiserfs</code> ou <code class="filename">ext3</code> . Il faut 
s'assurer qu'il existe un correctif approprié pour la version de votre 
noyau ; il devrait être dans le sous-répertoire 
<code class="filename">linux-2.x.y</code> de l'arborescence de SquashFS. En 
outre, rappelez vous que dans la plupart des cas vous aurez besoin d'un 
noyau source Linux <span class="emphasis"><em>propre</em></span> (original) récupérer sur 
<a class="ulink" href="http://kernel.org/" target="_top">kernel.org</a>. 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 très certainement aucun résultat, car les correctifs SquashFS 
sont faits par rapport aux noyaux Linux <span class="emphasis"><em>d’origine</em></span>

</p><div class="sect3" title="2.2.1. Application du correctif sur la source du noyau"><div class="titlepage"><div><div><h4 class="title"><a xmlns:saxon="http://icl.com/saxon" id="patching"/>2.2.1. Application du correctif sur la source du noyau</h4></div></div></div><p>

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 
<code class="filename">/usr/src/linux</code> et que la source de SquashFS est 
dans <code class="filename">/usr/src/squashfs</code>) :

</p><p>

Passer dans le répertoire source de SquashFS et copiez le correctif du noyau 
(on supposera qu'il se nomme <code class="filename">squashfs-patch</code>) vers 
<code class="filename">/usr/src/linux</code>.

</p><pre class="programlisting">
bash# cd /usr/src/squashfs
bash# cp linux-2.x.y/squashfs-patch /usr/src/linux
</pre><p>

Allez dans le répertoire source du noyau Linux 
<code class="filename">/usr/src/linux</code> :

</p><pre class="programlisting">
bash# cd /usr/src/linux
</pre><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>

Il faut se rappeler qu'on ne quittera pas ce répertoire à aucun moment 
au cours des procédures prochaines liées au noyau, et que tous les 
chemins seront donnés par rapport au chemin 
<code class="filename">/usr/src/linux</code>.

</p></td></tr></table></div><p>

Maintenant appliquez le correctif de SquashFS sur la source :

</p><pre class="programlisting">
bash# patch -p1 &lt; squashfs-patch
</pre></div><div class="sect3" title="2.2.2. Compilation d’un noyau 2.6.x"><div class="titlepage"><div><div><h4 class="title"><a xmlns:saxon="http://icl.com/saxon" id="noyaux-2.6.x"/>2.2.2. Compilation d’un noyau 2.6.x</h4></div></div></div><p>

Nettoyez et préparez la source du noyau :

</p><pre class="programlisting">
bash# make distclean
bash# make mrproper
</pre><p>

Configurez le noyau en utilisant votre méthode préférée 
(config/menuconfig/xconfig/gconfig) :

</p><pre class="programlisting">
bash# make menuconfig
</pre><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>

Dans la partie <span class="quote">« <span class="quote"><span class="emphasis"><em>File systems</em></span></span> »</span>, 
sous-partie <span class="quote">« <span class="quote"><span class="emphasis"><em>Miscellaneous file 
systems</em></span></span> »</span>, activez l'option <span class="quote">« <span class="quote"><span class="emphasis"><em>Squashed 
filesystem</em></span></span> »</span>, aussi bien comme module ou empaqueté 
dans le noyau. Il n'est nécessaire de compiler SquashFS à l'intérieur du 
noyau que si vous prévoyez d'utiliser un disque RAM initial compressé 
(<span class="command"><strong>initrd</strong></span>).

</p></li><li class="listitem"><p>

Si vous voulez utiliser un disque RAM initial compressé, activez le 
<span class="quote">« <span class="quote"><span class="emphasis"><em>Initial RAM disk support</em></span></span> »</span> dans la 
partie <span class="quote">« <span class="quote"><span class="emphasis"><em>Device drivers</em></span></span> »</span>, sous-partie 
<span class="quote">« <span class="quote"><span class="emphasis"><em>Block devices</em></span></span> »</span>.

</p></li><li class="listitem"><p>

Si vous voulez avoir, à l'avenir, la possibilité de monter le système de 
fichier compressé via un <span class="emphasis"><em>périphérique local</em></span>, vous 
devrez activer le <span class="quote">« <span class="quote"><span class="emphasis"><em>Loopback device 
support</em></span></span> »</span> dans la partie <span class="quote">« <span class="quote"><span class="emphasis"><em>Device 
drivers</em></span></span> »</span>, dans la sous-partie<span class="quote">« <span class="quote"><span class="emphasis"><em>Block 
devices</em></span></span> »</span>.

</p></li></ol></div><p>

Maintenant on peut compiler le noyau et les modules :

</p><pre class="programlisting">
bash# make
</pre></div><div class="sect3" title="2.2.3. Compilation d'un noyau 2.4.x"><div class="titlepage"><div><div><h4 class="title"><a xmlns:saxon="http://icl.com/saxon" id="noyaux-2.4.x"/>2.2.3. Compilation d'un noyau 2.4.x</h4></div></div></div><p>

Configuration du noyau :

</p><pre class="programlisting">
bash# make menuconfig
</pre><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>

Dans la partie <span class="quote">« <span class="quote"><span class="emphasis"><em>File systems</em></span></span> »</span>, activez 
l'option <span class="quote">« <span class="quote"><span class="emphasis"><em>Squashed filesystems</em></span></span> »</span>, aussi 
bien comme module ou empaqueté dans le noyau. Il n'est pas nécessaire de 
compiler SquashFS à l'intérieur du noyau que si vous prévoyez d'utiliser 
un disque RAM initial compressé (<span class="command"><strong>initrd</strong></span>).

</p></li><li class="listitem"><p>

Si vous voulez utiliser un disque RAM initial compressé, activez le 
<span class="quote">« <span class="quote"><span class="emphasis"><em>Initial RAM disk support</em></span></span> »</span> dans la 
partie <span class="quote">« <span class="quote"><span class="emphasis"><em>Block devices</em></span></span> »</span>.

</p></li><li class="listitem"><p>

Si vous voulez avoir, à l'avenir, la possibilité de monter le système de 
fichiers compressé via un <span class="emphasis"><em>périphérique local</em></span>, vous 
devrez activer le <span class="quote">« <span class="quote"><span class="emphasis"><em>Loopback device 
support</em></span></span> »</span> dans la partie <span class="quote">« <span class="quote"><span class="emphasis"><em>Block 
devices</em></span></span> »</span>.

</p></li></ol></div><p>

Maintenant on peut compiler le noyau et les modules :

</p><pre class="programlisting">
bash# make dep
bash# make bzImage
bash# make modules
</pre></div><div class="sect3" title="2.2.4. Installation et test du noyau"><div class="titlepage"><div><div><h4 class="title"><a xmlns:saxon="http://icl.com/saxon" id="installkernel"/>2.2.4. Installation et test du noyau</h4></div></div></div><p>

C’est maintenant que l’on va installer le nouveau noyau qui est prêt 
pour SquashFS. Les instructions ci-dessous expliquent l'installation et 
le démarrage du noyau sur la machine hôte. Si on veut, on peut 
l'installer et le tester sur le système cible.

</p><p>

On suppose que le noyau était compilé pour une architecture x86, et que 
l'image du noyau compressé est situé dans le sous-répertoire 
<code class="filename">arch/i386/boot/</code> de l'arborescence du noyau. 
Maintenant copiez le noyau dans le répertoire <code class="filename">/boot</code> 
(et appelez-le <code class="filename">bzImage-sqsh</code> par commodité si vous 
voulez) :

</p><pre class="programlisting">
bash# cp arch/i386/boot/bzImage /boot/bzImage-sqsh
</pre><p>

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

</p><pre class="programlisting">
bash# make modules_install
</pre><p>

Modifiez la configuration de votre chargeur de démarrage pour inclure 
votre nouveau noyau et installez (mettez à jour) le chargeur de 
démarrage. Maintenant vous pouvez redémarrer avec votre nouveau noyau. 
Quand la machine redémarre, vérifiez que tout va bien :

</p><pre class="programlisting">
bash# cat /proc/filesystems
</pre><p>

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

</p><pre class="programlisting">
bash# insmod squashfs
bash# cat /proc/filesystems
</pre><p>

Si vous voyez la ligne <code class="computeroutput">squashfs</code> à l'intérieur d'autres systèmes de fichiers, cela signifie que vous avez correctement activé SquashFS dans votre noyau.

</p></div></div><div class="sect2" title="2.3. Compilation de l'outil mksquashfs"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="mksquashfs"/>2.3. Compilation de l'outil <span class="command"><strong>mksquashfs</strong></span></h3></div></div></div><p>

Maintenant il faut compiler <span class="command"><strong>mksquashfs</strong></span>, l'outil pour 
créer des systèmes de fichiers compressés.

</p><pre class="programlisting">
bash# cd /usr/src/squashfs/squashfs-tools
</pre><p>

Compilez et installez <span class="command"><strong>mksquashfs</strong></span> :

</p><pre class="programlisting">
bash# make
bash# cp mksquashfs /usr/sbin
</pre><p>

Si tout s’est bien passé, en tapant <span class="command"><strong>mksquashfs</strong></span> dans 
un interpréteur de commandes vous devriez avoir le message 
sur<span class="quote">« <span class="quote">l'utilisation</span> »</span>.

</p></div></div><div class="sect1" title="3. L'outil mksquashfs expliqué"><div class="titlepage"><div><div><h2 class="title"><a xmlns:saxon="http://icl.com/saxon" id="mksqoverview"/>3. L'outil mksquashfs expliqué</h2></div></div></div><div class="sect2" title="3.1. Utilisation de mksquashfs"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="mksqusing"/>3.1. Utilisation de mksquashfs</h3></div></div></div><p>

<span class="command"><strong>mksquashfs</strong></span> est un outil qui permet de créer de 
nouveaux systèmes de fichiers compressés, et d'ajouter de nouvelles 
données dans des systèmes de fichiers compressés existants. Le format 
général de la ligne de commande pour <span class="command"><strong>mksquashfs</strong></span> est :

</p><pre class="programlisting">
bash# mksquashfs source1 source2 ... destination [options]
</pre><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>

<code class="filename">source1</code>, <code class="filename">source2</code>, etc. : 
les fichiers et répertoires à ajouter au système de fichiers obtenu, 
donnés avec les chemins relatifs ou absolus, ou les deux.

</p></li><li class="listitem"><p>

<code class="filename">destination</code> : fichier ordinaire (fichier image 
d'un système de fichiers), ou un périphérique de type bloc (tel que 
<code class="filename">/dev/fd0</code> ou <code class="filename">/dev/hda3</code>) où vous 
voulez mettre votre système de fichiers compressés.

</p></li></ul></div><p>

Remarques concernant le comportement par défaut de 
<span class="command"><strong>mksquashfs</strong></span> :

</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>

Quand on ajoute les nouveaux fichiers au nouveau système de fichiers ou 
qu'on les rajoute à un système de fichiers existant, 
<span class="command"><strong>mksquashfs</strong></span> va automatiquement renommer les fichiers 
avec des noms dupliqués de la façon suivante : si deux fichiers ou 
plus nommés <code class="filename">text</code> apparaissent dans le même 
répertoire, le second fichier sera renommé <code class="filename">text_1</code>, 
le troisième <code class="filename">text_2</code> et ainsi de suite.

</p></li><li class="listitem"><p>

Les fichiers dupliqués seront supprimés ; il n'y aura donc qu'une 
seule instance physique d'un fichier (avec SquashFS 2.x, on peut 
désactiver la détection/suppression des fichiers dupliqués avec l'option 
<span class="command"><strong>-no-duplicates</strong></span>).

</p></li><li class="listitem"><p>

Si la <span class="emphasis"><em>destination</em></span> possède déjà un système de 
fichiers compressés, par défaut, les nouveaux éléments 
<span class="emphasis"><em>sources</em></span> seront ajoutés au répertoire racine existant. 
Voir les tables d'options en ci-dessous pour forcer 
<span class="command"><strong>mksquashfs</strong></span> à écraser par réécriture sur l'ensemble de 
la destination et/ou changer la façon dont les nouveaux éléments source 
sont ajoutés. A noter qu'il n'est pas possible d'ajouter un système de 
fichiers créé avec <span class="command"><strong>mksquashfs</strong></span> version 1.x en 
utilisant <span class="command"><strong>mksquashfs</strong></span> version 2.x. Il faudra monter le 
système de fichiers au format SquashFS 1.x et copier les fichiers au 
même endroit, puis les assembler avec les autres fichiers nécessaires 
pour créer un système de fichiers au format SquashFS 2.x.

</p></li><li class="listitem"><p>

Si un seul fichier source ou répertoire est donné, il devient la racine 
du système de fichiers nouvellement créé. Si a plus d'un fichier 
source, ils deviendront tous des sous-éléments de la racine du nouveau 
système de fichiers ; il en sera de même pour les répertoires.

</p></li><li class="listitem"><p>

Les espaces inoccupés du système de fichiers se compléteront par blocs 
multiples de 4 Ko : ceci est indispensable pour pouvoir utiliser 
les systèmes de fichiers sur des périphériques de bloc. Si vous êtes 
absolument sûr que vous n'en avez pas besoin, utilisez l'option 
<span class="command"><strong>-nopad</strong></span> pour désactiver cette fonctionnalité.

</p></li></ul></div><p>

</p><p>

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

</p></div><div class="sect2" title="3.2. Options en lignes de commande"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="mksqoptions"/>3.2. Options en lignes de commande</h3></div></div></div><p>

Tableau des options pour <span class="command"><strong>mksquashfs</strong></span> :

</p><div class="table"><a xmlns:saxon="http://icl.com/saxon" id="d0e600"/><p class="title"><b>Tableau 1. 

Options en ligne de commande de l'outil <span class="command">mksquashfs</span>

</b></p><div class="table-contents"><table summary="&#xA;&#xA;Options en ligne de commande de l'outil mksquashfs&#xA;&#xA;" border="1"><colgroup><col/><col/></colgroup><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td><span class="command"><strong>-2.0</strong></span></td><td>Force <span class="command"><strong>mksquashfs</strong></span> version 2.1 à créer un système de fichiers en version 2.0</td></tr><tr><td><span class="command"><strong>-all-root</strong></span> ou <span class="command"><strong>-root-owned</strong></span></td><td>Avec cette option, tous les fichiers du système de fichiers cible appartiendront au compte root (UID=0, GID=0)</td></tr><tr><td><span class="command"><strong>-always-use-fragments</strong></span></td><td>Divise en fragments tous les fichiers dépassant la taille d'un bloc (version 2.x uniquement, les taux de compression en seront plus élevés)</td></tr><tr><td><span class="command"><strong>-b [block size]</strong></span></td><td>Sert à définir la taille d'un bloc [block size] du système de fichiers (32 Ko par défaut) ; cela peut être aussi 512, 1024, 2048, 4096, 8192, 16384 ou bien 32768</td></tr><tr><td><span class="command"><strong>-be</strong></span> ou <span class="command"><strong>-le</strong></span></td><td>Force un système de fichiers, respectivement, en big endian ou en little endian</td></tr><tr><td><span class="command"><strong>-check-data</strong></span></td><td>Active des vérifications supplémentaires du système de fichiers</td></tr><tr><td><span class="command"><strong>-e [file1] ( [file2] ... )</strong></span></td><td>Spécifie les fichiers et/ou répertoires sont à ne pas mettre dans le nouveau système de fichiers qui va être crée</td></tr><tr><td><span class="command"><strong>-ef [file]</strong></span></td><td>Spécifie un <code class="filename">fichier</code> qui contient la liste des fichiers/répertoires à exclure</td></tr><tr><td><span class="command"><strong>-force-gid [GID]</strong></span></td><td>Met tous les identifiants de groupe du système de fichier cible à la valeur [GID] (peut être spécifié avec un nom ou un nombre)</td></tr><tr><td><span class="command"><strong>-force-uid [UID]</strong></span></td><td>Met tous les identifiants d'utilisateur du système de fichier cible à la valeur [UID] (peut être spécifié avec un nom ou un nombre)</td></tr><tr><td><span class="command"><strong>-info</strong></span></td><td>Affiche les fichiers, leurs tailles originales et le taux de compression, tels qu'ils ont été ajoutés dans le système de fichiers</td></tr><tr><td><span class="command"><strong>-keep-as-directory</strong></span></td><td>Si la source est un répertoire unique, force ce répertoire à devenir un sous-répertoire de la racine du système de fichiers créé</td></tr><tr><td><span class="command"><strong>-noappend</strong></span></td><td>Avec cette option, si le fichier/périphérique de destination contient déjà un système de fichiers compressés, il sera écrasé, et les nouvelles données ne seront donc pas rajoutées dans le système de fichiers existant</td></tr><tr><td><span class="command"><strong>-no-duplicates</strong></span></td><td>Ne détecte/ni ne supprime les noms de fichiers dupliqués</td></tr><tr><td><span class="command"><strong>-noD</strong></span> ou <span class="command"><strong>-noDataCompression</strong></span></td><td>Ne compresse pas les données</td></tr><tr><td><span class="command"><strong>-noF</strong></span> ou <span class="command"><strong>-noFragmentCompression</strong></span></td><td>Ne compresse pas les fragments de fichier (versions 2.x uniquement)</td></tr><tr><td><span class="command"><strong>-no-fragments</strong></span></td><td>Ne génère pas de blocs en fragments (versions 2.x uniquement, on aura alors pratiquement le même système de fichiers qu'avec les versions 1.x)</td></tr><tr><td><span class="command"><strong>-noI</strong></span> ou <span class="command"><strong>-noInodeCompression</strong></span></td><td>Ne compresse pas la table d'inodes</td></tr><tr><td><span class="command"><strong>-nopad</strong></span></td><td>Pour supprimer le remplissage du système de fichiers par blocs en multiples de 4 Ko</td></tr><tr><td><span class="command"><strong>-root-becomes [nom]</strong></span></td><td>Peut être utilisé pendant l'ajout à un système de fichiers déjà existant : cela créera un nouveau compte root, et le répertoire [nom] contiendra tous les fichiers/répertoires déjà existants
</td></tr><tr><td><span class="command"><strong>-version</strong></span></td><td>Affiche un message avec la version, les droits et la licence</td></tr></tbody></table></div></div><br class="table-break"/><p>

Dans la plupart des cas, vous devrez laisser toutes les options de 
compression/bloc par défaut, car elles permettent à 
<span class="command"><strong>mksquashfs</strong></span> de réaliser les meilleurs taux de 
compression possibles.

</p></div></div><div class="sect1" title="4. Création et utilisation des systèmes de fichiers compressés"><div class="titlepage"><div><div><h2 class="title"><a xmlns:saxon="http://icl.com/saxon" id="creatingandusing"/>4. Création et utilisation des systèmes de fichiers compressés</h2></div></div></div><div class="sect2" title="4.1. Étapes principales"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="creating"/>4.1. Étapes principales</h3></div></div></div><p>

Pour créer un système de fichiers compressés à partir d'un répertoire 
unique (disons, <code class="filename">/répertoire/quelconque</code>), 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 :

</p><pre class="programlisting">
bash# mksquashfs /répertoire/quelconque dir.sqsh
</pre><p>

<span class="command"><strong>mksquashfs</strong></span> 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 <code class="filename">/répertoire/quelconque</code> dans le fichier 
<code class="filename">dir.sqsh</code>. Vous pouvez maintenant utiliser la 
commande <span class="command"><strong>mount</strong></span> pour la monter en utilisant un 
dispositif local :

</p><pre class="programlisting">
bash# mkdir /mnt/dir
bash# mount dir.sqsh /mnt/dir -t squashfs -o loop
</pre><p>
Pour vérifier si on obtient bien le résultat escompté :
</p><pre class="programlisting">
bash# ls /mnt/dir
</pre><p>

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

</p><pre class="programlisting">
bash# mksquashfs /répertoire/quelconque /dev/fd0
</pre><p>

Ensuite il n'y a qu'à monter le périphérique avec la commande 
<span class="command"><strong>mount</strong></span> :

</p><pre class="programlisting">
bash# mount /dev/fd0 /mnt/floppy -t squashfs
</pre><p>

Puis vérifiez si c'est bon :

</p><pre class="programlisting">
bash# ls /mnt/floppy
</pre></div><div class="sect2" title="4.2. Compression des systèmes de fichiers"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="squashing"/>4.2. Compression des systèmes de fichiers</h3></div></div></div><p>

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 
<code class="filename">/usr</code> et toute chose du même genre.

</p><div class="sect3" title="4.2.1. Exemple 1"><div class="titlepage"><div><div><h4 class="title"><a xmlns:saxon="http://icl.com/saxon" id="squashing-ex1"/>4.2.1. Exemple 1</h4></div></div></div><p>

Supposons que vous ayez un répertoire <code class="filename">/var/arch</code> 
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

</p><p>

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

</p><pre class="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
</pre><p>

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

</p><pre class="programlisting">
/var/arch.sqsh	/var/arch	squashfs	ro,defaults	0 0
</pre><p>

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

</p><pre class="programlisting">
bash# umount /mnt/tmp
bash# mount /var/arch
</pre><p>

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

</p><pre class="programlisting">
bash# ls /var/arch
</pre></div><div class="sect3" title="4.2.2. Exemple 2"><div class="titlepage"><div><div><h4 class="title"><a xmlns:saxon="http://icl.com/saxon" id="squashing-ex2"/>4.2.2. Exemple 2</h4></div></div></div><p>

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

</p><pre class="programlisting">
/dev/hda7	/var/arch	reiserfs	defaults	0 0
</pre><p>

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

</p><pre class="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
</pre><p>

Si tout s'est bien passé, démontez <code class="filename">/dev/hda7</code> (si 
besoin est) et utilisez <span class="command"><strong>dd</strong></span> pour copier 
<code class="filename">/var/arch.sqsh</code> dans 
<code class="filename">/dev/hda6</code> :

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

Maintenant remplacez la ligne <code class="filename">/dev/hda7</code> dans 
<code class="filename">/etc/fstab</code> par :

</p><pre class="programlisting">
/dev/hda6	/var/arch	squashfs	ro,defaults	0 0
</pre><p>

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

</p><pre class="programlisting">
bash# mount /var/arch
bash# ls /var/arch
</pre><p>

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

</p><pre class="programlisting">
bash# rm /var/arch.sqsh
</pre></div></div><div class="sect2" title="4.3. Création de micro-systèmes incorporés/minuscules"><div class="titlepage"><div><div><h3 class="title"><a xmlns:saxon="http://icl.com/saxon" id="tinyemb"/>4.3. Création de micro-systèmes incorporés/minuscules</h3></div></div></div><p>

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 ; il existe 
des guides pratiques et autres qui y sont consacrés (comme le 
<span class="emphasis"><em>Bootdisk HOWTO</em></span> et <span class="emphasis"><em>Linux From 
Scratch</em></span> ; visitez <a class="ulink" href="http://www.tldp.org" target="_top">http://www.tldp.org</a> 
pour récupérer ces documents).

</p><div class="sect3" title="4.3.1.  Systèmes de fichiers compressés sur disquette/mémoire flash/disques durs"><div class="titlepage"><div><div><h4 class="title"><a xmlns:saxon="http://icl.com/saxon" id="sqflash"/>4.3.1. 

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

</h4></div></div></div><p>

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 :

</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>

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.

</p></li><li class="listitem"><p>

Utilisez <span class="command"><strong>mksquashfs</strong></span> 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.

</p></li><li class="listitem"><p>

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

</p></li></ol></div><p>

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

</p><pre class="programlisting">
bash# cd /home/user
bash# mksquashfs floppylinux root.sqsh -e usr
bash# mksquashfs floppylinux/usr usr.sqsh
</pre><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>

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

</p></td></tr></table></div><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>

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

</p></td></tr></table></div><p>

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 <code class="filename">/boot</code> de ce système de 
fichiers) :

</p><pre class="programlisting">
bash# mount /mnt/floppy
bash# cp root.sqsh /mnt/floppy/boot
</pre><p>

Quand c'est fait, démontez la disquette racine, remplacez la disquette par 
un disque <code class="filename">/usr</code> et utilisez <span class="command"><strong>dd</strong></span> 
pour transférer le système de fichiers <code class="filename">usr</code> :

</p><pre class="programlisting">
bash# dd if=usr.sqsh of=/dev/fd0
</pre></div><div class="sect3" title="4.3.2. Systèmes de fichiers compressés sur CD-ROM"><div class="titlepage"><div><div><h4 class="title"><a xmlns:saxon="http://icl.com/saxon" id="sqfloppy"/>4.3.2. Systèmes de fichiers compressés sur CD-ROM</h4></div></div></div><p>

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

</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>

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

</p></li><li class="listitem"><p>

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

</p></li><li class="listitem"><p>

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

</p></li></ol></div><p>

Si vous créez un système de fichiers racine à partir d'un système de 
fichiers Linux qui tourne, utilisez l'option <span class="command"><strong>-e</strong></span> pour 
que <span class="command"><strong>mksquashfs</strong></span> exclue tous les pseudos systèmes de 
fichiers tels que <code class="filename">/proc</code>, <code class="filename">/sys</code> 
(sur les noyaux Linux après 2.5.x) et <code class="filename">/dev</code> (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 
<span class="command"><strong>mksquashfs</strong></span> (Je pense que vous comprenez les raisons 
de ces exclusions).

</p></div></div></div><div class="sect1" title="5. Remerciements"><div class="titlepage"><div><div><h2 class="title"><a xmlns:saxon="http://icl.com/saxon" id="acknowledgements"/>5. Remerciements</h2></div></div></div><p>

Je souhaiterais exprimer mes sincères remerciements et mon immense 
respect à :

</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>

Phillip Lougher — pour son brillant travail sous SquashFS, pour la 
création d'un correctif exclusif pour Linux-2.4.18, pour l'aide qu'il a 
apporté à l'amélioration de ce Guide Pratique et ses réponses à mes 
courriels.

</p></li><li class="listitem"><p>

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

</p></li><li class="listitem"><p>

Tous les participants à The Linux Documentation Project <a class="ulink" href="http://www.tldp.org" target="_top">http://www.tldp.org</a> pour leur superbe travail sur tous les 
guides pratiques et autres guides qui m'ont beaucoup aidé pour 
explorer et bidouiller Linux.

</p></li><li class="listitem"><p>

Tous les abonnés des listes de distribution de TLDP qui m'ont aidé à 
démarrer.

</p></li><li class="listitem"><p>

Je remercie infiniment et adresse mon respect à toutes les personnes qui 
développent les logiciels libres.

</p></li></ul></div></div><div class="sect1" title="6. Licence"><div class="titlepage"><div><div><h2 class="title"><a xmlns:saxon="http://icl.com/saxon" id="license"/>6. Licence</h2></div></div></div><p>

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 
intégralement l'auteur et les droits. Le texte complet de la licence est 
disponible sur <a class="ulink" href="http://www.opencontent.org/opl.shtml" target="_top">http://www.opencontent.org/opl.shtml</a>

</p></div></div></body></html>