kdb377: Booting Off External Media with CTI Jetson Carriers

Introduction

The popular NVIDIA Jetson TX2 and AGX Xavier are populated with 32GB of internal eMMC to build the base image off of. With the release of the newer NVIDIA Jetson Nano and Xavier-NX products, the internal eMMC has been limited to only 16GB instead of the previous 32GB. When the full image is installed with the additional SDK components, the total size can be up to 14GB, leaving very little space left for general use and development. This procedure will allow the Jetson module to boot off external media to allow for larger storage sizes.

Compatibility

Compatible Modules:

  • TX2-NX
  • AGX Xavier
  • AGX Orin
  • Xavier NX
  • Nano

For flashing to external media for Orin-NX and Orin Nano please see the instructions included in our BSP release notes.

Compatible Media Devices:

  • NVME
  • microSD card

*USB is not supported

For more information on booting off external media for your CTI Jetson carrier, please contact [email protected]

Instructions

1. Install our BSP:

Instructions to install our BSP can be found here.

2. Download the script:

Download the following script into your Linux_for_Tegra folder.

create_sd_image

The following command can be used to download it directly to your Linux_for_Tegra folder.
wget https://connecttech.com/ftp/dropbox/create_sd_image.sh

3. Make the script Executable:

Add executable permissions to the script using the following command.

chmod +x create_sd_image.sh

4. Find media device name:

Plug in external media that you would like to use.

To find the device name there are a few solutions.
– Ubuntu has an application called ‘disks’ that can be used to find the device name.
– The following command can be used to list all storage device partitions.

sudo fdisk -l

The device name should be one of the following:

/dev/sdX         where X is [a-z]

/dev/mmcblkX         where X is [0-9]

/dev/nvmeX         where X is [0-9]

Please make sure you choose the correct device. If you choose the incorrect device, it will erase the entire filesystem and you will not be able to recover the data.

5. Run the script:

With the device name of the external media, run the script with the device name as the argument and follow the prompts. This will write the rootfs to the device so it will take some time.

sudo ./create_sd_image.sh /dev/<device name>

For example:
sudo ./create_sd_image.sh /dev/sda

6. Get system ready for flashing:

After this script completes successfully, remove your external media and plug it into your CTI carrier. With your external media in your CTI carrier, power the system on and put the system in forced recovery mode.

7. Flash the device:

Once your system is in forced recovery mode, use the following command to flash your device.

sudo ./flash.sh <carrier profile> external

For Example:
sudo ./flash.sh cti/Xavier-NX/photon external

8. Setting up the device:

For the compatible Jetpack versions, you can proceed with the system setup as normal.

In Jetpack 4.4.1+ there are currently issues where the default value for the partition size during the OEM configuration will not work. The default value should be the maximum size, but you need to enter “0” or else your system will fail to bootup. Entering 0 should still use the maximum size available.

Instructions

JetPack 4.6.x

1. Install our BSP:

Instructions to install our BSP can be found here.

 

2. Download the package:

Download the following package into your Linux_for_Tegra folder.

https://connecttech.com/ftp/dropbox/extflash.tgz

 

The following command can be used to download it directly to your Linux_for_Tegra folder.

wget https://connecttech.com/ftp/dropbox/extflash.tgz

 

3. Find media device name:

Plug in external media that you would like to use (MicroSD card or NVMe) to your host machine

To find the device name there are a few solutions.
– Ubuntu has an application called ‘disks’ that can be used to find the device name.
– The following command can be used to list all storage device partitions.

sudo fdisk -l

The device name should be one of the following:

/dev/sdX         where X is [a-z]

/dev/mmcblkX         where X is [0-9]

/dev/nvmeX         where X is [0-9]

Please make sure you choose the correct device. If you choose the incorrect device, it will erase the entire filesystem and you will not be able to recover the data.

4. Make sure the drive is unmounted:

Run the command lsblk and check if the media device is mounted.

If it’s mounted there should be a file path under MOUNTPOINT for one of the media device’s partitions

If mounted, run the following command to unmount the device

umount /dev/<media-device>

where <media-device> is the partition that’s been mounted e.g. /dev/sdb1

5. Get system ready for flashing:

Following the instructions in your carrier board’s manual, plug your carrier board + module into your host machine and put into forced recovery mode.

6. Flash the system:

As root run:

./create_sd_image2.sh /dev/<external media> <carrier profile>

/dev/<external_media> is the /dev path for your external media

– <carrier_profile> is the path to a carrier profile i.e: cti/xavier-nx/photon/base

7. Setting up the device:

Remove your NVMe/ext media from your host machine, turn off your carrier and put your external media into it.

Boot your carrier and go through the OEM install process.

When prompted for APP size during the OEM install process, enter a value of ‘0’.

Your device should now be set to boot from external media

 

JetPack 5+

1. Install our BSP:

Instructions to install our BSP can be found here.

 

2. Download the script:

Download the following package into your Linux_for_Tegra folder.

https://connecttech.com/ftp/dropbox/extflash5.tgz

The following command can be used to download it directly to your Linux_for_Tegra folder.

wget https://connecttech.com/ftp/dropbox/extflash5.tgz

 

3. Find media device name:

Plug in external media that you would like to use (MicroSD card or NVMe) to your host machine

To find the device name there are a few solutions.
– Ubuntu has an application called ‘disks’ that can be used to find the device name.
– The following command can be used to list all storage device partitions.

sudo fdisk -l

The device name should be one of the following:

/dev/sdX         where X is [a-z]

/dev/mmcblkX         where X is [0-9]

/dev/nvmeX         where X is [0-9]

Please make sure you choose the correct device. If you choose the incorrect device, it will erase the entire filesystem and you will not be able to recover the data.

4. Make sure the drive is unmounted:

Run the command lsblk and check if the media device is mounted.

If it’s mounted there should be a file path under MOUNTPOINT for one of the media device’s partitions

If mounted, run the following command to unmount the device

umount /dev/<media-device>

where <media-device> is the partition that’s been mounted e.g. /dev/sdb1

5. Run the script:

As root run: ./create_sd_image3.sh /dev/<external_media> <new username> <password>

– /dev/<external_media> is the the /dev path for your external media

– <username> this is the username for the default login on the jetson

– <password> this is the password for the default login on the jetson

6. Get system ready for flashing:

After this script completed successfully, remove your external media and plug it into your CTI carrier. With your external media in your CTI carrier, power the system on and put the system in forced recovery mode.

7. Flash the device:

If flashing to NVMe, run the following command:

 

./flash.sh <carrier profile> nvme0n1p1

 

If flashing to another device, run the following command:

 

./flash.sh <carrier profile> external

 

  • <carrier_profile> is the path to a carrier profile i.e: cti/xavier-nx/photon/base

Go to Top