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
для одной точки монтирования невозможно.