4. Création et utilisation des systèmes de fichiers compressés

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

bash# mksquashfs /répertoire/quelconque dir.sqsh

mksquashfs 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 /répertoire/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 vérifier si on obtient bien le résultat escompté :

bash# ls /mnt/dir

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

bash# mksquashfs /répertoire/quelconque /dev/fd0

Ensuite il n'y a qu'à monter le périphérique avec la commande mount :

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

Puis vérifiez si c'est bon :

bash# ls /mnt/floppy

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