mkifs

Построение файловой системы образа ОС (QNX)

Синтаксис:

mkifs [-a суффикс] [-l строка_ввода] [-n[n]] [-r корневой_каталог]

[-s раздел] [-v] [файл_построения_образа [файл_образа]]


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

QNX Neutrino, Linux, Microsoft Windows

Опции:

-a суффикс

Добавить суффикс к файлам идентификаторов, созданным с помощью [+keeplinked].

-l строка_ввода

("эль") До начала интерпретации файла построения образа обработать строку_ввода. Строки ввода, передаваемые утилите mkifs, необходимо заключать в кавычки, чтобы предотвратить их обработку командным интерпретатором (поскольку строки ввода mkifs часто содержат пробелы). Несколько опций -l обрабатываются в заданном порядке. Значение по умолчанию отсутствует.

-n[n]

Принудительно установить время изменения для всех inline-файлов равным 0. Если указать -nn, то утилита mkifs устанавливает время изменения всех файлов равным 0.

При добавлении файлов к образу IFS утилитой mkifs используется информация о метке времени файла на хост-компьютере. При создании inline-файла (отсутствующего на хост-компьютере) утилитой mkifs создается собственная информация о метке времени. По умолчанию это время создания образа.

В результате для двух идентичных сборок вычисляются два разных значения контрольной суммы (поскольку время создания и время изменения файла различаются). При использовании опции -n значение контрольной суммы будет одинаковым для всех идентичных сборок.

Опция -nn позволяет решить проблему с переходом на летнее время, свойственную NTFS. Эта опция принудительно устанавливает время изменения для всех файлов в образе IFS равным 0. Это обеспечивает вычисление одинаковой контрольной суммы для всех последующих сборок одного образа IFS.

-r корневой_каталог

Выполнить поиск путей по умолчанию в каталоге корневой_каталог до их поиска в местоположении по умолчанию. Обычно утилита mkifs выполняет поиск путей по умолчанию в последовательности, установленной переменной MKIFS_PATH, описание которой приведено далее в этом разделе. Если установлена опция - r, то утилита mkifs сначала выполняет поиск путей, в начале которых в качестве префикса вместо ${QNX_TARGET} указана переменная корневой_каталог, как в следующих случаях:
  1. корневой_каталог/${PROCESSOR}/sbin

  2. все другие пути по умолчанию, также с префиксом корневой_каталог

  3. ${QNX_TARGET}/${PROCESSOR}/sbin

  4. все другие стандартные пути по умолчанию с префиксом ${QNX_TARGET}

Структура путей по каталогам в корневом_каталоге должна в точности совпадать со структурой путей по умолчанию в ${QNX_TARGET}, но сам корневой_каталог может находиться по любому выбранному пути. Например, при необходимости добавления следующего файла:

/dev/ppcbe/sbin/pci-ppc405

опцию следует указать следующим образом:

-r /dev

Обратите внимание, что ${PROCESSOR} не добавляется в корневой_каталог.

Примечание. Если установлен параметр MKIFS_PATH, то утилита mkifs игнорирует опцию - r.

-s секция

Не удалять указанную секцию из исполняемых файлов ELF при создании образа IFS. Чтобы задать дополнительные секции, эту опцию можно указать несколько раз.

Утилита mkifs по умолчанию не удаляет секции QNX_Phab (ресурсы Photon), QNX_usage (сообщение об использовании) и QNX_info (свойства сборки).

-v

Вывести расширенную информацию. Каждая дополнительная опция -v обеспечивает вывод более подробной информации. Значение по умолчанию расширенная информация не выводится.

Описание:

Утилита mkifs используется для создания файловой системы образа ОС на основе спецификаций файла построения образа.

Примечание. Не следует путать эту команду с утилитой mkefs, которая создает встраиваемую файловую систему, или с утилитой mketfs, которая создает встраиваемую транзакционную файловую систему (ETFS).

В командной строке можно задать следующие файлы:

файл_построения_образа

Входной файл построения образа, на основе которого утилита mkifs должна создать образ. Используйте - , чтобы указать стандартный поток ввода (по умолчанию).

файл_образа

Файл для сохранения образа, построенного утилитой mkifs. Используйте -, чтобы указать стандартный поток вывода (по умолчанию). Следует отметить, что файл_образа можно указать только в том случае, если указан файл_построения_образа.

Файлы построения образа

В файле построения образа применяется та же грамматика, что для команды mkefs, но поддерживаются другие атрибуты.

В файле построения образа приведен список файлов разных типов. Утилита mkifs помещает эти файлы в создаваемый образ. Кроме файлов, которые требуется включить в файл образа, можно задать различные атрибуты, используемые для установки параметров файлов или образа в целом.

Примечание. Использовать обратную косую черту (\) для разбиения длинных строк на более короткие фрагменты невозможно.

В файле построения образа для определения начала комментария используется символ решетки (#): все символы после него и до конца строки игнорируются. Между командой в файле построения образа и символом решетки необходимо вставить пробел.

Все строки имеют следующую форму:

[атрибуты] спецификация_файла


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

Атрибут можно использовать:
Атрибуты должны быть заключены в квадратные скобки. Для комбинирования атрибутов (например, чтобы одновременно задать идентификатор пользователя и идентификатор группы) необходимо заключить маркеры обоих атрибутов в одни и те же квадратные скобки. Пример.

# правильно

[uid=5 gid=5] имя файла

# неправильно

[uid=5] [gid=5] имя файла

Существуют атрибуты двух типов:

булевы атрибуты

Это атрибуты, которым предшествует знак плюс ("+") или минус ("-").

атрибуты значения

Это атрибуты, которые заканчиваются знаком равенства ("="), а за ним следует значение. Вставлять пробелы до и после знака равенства не следует.

Вопросительный знак (?) перед атрибутом делает параметр условным. Атрибут устанавливается только в том случае, если он еще не установлен. Например, синтаксис ?+bigendian устанавливает атрибут +bigendian только в том случае, если атрибут +bigendian или -bigendian еще не задан.

Аргумент спецификация_файла принимает одну из следующих форм:

путь

Путь на хосте совпадает с путем в образе.

путь_в_целевой_системе=путь_на_хосте

Указанный файл или содержимое указанного каталога извлекается из файловой системы хоста и помещается в образ.

путь_в_целевой_системе={содержимое}

Встроенное определение. Содержимое файла приводится списком в самом файле построения образ в фигурных скобках ({ }). Этот файл на хосте не существует. Содержимое inline-файла не может находиться в той же строке, что и открывающая или закрывающая фигурная скобка.

Примечание.

Утилита mkifs выполняет синтаксический анализ содержимого inline-файла только на предмет поиска закрывающей фигурной скобки. Например, утилита mkifs не интерпретирует знак решетки (#) в inline-файле как знак начала комментария. Синтаксис inline-файла определяется его назначением в целевой системе.

Закрывающие фигурные скобки (}) и символы обратной косой черты (\) в inline-файле необходимо экранировать обратной косой чертой.

Перед любым классом файлов может быть указано несколько атрибутов или ни одного атрибута. Эти атрибуты позволяют задать характеристики файла (например, идентификатор пользователя-владельца файла в целевой системе, тип файла и т.д.).

Примечание. По умолчанию утилита mkifs удаляет отладочную информацию из исполняемых файлов, добавляемых в образ. Это позволяет уменьшить размер образа. Для сохранения этой информации укажите атрибут +raw.

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

Атрибуты

Команда mkifs поддерживает следующие атрибуты.
Вертикальная черта указывает на необходимость наличия либо первого, либо второго элемента, но не обоих элементов одновременно (например, запись "+|- bigendian" означает "+bigendian или -bigendian, а не +-bigendian").

Атрибут autolink (булев)

+|-autolink

Если атрибут autolink установлен (он установлен по умолчанию), то в случае обнаружения утилитой mkifs разделяемого объекта при обработке выполняется поиск в образе имени SONAME (заданного опцией -h компоновщика). Обычно это имя разделяемого объекта, включающее номер версии (например, libc.so.1). Команда mkifs помещает этот файл в файловую систему образа с именем, содержащим номер версии, и вставляет имя без номера версии в символьную ссылку на файл. Например, если указать:

libc.so

в файле построения образа, то libc.so.1 становится именем файла, а libc.so символьной ссылкой на него. Если указать

libc.so.1


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

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

libc.so.1

libc.so.2

[type=link] libc.so=libc.so.2


В этом случае имя libc.so указывает на "правильную" версию библиотеки.

Эту функцию можно отключить, указав атрибут -autolink.

Атрибут bigendian (булев)

+|-bigendian


Установить порядок байтов для файловой системы образа: либо обратный порядок байтов (с использованием синтаксиса +bigendian), либо прямой порядок байтов (с использованием синтаксиса -bigendian). Обычно при создании загрузочного образа эту опцию устанавливать необязательно, поскольку загрузочный файл обеспечивает необходимый порядок байтов. Если создаваемая файловая система не должна быть самозагружаемой или если в загрузочном файле отсутствует информация о требуемом порядке байтов, то при создании файловой системы образа утилита mkifs использует порядок байтов системы хоста.

Атрибут cd

cd=путь


До попытки открытия файла установить в качестве текущего рабочего каталога каталог, расположенный по указанному пути. По умолчанию определен каталог, из которого была вызвана утилита mkifs.

Атрибут chain

chain=адрес


Определить адрес, по которому операционная система найдет следующую файловую систему образа. Адрес по умолчанию отсутствует.

Атрибут code

code=спецификация_uip


Определить необходимость выполнения сегмента кода исполняемого файла непосредственно из файловой системы образа (uip или u) или будет осуществляться его копирования при вызове (copy или c). Значение по умолчанию предусматривает выполнение сегмента кода "на месте" (uip). Для получения дополнительной информации см. раздел "Примечания по "выполнению на месте" и копированию" далее.

Атрибут compress (булев)

+|-compress[=алгоритм]


Определить необходимость сжатия образа. Значение по умолчанию ложь.

Если определить необходимость сжатия, также можно дополнительно задать алгоритм, указав его номер:
Атрибут data

data=спецификация_uip

Определить необходимость выполнения сегмента данных исполняемого файла непосредственно из файловой системы образа (uip или u) или будет осуществляться его копирования при вызове (copy или c). Значение по умолчанию предусматривает выполнение сегмента данных "на месте" (uip). Для получения дополнительной информации см. раздел "Примечания по "выполнению на месте" и копированию" далее.

Атрибут dperms

dperms=права_доступа_к_каталогу


Установить права доступа к каталогу. Для получения дополнительной информации см. атрибут perms.

Атрибут filter

filter=спецификация_фильтра


Прогнать файл через заданную программу-фильтр, используя данные файла как стандартный поток ввода для программы, а данные стандартного потока вывода программы как данные, размещаемые в файловой системе образа. По умолчанию фильтр не используется.

Для демонстрации применения фильтра рассмотрим сохранение сжатого файла в файловой системе образа, если файл существует в распакованном виде в файловой системе хоста:

[filter="compress"] data.Z = data


В результате запускается команда compress из командного интерпретатора, который в качестве стандартного потока ввода передает содержимое data. При выполнении команда compress создает в своем стандартном потоке вывода сжатую версию данных из стандартного потока ввода. Затем данные стандартного потока вывода помещаются в файловую систему образа в виде файла data.Z.

В качестве значения спецификация_фильтра можно указать значение none. Это целесообразно при необходимости переопределения глобальной спецификации фильтра.

Атрибут followlink (булев)

[+|-followlink]путь_в_целевой_системе=путь_на_хосте


Если указать атрибут +followlink или опустить его, утилита mkifs переходит по всем ссылкам и в качестве пути_в целевой_системе использует копию пути_на_хосте.

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

Атрибут gid

gid=спецификация_идентификатора


Установить идентификатор группы для файла. В качестве значения этого атрибута можно указать число или звездочку (*). Если указать в качестве значения звездочку, то идентификатор группы берется из файла хост-системы. Для inline-файла идентификатор группы это группа, в которую входит пользователь, запустивший утилиту mkifs. Значение по умолчанию для этого атрибута *.

Атрибут image

image=спецификация_адресного_пространства

Установить базовый адрес и предельные значения размера для файловой системы образа. Формат атрибута: (необязательно) начальный адрес, за которым следует несколько параметров, описывающих размер адресного пространства или ни одного параметра. В адресах и значениях размера можно использовать не зависящий от регистра суффикс k, m или g.

Начальный адрес это базовый адрес образа. Он важен только при построении загружаемого образа. Его значение по умолчанию зависит от выбранного загрузочного файла. Например, если в системе x86 используется файл bios.boot, то начальный адрес образа приходится на 4 МБ.

-конечный_адрес

Тире, за которым следует число, соответствует конечному адресу, то есть последнему допустимому адресу для образа. Если полученный образ выходит за пределы области, указанной этим адресом, выводится сообщение об ошибке. По умолчанию предельное значение отсутствует.

,максимальный_размер

Запятая, за которой следует число, соответствует максимальному допустимому размеру образа. Если размер полученного образа превышает это число, выводится сообщение об ошибке. По умолчанию предельное значение отсутствует. Максимальный размер образа зависит от конфигурации. Например, в системе x86 с BIOS он может быть ограничен.

=полный_размер

Знак равенства, за которым следует число, соответствует полному размеру, до которого дополняется полученный образ. По умолчанию размер образа не дополняется.

%выравнивание

Знак процента, за которым следует число, соответствует значению выравнивания, используемому для образа. Размер полученного образа дополняется до величины, кратной этому значению. Значение по умолчанию 4.

Примечание. Для создания образа в ROM/FLASH необходимо указать значения для обоих атрибутов файла image и ram. В противном случае менеджер процессов считает, что образ находится в ОЗУ. Для получения дополнительной информации см. раздел "Примечания по "выполнению на месте" и копированию" далее.

Атрибут keeplinked (булев)

+|-keeplinked

Если значение атрибута истинное и для размещения исполняемого файла в файловой системе образа утилита mkifs должна запустить компоновщик, то имя выходного файла компоновщика формируется из базового имени пути на хосте с добавлением .sym. Например, если имя хоста ../foo/bar, то имя выходного файла будет bar.sym. Если значение атрибута ложное, то для выходного файла используется временно созданное имя, которое удаляется по завершении выполнения утилиты mkifs. Значение по умолчанию ложь.

Атрибут linker

linker=[спецификация_идентификатора_компоновщика]спецификация_компоновщика

При создании загружаемого образа утилите mkifs иногда требуется запускать компоновщик для организации перемещаемых объектов внутри образа. Эта опция позволяет указать макрорасширения, аналогичные printf для определения способа создания командной строки компоновщика утилитой mkifs (для получения дополнительной информации см. раздел "Характеристика компоновщика" далее).

Обычно эту опцию указывать необязательно, поскольку утилита mkifs или загрузочный файл содержат значения по умолчанию. Для файлов ELF разных типов можно использовать различные компоновщики.

Значение атрибута состоит из необязательной спецификации идентификатора компоновщика и спецификации компоновщика. Указываемая спецификация идентификатора компоновщика должна состоять из следующих компонентов:
  1. Открывающая скобка (.

  2. Список разделенных запятыми допустимых машинных номеров (типов целевых систем) ELF (константы EM_* из включаемого файла) для спецификации компоновщика. Список номеров завершается точкой с запятой.

  3. Список разделенных запятыми допустимых типов файлов ELF (константы ET_* из файла ). Этот список завершается точкой с запятой.

  4. Список разделенных запятыми типов сегментов программ ELF (константы PT_*, также из файла ).

  5. Закрывающая скобка ).

Если указана спецификация идентификатора, то спецификация компоновщика используется только в том случае, если машинный номер во входном файле ELF совпадает с одним из указанных номеров и тип входного файла ELF совпадает с одним из указанных чисел и по меньшей мере один тип сегмента программы во входном файле совпадает с одним из указанных чисел:
Атрибут module

module=имя_модуля

Этот атрибут используется для добавления к procnto дополнительных модулей.

Например, для использования диспетчера адаптивной декомпозиции необходимо повторно построить образ ОС с использованием опции [module=aps], добавив ее к оператору PATH= в файле построения образа:

[module=aps] PATH=/proc/boot ./procnto -vv

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

Для получения информации о создании разделов см. раздел "Creating partitions" ("Создание разделов") в главе "Setting Up and Using the Adaptive Partitioning Scheduler" ("Настройка и использование диспетчера адаптивной декомпозиции") в Руководства системного программиста (администратора) КПДА.10964-01 32, в разделе по адаптивной декомпозиции.

Для получения дополнительной информации о запуске приложений внутри определенного раздела см. раздел "Launch processes in partitions" ("Запуск процессов в разделах") в главе "Setting Up and Using the Adaptive Partitioning Scheduler" ("Настройка и использование диспетчера адаптивной декомпозиции") в Руководства системного программиста (администратора) КПДА.10964-01 32 в разделе по адаптивной декомпозиции.

Примечание. Этот атрибут был добавлен в ОС QNX Neutrino Core OS 6.3.2.

Атрибут optional (булев)

+|-optional


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

Атрибут page_align (булев)

+|-page_align


Если атрибут принимает значение "истина", выровнять файл по границе странице. Утилита mkifs всегда выравнивает исполняемые файлы и разделяемые объекты по границам страницы, поэтому этот атрибут влияет только на файлы данных и файлы, для которых указан атрибут +raw.

Атрибут perms

perms=права_доступа

Установить права доступа к файлу. Аргумент права_доступа может принимать одно из следующих значений: Значение по умолчанию *.

Примечание. При запуске на хосте под управлением Windows утилита mkifs не может получить из файла права на выполнение (x), setuid ("set user ID") или setgid ("set group ID"). Используйте атрибут perms, чтобы явно задать эти права. Возможно, также потребуется использовать атрибуты uid и gid для корректной установки принадлежности. В целях определения необходимости установки для утилиты прав setuid или setgid см. описание этой утилиты в руководстве по утилитам.

Атрибут physical

physical=[имя_ЦП,]имя_загрузочного_файла [аргументы_фильтра]

Этот атрибут указывает на то, что создается самозагружаемая файловая система. Его можно указать только один раз в файле построения образа. Образ будет запущен в режиме физической памяти.

Примечание. Атрибут physical пока не реализован. Используйте атрибут virtual.

Для получения дополнительной информации см. атрибут virtual.

Атрибут prefix

prefix=спецификация_префикса


Установить префикс для имен целевых файлов. При построении загружаемого образа значение по умолчанию proc/boot. В противном случае по умолчанию задается пустая строка.

Атрибут ram

ram=специкация_адресного_пространства

Установить базовый адрес и предельные значения размера памяти для считывания и записи, используемой исполняемыми файлами в файловой системе образа. Формат атрибута: (необязательно) начальный адрес, за которым следует несколько параметров, описывающих размер адресного пространства или ни одного параметра. В адресах и значениях размера можно использовать не зависящий от регистра суффикс k, m или g.

Примечание. Для создания образа в ROM/FLASH необходимо указать значения для обоих атрибутов файла image и ram. В противном случае менеджер процессов считает, что образ находится в ОЗУ. Для получения дополнительной информации см. раздел "Примечания по "выполнению на месте" и копированию" далее.

Этот атрибут необходимо задать, если предполагается хранить фактический образ в устройстве, предназначенном только для чтения (например, в ПЗУ или флэш-памяти). Для определения местоположения используется атрибут image.

Начальный адрес указывает на базовый адрес ОЗУ и важен только при построении загружаемого образа. Его значение по умолчанию зависит от выбранного загрузочного файла.

-конечный_адрес

Тире, за которым следует число, соответствует конечному адресу, то есть последнему допустимому адресу для ОЗУ. Если потребление ОЗУ выходит за пределы этого адреса, выводится сообщение об ошибке. По умолчанию предельное значение отсутствует.

,максимальный_размер

Запятая, за которой следует число, соответствует максимальному допустимому размеру ОЗУ. Если полученный образ потребляет объем ОЗУ, превышающий это число, выводится сообщение об ошибке. По умолчанию предельное значение отсутствует. Максимальный размер ОЗУ зависит от конфигурации.

=полный_размер

Знак равенства, за которым следует число, соответствует полному размеру, до которого дополняется потребление ОЗУ. По умолчанию не дополняется.

%выравнивание

Знак процента, за которым следует число, соответствует значению выравнивания, используемому для ОЗУ. Размер ОЗУ дополняется до величины, кратной этому значению. Значение по умолчанию 4.

Для получения информации о взаимодействии всех этих параметров см. раздел "Примечания по "выполнению на месте" и копированию" далее.

Атрибут raw (булев)

+|-raw

Если атрибуту raw принимает ложное значение (установлено по умолчанию), то утилита mkifs удаляет отладочную информацию из исполняемых файлов.

Если для файла указан атрибут +raw, то этот файл обрабатывается как файл данных, даже если в противном случае он был бы обработан как исполняемый файл и перемещен.

Примечание. Не следует указывать атрибут +raw для разделяемых объектов: в этом случае совместный доступ к этим объектам не предоставляется.

Рассмотрим фрагмент файла построения образа, в котором демонстрируется процедура использования и область применения атрибута raw:

[+raw] # Не удалять информацию об использовании, отладочную информацию

othello # или ресурсы Photon из двоичных файлов

[-raw] esh # Относится только к esh

pwm # По-прежнему действует флаг +raw

pfm

[-raw] # Отключить +raw, поскольку при использовании +raw совместный доступ

libphrender.so # к разделяемым объектам невозможен

libph.so

[+raw] my_ph_app # Использовать Ресурсы Photon только

# для этого файла. Флаг -raw

# по-прежнему действует для других файлов.

libc.so # По-прежнему действует флаг -raw


Примечание. Если для построения образа используются средства Windows, то при начальной загрузке образа для файлов с атрибутом +raw устанавливается запрет на выполнение. Это происходит по причине того, что в файловой системе win32 отсутствует возможность установки бита выполнения для файла. Для обеспечения возможности выполнения этих файлов укажите при использовании в файле построения образа атрибута +raw атрибут perms=+x.

Атрибут script (булев)

+|-script


Если значение атрибута истинное, то после самоинициализации менеджера процессов открывается файл, который обрабатывается как файл сценария. Синтаксический анализ каждой строки выполняется как анализ командной строки, которую необходимо выполнить. Если атрибут +script установлен для нескольких файлов, то впоследствии в файловой системе образа они объединяется в один файл. В качестве имени этого файла используется первое имя файла сценария в файле построения образа. Имена файлов для последующих файлов сценариев игнорируются, но они должны быть уникальными. Для получения дополнительной информации о синтаксисе командной строки см. в разделе "Файлы сценариев" далее.

Атрибут search

search=имя_файла:имя_файла:


Этот атрибут определяет для утилиты mkifs необходимость поиска файла в указанных папках хост-системы. Часть имени файла хоста с именем каталога поиска не добавляется к имени, хранящемуся в файловой системе образа. По умолчанию используется содержимое переменной среды MKIFS_PATH.

Примечание. Такие разделители как двоеточие, и косая черта в пути соответствуют стандартным соглашениям об именовании Unix, однако для поиска в системе Windows необходимо использовать стандартные правила именования Windows (например, разделитель в виде точки с запятой и обратная косая черта в пути).

Атрибут type

type=тип_файла

Установить тип файлов, создаваемых в файловой системе образа. Допустимые типы файлов: Примечание. Значение [type=dir] означает, что утилита mkifs должна создать каталог в целевой системе. При копировании содержимого каталога указывать тип необязательно. Например, для копирования каталога /usr/nto/x86/bin в каталог /usr/bin необходимо указать:

/usr/bin=/usr/nto/x86/bin

Атрибут uid

uid=спецификация_идентификатора

Установить идентификатор пользователя для файла. В качестве значения этого атрибута можно указать число или звездочку (*). Если указать в качестве значения звездочку, то идентификатор пользователя берется из файла хост-системы. Для inline-файла идентификатор пользователя это пользователь, запустивший утилиту mkifs. Значение по умолчанию для этого атрибута *.

Атрибут virtual

virtual=[имя_ЦП,]имя_загрузочного_файла [аргументы_фильтра]


Этот атрибут указывает на то, что создается система виртуальной адресации.

Если значение содержит запятую (,) или косую черту (/), предполагается, что строка перед ним принимается за тип ЦП целевой системы. Если тип ЦП не задан, утилита mkifs использует тип ЦП системы хоста. Этой строке присваивается переменная среды PROCESSOR (которая определяет путь поиска MKIFS_PATH для файлов хостов).

Символы после запятой или косой черты (или знака равенства для атрибута, если отсутствует запятая или косая черта) вплоть до первого пустого символа считаются именем загрузочного файла. К данному имени добавляется суффикс .boot, и для этого файла выполняется поиск по MKIFS_PATH. Загрузочные файлы по умолчанию находятся в каталоге ${QNX_TARGET}/${PROCESSOR}/boot/sys. Загрузочные файлы зависят от процессора, однако далее приведен список основных таких файлов:

binary.boot

Создать простой двоичный образ (без команды перехода, добавляемой raw.boot). Если при создании двоичного образа его требуется загрузить при помощи U-Boot (или другой программы загрузки), необходимо выполнить mkifs -vvvv buildfile imagefile, чтобы определить фактический начальный адрес, а затем при запуске образа передать этот начальный адрес начальному загрузчику. Если изменить код программы начальной инициализации (startup), начальный адрес может измениться, поэтому необходимо определять его каждый раз. В случае необработанного двоичного образа (raw.boot),  начальный загрузчик может просто осуществить переход по тому же адресу, в который был загружен образ.

bios.boot

Создать образ, подходящий для компьютеров с BIOS. Информация, собранная из BIOS, передается программе начальной инициализации startup.

bios16m.boot

Не проверять память за пределами 16 МБ. Использовать этот загрузочный файл в случае более ранних версий BIOS, в которых возникают проблемы с такой памятью.

bios_nokbd.boot

Игнорировать контроллер клавиатуры. Этот загрузочный файл используется, если BIOS не поддерживает и не эмулирует должным образом устаревшие функции контроллеров клавиатуры по адресу 0x64.

elf.boot

Создать образ, который выглядит как исполняемый файл ELF.

nobios.boot

Создать образ, подходящий для компьютеров без BIOS.

openbios.boot

Создать образ для OpenBIOS от корпорации IBM.

prepboot.boot

Создать образ, загружаемый с диска компьютера PREP.

raw.boot

Создать двоичный образ с использованием последовательности команд в начале для перехода к точке смещения виртуальный_адрес_секции_запуска в пределах заголовка программы начальной инициализации startup. Благодаря этому при загрузке необработанного образа в память с помощью начального загрузчика можно просто передать управление непосредственно на начало образа вместо определения фактического значения виртуальный_адрес_секции_запуска при каждом изменении кода программы начальной инициализации startup.

srec.boot

Создать образ в формате S-record.

Для получения дополнительной информации о содержимом этого файла см. раздел "Загрузочный файл" далее.

Все символы в значении атрибута после пробела используются в качестве аргументов любой команды фильтрации образа, указанной в загрузочном файле, как в следующем примере:

[virtual="x86,srec -b"] boot = {

Примечание. Если значение атрибута virtual содержит пробел, заключите строку в кавычки. В противном случае утилита mkifs попытается интерпретировать это значение как дополнительный атрибут файла построения образа, помещенный в те же квадратные скобки.

Содержимое файла хоста, к которому относится этот атрибут, подвергается синтаксическому анализу в целях поиска исполняемых файлов начальной загрузки, которые используются для построения системы. Каждая строка соответствует одному исполняемому файлу начальной загрузки:
Файлы сценариев

Как было упомянуто ранее, атрибут [+script] означает для утилиты mkifs, что указанный файл является файлом сценария, т.е. последовательностью команд, которые необходимо выполнить, когда запустится менеджер процессов.

Примечание. Для запуска команды на момент выполнения сценария должен быть доступен соответствующий исполняемый файл. Исполняемый файл можно добавить в образ или получить его из файловой системы, запущенной до того момента, когда потребовался исполняемый файл. Второй подход позволяет получить образ меньшего размера.

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

[модификаторы] [командная_строка [&]]


Модификаторы это список элементов, разделенных пробелами и заключенных в квадратные скобки, которые изменяют способ запуска указанной командной_строки в QNX Neutrino. Если после модификаторов указана командная строка, то они влияют только на эту командную строку. Если командная строка не указана, то модификаторы применяются ко всем последующим командным строкам.

Примечание. Если указать после командной строки знак амперсанда (&), то программа запускается в фоновом режиме, при этом Neutrino не ожидает завершения программы до перехода к следующей строке сценария.

Далее описаны модификаторы. Если модификаторы описаны как булевы, то для их установки или отмены используется знак плюс (+) или минус (-). Для остальных модификаторов используются параметры.

Модификатор argv0

Установить элемент argv[0] в записи аргумента команды. По умолчанию он совпадает с именем команды. Как правило, эта опция используется для моделирования вызова команды с использованием другого имени. Классическим примером является команда compress, которую можно вызвать как uncompress:

[argv0=uncompress] compress filename.Z


Модификатор cpu

Определяет ЦП, на котором следует запускать следующий процесс (или, если атрибут указан в строке без команды, определяет ЦП по умолчанию для всех последующих процессов). Этот модификатор удобно использовать для определения исключительной мультипроцессорности (Bound Multiprocessing, BMP). ЦП следует указывать как номер процессора, начинающийся с нуля.

[cpu=0] my_program

Значение * обеспечивает запуск процессов на всех процессорах:

[cpu=*] my_program

Если во время загрузки процессор с данным номером не обнаружен, то выводится предупреждающее сообщение и команда запускается без ограничения, определяемого процессорной маской.

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

Модификатор external (булев)

В нормальном режиме утилита mkifs распознает определенные команды как внутренние команды. Это команды, которые не загружаются из файловой системы хоста, но непосредственно интерпретируются утилитой mkifs. К ним относятся следующие команды:

display_msg сообщение

Вывод сообщения, следующего непосредственно после команды display_msg. Эту команду целесообразно использовать при выполнении диагностики запуска системы. Часто применяется в качестве контрольной точки.

procmgr_symlink

Аналогична команде ln -P, за тем исключением, что можно не указывать ln.

reopen [имя_файла]

Перенаправление стандартных потоков ввода, вывода и ошибок в указанный файл. Временная приостановка интерпретации файла сценария до успешного выполнения stat() по указанному путевому имени. Имя файла по умолчанию: /dev/console.

waitfor путевое_имя [время_ожидания]

Временная приостановка файла сценария до успешного выполнения stat() по указанному путевому имени. Часто используется для синхронизации, чтобы разрешить менеджеру ресурсов выполнить инициализацию, а затем перейти к дальнейшей интерпретации файла сценария.

Дополнительный параметр время_ожидания задает максимальное время ожидания в секундах до появления файла. Это значение может иметь один знак после запятой, задающий десятые доли секунды. Значение по умолчанию 5,0 секунд.

Модификатор +external дает утилите mkifs инструкцию искать указанную команду в файловой системе хоста, не используя внутреннее значение команды. Значение по умолчанию: -external.

Примечание. Польза от использования модификатора +external сомнительна. Модификатор external будет лишним для команд, которые не являются внутренними.

Модификатор pri

Позволяет задать приоритет команды и дополнительно алгоритм диспетчеризации. Модификатор pri допускает числовой приоритет, за которым может следовать одна из следующих букв:

f

Алгоритм диспетчеризации FIFO.

r

Алгоритм циклической диспетчеризации (round-robin).

o

Другой алгоритм диспетчеризации (в настоящий момент определен как циклический).

Описание различных уровней приоритета и алгоритмов диспетчеризации приведено в руководстве по системной архитектуре.

Например, для запуска драйвера консоли devc-con с приоритетом 20 с диспетчеризацией FIFO укажите:

[pri=20f] devc-con -n9 &

Значение по умолчанию для этого модификатора совпадает со значением по умолчанию для procnto.

Модификатор session (булев)

Значение +session определяет процесс как лидер сеанса (в соответствии с POSIX), а стандартный поток ввода stdin процесса управляющим терминалом (т.е. направляет Ctrl-C всей группе процессов). Значение -session определяет процесс не как лидер сеанса. Значение по умолчанию -session.

Обычно этот параметр используется для командного интерпретатора:

[+session] esh


Загрузочный файл

При построении загружаемой файловой системы необходимо указать загрузочный файл с использованием атрибута physical или virtual. Следует помнить, что спецификация загрузочного файла должна располагаться в начале файла построения образа. Если первым символом загрузочного файла является открывающая квадратная скобка ([), то приводится список атрибутов конфигурации с тем же синтаксисом, что и для файла построения образа. Список атрибутов завершается закрывающей квадратной скобкой (]). Допустимые атрибуты и их форматы:

attr=атрибут_образа

Указать атрибут для добавления к образу. Эти атрибуты обрабатываются после опции командной строки -l ("эль") и файла построения образа, но для атрибута_образа обычно используется префикс ?, чтобы предотвратить переопределение свойст, явно заданных опцией -l или файлом построения образа.

default_image=спецификация_адресного_пространства

Установить значение по умолчанию для атрибута файла image (см. выше).

default_ram=спецификация_адресного_пространства

Установить значение по умолчанию для атрибута файла ram (см. выше).

filter=спецификация_фильтра_образа

Запустить спецификацию_фильтра_образа после создания образа. Следующие коды форматирования расширены: См. пример использования спецификации_фильтра_образа в разделе "Фильтр образов" далее.

len=длина_загрузочной_записи

Параметр длина_загрузочной_записи определяет объем пространства, которое необходимо оставить перед файлом образа (перед фактической файловой системой образа) для сохранения сведений системного заголовка или кода префикса начальной загрузки. Это минимальный резервируемый объем пространства. Если код префикса начальной записи, следующий за атрибутами загрузочного файла, превышает заданное здесь значение, вместо него используется размер кода префикса начальной загрузки. Значение по умолчанию 0.

notloaded=длина

В некоторых системах (например, IBM OpenBIOS) сведения системного заголовка не загружаются в память и не добавляют смещение памяти, где хранится информация (базовый адрес образа устанавливается атрибутом image в файле построения образа). Этот атрибут определяет объем информации, незагружаемой в память. Значение по умолчанию 0.

paddr_bias=число

В некоторых ЦП (например, MIPS) аппаратное обеспечение резервирует диапазон виртуальных адресов, однозначно соответствующих физическим адресам. Этот атрибут информирует утилиту mkifs о способе преобразования виртуального адреса в соответствующий физический адрес в памяти по формуле:

phys_addr = виртуальный_адрес + число

Значение по умолчанию 0.

pagesize=размер

Установить размер страницы в файловой системе образа. Утилита mkifs выравнивает разные структуры до величины, кратной этому значению. Значение по умолчанию 4 KB.

vboot=адрес

Иногда, при построении виртуальной системы, инициализация устройства подкачки страниц памяти осуществляется программой начальной инициализации startup (например, в архитектуре x86), а не в ядре procnto (как например, в архитектуре MIPS). В первом случае эта опция сообщает утилите mkifs, какой базовый виртуальный адрес следует использовать для исполняемых файлов во время начальной загрузки. Эта опция не влияет на построение физической системы. Адрес по умолчанию отсутствует.

Достигнув символа закрывающей квадратной скобки (]) после списка атрибутов загрузочного файла, утилита mkifs выполняет поиск строки boot. Если такая строка найдена, то утилита mkifs считает, что все данные, непосредственно следующие после нее и до конца файла, являются кодом префикса начальной загрузки. Эти данные помещаются в начало файла образа. Если был задан атрибут len и его величина превышает размер кода префикса начальной загрузки, размер файла образа дополняется до указанного размера.

Фильтр образов

В файле построения загрузочного образа можно задать фильтр образов и дополнительно указать для него макрорасширения. Сведения об этих макрорасширениях приведены выше в описании атрибута filter.

В настоящее время доступны следующие фильтры образов:

mkifsf_elf

Упаковать весь образ в секцию ELF.

mkifsf_openbios

Исправить заголовок в начале образа для OpenBIOS от корпорации IBM.

mkifsf_srec

Преобразовать образ в формат S-Record. Для этого фильтра можно использовать следующие опции:
Обычно предполагается, что фильтры берут файл, заданный переменной %i, и изменяют его "на месте". Если это невозможно (например, в результате применения программы-фильтра изменяется размер файла), укажите значение %I, чтобы утилита mkifs сохранила исходный файл с временным именем файла (это имя задается переменной %I) и ожидала измененный файл с именем, заданным переменной %i. Это происходит только в том случае, если указано макрорасширение %I.

Спецификация компоновщика

Спецификация компоновщика позволяет управлять формированием командной строки компоновщика, когда утилите mkifs необходимо преобразовать перемещаемый объект в исполняемый файл, запускаемый по определенному адресу. Во многом она используется аналогично строке формата printf(), при этом символы копируются из формата в командную строку, пока не будет найден символ процента (%). Поддерживаются следующие коды форматирования после символа процента:

%h

Адрес, по которому следует поместить заголовок исполняемой программы в шестнадцатеричном формате.

%t

Адрес, по которому следует поместить текстовый сегмент в шестнадцатеричном формате. Это %h плюс объем пространства для структур заголовка исполняемых файлов.

%d

Адрес, по которому следует поместить сегмент данных в шестнадцатеричном формате. Это значение может быть равно нулю. В этом случае данные размещаются непосредственно за текстовым сегментом.

%o

Имя полученного исполняемого файла в виде строки.

%i

Имя входного перемещаемого файла в виде строки.

%(

Открыть условную секцию. После открывающей скобки ( указываются следующие символы: один символ, указывающий на переменную, которая определяет условие для секции, затем один из обычных условных операторов языка C, потом константа и, наконец, запятая.

Значение переменной сравнивается с константой и, если в результат сравнения истинный, то в создаваемую командную строку добавляется текст, следующий за запятой. Если результат сравнения ложный, то содержимое строки после запятой опускается.

Условный оператор завершается символом процента, за которым следует закрывающая скобка %). Условные выражения можно вкладывать друг в друга. Переменные, которые допускается использовать в условной секции:

Переменная

Значение

e

0 == прямой порядок байтов
1 == обратный порядок байтов

d

Адрес сегмента данных

f

0 == файл запуска
1 == файл начальной загрузки
2 == обычный файл

h

Адрес заголовка исполняемого файла

m

Номер машины из заголовка ELF

v

0 == файл с физической связью
1 == файл с виртуальной связью

V

0 == физическая система
1 == виртуальная система

%)


Завершить условную секцию.

Рассмотрим спецификацию команды компоновщика по умолчанию для mkifs:

static char default_linker[] = {

"qcc"

" -bootstrap -nostdlib -Wl,--no-keep-memory -Vgcc_nto"

"%(m==3,x86%)%(m==6,x86%)"

"%(m==8,mips%)"

"%(m==20,ppc%)"

"%(m==40,arm%)"

"%(m==42,sh%)"

"%(m!=3,%(m!=6,%(e==0, -EL%)%(e==1, -EB%)%)%)"

"%(h!=0, -Wl,-Ttext -Wl,0x%t%)%(d!=0, -Wl,-Tdata -Wl,0x%d%)"

" -o%o %i"

"%[M -L%^i -Wl,-uinit_%n -lmod_%n%]"

};


Значение указанных параметров приведено в разделе gcc.

Выходной формат образа

Образ, созданный утилитой mkifs, имеет следующую структуру:




Хотя для создания образа не требуется детально понимать его формат, желательно получить общее представление о нем.

Префикс начальной загрузки

В первой секции (которая называется префиксом начальной загрузки) размещается загрузочный файл, указанный в атрибуте virtual= или physical=. Для многих систем префикс начальной загрузки в образе не звключается. Если он присутствует, то обычно используется для решения одной из следующих проблем:
Заголовок секции запуска

Эта секция содержит информацию об образе, используемую начальным загрузчиком или программой запуска (IPL).

Часть этой секции записывается утилитой mkifs. Другой части присваивается нулевое значение. Информация в нее записывается кодом начальной загрузки (IPL) для передачи данных (определяемых во время выполнения IPL) программе начальной инициализации startup. Эти данные представляют собой набор структур (для получения дополнительной информации см. главу "Customizing IPL Programs" ("Настройка начальных загрузчиков") в документе Building Embedded Systems ("Создание встраиваемых систем")).

Если образ не является самозагружаемым, эта секция опускается.

Запуск (программа начальной инициализации startup)

В этом разделе содержится код и данные для программы начальной инициализации startup. Этот код должен быть выполнен из ОЗУ. Если образ содержится в ПЗУ/флэш-памяти, то стандартный код начальной загрузки (стандартный IPL) использует информацию из заголовка секции запуска, чтобы скопировать программу начальной инициализации startup в ОЗУ и передать ей управление.

Если образ не является самозагружаемым, эта секция опускается.

Завершитель секции запуска

Контрольная сумма для программы начальной инициализации startup. Если образ не является самозагружаемым, эта секция опускается.

Заголовок образа

Информация о следующей за ним файловой системе.

Каталог образа

Набор записей каталога для каждого файла в файловой системе образа.

Файлы

Файлы в файловой системе образа. Исполняемые файлы, запускаемые "на месте", выравниваются по границам страницы. Выполняется попытка заполнить все пропуски, возникшие в результате такого выравнивания, небольшими файлами данных, для которых отсутствует необходимость выравнивания.

Завершитель образа

Контрольная сумма для образа.

Примечания по "выполнению на месте" (XIP) и копированию

К исполняемым файлам в образе можно применить атрибуты code=copy|uip и data=copy|uip.

Примечание. В настоящее время к разделяемым объектам применяются атрибуты code=uip и data=copy. Для обеспечения результата применения атрибута code=copy вручную скопируйте разделяемый объект в папку /dev/shmem и соответствующим образом задайте переменную LD_LIBRARY_PATH. Для экономии места в ПЗУ/флэш- памяти выполните сжатие разделяемых объектов в файловой системе образа и распакуйте его в каталог /dev/shmem.

При запуске исполняемого файла эти атрибуты определяют необходимость выполнения кода или данных для этой исполняемой программы "на месте" или их копирования в ОЗУ. Файловая система образа может существовать либо в ОЗУ, либо в ПЗУ/флэш-памяти с линейной адресацией. Образы в ОЗУ обычно загружаются с устройства, на котором не поддерживается линейная адресация. К ним относятся начальная загрузка с диска, начальная загрузка по сети и начальная загрузка с устройств ПЗУ/флэш-памяти с коммутацией блоков памяти. К ним также относятся все сжатые образы.

Например, сжатый образ может находиться во флэш-памяти с линейной адресацией, но его невозможно использовать, пока он не будет распакован в ОЗУ. Для любого образа в ОЗУ существуют следующие комбинации:

Код

Данные

Комментарии

uip

uip

Однократное выполнение (по умолчанию)

uip

copy

Многократное выполнение

copy

uip

Однократное выполнение, неэффективное использование ресурсов

copy

copy

Многократное выполнение, неэффективное использование ресурсов


Значение по умолчанию предполагает, что требуется выполнить "на месте" и код, и данные. Такой способ подходит для исполняемых файлов, содержащих большое количество статических данных, которые необходимо выполнить только один раз (например, для менеджера ресурсов или драйвера, запускаемых при начальной загрузке системы). При выполнении данных "на месте" изменяется единственная копия данных программы, поэтому запустить программу повторно невозможно.
Примечание. В этом случае sticky-бит файла не устанавливается. Это указывает менеджеру процессов QNX Neutrino на исполняемые файлы, менеджер процессов предотвращает повторный запуск программы и устраняет возможность запуска программы с поврежденными статическими данными.

Поэтому для многократного запуска исполняемого файла необходимо задать атрибут data=copy.

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

При создании образа в ПЗУ/флэш-памяти существуют следующие комбинации:

Код

Данные

Комментарии

uip

uip

Однократное выполнение

uip

copy

Многократное выполнение (по умолчанию)

copy

uip

Однократное выполнение

copy

copy

Многократное выполнение (медленный доступ к ПЗУ/флэш-памяти)


Примечание. Для создания образа в ROM/FLASH необходимо указать значения для обоих атрибутов файла image и ram. В противном случае менеджер процессов считает, что образ находится в ОЗУ. Для образа в ПЗУ/флэш-памяти предполагается атрибут data=copy.

Случаи, когда код копируется, могут показаться неэффективным использованием ресурсов (как в примере с образом в ОЗУ), но это может оказаться целесообразным для систем с медленным доступом к ПЗУ/флэш-памяти (например, при наличии 8-битового интерфейса или при необходимости дополнительных состояний ожидания для доступа к этим устройствам). В этом случае может потребоваться скопировать код в ОЗУ для более быстрого его выполнения.

Примеры:

Рассмотрим простой файл построения образа, в котором указан драйвер консоли и командный интерпретатор:

[virtual=x86,bios] .bootstrap = {

startup-bios

PATH=/proc/boot procnto

}

[+script] .script = {

devc-con -n9 &

reopen /dev/con1

[+session] esh &

}

libc.so

[data=copy]

devc-con

esh

[type=link] /usr/lib/ldqnx.so.2=/proc/boot/libc.so


Примечание. Ожидается, что компоновщик среды выполнения, находится в файле ldqnx.so.2, но в настоящее время компоновщик среды выполнения находится в файле libc.so, поэтому необходимо создать символьную ссылку на него для менеджера процессов.

Теперь можно построить образ с помощью описанных выше команд следующим образом (предположим, что файл построения образа называется simple.bld и что образ будет называться simple.ifs):

mkifs simple.bld simple.ifs

Ниже приведен пример файла построения образа с поддержкой диска EIDE:

[virtual=x86,bios +compress] .bootstrap = {

startup-bios

PATH=/proc/boot procnto

}

[+script] .script = {

devc-con -e &

devb-eide &

reopen /dev/con1

[+session] PATH=/proc/boot esh &

}

libc.so

libcam.so

cam-disk.so

io-blk.so

fs-qnx4.so

[data=copy]

devc-con

esh

ls

devb-eide

[type=link] /usr/lib/ldqnx.so.2=/proc/boot/libc.so.3


В следующий пример добавлен inline-файл /etc/hosts для разрешения адресов, которые используются во время начальной загрузки такими программами, как fs-nfs3. В нем также демонстрируются способы передачи переменных среды разным командам:

Примечание. В реальном файле построения образа не допускается разбиение длинных строк на более короткие с помощью символа обратной косой черты (\), однако в данном примере этот прием используется для упрощения восприятия.

[image=0x1f0000]

[virtual=ppcbe,raw] .bootstrap = {

startup-mtx604-smp -v -Nmtx604-5 -D0x800003f8^0.9600

PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin \

LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll \

procnto-600-smp -v

}

[+script] startup-script = {

# Для экономии памяти все процессы используют libc из загрузочного

# образа! Для повышения скорости (меньше разыменований символических ссылок)

# указываем на libc.so.3 вместо libc.so.

procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2

pci-raven &

waitfor /dev/pci

io-pkt-v4 -dtulip irq=2,media=9,vid=0x1011,did=0x9 -ptcpip &

if_up -p en0

ifconfig en0 mtx604-5 up

if_up en0

fs-nfs3 -ru ra:/my_system /my_system &

waitfor /my_system/target/qnx6/ppcbe/usr/sbin/slogger 360

# установка переменных среды

TZ=est05edt04

procmgr_symlink /my_system/target/qnx6/ppcbe/bin /bin

procmgr_symlink /my_system/target/qnx6/ppcbe/lib /lib

procmgr_symlink /my_system/target/qnx6/ppcbe/sbin /sbin

procmgr_symlink /my_system/target/qnx6/ppcbe/usr/bin /usr/bin

procmgr_symlink /my_system/target/qnx6/ppcbe/usr/sbin /usr/sbin

procmgr_symlink /my_system/target/qnx6/ppcbe/usr/lib /usr/lib

procmgr_symlink /my_system/target/qnx6/etc /etc

slogger &

waitfor /dev/slog

devc-ser8250 -e -c1846200 -b 9600 0x800003f8,104 0x800002f8,103 &

waitfor /dev/ser1

pipe &

waitfor /dev/pipe

devc-pty &

waitfor /dev/ptyp0

mqueue &

inetd &

tinit

}

[type=link] /tmp = /dev/shmem

[type=link] /dev/con1 = /dev/ser1

# Создание файлов данных в указанном каталоге

/etc/hosts = {

127.0.0.1 localhost

192.168.1.1 ra

192.168.1.111 mtx604-5

}

# Добавить текущую библиотеку libc.so. Она создается как реальный файл

# с использованием соответствующего внутреннего SONAME, а libc.so устанавливается как

# символьная ссылка на нее. Символьная ссылка указывает на последнюю версию libc.so.*,

# поэтому если требуется использовать более раннюю версию libc (например, libc.so.2),

# ее следует добавить перед libc.so.

libc.so.2

libc.so

devn-tulip.so

libsocket.so

[data=uip]

pci-raven

io-pkt-v4

[data=copy]

if_up

ifconfig

fs-nfs3


Дополнительные примеры см. в каталоге ${QNX_TARGET}/${PROCESSOR}/build.

Переменные среды:

PROCESSOR

Определяет целевую архитектуру процессора. Если значение переменной не установлено, то в качестве значения по умолчанию используется ЦП, установленный в текущей системе (например, x86).

MKIFS_PATH

Разделенный двоеточиями список каталогов, в которых выполняется поиск файлов хостов, которые необходимо добавить в образ. Значение по умолчанию состоит из следующих элементов:
  1. Текущий рабочий каталог, если имя файла содержит символ косой черты (/), но не начинается с него.

  2. ${QNX_TARGET}/${PROCESSOR}/sbin

  3. ${QNX_TARGET}/${PROCESSOR}/usr/sbin

  4. ${QNX_TARGET}/${PROCESSOR}/boot/sys

  5. ${QNX_TARGET}/${PROCESSOR}/bin

  6. ${QNX_TARGET}/${PROCESSOR}/usr/bin

  7. ${QNX_TARGET}/${PROCESSOR}/lib

  8. ${QNX_TARGET}/${PROCESSOR}/lib/dll

  9. ${QNX_TARGET}/${PROCESSOR}/usr/lib

  10. ${QNX_TARGET}/${PROCESSOR}/usr/photon/bin


Статус завершения:

0

Завершено успешно.

1

Возникла ошибка.