mkifs

Построение образа файловой системы

Синтаксис:

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

Опции:

-a суффикс
Добавить суффикс к файлам идентификаторов, созданным с помощью [+keeplinked].
-l строка_ввода
(«эль») До начала интерпретации файла построения образа обработать строку_ввода. Строки ввода, передаваемые утилите mkifs, необходимо заключать в кавычки, чтобы предотвратить их обработку командным интерпретатором (поскольку строки ввода mkifs часто содержат пробелы). Несколько опций -l обрабатываются в заданном порядке. Значение по умолчанию отсутствует.
-n[n]
Принудительно установить в 0 (обнулить) ряд атрибутов для файлов, включаемых в образ. Обнуление атрибутов позволяет устранить влияние инструментальной системы на процесс создания образа и обеспечить воспроизводимость (идентичность) образов при одинаковых входных данных, в т.ч. при использовании утилиты mkifs на разных инструментальных системах (Windows/Linux). Перечень атрибутов, подлежащих обнулению (зависит от формата использования данного параметра): -n: метки времени (mtime) только для inline-файлов (по умолчанию эти метки генерируются в процессе создания образа на основании текущего системного времени инструментальной системы) -nn: метки времени (mtime) для всех файлов, а также идентификаторы владельца (uid) и группы (gid).

Caution: Для обеспечения воспроизводимости контрольной суммы образа без использования опции -nn рекомендуется явно задавать идентификаторы владельца и группы для файлов, включаемых в состав образа. Для этого необходимо задать атрибуты uid и gid с помощью опции -l "[uid=<знач> gid=<знач>]" (т.е. для всех файлов, входящих в состав загрузочного образа), либо явно в самом файле построения загрузочного образа (для всех файлов, для групп файлов или индивидуально). Пример:
[uid=0 gid=0]
ls
cat
...
или
[uid=1000 gid=1000] ls
[uid=2000 gid=2000] /README.txt = /tmp/README.txt
Использование опции '-nn' приводит к игнорированию любых значений атрибутов uid и gid - как передаваемых с помощью опции -l, так и явно заданных в файле построения.

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

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

-s секция
Не удалять указанную секцию из исполняемых файлов ELF при создании образа IFS. Чтобы задать дополнительные секции, эту опцию можно указать несколько раз. Утилита mkifs по умолчанию не удаляет секции QNX_Phab (ресурсы Photon), QNX_usage (сообщение об использовании) и QNX_info (свойства сборки).
-v[v...]
Вывести расширенную информацию. Каждая дополнительная опция -v обеспечивает вывод более подробной информации. Значение по умолчанию – расширенная информация не выводится.
файл_построения_образа
Имя файла построения образа, описывающее содержимое встраиваемой файловой системы. Используйте «-», чтобы задать стандартный поток ввода (по умолчанию).
выходной_файл
Имя файла образа, содержащего встраиваемую файловую систему. Используйте «-», чтобы указать стандартный поток вывода (по умолчанию). Следует отметить, что выходной_файл можно указать только в том случае, если указан файл_построения_образа.

Платформы:

GNU/Linux, Microsoft Windows

Целевые архитектуры:

arm, armv7, aarch64, e2k, mips, ppc, x86

Описание:

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


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

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

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

Атрибуты:

Файловая система данного типа поддерживает все основные атрибуты файла построения загрузочного образа:

а также ряд специальных атрибутов:


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

Файлы сценариев:

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


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

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

Файл сценария состоит из одной или нескольких строк, к каждой из которых применяется следующий синтаксис:

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

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


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

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

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

[argv0=uncompress] compress filename.Z

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

[cpu=0] my_program

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

[cpu=*] my_program

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


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

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

display_msg сообщение

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

procmgr_symlink

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

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

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

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

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

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


Note: Польза от использования модификатора +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 0 — прямой порядок байт
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, имеет следующую структуру:

  1. Префикс начальной загрузки
  2. Заголовок секции запуска
  3. Секция запуска
  4. Завершитель секции запуска
  5. Заголовок образа
  6. Каталог образа
  7. Файл 1
  8. Файл 2
  9. ***
  10. Файл n
  11. Завершитель образа
Хотя для создания образа не требуется детально понимать его формат, желательно получить общее представление о нем.

Префикс начальной загрузки:
В первой секции (которая называется префиксом начальной загрузки) размещается загрузочный файл, указанный в атрибуте virtual= или physical=. Для многих систем префикс начальной загрузки в образе не звключается. Если он присутствует, то обычно используется для решения одной из следующих проблем:
Заголовок секции запуска:
Эта секция содержит информацию об образе, используемую начальным загрузчиком или программой запуска (IPL). Часть этой секции записывается утилитой mkifs. Другой части присваивается нулевое значение. Информация в нее записывается кодом начальной загрузки (IPL) для передачи данных (определяемых во время выполнения IPL) программе начальной инициализации startup. Эти данные представляют собой набор структур (для получения дополнительной информации см. главу «Настройка начальных загрузчиков» в документе «Создание встраиваемых систем»). Если образ не является самозагружаемым, эта секция опускается.
Запуск (программа начальной инициализации startup):
В этом разделе содержится код и данные для программы начальной инициализации startup. Этот код должен быть выполнен из ОЗУ. Если образ содержится в ПЗУ/флэш-памяти, то стандартный код начальной загрузки (стандартный IPL) использует информацию из заголовка секции запуска, чтобы скопировать программу начальной инициализации startup в ОЗУ и передать ей управление. Если образ не является самозагружаемым, эта секция опускается.
Завершитель секции запуска:
Контрольная сумма для программы начальной инициализации startup. Если образ не является самозагружаемым, эта секция опускается.
Заголовок образа:
Информация о следующей за ним файловой системе.
Каталог образа:
Набор записей каталога для каждого файла в файловой системе образа.
Файлы:
Файлы в файловой системе образа. Исполняемые файлы, запускаемые «на месте», выравниваются по границам страницы. Выполняется попытка заполнить все пропуски, возникшие в результате такого выравнивания, небольшими файлами данных, для которых отсутствует необходимость выравнивания.
Завершитель образа:
Контрольная сумма для образа.

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

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


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

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

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

Код Данные Комментарии
uip uip Однократное выполнение (по умолчанию)
uip copy Многократное выполнение
copy uip Однократное выполнение, неэффективное использование ресурсов
copy copy Многократное выполнение, неэффективное использование ресурсов

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


Note: В этом случае sticky-бит файла не устанавливается. Это указывает менеджеру процессов на исполняемые файлы, менеджер процессов предотвращает повторный запуск программы и устраняет возможность запуска программы с поврежденными статическими данными.

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

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

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

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


Note: Для создания образа в 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


Note: Ожидается, что компоновщик среды выполнения, находится в файле 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. В нем также демонстрируются способы передачи переменных среды разным командам:


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

[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
Успешное завершение.
≠0
Утилита завершилась с ошибками.

Классификация:

Инструментальные средства ЗОСРВ «Нейтрино»

Тематические ссылки:

dumpifs, gcc, mkxfs, mketfs, mkefs, mkqnx6fsimg2

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




Предыдущий раздел: Справочник по утилитам