(SquashFS 是一个压缩文件系统 - http://en.wikipedia.org/wiki/SquashFS)
我正在寻找一种从程序中读取 SquashFS 文件系统的方法。到目前为止,我已经知道它的内核驱动程序,但我确信它的用户空间库必须存在于某个地方。任何语言都可以,但首选 C。
仅安装文件系统并以这种方式使用它在技术上是可行的,但我宁愿避免使用这种方法,因为我正在查看的应用程序将涉及在任何给定时间处理至少几十个档案。
(SquashFS 是一个压缩文件系统 - http://en.wikipedia.org/wiki/SquashFS)
我正在寻找一种从程序中读取 SquashFS 文件系统的方法。到目前为止,我已经知道它的内核驱动程序,但我确信它的用户空间库必须存在于某个地方。任何语言都可以,但首选 C。
仅安装文件系统并以这种方式使用它在技术上是可行的,但我宁愿避免使用这种方法,因为我正在查看的应用程序将涉及在任何给定时间处理至少几十个档案。
我刚刚从 squashfs.sourceforce.net 下载了代码 tarball,里面没有内核代码。只有 C 语言中的用户空间代码用于mksquashfs
和unsquashfs
。
您可能可以从 unsquashfs 中提取代码。
有一个称为unsquashfs
squashfs 的工具可以提取类似于tar
. 它应该与mksquashfs
我有一些 ruby 代码可以做到这一点:https ://github.com/vasi/squash.rb
这很粗糙,但效果很好。也许有一天我会把它变成一个设计更好的 C 库。
mksquashfs
并unsquashfs
在我的 Red Hat 系统上打包为“squashfs-tools”:
名称:squashfs-tools 组 : 系统环境/基础 尺寸:160923 网址:http://squashfs.sf.net 摘要:squashfs 实用程序 描述 :Squashfs 是一个高度压缩的 Linux 只读文件系统。该软件包包含用于操作 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
请注意,压扁和解压非常缓慢。我编写的脚本需要几分钟才能解压缩、修改和重新压缩 87Mstage2.img
文件。