Partition Configuration

NVIDIA® Jetson™ Linux supports formatting mass storage media into multiple partitions for storing data, such as the device OS image, bootloader image, device firmware, and bootloader splash screen.

How Jetson Partition Configurations Are Described

Certain Jetson platforms have very similar characteristics, including identical partition configurations. This topic groups such platforms together and discusses each group. Supported platforms are grouped like this:

Group

Includes platforms

NVIDIA®

Jetson AGX Orin™ series

Jetson AGX Orin (P3701-0000)

NVIDIA® Jetson Xavier™ NX series

Jetson Xavier NX (P3668-0000, for development only)
Jetson Xavier NX (P3668-0001, 8 GB RAM)
Jetson Xavier NX 16GB (P3668-0003, 16 GB RAM)

NVIDIA® Jetson AGX Xavier™ series

Jetson AGX Xavier (P2888-0001, 16 GB RAM)
Jetson AGX Xavier (P2888-0004, 32 GB RAM)
Jetson AGX Xavier 64GB (P2888-0005, 64 GB RAM)
Jetson AGX Xavier Industrial (P2888-0008, 32 GB RAM)

Partition Configuration Files

A partition configuration file describes all of the mass storage devices and partitions on a platform.

The following table describes the definitions of all of the partition configurations supported by Jetson Linux. In each row, “File” specifies the filename of the partition configuration file the defines the configuration, and “Device Type” specifies the type attribute of the <device> block in that file which defines the configuration. (See <device> Element Tag Attributes for more information.)

Platform & Configuration

File

Device Type

Jetson Orin platforms in ** <top>/Linux_for_Tegra/bootloader/t186ref/cfg/

Jetson AGX Orin (P3701-0000), QSPI_NOR partition

flash_l4t_t234_qspi_sdmmc.xml

spi

Jetson Xavier NX series and Jetson AGX Xavier series in <top>/Linux_for_Tegra/bootloader/t186ref/cfg/

Jetson Xavier NX (development, P3668-0000), QSPI_NOR partition

flash_l4t_t194_spi_sd_p3668.xml

spi

Jetson Xavier NX (development, P3668-0000), SD Card partition

flash_l4t_t194_spi_sd_p3668.xml

sdcard

Jetson Xavier NX (production, P3668-0001) and Jetson Xavier NX 16GB (P3668-0003), QSPI_NOR partition

flash_l4t_t194_spi_emmc_p3668.xml

spi

Jetson Xavier NX (production, P3668-0001) and Jetson Xavier NX 16GB (P3668-0003), emmc_user partition

flash_l4t_t194_spi_emmc_p3668.xml

sdmmc_user

Jetson AGX Xavier (P2888-0001 and P2888-0004) and Jetson AGX Xavier 64GB (P3668-0005), sdmmc_boot partition

flash_l4t_t194_sdmmc.xml

sdmmc_boot

Jetson AGX Xavier (P2888-0001 and P2888-0004) and Jetson AGX Xavier 64GB (P3668-0005), sdmmc_user partition

flash_l4t_t194_sdmmc.xml

sdmmc_user

Jetson AGX Xavier Industrial (P2888-0008), spi partition

flash_l4t_t194_spi_emmc_jaxi.xml

spi

Jetson AGX Xavier Industrial (P2888-0008), sdmmc_user partition

flash_l4t_t194_spi_emmc_jaxi.xml

sdmmc_user

Each file’s name typically incorporates its processor name (t194, t234, or t239), the type of memory the partitions are flashed to (sd for SD Card, spi for SPI, or emmc for eMMC), and in some cases, the module’s part number (e.g. p3668).

During the flashing procedure, flash.sh:

  • Reads the partition configuration file <device>.xml

  • Translates keywords into values specified in <device>.conf or in command line options

  • Saves the translated data in bootloader/flash.xml

Then bootloader/tegraflash.py reads in bootloader/flash.xml and flashes the device as specified by bootloader/flash.xml.

For details, see the section List of Translated Keywords.

Format of a Partition Configuration File

Each partition configuration file defines one or more partition layouts for a specific configuration of a specific Jetson device. The file is composed of the following XML elements:

  • A standard XML prolog

  • One or more <partition_layout> elements, each of which defines one partition layout

  • Within each <partition_layout> element, a <device> element for each device (i.e. each type of flashed memory) the layout uses

  • Within each <device> element, a <partition> element for each partition in that device’s partition layout

  • Within each <partition> element, a group of other elements that specify various properties of the partition

<partition_layout> Element

The <partition_layout> element has the syntax:

<partition_layout version="01.00.0000">
    <!-- Device elements go here. -->
</partition>

<device> Element

The partition configuration file contains a device element for each subdevice; for example, for the eMMC boot and user hardware partitions. This element must be present even if the devices are not divided into subdevices.

The <device> element has this syntax:

<device type="<device type>" instance="<instance>">
    <!-- Partition elements go here. -->
</device>

<device> Element Tag Attributes

The following table describes the <device> tag’s attributes and their legal values.

Device attributes

Values

Description

device type

sdmmc_boot; sdmmc_user SPI; nvme

Required. Specifies the type of device. eMMC boot0 and boot1 hardware partitions are treated as a single sdmmc_boot entry.

instance

0-3

Required. Specifies the device instance: 0 for SPI or NVMe, or 3 (typically) for eMMC.

<partition> Element

Each <partition> element has the syntax:

<partition name="<name>" type="<type>" oem_sign="true ">
    <!-- partition properties go here -->
</partition>

<partition> Element Tag Attributes

This table describes the attributes supported for partition elements and their legal values.

Device attributes

Values

name

See the files listed in the table of partition configuration files.

Required. Specifies a name for the partition. The name can have a maximum of 36 characters. There are three kinds of partitions: mandatory, optional, and user-defined. All mandatory and optional partition names must be associated with the specific partition type. All user-defined partition names must be associated with partition type data.

type

See the files listed in the table of partition configuration files.

Required. Specifies the type of partition. Certain partition types are valid only when they are associated with specific partition names.

oem_sign

True, False, or unspecified.

Jetson AGX Xavier series only: If True, append a generic signature header to the binary and perform OEM signing on it. If False, append a NULL signature header to the binary and perform NULL signing on it.

<partition> Child Elements

These are tags for specifying the properties of a <partition> element:

Tag Values Description
<allocation_policy> sequential Specifies the type of allocation policy. Sequential partitions begin immediately after the preceding partition.
<filesystem_type> basic The filesystem_type value basic specifies a “raw” partition. (The legacy “ext2” file system has been deprecated.)
<size> <partition_size> Required. Specifies the size of the partition in bytes. May be a decimal number or a hexadecimal number of up to 16 digits.

The partition size may be equal to or greater than the size of the file to be written to the partition. Specifying a greater size allows you to increase the file size later without changing the partition configuration file.

If the partition size is less than an erase block size, it aligns itself to the partition erase block boundary.

The size property of the secondary GPT partition, which is defined at the end of each device, must always be 0xffffffffffffffff. TegraFlash calculates this partition's size automatically; the preceding partition is extended to fill any free space before the secondary GPT.

<file_system_attribute> 0 Not implemented.
<allocation_attribute> 0x008 or 0x808.

Must be 0x808 for the partition immediately preceding the secondary GPT.

<percent_reserved> 0 Reserved for future use.
<filename> <filename> or empty Specifies the name of the file to write into the partition. If the filename is empty, no data is written to the partition.

List of Translated Keywords

This table lists keywords that you can use as the text of certain <partition> child elements. When the partition configuration file processor encounters one of these keywords, it substitutes the value shown or described in the table.

Keyword

Default translated value in flash.xml

MB1FILE

mb1_t194_prod.bin

SPEFILE

spe_t194.bin

TEGRABOOT

nvtboot_t194.bin

MTSPREBOOT

preboot_c10_prod_cr.bin

APPSIZE

30064771072

APPFILE

system.img

MTS_MCE

mce_c10_prod_cr.bin

MTSPROPER

mts_c10_prod_cr.bin

TBCFILE

uefi_jetson.bin

TBCDTB-FILE

Appropriate bootloader DTB file name

TOSFILE

tos_t194.img

EKSFILE

eks.img

BPFFILE

bpmp_t194.bin

BPFDTB-FILE

Appropriate BPMP DTB file name

CAMERAFW

camera-rtcpu-rce.bin

WBOBOOT

warmboot_t194_prod.bin

LNXSIZE

67108864

LNXFILE

boot.img

DTB_FILE

Appropriate kernel DTB file name

RECFILE

Name of appropriate recovery kernel image

RECDTB-FILE

Name of appropriate recovery kernel dtb file

BOOTCTRL-FILE

kernel_bootctrl.bin

External Storage Device Partition

To create a partition configuration file for flashing to an external storage device, start with a default SD card partition table as a template (for example, the Jetson Xavier NX development module SD Card partition from the table of partition configuration files). Change the device type to nvme, and the instance number to zero, as in the example below. An external partition configuration file must contain at least three partitions: master_boot_record, primary_gpt, and secondary_gpt.

For both SCSI devices (e.g. SCSI flash drives and hard disk drives) and NVMe devices (e.g. NVMe SSDs), the device type is nvme. You must also update num_sectors to correctly specify the total amount of storage available on your external device. For example, if an NVMe device has 1024209543168 bytes available, you must change num_sectors to 1024209543168/512 = 2000409264 sectors.

<partition_layout version="01.00.0000">
  <device type="nvme" instance="0" sector_size="512" num_sectors="61071360">
    <partition name="master_boot_record" type="protective_master_boot_record">
      <allocation_policy> sequential </allocation_policy>
      <filesystem_type> basic </filesystem_type>
      <size> 512 </size>
      <file_system_attribute> 0 </file_system_attribute>
      <allocation_attribute> 8 </allocation_attribute>
      <percent_reserved> 0 </percent_reserved>
      <description> **Required.** Contains protective MBR. </description>
    </partition>
    <partition name="primary_gpt" type="primary_gpt">
      <allocation_policy> sequential </allocation_policy>
      <filesystem_type> basic </filesystem_type>
      <size> PPTSIZE </size>
      <file_system_attribute> 0 </file_system_attribute>
      <allocation_attribute> 8 </allocation_attribute>
      <percent_reserved> 0 </percent_reserved>
      <description> **Required.** Contains primary GPT of the `sdmmc_user` device. All
        partitions defined after this entry are configured in the kernel, and are
        accessible by standard partition tools such as gdisk and parted. </description>
    </partition>
    <partition name="secondary_gpt" type="secondary_gpt">
      <allocation_policy> sequential </allocation_policy>
      <filesystem_type> basic </filesystem_type>
      <size> 0xFFFFFFFFFFFFFFFF </size>
      <file_system_attribute> 0 </file_system_attribute>
      <allocation_attribute> 8 </allocation_attribute>
      <percent_reserved> 0 </percent_reserved>
      <description> **Required.** Contains secondary GPT of the `sdmmc_user`
        device. </description>
    </partition>
  </device>
</partition_layout>