Skip to content
 
 

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

migrate-jetson-to-ssd

Once you set up a Jetson Orin Nano or NX to run from an SD card, you may want the option to migrate to an SSD for better performance and storage capacity. While serious developers use an attached PC with SDK Manager and command-line tools to configure their devices and modify them, casual users or those in a pinch might prefer a simpler approach. This toolkit enables you to copy the contents of the SD card to the SSD directly from the Jetson itself, allowing the SSD to serve as the boot medium. In support of the video : https://youtu.be/497u-CcYvE8

Notes (Updated Jan 30, 2025) I've only tried this with SD cards and SSDs with the same sector size. There have been a couple reports of people experiencing issues. The common factor seems to be that they are using 32GB SD cards. I will be testing this, but be advised that the NVIDIA recommeneded minimum size for the Orin Nano is a SD card of 64GB.

The scripts assume your SD card is located at /dev/mmcblk0 and your SSD is /dev/nvme0n1. Command line flags allow you to change that (-h for help). The Jetson Orin Nano has two M.2 Key M slots, one is for a 80mm card (2280), one is for a 30mm card (2230). The other M.2 slot is for a wireless NIC. I'm using the 2280 slot for the SSD. The 2230 slot is also on /dev/nvme0n1 if you are not using the 2280 slot.

Features

This is a three step process (or one step using the master script):

  • Partition Copying: Copy the partition structure from the SD card to the SSD.
  • Data Cloning: Clone data from the SD card partitions to the SSD partitions.
  • Boot & Storage Configuration: Modify system files to enable booting from the SSD and optionally configure additional storage.

Requirements

  • A NVIDIA Jetson Developer Kit with SSD capabilities. It's only been tested on JetPack 6 machines.
  • A running system on an SD card.
  • An SSD with a larger capacity than the SD card.
  • Unformatted SSDs with no partitions appear to work best.
  • Root privileges to execute the scripts.
  • The SSD cannot be mounted when preparing.

Included Scripts

1. make_partitions.sh

Copies the partition structure from the SD card to the SSD.

2. copy_partitions.sh

Copies the data from the SD card partitions to the corresponding SSD partitions.

3. configure_ssd_boot.sh

Modifies system configuration files on the SSD to enable booting. It updates:

  • /boot/extlinux/extlinux.conf using PARTUUID (most reliable for NVMe boot).
  • /etc/fstab for the EFI partition.
  • Optional: Can create a DATA partition at /ssd using the --setup-data flag.

4. master_migrate.sh

Runs the entire migration process automatically.

Usage

The Easy Way (Automated)

Run the master script to handle all steps in sequence:

sudo bash master_migrate.sh

The Manual Way (Step-by-Step)

  1. Partition Structure: sudo bash make_partitions.sh
  2. Copy Data: sudo bash copy_partitions.sh
  3. Configure Boot: sudo bash configure_ssd_boot.sh --setup-data

Notes

  • Ensure the SSD has a larger capacity than the SD card.
  • Back up your data before running the scripts.
  • After completing all steps, reboot and change the boot order in the UEFI BIOS to prioritize the SSD.

Release

Refactor Release (May 2026)

  • Consolidated configuration scripts into configure_ssd_boot.sh.
  • Added master_migrate.sh for full automation.
  • Improved boot reliability by using PARTUUID.

License

This project is licensed under the MIT License.

About

Use a SD card to setup a Jetson to boot and run from SSD

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages