Введение
Сжатая файловая система только для чтения для Linux
Squashfs — это сжатая файловая система только для чтения для Linux. Squashfs сжимает файлы, индексные дескрипторы и каталоги и поддерживает размеры блоков от 4 КБ до 1 МБ для достижения более высокой степени сжатия. Поддерживаются различные алгоритмы сжатия. 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 и DD-WRT (прошивка для маршрутизаторов). Он также применяется в Chromecast, в Tiny Core Linux для упаковки расширений и для системных разделов некоторых версий Android (Android Nougat). Squashfs часто комбинируется с файловой системой union mount, например UnionFS, OverlayFS или aufs, для обеспечения среды чтения-записи для загрузочных дистрибутивов Linux. Это позволяет использовать преимущества высокоскоростной компрессии Squashfs и возможность изменения дистрибутива во время работы с загрузочного носителя. Дистрибутивы, такие как Debian Live, Mandriva One, Puppy Linux, Salix Live и Slax, используют эту комбинацию. Проект AppImage, целью которого является создание переносимых приложений для Linux, использует Squashfs для создания AppImage-файлов. Менеджер пакетов Snappy также использует Squashfs для своего формата файлов ".snap". Squashfs также применяется в Linux Terminal Server Project и Splashtop. Инструменты unsquashfs и mksquashfs были портированы на Windows NT – Windows 8.1. 7-Zip также поддерживает Squashfs.
История
Squashfs изначально поддерживался как патч для Linux, не включенный в основное дерево. Первоначальная версия 1.0 была выпущена 23 октября 2002 года. В 2009 году Squashfs был включен в основную ветку разработки Linux в составе ядра 2.6.29. В ходе этого процесса код обратной совместимости для старых форматов был удален. С тех пор код Squashfs для ядра поддерживается непосредственно в основном дереве Linux, а утилиты для пользовательского пространства остаются на странице проекта на GitHub. Изначально Squashfs использовал сжатие gzip, однако ядро Linux 2.6.34 добавило поддержку сжатия LZMA и LZO, ядро Linux 2.6.38 – поддержку сжатия LZMA2 (которое используется утилитой xz), ядро Linux 3.19 – поддержку сжатия LZ4, а ядро Linux 4.14 – поддержку сжатия Zstandard. Ядро Linux 2.6.35 добавило поддержку расширенных атрибутов файлов.