Guide pratique SquashFS

Version française du SquashFS HOWTO

Adaptation française : Matthieu Thomassin

Relecture de la version française : Yvon Benoist

Préparation de la publication de la v.f. : Jean-Philippe Guérard

1.7.fr.1.0

2008-03-06

Historique des versions
Version 1.7.fr.1.02008-03-06MT, YB, JPG
Première adaptation française.
Version 1.72005-03-25AP
Changements selon la version 2.1 de SquashFS.
Version 1.62004-11-10AP
Changements selon la version 2.0 de SquashFS. Corrections dans le texte.
Version 1.52004-06-07AP
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.
Version 1.12004-05-22AP
Changements selon la version 1.3r3 de SquashFS.
Version 1.02004-02-19AP
Version initial, revu par LDP.
Version 0.22003-12-08AP
Corrections du texte, licence ajoutée.
Version 0.12003-11-24AP
Version initial. Instructions pour la version 1.3r2 de SquashFS.

Résumé

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é.


Table des matières

1. Qu'est-ce que SquashFS
1.1. Introduction
1.2. Aperçu de SquashFS
1.3. Mettons cela au clair
2. On se prépare pour SquashFS
2.1. Acquisition de SquashFS
2.2. Préparation 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. Création et utilisation des systèmes de fichiers compressés
4.1. Étapes principales
4.2. Compression des systèmes de fichiers
4.3. Création de micro-systèmes incorporés/minuscules
5. Remerciements
6. Licence

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.

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.

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 mksquashfs, qui crée un système de fichiers compressé (dans un fichier ou un périphérique d’entrée-sortie par blocs).

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 : nouvelle valeur (2.x) ou ancienne valeur (1.x)

Le site principal de SquashFS est basé à l'adresse http://squashfs.sourceforge.net/ ; 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 page du projet SquashFS de SourceForge.

Pour pouvoir l’utiliser, SquashFS doit être supporté dans votre noyau, exactement comme s’il s’agissait d’un système 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-répertoire 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) récupérer sur 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 très certainement aucun résultat, car les correctifs SquashFS sont faits par rapport aux noyaux Linux d’origine

mksquashfs 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 mksquashfs est :

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

Remarques concernant le comportement par défaut de mksquashfs :

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

Tableau des options pour mksquashfs :

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

OptionDescription
-2.0Force mksquashfs version 2.1 à créer un système de fichiers en version 2.0
-all-root ou -root-ownedAvec cette option, tous les fichiers du système de fichiers cible appartiendront au compte root (UID=0, GID=0)
-always-use-fragmentsDivise 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)
-b [block size]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
-be ou -leForce un système de fichiers, respectivement, en big endian ou en little endian
-check-dataActive des vérifications supplémentaires du système de fichiers
-e [file1] ( [file2] ... )Spécifie les fichiers et/ou répertoires sont à ne pas mettre dans le nouveau système de fichiers qui va être crée
-ef [file]Spécifie un fichier qui contient la liste des fichiers/répertoires à exclure
-force-gid [GID]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)
-force-uid [UID]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)
-infoAffiche les fichiers, leurs tailles originales et le taux de compression, tels qu'ils ont été ajoutés dans le système de fichiers
-keep-as-directorySi 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éé
-noappendAvec 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
-no-duplicatesNe détecte/ni ne supprime les noms de fichiers dupliqués
-noD ou -noDataCompressionNe compresse pas les données
-noF ou -noFragmentCompressionNe compresse pas les fragments de fichier (versions 2.x uniquement)
-no-fragmentsNe 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)
-noI ou -noInodeCompressionNe compresse pas la table d'inodes
-nopadPour supprimer le remplissage du système de fichiers par blocs en multiples de 4 Ko
-root-becomes [nom]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
-versionAffiche 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 défaut, car elles permettent à mksquashfs de réaliser les meilleurs taux de compression possibles.

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 /usr et toute chose du même genre.

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 Bootdisk HOWTO et Linux From Scratch ; visitez http://www.tldp.org pour récupérer ces documents).

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 :

Exemple avec la disquette. Disons que vous avez l'arborescence de votre système de disquettes dans /home/user/floppylinux et que vous voulez placer le système 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
[Note]Note

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

[Note]Note

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

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 /boot de ce système de fichiers) :

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

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

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

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

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 http://www.opencontent.org/opl.shtml