mketfs

Построение встраиваемой транзакционной файловой системы (QNX)

Синтаксис:

mketfs [-l строка_ввода] [-nv] [файл_построения_образа [выходной_файл]]

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

QNX Neutrino, Linux, Microsoft Windows

Опции:

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

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

-n

Не использовать в файлах метки времени. Опция -n позволяет использовать идентичные образы в двоичном формате. Если указаны дополнительные опции -n, из файлов удаляются все данные времени.

-v[v..]

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

Описание:

Утилита mketfs читает текстовый файл построения образа, описывающий встраиваемую транзакционную файловую систему (ETFS), и создает двоичный файл образа, содержащий ETFS в виде последовательности транзакций. Этот файл можно впоследствии скопировать на устройство флэш-памяти с использованием команды etfsctl.

Примечание. Не следует путать эту команду с утилитой mkifs, которая создает файловую систему образа ОС, или с утилитой mkefs, которая создает встраиваемую файловую систему.

Файлы ввода и вывода задаются в командной строке:

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

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

выходной_файл

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

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

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

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

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

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

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

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

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

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

# правильно

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


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

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

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

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

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

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

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

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

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

путь

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

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

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

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

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

Примечание.

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

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

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

Атрибуты

Команда mketfs поддерживает следующие атрибуты.
Примечание. Значения атрибутов cluster_size, block_size и num_blocks необходимо задать явно, с учетом используемого устройства флэш-памяти, чтобы созданный образ был полностью совместим с конкретным устройством.

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

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

+|-bigendian

Установить порядок байтов для встраиваемой файловой системы: либо обратный порядок байтов (с использованием синтаксиса +bigendian), либо прямой порядок байтов (с использованием синтаксиса -bigendian). Значение по умолчанию прямой порядок байтов.

Атрибут block_size

block_size=размер_блока

Установить размер блока для ETFS. Размер блока зависит от того, какое запоминающее устройство присутствует в целевом оборудовании. Размер блока по умолчанию 16 KБ.

Атрибут cd

cd=имя_файла

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

Атрибут cluster_size

cluster_size=размер_кластера

Установить размер кластера для ETFS. Размер кластера зависит от того, какое запоминающее устройство присутствует в целевом оборудовании. Размер кластера по умолчанию 1 KБ.

Атрибут dperms

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

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

Строка символьного режима состоит из следующих элементов:
  1. сочетание символов u, g, o и a;

  2. символ -, = или +;

  3. сочетание символов r, w, x, s, g и t.

Можно указать несколько строк символьного режима с разделением запятой (,).

Значение права_доступа_к_каталогу по умолчанию *.

Атрибут filter

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

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

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

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

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

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

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

Атрибут gid

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


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

Атрибут num_blocks

num_blocks=число

Установить количество блоков во встраиваемой транзакционной файловой системе. Если количество блоков указано, то файл образа будет дополнен с учетом этого размера.

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

+|-optional

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

Атрибут perms

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

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

Строка символьного режима состоит из следующих элементов:
  1. сочетание символов u, g, o и a;

  2. символ -, = или +;

  3. сочетание символов r, w, x, s, g и t.

Можно указать несколько строк символьного режима с разделением запятой (,).

Значение права_доступа по умолчанию *.

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

Атрибут prefix

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


Установить префикс для имен целевых файлов. Значение по умолчанию пустая строка.

Атрибут search

search=путь:путь:

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

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

Атрибут type

type=тип_файла

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

[type=dir]/usr/bin=/usr/nto/x86/bin

отмечает все содержимое каталога /usr/bin как каталоги. Для копирования каталога /usr/nto/x86/bin в каталог /usr/bin необходимо указать:

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

Атрибут uid

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


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

Примеры:

Рассмотрим пример файла построения образа my_etfs.bld:

# Пример файла построения образа для утилиты mketfs


[cluster_size=1k block_size=64k num_blocks=240]

/home/jgarvey/nto_flash


В этом примере в качестве значения атрибута cluster_size указано значение 1 КБ, атрибуту block_size присвоено значение 64 КБ, а общий размер устройства составляет 240 блоков (это конфигурация fs-etfs-ram по умолчанию). Файлы и подкаталоги из каталога /home/jgarvey/nto_flash в системе хоста рекурсивно копируются в корневой каталог системы ETFS.

Для создания файла образа ETFS с использованием приведенного файла построения образа вызовите утилиту mketfs следующим образом:

mketfs my_etfs.bld my_image.etfs

В результате буден создан файл my_image.etfs, содержащий файловую систему ETFS, который затем можно скопировать в целевую систему следующим образом:

etfsctl -d /dev/etfs2 -S -e -w my_image.etfs -c

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

0

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

1

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