Pergunta
(Squashfs é um sistema de arquivos compactado - http://en.wikipedia.org/wiki/squashfs)
Estou procurando uma maneira de ler um sistema de arquivos Squashfs a partir de um programa. Até agora, conheço os drivers no kernel, mas tenho certeza de que uma biblioteca do Usuários Space deve existir em algum lugar. Qualquer idioma seria bom, mas C é preferido.
Apenas montar o sistema de arquivos e usá -lo dessa maneira é tecnicamente possível, mas prefiro evitar essa rota, porque o aplicativo que estou procurando envolveria trabalhar com pelo menos algumas dezenas de arquivos a qualquer momento.
Solução
Acabei de baixar o código Tarball do squashfs.sourceforce.net e não há código de kernel lá. Somente o código da terra do usuário em C para mksquashfs
e unsquashfs
.
Você provavelmente poderia extrair código do UNTQUASHFS.
Outras dicas
Existe uma ferramenta chamada unsquashfs
que extrai a imagem de squashfs semelhante a tar
. Deve ser empacotado com mksquashfs
Eu tenho algum código de rubi que fará isso: https://github.com/vasi/squash.rb
É muito difícil, mas funciona bem. Talvez eu o transforme em uma biblioteca C melhor projetada algum dia.
mksquashfs
e unsquashfs
são embalados como "squashfs-tools" no meu sistema de chapéu vermelho:
Name : squashfs-tools Group : System Environment/Base Size : 160923 URL : http://squashfs.sf.net Summary : squashfs utilities Description :O Squashfs é um sistema de arquivos somente leitura altamente compactado para o Linux. Este pacote contém os utilitários para manipular o Squashfs FileSystems.
/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
Esteja avisado de que esmagar e invasão são dolorosamente lentos. Leva vários minutos para um script que escrevi para inútil, modificar e re-calar um 87m stage2.img
Arquivo.