La lecture d'une archive SquashFS
Question
(SquashFS est un système de fichiers compressé - http://en.wikipedia.org/wiki/SquashFS)
Je suis à la recherche d'un moyen de lire un système de fichiers SquashFS d'un programme. Jusqu'à présent, je connais les ai dans le noyau pour les pilotes, mais je suis sûr qu'une bibliothèque de l'espace utilisateur pour qu'il doit exister quelque part. Toute langue serait bien, mais C est préférée.
Il suffit de monter le système de fichiers et de l'utiliser de cette façon est techniquement possible, mais je préfère éviter cette route parce que l'application que je suis à la recherche impliquerait de travailler avec au moins quelques archives douzaine à un moment donné.
La solution
Je viens de télécharger le tarball de code de squashfs.sourceforce.net et il n'y a pas de code du noyau là-dedans. Seul le code userland en C pour mksquashfs
et unsquashfs
.
Vous pouvez probablement extraire le code de unsquashfs.
Autres conseils
Il y a un outil appelé unsquashfs
qui extrait l'image squashfs semblable à tar
. Il devrait être livré avec mksquashfs
J'ai un code Ruby qui va le faire: https://github.com/vasi /squash.rb
Il est assez rude, mais il fonctionne très bien. Peut-être que je vais en faire une bibliothèque mieux conçue C un jour.
mksquashfs
et unsquashfs
sont emballés comme "squashfs-tools" sur mon système Red Hat:
Name : squashfs-tools Group : System Environment/Base Size : 160923 URL : http://squashfs.sf.net Summary : squashfs utilities Description :Squashfs est un système de fichiers en lecture seule très compressé pour Linux. ce forfait contient les utilitaires pour manipuler les systèmes de fichiers squashfs.
/sbin/mksquashfs /usr/sbin/unsquashfs /usr/share/doc/squashfs-tools-3.0 /usr/share/doc/squashfs-tools-3.0/ACKNOWLEDGEMENTS /usr/share/doc/squashfs-tools-3.0/CHANGES /usr/share/doc/squashfs-tools-3.0/COPYING /usr/share/doc/squashfs-tools-3.0/PERFORMANCE.README /usr/share/doc/squashfs-tools-3.0/README
Il faut savoir que squashing et unsquashing sont douloureusement lents. Il faut plusieurs minutes pour un script que j'ai écrit à unsquash, modifier et re-courge un fichier stage2.img
87M.