SquashFS

Un article de Wikipédia, l'encyclopédie libre.

SquashFS
Introduction 2002
(Linux)
Limitations
Taille maximale de fichier 16 Eio (264) octets
Taille maximale de volume 16 Eio (264) octets
Fonctionnalités
Compression intégrée gzip LZMA LZO LZMA2 LZ4 Zstd

SquashFS est un système de fichiers compressé en lecture seule sous Linux.

Il peut être utilisé sur des supports de mémoire flash, CD-ROM ou disque dur pour des systèmes de fichiers disponible en lecture seulement.

Il est notamment employé pour la création de nombreux live CD ainsi qu’en informatique embarquée, en remplacement de cramfs.

Historique[modifier | modifier le code]

SquashFS a été initialement maintenu comme un jeu de patchs en dehors du noyau Linux (out-of-tree). La première version de SquashFS est publiée le [1].

En 2009, SquashFS a été fusionné dans le noyau Linux dans sa version 2.6.29 (en même temps que Btrfs)[2],[3]. Depuis cet instant, le code noyau de SquashFS est maintenu dans le code source du noyau Linux, tandis que l’outillage dans l’espace utilisateur reste disponible sur la page Sourceforge du projet[4]. Depuis le , le code a migré de Sourceforge vers Github[5].

La version originale de SquashFS utilisait l’algorithme de compression de données « deflate » de gzip. À partir de la version 2.6.34 du noyau Linux, les méthodes LZMA et LZO furent ajoutées[6]. À la venue du noyau Linux 2.6.38, c’est la méthode LZMA2 (également utilisée dans XZ) qui devient disponible[7]. À la venue du noyau Linux 3.19, la méthode LZ4[8]. Enfin, Zstandard fut ajouté dans la version 4.14 du noyau Linux[9].

Fonctionnalités[modifier | modifier le code]

Le système de fichier a une taille maximale de 16 Eio (264) octets.

Les fichiers peuvent avoir une taille maximale de 16 Eio (264) octets, avant compression. Les doublons sont automatiquement détectés et regroupés à un seul endroit.

SquashFS est capable de compresser les fichiers, les inodes et les répertoires (ces deux derniers étant alignés sur 8 bits[note 1]). Il supporte une taille de bloc allant de 4 KiB à 1 MiB (par défaut 128 Kio) afin d’améliorer le taux de compression. De nombreux algorithmes de compression sont supportés. Cela permet d’atteindre des taux de compression bien meilleurs que son ancêtre cramfs — limité à des blocs de 4 KiB et à un faible taux de compression dû au support de la zlib uniquement.

Les UID et GID sont stockés dans leur forme complète (sur 32 bits) et les dates de création des fichiers sont préservées (là où cramfs tronque le GID aux 8 bits de poids faible et ne stocke aucune date).

Tout comme cramfs, les images au format SquashFS possède un boutisme déterminé lors de leur création : petit-boutisme (little-endian) ou gros-boutisme (big-endian). Ce boutisme doit être choisi pour correspondre à l’architecture ciblée.

Performances[modifier | modifier le code]

En comparaison avec Zisofs (format ISO 9660 avec l'extension Rock Ridge et une définition des fichiers compressés, généré par le programme "mkzftree"[10]), cloop (en), cramfs et ext3, SquashFS permet d'occuper moins de place et est plus rapide pour tout type de lecture (contenu des répertoires, lecture séquentielle de fichiers, lecture aléatoire) à partir d'un CD-ROM ou d'un disque dur[11].

Utilisation[modifier | modifier le code]

Des logiciels tels que mksquashfs[12] ou gensquashfs[13] permet de générer une image au format SquashFS. Il est ensuite possible de monter l’image à l’aide de la commande mount.

Notes et références[modifier | modifier le code]

Notes[modifier | modifier le code]

  1. En moyenne un inode prend 8 octets, mais cela dépend de la nature du fichier (normal, répertoire, lien symbolique, périphérique bloc ou caractère).

Références[modifier | modifier le code]

  1. (en) « SquashFS CHANGES file », sur github.com (consulté le )
  2. (en) « Linux 2.6.29 », sur kernelnewbies.org, Linux Kernel Newbies (consulté le )
  3. (en) « Btrfs and Squashfs merged into Linux kernel », sur h-online.com, The H Open, (consulté le )
  4. (en) « SquashFS README file », sur sourceforge.net (consulté le )
  5. (en) « Update README regarding GitHub », sur github.com, (consulté le )
  6. (en) « Linux 2.6.34 », sur kernelnewbies.org, Kernel Newbies, (consulté le )
  7. (en) « Linux 2.6.38 », sur kernelnewbies.org, Kernel Newbies, (consulté le )
  8. (en) « Merge of LZ4 compression support to SquashFS », sur git.kernel.org, (consulté le )
  9. (en) « squashfs: Add zstd support », sur git.kernel.org, (consulté le )
  10. (en) « Mkzftree(1) - Linux man page », sur die.net (consulté le ).
  11. http://www.las.ic.unicamp.br/pub/imagineos/imagineos-current/source/k/squashfs-lzma-tools/docs/PERFORMANCE.README
  12. (en) Phillip Lougher, « squashfs-tools: tools to create and extract SquashFS filesystems », sur github.com (consulté le )
  13. (en) David Oberhollenzer, « squashfs-tools-ng: A new set of tools and libraries for working with SquashFS images », sur github.com (consulté le )

Annexes[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

  • cramfs, le système de fichiers compressé en lecture seule historique qui a inspiré SquashFS
  • ramfs, le système de fichiers temporaire du noyau Linux

Lien externe[modifier | modifier le code]