额外的配置文件#

本节详细介绍了如何使用额外的配置文件,通过 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 清单文件

  1. 使用以下方法之一下载软件 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管理器。

  2. ~/.nvsdkm/dist/ 目录获取软件参考文件 (sdkml3_<release>.json)

  3. ~/.nvsdkm/hwdata/ 目录获取硬件参考文件。

注意

您选择覆盖的硬件必须是单个设备。请勿使用以 TARGETS.jsonDEVKITS.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 文件)

创建您自己的配置文件#

按照以下描述,通过遵循、更改或添加对象,使用示例文件创建您自己的配置文件。

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 对象#

informationhwsw 对象在其中支持多个键值对对象。这些值由 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- (对象数组) 组件可以具有不同的平台,以支持每个 targetIdsoperatingSystems 的不同安装文件。

      • operatingSystems - (字符串数组) 此版本支持的操作系统。

      • targetIds - (字符串数组) 目标设备的target系列 ID;可用的目标系列 ID 可以在 ~/.nvsdkm/hwdata/HWDevices/ 中找到(请参阅硬件参考文件),以 TARGETS.jsonDEVKITS.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 - (布尔值) 设置组件安装状态是否可检测。通常,安装类型为 debdeb_repotarget_deb_repotarget_debrpm 的应设置为 true。其他应设置为 false

      • isPartiallyDetectableInstall - (布尔值) 设置组件安装状态是否可检测。当组件同时具有可检测方法和不可检测方法时,应设置为 true

      • hw - (对象) 包含识别目标设备所需的板级信息,并且只能支持单个目标设备。

    • key - (字符串) 客户端上用于标识目标板的特殊键。有关如何识别硬件设备 ID,请参阅硬件参考文件中的注释。

    • name - (字符串) 目标板的官方名称,将在 SDK管理器 GUI 中显示。

    • moduleNames - (字符串数组) 此目标设备上支持的模块名称。这将在 SDK管理器 GUI 中显示。

    • hwDevices - (字符串数组) 当设备组中有多个目标设备时使用,与额外的配置无关,应保持为空 []

    • products - (字符串数组) 目标设备的产品名称。支持的产品包括:JetsonHoloscanDRIVEDOCASwitch

    • 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 - (对象数组) 组件可以具有不同的版本,以支持每个 targetIdsoperatingSystems 的不同安装文件。

    • operatingSystems - (字符串数组) 此版本支持的操作系统。

    • installSizeMB - (数字) 安装完成后组件的大小(MB)。

    • targetIds - (字符串数组) 目标设备的target系列 ID;可用的目标系列 ID 可以在 ~/.nvsdkm/hwdata/HWDevices/ 中找到(请参阅硬件参考文件),以 TARGETS.jsonDEVKITS.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 - (布尔值) 设置组件安装状态是否可检测。通常,安装类型为 debdeb_repotarget_deb_repotarget_debrpm 的应设置为 true。其他应设置为 false

    • isPartiallyDetectableInstall - (布尔值) 设置组件安装状态是否可检测。当组件同时具有可检测方法和不可检测方法时,应设置为 true

    • hw - (对象) 包含识别目标设备所需的板级信息,并且只能支持单个目标设备。

  • key - (字符串) 客户端上用于标识目标板的特殊键。有关如何识别硬件设备 ID,请参阅硬件参考文件中的注释。

  • name - (字符串) 目标板的官方名称,将在 SDK管理器 GUI 中显示。

  • moduleNames - (字符串数组) 此目标设备上支持的模块名称。这将在 SDK管理器 GUI 中显示。

  • hwDevices - (字符串数组) 当设备组中有多个目标设备时使用,与额外的配置无关,应保持为空 []

  • products - (字符串数组) 目标设备的产品名称。支持的产品包括:JetsonHoloscanDRIVEDOCASwitch

  • 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:// 开头)或以 / 开头的本地目录绝对路径。