Что такое формат файла SFS?
Файл .sfs представляет собой сжатый образ файловой системы Squashfs, предназначенный только для чтения. Чаще всего он встречается в качестве корневой файловой системы внутри дистрибутивов Linux Live CD и USB. Ядро Linux может монтировать образы .sfs напрямую с помощью mount -t squashfs, а команда unsquashfs (из пакета squashfs-tools) извлекает все файлы без монтирования.
Squashfs упаковывает все дерево каталогов в один сжатый двоичный образ. 96-байтовый суперблок в начале идентифицирует формат - магические байты hsqs (little-endian) или sqsh (big-endian) - и записывает алгоритм сжатия, размер блока и смещения таблиц для inode, каталогов и фрагментов данных. Файлы хранятся в независимо сжатых блоках, что обеспечивает произвольный доступ без необходимости распаковки всего образа.
Поддерживаются несколько алгоритмов сжатия, выбираемых при создании: gzip (оригинальный), lzma, lzo, xz, lz4 и zstd. Современная утилита mksquashfs по умолчанию использует xz для лучшего коэффициента сжатия; в образах прошивок встраиваемых систем часто используется lzo для более быстрой распаковки на маломощном оборудовании.
ISO-образы Linux Live (Ubuntu, Fedora, Kali Linux) встраивают корневую файловую систему как filesystem.squashfs или filesystem.sfs внутри контейнера .iso. Android использует Squashfs для разделов /system. Роутеры OpenWrt и IP-камеры хранят прошивки в Squashfs. Расширение .squashfs также широко используется для этого же формата.
- Squashfs была создана Филлипом Логером в 2002 году и включена в ядро Linux в версии 2.6.29 (март 2009 г.).
- EROFS (включена в Linux 5.4, 2019 г.) является современным преемником для Android и встраиваемых систем.
mksquashfsсоздает образы;unsquashfsизвлекает их; обе утилиты входят в пакетsquashfs-tools.
Безопасность и защита
РИСК: LOWОбразы Squashfs являются контейнерами файловой системы - к ним применимы те же соображения безопасности, что и при монтировании любого образа диска: извлеченные файлы могут содержать вредоносные исполняемые файлы или атаки через символические ссылки. При монтировании с помощью «mount -o loop» используйте режим «только для чтения» (уже по умолчанию для Squashfs). Извлекайте с помощью unsquashfs и проверяйте содержимое перед запуском любых бинарных файлов. Образы прошивок из неофициальных источников могут содержать бэкдоры.
Детали формата
в двух словах- Модуль Puppy Linux SFS - Puppy Linux использует .sfs специально для модульных пакетов дополнений, накладываемых поверх базовой системы.
- Архив StarCraft/Blizzard (неофициально) - Некоторые файлы данных игр Blizzard исторически имели расширение .sfs, но представляют собой совершенно другой проприетарный формат.
Программы, открывающие файлы SFS
Технические подробности
глубокая спецификация| Сигнатура файла | 68 73 71 73 («hsqs», little-endian) по смещению 0; вариант big-endian: 73 71 73 68 («sqsh») |
| Размер суперблока | 96 байт - фиксированный; содержит магическое число, версию, количество inode, размер блока, тип сжатия и смещения таблиц |
| Тип файловой системы | Сжатая, только для чтения - поддержка записи после создания отсутствует; для живых систем монтируется как overlay |
| Варианты сжатия | gzip, lzma, lzo, xz/lzma2, lz4, zstd - выбираются при создании через mksquashfs |
| Сжатие по умолчанию | xz в современных версиях mksquashfs; gzip в старых версиях; lzo часто встречается во встраиваемых прошивках |
| Размер блока | 4 КБ - 1 МБ (настраивается при создании; по умолчанию 128 КБ) |
| Версия на диске | Squashfs 4.0 (2009); поле версии находится в суперблоке по смещению 28 |
| Целостность | Пофайловые контрольные суммы отсутствуют; CRC в блоках метаданных inode и каталогов в v4.0 |
| Типичный размер образа | 4-64 МБ (встраиваемые прошивки); 400-900 МБ (корневая файловая система Linux Live ISO) |
| Максимальное количество файлов | ~4 миллиарда (лимит 32-битного номера inode) |
| Порядок байтов | Little-endian (нативный для хоста); вариант big-endian существует для старых встраиваемых систем |
| Инструмент создания | mksquashfs (пакет squashfs-tools) |
| Инструмент извлечения | unsquashfs (squashfs-tools); 7-Zip в Windows |
| Распространенные случаи использования | Корневая файловая система Linux Live ISO, разделы Android /system, прошивки роутеров OpenWrt и IP-камер |
| Выпущен | 2002 (Squashfs 1.0 by Phillip Lougher) |
| Последняя версия | Squashfs 4.0 (2009, merged into Linux kernel 2.6.29) |
| Открыть стандартное | Да · без роялти |
| Спецификация | docs.kernel.org |
Конвертации SFS
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах SFS.