Hi All,
I’ve managed to create a bootable NVMe on my Jetson Orin Nano DevKit, without using SDKManager or any external Ubuntu PC. And the steps are comically simple :D.
So, if you didn’t have any luck in getting the SDK Manger to setup your NVMe drive for install, i believe the below will be a welcoming relief.
As I’m presenting this as a blog, I’m intending to walk you through step by step of what I’ve done to achieve booting from my NVMe drive.
Jetson Orin Nano Supported Accessories NVMe SSDs (link)
All driver are 500GB PCIe Gen3 x4 (other than SABRENT)
-
Crucial P2 3D NAND NVMe PCIe M.2 SSD Up to 2400MB/s
- Cost US$49.95
-
Western Digital WD Blue - Gen3 x4 PCIe 8Gb/s, 3D NAND, Up to 2,400 MB/s
- Cost US$40.20
-
SABRENT 500GB Rocket Nvme PCIe 4.0 M.2 2280 Internal SSD Maximum Performance Solid State Drive (Latest Version) (SB-ROCKET-NVMe4-500).
- Cost US$49.99
- Jetson Orin NX supports up to Gen4 PCIe. Jetson Orin Nano supports
up to Gen3 PCIe.
My NVMe SSD Details: (Note: Not in the supported list)
Note: I believe you can use PCIe Gen4 x4, however you may pay more for the drive and your Jetson Orin Nano will only support Gen3 speeds. So, my recommendation is to get a PCIe Gen3 and save some money :)
TL;DR
- Boot into Jetson Orin Nano DevKit using the SD card.
- Copy the SD card image onto the SD card.
- Write the Jetson Linux SD-Card image onto the NVMe using the App “Disks”
- Find the UUID for partition “nvme0n1p1” using the command “ls -l /dev/disk/by-partuuid”
- Mount the partition “/dev/nvme0n1p1” (this should be around 21GB)
- Open file for edit as sudo “(Mount-point)/boot/extlinux/extlinux.conf” (this is the file on the mounted file system and not the SD card.
- Change root=… to root=PARTUUID={UUID of nvme0n1p1}
- Save the file, Shut down the board, Take the SD card out
- Reboot, and wait a few seconds (the board will start a couple time before it boots using NVMe)
Now for the Step by Step (Show and tell)
NVMe Details:
-
Samsung NVMe drive is formatted and ready to rock and roll
-
Either download or copy Jetson Linux SD-card images
-
Write the image (ISO) to NVMe SSD drive
Using Disks Application, that comes pre-installed on the Jetson Linux SD-card image. (Sorry forgot to take screenshot)
-
Confirmation to restore / write the image
Click Restore, to being writing the image to NVMe drive
-
Wait for the restore to finish
Here is the screenshot of the Disks Application
-
Once the restore is complete, you will be able to see the drive/ partitions as per below. Same as what you see on the SD card.
-
Query the NVMe partitions UUID’s
We will use the UUID of Partition One (p1), in updating the extlinux.conf file later.
Use the command “ls -l /dev/disk/by-partuuid/”
-
Copy UUID of Partition 1 (nvme0np1), Hint, this is a 21GB ext4 partition.
make sure, you paste the UUID in texteditor for later use.
Note: If for what ever reason, you donot find the PARTUUID for nvme0np1, try restarting the board (using SD card), and rerun the Step 8. If you still cant find PARTUUID for nvme0np1 you will have to restart from Step 1. -
Mount Partition 1 (nvme0np1), by selecting the partition in the Disks application, and hitting the play button.
-
After the partition is mounted, you should be able to see the mount location. as per the screenshot below.
-
(Optional) Install Nano
You can use “vi” editor, if that is your preferred option. I like nano :)
-
Using nano (or vi), open the extlinux.conf file located in “/media/{UserName}/{mount point}/boot/extlinux/”
Make sure to change the username and the mount point as you should see in the screenshot on 10.
Makesure to open the file as admin (sudo), or you will not be able to save the file.
-
You will see the below text when you open the extlinux.conf file
-
Change the parameter for “root”, from “root=/dev/mmcblk1p1” to “root=PARTUUID={UUID for nvme0np1”. Where the UUID for nvme0np1 is from step 8.
-
Save the extlinux.conf file, by following instructions.
Shutdown the Ubuntu, and remove the SD card.
Restart the Jetson Orin Nano DevKit board, by resetting the power. -
The boards boot order is to first boot from SD card, and MMC card. Only after this, it will make an attempt to boot from NVMe drive.
So, you will notice the board restarting a couple time before it boots. -
Once booted from NVMe, you will be asked to setup the board (Username, Wifi, etc.,).
-
Installing NVIDIA jetpack: You can install NVIDIA Jetpack by running the below command in a terminal.
sudo apt update & sudo apt upgrade sudo apt install nvidia-jetpack
-
Installing DeepStream, You will need to download NVIDIA deepstream from https://developer.nvidia.com and install it manually. (Instructions here)
-
Time to enjoy your Jetson Orin Nano, and all the speed boosts you will get from a NVMe :D
Best of Luck, and keep the questions flowing.