inflator

Распаковка ранее сжатых файлов

Примечание. Для запуска этого менеджера ресурсов необходимо войти в систему с учетной записью root.

Синтаксис:

inflator [-b число] [-v[v...]] [точки_монтирования...]

[!исключить...]


Поддерживаемые платформы:

Neutrino

Опции:

-b число

Число буферов распаковки (по умолчанию 8).

-v[v...]


Вывести расширенную информацию. С каждым дополнительным v уровень подробности информации повышается.

Примечание. При указании опции -v, inflator необходимо запустить в фоновом режиме. Если эта опция не используется, переход в фоновый режим выполняется автоматически.

точки_монтирования

Каталоги, для которых требуется наложение (по умолчанию /). Если точка монтирования начинается с восклицательного знака (!), данный каталог исключается.

!исключить

Каталоги, которые требуется исключить.

Описание:

Менеджер ресурсов inflator расположен перед другими файловыми системами и выполняет распаковку файлов, сжатых посредством утилиты deflate. Как правило, он используется поверх файловых систем флэш-памяти. При этом возможно увеличение полезного объема флэш-памяти практически в два раза.

При запуске без аргументов утилита inflator принимает/ и устанавливает этот символ перед любыми существующими файловыми системами. Т.о. она перехватывает каждый вызов open() первая. Если файл открыт для чтения, то утилита inflator выполняет попытку открыть файл в соответствующей файловой системе. Она считывает первые 16 байт и проверяет наличие сигнатуры сжатого файла. Если файл был сжат, то утилита inflator становится как бы между приложением и соответствующей файловой системой. Все операции чтения возвращают данные исходного файла до сжатия.

С точки зрения приложения файл является распакованным. Также поддерживается произвольный поиск. Если в файле приложением выполняется команда stat(), то возвращается размер распакованного файла (исходный размер до сжатия). Для открытия сжатого файла и просмотра сжатых данных или размера следует добавить .~~~ к имени файла и открыть его. Пример.

$ deflate file1 # Сжать файл

$ wc file1 # wc просматривает содержимое исходного файла

$ wc file1.~~~ # wc просматривает содержимое сжатого файла

$ ls -l file1 # ls передает размер исходного файла

$ ls -l file1.~~~ # ls передает размер сжатого файла


Если в открытом для чтения файле отсутствует подпись сжатия, то inflator возвращает ENOENT, при этом файл передается следующей по списку файловой системе. Таким образом, утилита inflator не участвует в процессе работы с файлом. Аналогично, если файл открыт для записи в любом режиме, утилита inflator также возвращает ENOENT. С помощью опции -v можно контролировать случаи открытия файлов, получаемые и принимаемые утилитой inflator. Для увеличения степени подробности информации используется несколько опций -v.

По умолчанию утилита inflator обрабатывает 8 буферов распаковки данных. При одновременной обработке более 8 файлов буферы используются в качестве кэша. Если буфер из файла удален, то при последующем чтении файла требуется повторное чтение и распаковка данных. При использовании одной опции -v в каждом случае удаления буфера выводится соответствующее сообщение, что обеспечивает возможность точной настройки системы. Поскольку во встраиваемых системах памяти часто не хватает, следует использовать минимальное число буферов, достаточное для обеспечения приемлемого уровня производительности.

Размер буферов определяется утилитой deflate. Значение по умолчанию 8 КБ. Однако можно указать 4 КБ, 8 КБ, 16 КБ или 32 КБ. В действительности, вместо сжатия файла целиком выполняется его разделение на более мелкие блоки сжатия. Без этого при произвольном поиске в файле производительность была бы катастрофически низкая. На быстрых процессорах (200 МГц) затраты на распаковку данных незначительны. На более медленных процессорах могут возникать проблемы с производительностью, поскольку код распаковки может вступать в конфликты при доступе к циклам обработки.

Примечание. Некоторые версии файловой системы флэш-памяти (devf-*) также поддерживают сжатие. В большинстве систем утилита inflator обеспечивает более эффективное сжатие и сопоставимый или более высокий уровень производительности.

Примеры:

Перехват / и распаковка файлов, сжатых при открытии для чтения приложениями:

inflator

Перехват /, как в предыдущем примере, и передача всех запросов к файлам из каталога /tmp в соответствующую файловую систему без какой-либо проверки:

inflator / !/tmp

Перехват каталогов, в которых обычно находятся исполняемые файлы. Распаковка файлов, сжатых при открытии для чтения приложениями:

inflator /sbin /bin /usr/sbin /usr/bin /usr/photon/bin

Перехват /, как в предыдущем примере, и вывод некоторых диагностических сообщений (обратите внимание, что для выполнения утилиты inflator в фоновом режиме с применением опции -v требуется указать амперсанд (&)):

inflator -v &

Перехват /, как в предыдущем примере, и вывод подробных диагностических сообщений:

inflator -vvvvv &


Предупреждения:

Дважды запустить утилиту inflator для одной точки монтирования невозможно.