Squashfs — это сжатая файловая система только для чтения для Linux . Squashfs сжимает файлы , inode и каталоги и поддерживает размеры блоков от 4 KiB до 1 MiB для большего сжатия. Поддерживается несколько алгоритмов сжатия. Squashfs — это также название свободного программного обеспечения , лицензированного по GPL , для доступа к файловым системам Squashfs.
Squashfs предназначена для общего использования в файловых системах только для чтения и в системах с ограниченной памятью блочных устройств (например, встроенных системах ), где требуются низкие накладные расходы .
Squashfs используется в Live CD- версиях Arch Linux , Clonezilla , Debian , Fedora , Gentoo Linux , KDE neon , Kali Linux , Linux Mint , NixOS , Salix , Ubuntu , openSUSE и во встраиваемых дистрибутивах, таких как прошивка маршрутизатора OpenWrt [1] и DD-WRT . Он также используется в Chromecast , [2] в Tiny Core Linux для упаковки расширений и для системных разделов некоторых выпусков Android ( Android Nougat ). [3] Он часто сочетается с файловой системой union mount , такой как UnionFS , OverlayFS или aufs , для предоставления среды чтения-записи для живых дистрибутивов Linux. Это использует как высокоскоростные возможности сжатия Squashfs, так и возможность изменять дистрибутив во время его запуска с live CD. Такие дистрибутивы, как Debian Live , Mandriva One , Puppy Linux , Salix Live и Slax, используют эту комбинацию. Проект AppImage , нацеленный на создание переносимых приложений Linux, использует Squashfs для создания AppImages. Система пакетов snap также использует Squashfs в качестве формата контейнера файлов.
Squashfs также используется Linux Terminal Server Project и Splashtop . Инструменты unsquashfs и mksquashfs были портированы на Windows NT [4] – Windows 8.1 [ 5] 7-Zip также поддерживает Squashfs. [6]
Squashfs изначально поддерживался как патч Linux вне ветки. Первоначальная версия 1.0 была выпущена 23 октября 2002 года. [7] В 2009 году Squashfs был объединен с основной веткой Linux как часть Linux 2.6.29. [8] [9] В этом процессе код обратной совместимости для старых форматов был удален. С тех пор код пространства ядра Squashfs поддерживался в основной ветке Linux, в то время как инструменты пространства пользователя остаются на странице проекта на GitHub . [10]
Первоначальная версия Squashfs использовала сжатие gzip , хотя в ядре Linux 2.6.34 была добавлена поддержка сжатия LZMA [11] и LZO , [12] в ядре Linux 2.6.38 была добавлена поддержка сжатия LZMA2 (которое используется xz ), [13] в ядре Linux 3.19 была добавлена поддержка сжатия LZ4 , [14] а в ядре Linux 4.14 была добавлена поддержка сжатия Zstandard . [15]
В ядре Linux 2.6.35 добавлена поддержка расширенных атрибутов файлов . [16]