Пакетная файловая система

В этой статье речь пойдет о пакетной файловой системе, используемой в QNX RTP. Пакетная файловая система (fs-pkg в листинге pidin) — средство переадресации, располагающееся поверх любых других файловых систем. Три ее основные составляющие:

— пакеты в репозиториях
— дерево каталогов измененных файлов (spill)
— основная файловая система

Терминология

Чтобы впоследствие вести разговор на одном языке, давайте введем несколько понятий:

Пакет — это дерево каталогов и файлов, хранящихся в таком же виде, как если бы они были помещены в корень некоторой файловой системы.

Пакеты могут быть подразделены на две категории:

— Установленные пакеты, файлы которых уже расположены в файловой системе (как например те, что расположены в /pkgs/repository/qnx/os/).

— Пакеты-архивы, файлы с расширениями «qpr» (это архивы репозиториев, хранящиеся в формате tar.gz и предназначенные для быстрой, упрощенной установки) или «qpk» (архив дерева файлов и каталогов пакета в формате tar.gz).

Репозиториями мы называем местоположения установленных пакетов. Они располагаются на другой стандартной файловой системе, доступной для пакетной файловой системы. В типовой установке ОС QNX RTP, основные репозитории — /pkgs/base и /pkgs/repository.

Как это работает

Теперь, когда мы ознакомлены с основными понятиями, рассмотрим в деталях функции пакетной файловой системы. Пакетная файловая система образует «виртуальную» файловую систему, переадресующую запросы к «реальной» файловой системе, в основе которой лежит набор выбранных пользователем пакетов. Содержимое тех или иных пакетов определяет внешний вид виртуальной файловой системы. Например:

Базовый пакет (составляющие: 1 платформенно-зависимая, 1 платформенно-независимая):
/pkgs/base/qnx/core1.0
/pkgs/base/qnx/core1.0/etc/passwd
/pkgs/base/qnx/core1.0/bin/true
/pkgs/base/qnx/core1.0/x86/bin/cat
/pkgs/base/qnx/core1.0/x86/bin/echo

Пакет ‘Утилиты’ (1 платформенно-зависимая составляющая):
/pkgs/base/qnx/util1.0/x86/bin/ls

В данном примере, мы имеем два пакета с некоторым набором файлов. Два файла, passwd (текстовый файл) и true (shell-скрипт) являются платформенно-независимыми. Также, есть несколько файлов (cat, echo и ls), предназначенных только для платформы x86.

Линиями на рисунке отображена переадресация из виртуальной файловой системы в реальную файловую систему.

Когда на виртуальную файловую систему приходит запрос, осуществляется поиск. В результате поиска определяется, управляется ли этот файл пакетной файловой системой или нет. Если да, то выполняется переадресация к реальному местоположению файла внутри соответствующего пакета. Реально файл может располагаться на любой файловой системе (QNX 4, Linux, DOS), в сети (NFS, CIFS) или даже в локальном кэше (теневая файловая система).