mkxfs

Posted by Underdog Linux on December 21, 2023

制作文件系统镜像(QNX)

语法

mkxfs -t image_type -r path [options] [buildfile] [directory] [outputfile]

选项

  • -t image_type 指定要创建的文件系统镜像的类型; 见下文。

  • -r path 允许指定工具应在其下查找二进制文件的根路径。 -r 可以多次使用来指定多个不同的基本搜索路径。 路径将按照指定的顺序进行搜索。

描述

mkxfs 实用程序生成文件系统镜像,其类型由 -t 选项控制。 该实用程序实现了许多相关实用程序; 有关支持的选项和属性的信息,请参阅特定实用程序的条目:

image_type See
etfs mketfs
fatfsimg mkfatfsimg
ffs3 mkefs
ifs mkifs
qnx6fsimg mkqnx6fsimg

该程序使用 OpenSSL 库来提供加密服务。

License checking

mkxfs 实用程序在执行任何操作之前检查有效的 QNX 许可证密钥。 如果许可证检查失败,实用程序将停止运行并显示诊断消息。 如果许可证密钥已过期、丢失或当前未激活,或者密钥不包含运行该实用程序所需的权限,则许可证检查可能会失败。

输入文件中变量的处理

mkxfs 输入文件(build文件、bootstrap 文件、startup 脚本文件和booter (.boot) 文件)中,可以使用对变量的引用。 引用必须采用 ${variable-name} 形式,并且将被命名变量的值替换,如果变量未定义或为空,则被替换为空字符串。

变量名称可以包含除“$”(美元)、“[”(左方括号)、“]”(右方括号)、“/”(正斜杠)、“\”(反斜杠)之外的任何 8 位 ASCII 字符 )、“ ”(空格)、LF(换行)、TAB(水平制表符)和“}”(右大括号)。

变量引用可能出现(并将被替换)在输入文件中的任何位置(内联文件除外)。

变量引用可以是嵌套的,也可以是链接的。 对于嵌套引用,变量的名称可以根据另一个变量的值构造。

例如,如果 a 是 x,xy 是 zzz,则 ${${a}y} 将扩展为 zzz。

对于链式引用,一个变量的值可以依次引用另一个变量。

例如,如果 a 是 x${b}z,b 是 y,则 ${a} 将扩展为 xyz。 链接在搜索路径定义中特别有用。 例如,环境变量 MKIFS_PATH 通常会链接到 QNX_TARGET 和 CPU。

虽然变量扩展本身支持变量引用的嵌套,但嵌套(当前)不能直接在输入文件中使用。 因此,如果 NEST 是 ${${name}},name 是 x,x 是 aaa,那么 ${NEST} 将按预期工作,而 ${${name}} 则不会。

可以通过将文本嵌入一对双引号(“…”)来引用输入文件文本。 在引用的文本内,变量不会被扩展。 输入文件文本中的一些特殊字符可以通过在前面放置反斜杠(’')来转义。 如果 ${ 并不意味着引入要由 mkxfs 扩展的变量引用,则它必须以反斜杠作为前缀,如下所示:${。

请注意,在变量名称和值内部,引用和转义不起作用。

mkxfs 实用程序还维护一个内部环境,在引导程序或脚本文件中定义为全局变量的所有变量都添加到该环境中。 可以像访问 mkxfs 运行环境中的变量一样访问此内部环境中的变量,并且在发生冲突时优先。 例如,如果您有:

[virtual=x86_64,bios] .bootstrap={
   startup-apic
   xyz=foo
   uvw=bar procnto-smp-instr
}

那么 ${xyz} 的计算结果为 foo 并且 ${uvw} 未定义,因为它是 procnto-smp-instr 的本地变量。