Чтение архива SquashFS
(SquashFS - это сжатая файловая система - http://en.wikipedia.org/wiki/SquashFS)
Я ищу способ прочитать файловую систему SquashFS из программы. До сих пор я знал о драйверах в ядре для него, но я уверен, что библиотека пользовательского пространства для него должна где-то существовать. Любой язык будет в порядке, но C предпочтительнее.
Технически возможно просто смонтировать файловую систему и использовать ее таким образом, но я бы предпочел не использовать этот путь, потому что приложение, на которое я смотрю, предполагает работу как минимум с несколькими десятками архивов в любой момент времени.
4 ответа
Я только что скачал tar-код с сайта squashfs.sourceforce.net, и там нет кода ядра. Только код пользователя в C для mksquashfs
а также unsquashfs
,
Вы могли бы, вероятно, извлечь код из unsquashfs.
Есть инструмент под названием unsquashfs
который извлекает изображение squashfs сродни tar
, Это должно быть в комплекте с mksquashfs
У меня есть какой-то рубиновый код, который сделает это: https://github.com/vasi/squash.rb
Это довольно грубо, но работает отлично. Может быть, когда-нибудь я превращу ее в лучше спроектированную библиотеку Си.
mksquashfs
а также unsquashfs
упакованы как "squashfs-tools" в моей системе Red Hat:
Название: squashfs-tools Группа: Системная среда / База Размер: 160923 URL: 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
Имейте в виду, что раздавливание и открепление мучительно медленны. Для сценария, который я написал, требуется несколько минут, чтобы отменить, изменить и повторно сжать 87M stage2.img
файл.