额外的配置文件#
本节详细介绍了如何使用额外的配置文件,通过 NVIDIA SDK管理器 自定义您的安装包、流程和硬件。这可以用于支持第三方载板、自定义软件包等的安装。
简介
额外的配置文件使您能够通过 NVIDIA SDK管理器 添加和/或修改 SDK 版本的某些行为,从而覆盖原始发行清单。
可以使用此清单文件处理两个主要方面
软件 - 修改安装步骤和二进制文件。
硬件 - 使用新的硬件信息进行覆盖。
背景#
SDK管理器使用为每个 SDK 版本动态获取的数据(硬件和软件信息),例如 JetPack 5.x。
数据存储在 JSON 清单文件中,这些文件在安装会话期间根据需要加载。当提供额外的配置文件时,它将覆盖每个选定对象的原始值(存储在 JSON 清单文件中),或将新对象添加到安装会话中。
要修改对象以创建您自己的额外配置文件,您需要从原始发行清单中分配需要修改的对象。最简单的方法是查询原始发行清单文件以及提供的示例文件。
额外的配置文件用法#
最终用户/开发人员将使用您提供的额外配置文件配置其开发环境。然后,他们将使用以下命令运行 NVIDIA SDK管理器
sdkmanager --extraconfig [local path to the extra config file]
这可以与其他所需的命令行参数一起使用。有关支持的参数的完整列表,请参阅命令行安装部分。
创建额外的配置文件#
获取参考数据
首先,获取包含您要自定义的 SDK 版本的硬件和软件组件的软件和硬件 JSON 清单文件
使用以下方法之一下载软件 JSON 清单文件
使用 SDK管理器 GUI:运行 NVIDIA SDK管理器 GUI,选择您要自定义的 SDK,然后转到步骤 2 以查看组件列表。完成后,退出 SDK管理器。
使用 SDK管理器 命令行界面:运行 NVIDIA SDK管理器 CLI,并使用所需的特定参数。例如
# sdkmanager --cli install --logintype devzone --product Jetson --host --targetos Linux --version 5.1.1 --target JETSON_AGX_ORIN_TARGETS --flash all
查看主窗口中的组件列表。完成后,退出 SDK管理器。
从
~/.nvsdkm/dist/
目录获取软件参考文件(sdkml3_<release>.json)
。从
~/.nvsdkm/hwdata/
目录获取硬件参考文件。
注意
您选择覆盖的硬件必须是单个设备。请勿使用以 TARGETS.json
或 DEVKITS.json
结尾的“family”文件。
此单个设备在其设备的“family”文件中被引用。“family”ID 在软件组件部分中被引用(通常共享相同的前缀名称)。
例如:JETSON_AGX_ORIN_TARGETS.json
“family”文件引用 JETSON_AGX_ORIN_32GB
。设备的“family”ID 在软件参考文件 (sdkml3_<release>.json)
的 targetIds
数组中被引用。
使用 ~/.nvsdkm/hwdata/HWDevices/Jetson/JETSON_AGX_ORIN_32GB.json
(而不是 JETSON_AGX_ORIN_TARGETS.json
)。
建议您选择您正在自定义的设备硬件的最近模块。
设置额外的配置文件#
获取示例配置文件#
从以下位置下载示例配置文件(extraconfig 文件)
基于 JetPack 5.1.1 的示例文件:JetPack 5.1.1 示例文件
基于 JetPack 4.6.2 的示例文件:JetPack 4.6.2 示例文件
创建您自己的配置文件#
按照以下描述,通过遵循、更改或添加对象,使用示例文件创建您自己的配置文件。
information 部分#
本节用于设置您要自定义的所需 SDK 发行版本。
从软件参考文件中,将以下键(和值)复制到您的额外配置文件中。
information.release.releaseVersion
information.release.releaseEdition
information.release.releaseRevision
注意
可以使用空值,并且不限于特定的 SDK 发行版本。
sw 部分#
本节用于使用您自定义的软件和安装步骤覆盖特定组件的安装。
从软件参考文件中,将完整的 sw 组件对象复制到您的额外配置文件中。
组件位于软件参考文件中的
components
对象中,应复制到额外配置文件中的sw
对象中。例如components.NV_L4T_FILE_SYSTEM_AND_OS_COMP
(用于 BSP)components.NV_L4T_FLASH_JETSON_LINUX_COMP
(用于 flash 命令)
修改复制的对象以满足您的需求。
请注意,执行的脚本和命令必须遵循以下规则
自动结束并退出返回终端。
错误需要输出到
stderr
。阻止错误必须以非 0 退出值退出。
不包含任何用户输入(完全在无人值守模式下运行)。
hw 部分#
本节用于使用您自定义的硬件设备覆盖特定硬件设备参数。
从硬件参考文件中,将完整的 hw 组件对象复制到您的额外配置文件中。
硬件设备位于硬件参考文件中的
hw
对象中,应复制到额外配置文件中的hw
对象中。例如
hw.JETSON_AGX_ORIN_32GB
(用于 Jetson AGX Orin 32GB 设备)
修改复制的对象以满足您的需求。
仔细查看上面硬件参考文件说明中的注释部分,并验证您正在修改的软件组件对象中是否引用了“family”设备。
例如:sw.NV_L4T_FILE_SYSTEM_AND_OS_COMP.platforms.targetIds
包括 "JETSON_AGX_ORIN_TARGETS"
。
Schema 对象#
information
、hw
和 sw
对象在其中支持多个键值对对象。这些值由 SDK管理器 Schema 版本管理。每个 SDK 发行版本 schema 都在软件参考文件 (sdkml3_<release>.json)
的 information.schemaVersion
对象中定义。建议您使用最新的 SDK管理器 版本。
查看与以下相关的更多信息
JSON 元素描述和示例:Schema 版本 17#
information - (对象) 包含支持特定 SDK 所需的信息。
release - (对象) 包含支持特定 SDK 所需的发行信息。
releaseVersion - (字符串) 此 SDK 支持的发行版本。
releaseEdition - (字符串) 此 SDK 支持的发行版本。
releaseRevision - (数字) 此 SDK 支持的发行修订号。
sw - (对象) 包含更改组件安装和支持多个组件所需的组件信息。
key - (字符串) 客户端中用于标识组件的特殊键。此键必须已存在于 sdkml3_<release>.json
中。
这将使用该键覆盖 SDK管理器 的 l3 json
中的原始本机组件。
id - 组件的唯一 ID。通常,这与键相同。
name - (字符串) 组件的官方名称,将在 SDK管理器 GUI 中显示。
isVisible - (布尔值) 在 SDK管理器 GUI 中公开组件。
estimateInstallDurationSeconds - (数字) 估计的安装持续时间(秒)。
platforms- (对象数组) 组件可以具有不同的平台,以支持每个 targetIds 和 operatingSystems 的不同安装文件。
operatingSystems - (字符串数组) 此版本支持的操作系统。
targetIds - (字符串数组) 目标设备的target系列 ID;可用的目标系列 ID 可以在
~/.nvsdkm/hwdata/HWDevices/
中找到(请参阅硬件参考文件),以TARGETS.json
或DEVKITS.json
结尾。例如JETSON_AGX_ORIN_TARGETS
prerequisites - (字符串数组) 先决条件字符串检查组件(如果需要)。SDK管理器 中可用的先决条件包括
PREREQUISITE_APT_HOST, PREREQUISITE_DISK_SPACE_TARGET,
PREREQUISITE_NETWORK_TARGET, PREREQUISITE_APT_TARGET
installSizeMB - (数字) 安装后组件的大小(MB)。
downloadFiles - (对象数组) 此元素包含下载文件和安装方法的信息。
url - (字符串) 下载文件的 URL。
fileName - (字符串) 下载文件的文件名。
size - (字符串) 下载文件的大小(字节)。
checksum - (字符串) 下载文件的校验和。
checksumType - (字符串) 下载文件校验和类型,设置为
md5
。verifyChecksum - (字符串)
yes
/no
,用于标识 SDK管理器 是否应验证校验和。packageInstallParameters - (对象) 下载文件的安装参数。
additionalParameters - (对象) 下载文件的其他参数。
installDir - (字符串) 将执行安装的路径。
installCommands - (对象数组) 为下载文件安装过程运行的命令。某些安装类型可以由 SDK管理器 自动处理,而另一些则不能。
installEngineQueue - (字符串) 定义引擎如何在安装顺序中对文件进行排队。可用选项为
default, parallel, sequential
installType - (字符串) 下载文件的安装类型。可用选项为
skip, archive, zip, tgz, deb, deb_repo, run, run_root, cmd, target_deb_repo, target_deb, rpm
componentInstallParameters- (对象) 组件的安装参数。
installDir - (字符串) 将执行安装的路径。
installCommands - (对象数组) 为下载文件安装过程运行的命令。某些安装类型可以由 SDK管理器 自动处理,而另一些则不能。
installEngineQueue - (字符串) 定义引擎如何在安装顺序中对文件进行排队。可用选项为
default, parallel, sequential
preInstallCommands - (对象数组) 在组件安装过程之前运行的命令。
postInstallCommands - (对象数组) 在组件安装过程之后运行的命令。
installCommands - (对象数组) 为组件安装过程运行的命令。
dependencies - (对象数组) 此组件在安装队列中应依赖的组件或组。
type - (字符串) 依赖项的类型。可用选项为
optional, required
id - (字符串) 依赖项组件或组的 ID。
version - (字符串) 组件的精确版本。
licenseId - (字符串) SDK管理器 中此组件的许可证 ID。
isDetectableInstall - (布尔值) 设置组件安装状态是否可检测。通常,安装类型为
deb
、deb_repo
、target_deb_repo
、target_deb
和rpm
的应设置为 true。其他应设置为 false。isPartiallyDetectableInstall - (布尔值) 设置组件安装状态是否可检测。当组件同时具有可检测方法和不可检测方法时,应设置为 true。
hw - (对象) 包含识别目标设备所需的板级信息,并且只能支持单个目标设备。
key - (字符串) 客户端上用于标识目标板的特殊键。有关如何识别硬件设备 ID,请参阅硬件参考文件中的注释。
name - (字符串) 目标板的官方名称,将在 SDK管理器 GUI 中显示。
moduleNames - (字符串数组) 此目标设备上支持的模块名称。这将在 SDK管理器 GUI 中显示。
hwDevices - (字符串数组) 当设备组中有多个目标设备时使用,与额外的配置无关,应保持为空
[]
。products - (字符串数组) 目标设备的产品名称。支持的产品包括:
Jetson
、Holoscan
、DRIVE
、DOCA
、Switch
。targetIds - (字符串数组) 目标设备的目标 ID,通常使用
P + 模块 ID
。moduleIds - (字符串数组) 目标设备的模块 ID。这在 SDK管理器 中用于板级检测和 flash 识别。
carrierIds - (字符串数组) 目标设备的载板 ID。这在 SDK管理器 中用于板级检测和 flash 识别。
moduleDescription - (字符串) 目标板模块的描述。
carrierDescription - (字符串) 目标板载板的描述。
recoveryModeCodes - (字符串数组) 设备在
lsusb
中的恢复模式代码。这在 SDK管理器 中用于板级检测和 flash 识别。aurixPort - (字符串) 用于 DRIVE 设备的 ttyUSB 端口。
deviceInstructions - (对象) 用于刷写板卡的说明。
linux - (字符串数组) 用于 DRIVE 设备。包含 DRIVE OS Linux 刷写说明。
qnx - (字符串数组) 用于 DRIVE 设备。包含 DRIVE OS QNX 刷写说明。
flash - (字符串数组) 包含通用刷写说明。
recoveryAuto - (字符串数组) 用于 Jetson、Holoscan 和 Switch 设备。包含自动刷写说明。
recoveryManual - (字符串数组) 用于 Jetson、Holoscan 和 Switch 设备。包含手动刷写说明。
hwImagePath - (字符串) 硬件映像的路径,可以是 URL(以
http://、
https://、
file://
开头)或以/
开头的本地目录绝对路径。storages - (对象数组) 用于定义设备要刷写的存储类型(如果有多个选项)。
id - (字符串) 存储类型的 ID。
displayName - (字符串) 要在客户端上显示的存储类型的显示名称。
flashOptions - (字符串) 用于存储的其他选项命令。
JSON 元素描述和示例:Schema 版本 13#
information - (对象) 包含支持特定 SDK 所需的信息。
release - (对象) 包含支持特定 SDK 所需的发行信息。
releaseVersion - (字符串) 此 SDK 支持的发行版本。
releaseEdition - (字符串) 此 SDK 支持的发行版本。
releaseRevision - (数字) 此 SDK 支持的发行修订号。
sw - (对象) 包含更改组件安装和支持多个组件所需的组件信息。
key - (字符串) 客户端中用于标识组件的特殊键。此键必须已存在于
sdkml3_<release>.json
中。这将使用该键覆盖 SDK管理器 的
l3 json
中的原始本机组件。
id - 组件的唯一 ID。通常,这与键相同。
name - (字符串) 组件的官方名称,将在 SDK管理器 GUI 中显示。
isVisible - (布尔值) 在 SDK管理器 GUI 中公开组件。
estimateInstallDurationSeconds - (数字) 估计的安装持续时间(秒)。
versions - (对象数组) 组件可以具有不同的版本,以支持每个 targetIds 和 operatingSystems 的不同安装文件。
operatingSystems - (字符串数组) 此版本支持的操作系统。
installSizeMB - (数字) 安装完成后组件的大小(MB)。
targetIds - (字符串数组) 目标设备的target系列 ID;可用的目标系列 ID 可以在
~/.nvsdkm/hwdata/HWDevices/
中找到(请参阅硬件参考文件),以TARGETS.json
或DEVKITS.json
结尾。例如JETSON_AGX_XAVIER_TARGETS
prerequisites - (字符串数组) 先决条件字符串检查组件(如果需要)。SDK管理器 中可用的先决条件包括
PREREQUISITE_APT_HOST, PREREQUISITE_DISK_SPACE_TARGET,
PREREQUISITE_NETWORK_TARGET, PREREQUISITE_APT_TARGET
downloadFiles - (对象数组) 此元素包含下载文件和安装方法的信息。
url - (字符串) 下载文件的 URL。
fileName - (字符串) 下载文件的文件名。
size - (字符串) 下载文件的大小(字节)。
checksum - (字符串) 下载文件的校验和。
checksumType - (字符串) 下载文件校验和类型,设置为
md5
。verifyChecksum - (字符串)
yes
/no
,用于标识 SDK管理器 是否应验证校验和。installParameters - (对象) 下载文件的安装参数。
additionalParameters - (对象) 下载文件的其他参数。
installDir - (字符串) 将执行安装的路径。
installCommands - (对象数组) 为下载文件安装过程运行的命令。某些安装类型可以由 SDK管理器 自动处理,而另一些则不能。
installEngineQueue - (字符串) 定义引擎如何在安装顺序中对文件进行排队。可用选项为
default, parallel, sequential
installType - (字符串) 下载文件的安装类型。可用选项为
skip, archive, zip, tgz, deb, deb_repo, run, run_root, cmd, target_deb_repo, target_deb, rpm
installParameters - (对象) 组件的安装参数。
installDir - (字符串) 将执行安装的路径。
installCommands - (对象数组) 为下载文件安装过程运行的命令。某些安装类型可以由 SDK管理器 自动处理,而另一些则不能。
installEngineQueue - (字符串) 定义引擎如何在安装顺序中对文件进行排队。可用选项为
default, parallel, sequential
preInstallCommands - (对象数组) 在组件安装过程之前运行的命令。
postInstallCommands - (对象数组) 在组件安装过程之后运行的命令。
installCommands - (对象数组) 为组件安装过程运行的命令。
version - (字符串) 组件的精确版本。
dependencies - (对象数组) 此组件在安装队列中应依赖的组件或组。
type - (字符串) 依赖项的类型。可用选项为
optional, required
id - (字符串) 依赖项组件或组的 ID。
ver - (字符串) 依赖项组件或组的版本。
operator - (字符串)
==
或>
或<
或<=
或>=
(对于更高版本)。licenseId - (字符串) SDK管理器 中此组件的许可证 ID。
isDetectableInstall - (布尔值) 设置组件安装状态是否可检测。通常,安装类型为
deb
、deb_repo
、target_deb_repo
、target_deb
和rpm
的应设置为 true。其他应设置为 false。isPartiallyDetectableInstall - (布尔值) 设置组件安装状态是否可检测。当组件同时具有可检测方法和不可检测方法时,应设置为 true。
hw - (对象) 包含识别目标设备所需的板级信息,并且只能支持单个目标设备。
key - (字符串) 客户端上用于标识目标板的特殊键。有关如何识别硬件设备 ID,请参阅硬件参考文件中的注释。
name - (字符串) 目标板的官方名称,将在 SDK管理器 GUI 中显示。
moduleNames - (字符串数组) 此目标设备上支持的模块名称。这将在 SDK管理器 GUI 中显示。
hwDevices - (字符串数组) 当设备组中有多个目标设备时使用,与额外的配置无关,应保持为空
[]
。products - (字符串数组) 目标设备的产品名称。支持的产品包括:
Jetson
、Holoscan
、DRIVE
、DOCA
、Switch
。targetIds - (字符串数组) 目标设备的目标 ID,通常使用
P + 模块 ID
。moduleIds - (字符串数组) 目标设备的模块 ID。这在 SDK管理器 中用于板级检测和 flash 识别。
carrierIds - (字符串数组) 目标设备的载板 ID。这在 SDK管理器 中用于板级检测和 flash 识别。
moduleDescription - (字符串) 目标板模块的描述。
carrierDescription - (字符串) 目标板载板的描述。
recoveryModeCodes - (字符串数组) 设备在
lsusb
中的恢复模式代码。这在 SDK管理器 中用于板级检测和 flash 识别。aurixPort - (字符串) 用于 DRIVE 设备的 ttyUSB 端口。
deviceInstructions - (对象) 用于刷写板卡的说明。
linux - (字符串数组) 用于 DRIVE 设备。包含 DRIVE OS Linux 刷写说明。
qnx - (字符串数组) 用于 DRIVE 设备。包含 DRIVE OS QNX 刷写说明。
recoveryManual - (字符串数组) 用于 Jetson、Holoscan 和 Switch 设备。包含手动刷写说明。
hwImagePath - (字符串) 硬件映像的路径,可以是 URL(以
http://、
https://、
file://
开头)或以/
开头的本地目录绝对路径。