• Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    Shell
  • License
    MIT License
  • Created almost 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Boot NVIDIA Nano Jetson Developer Kit from a mass storage USB device (Jetson Nano devices A02, B01, 2GB and possibly Jetson TX1)

bootFromUSB

Boot NVIDIA Jetson Nano Developer Kit from a mass storage USB device. This includes Jetson Nano 2GB, and may also work with the TX1. This setup is done from the Jetson Development Kit itself.

WARNING: This is a low level system change. You may have issues which are not easily solved. You should do this working on a freshly flashed micro SD card, and certainly do not attempt this with valuable data on the card itself. A serial debug console is useful if things go wrong.

A new feature of JetPack 4.5 (L4T 32.5) is the ability to boot from a USB device with mass storage class and bulk only protocol. This includes devices such as a USB HDD, USB SSD and flash drives.

In order to setup a Jetson to boot from a USB device, there are several steps.

Step 1: Setup and Boot the Jetson

You will need to do an initial setup of the Jetson with JetPack 4.5+ in order to load updated firmware into the Jetson Module QSPI-NOR flash memory. Follow the 'Getting Started' instructions on the JetPack site: https://developer.nvidia.com/embedded/jetpack

The JetPack archives are located here: https://developer.nvidia.com/embedded/jetpack-archive

During the initial setup of L4T 32.5+, the firmware for the Jetson Nano developer kits relocates the boot firmware from the micro SD card to the Jetson module integrated QSPI-NOR flash memory. This also changes the layout of the SD card. This layout is now analagous to the BIOS in a PC.

Step 2: Prepare the USB Drive

Plug in the USB drive.

Prepare the USB drive (USB 3.0+, SSD, HDD, or flash drive) by formatting the disk as GPT with an Ext4 partition. Formatting the disk will erase any data that is on that disk. When finished, the disk should show as /dev/sda1 or similar. Note: Make sure that the partition is Ext4, as other formats will appear to copy correctly but cause issues later on. You may set the volume label during this process.

You can prepare the USB drive by using the Disks app. Formatting the disk using Format and creating a partition are two different tasks. Format the disk as GPT, then add a partition formatted as Ext4. Name the newly created partition APP so that Jetson system apps recognize it correctly.

Once the disk is ready, mount the disk. If you are using a desktop, you can do this by clicking on the USB disk icon and opening a file browser on its contents.

Step 3 Copy the rootfs to the USB drive

Copy the application area of the micro SD card to the USB drive. copyRootToUSB.sh copies the contents of the entire system micro SD card to the USB drive. Naturally, the USB drive storage should be larger than the micro SD card. Note: Make sure that the USB drive is mounted before running the script, the script will complain if you do not.

In order to copyRootToUSB:

usage: ./copyRootToUSB.sh [OPTIONS]

  -d | --directory     Directory path to parent of kernel

  -v | --volume_label  Label of Volume to lookup

  -p | --path          Device Path to USB drive (e.g. /dev/sda1)

  -h | --help  This message

For example:

$ ./copyRootToUSB.sh -p /dev/sda1

Note

The most likely device address of the USB drive will be /dev/sda1 Please note that if you do not find a version ending with a number, you probably do not have a partition allocated on that drive. For example,

$ ls /dev/sd*

assuming that there is a partition, should respond as:

$ /dev/sda /dev/sda1

sda1 is where you want to copy the rootfs from the SD card. If you only see /dev/sda, it means that there is no partition.

Step 4 Modify extlinux.conf for the boot sequence

Use the file browser to navigate to the USB drive, find the boot/extlinux directory, and then open a terminal from the context menu.

Before editing the extlinux.conf file make a copy of it for backup purposes. This is in a system protected area so you will need privileges to change the file, ie 'sudo'.

Modify the /boot/extlinux/extlinux.conf file located on the USB drive. This is in a system protected area, so you will need privileges to change the file, ie 'sudo gedit'. Make a copy of the 'PRIMARY' entry and rename it sdcard.

In the PRIMARY entry change the location of the root to point to the USB drive, ie change 'root=/dev/mmcblk0p1' which is the address of the SD card. Provided in this repository is a sample configuration file: sample-extlinux.conf as an example.

While using root=/dev/sda1 in the extlinux.conf works, it can be a good idea to use the PARTUUID of the disk to identify the disk location. Because USB devices are not guaranteed to enumerate in the same order every time, it is possible that that /dev/sda1 points to a different device. This may happen if an extra flash drive is plugged into the Jetson along with the USB boot drive, for example.

The UUID of the disk in the GPT partition table is called the PARTUUID. This is a low level descriptor. Note that there is another identifier, referred to as UUID, which is given by the Linux file system. Use the PARTUUID for this application, as UUID has been reported to cause issues at the present time in this use case.

There is a convenience file: partUUID.sh which will determine the PARTUUID of a given device. This is useful in determining the PARTUUID of the USB drive. Note: If the PARTUUID returned is not similar in length to the sample-extlinux.conf example (32a76e0a-9aa7-4744-9954-dfe6f353c6a7), then it is likely that the device is not formatted correctly.

$ ./partUUID.sh

While this defaults to sda1 (/dev/sda1), you can also determine other drive PARTUUIDs. The /dev/ is assumed, use the -d flag. For example:

$ ./partUUID.sh -d sdb1

Step 5 Try It Out!

Remove the micro SD card, and boot the system.

Release Notes

March, 2021

  • JetPack 4.5.1
  • L4T 32.5.1
  • Remove payload updater, the JetPack update addresses this issue
  • Slightly more generous readme
  • Tested on Jetson Nano

February, 2021

  • JetPack 4.5
  • L4T 32.5
  • Initial Release
  • Tested on Jetson Nano

More Repositories

1

rootOnNVMe

Switch the rootfs to a NVMe SSD on the Jetson Xavier NX and Jetson AGX Xavier
Shell
383
star
2

buildOpenCVTX2

Build and install OpenCV for the NVIDIA Jetson TX2
Shell
276
star
3

jetsonUtilities

Get information about the NVIDIA Jetson OS environment. Lists L4T and JetPack versions, along with major libraries.
Shell
199
star
4

installTensorFlowTX2

Install TensorFlow on the NVIDIA Jetson TX2 Development Kit
Shell
165
star
5

installRealSenseSDK

Install the Intel RealSense SDK on the NVIDIA Jetson Development Kits
Shell
156
star
6

buildJetsonTX2Kernel

Build the NVIDIA Jetson TX2 Kernel on the device itself
Shell
153
star
7

bootFromExternalStorage

Shell scripts to setup a NVIDIA Jetson AGX Xavier, Xavier NX, AGX Orin, or Orin Nano Developer Kit to boot from external storage.
Shell
147
star
8

installROSTX2

Install Robot Operating System (ROS) on NVIDIA Jetson TX2
Shell
133
star
9

buildOpenCVXavier

Build and install OpenCV for the NVIDIA Jetson AGX Xavier
Shell
129
star
10

installROS2

Scripts to install ROS2 on the NVIDIA jetsons
Shell
115
star
11

gpuGraphTX

Simple moving graph of GPU activity for the Jetson TX1 and Jetson TX2
Python
96
star
12

installROS

Install ROS Melodic on NVIDIA Jetson Development Kits
Shell
89
star
13

installROSXavier

Install Robot Operating System (ROS) on the NVIDIA Jetson AGX Xavier Developer Kit
Shell
82
star
14

installTensorFlowJetsonTX

Install TensorFlow on the NVIDIA Jetson TX1 or TX2 from the provided wheel files
81
star
15

installCaffeJTX1

Scripts to install Caffe and dependencies on the NVIDIA Jetson TX1 Development Kit
Shell
73
star
16

installTensorFlowTX1

Scripts to install TensorFlow on the NVIDIA Jetson TX1 Development Kit
Shell
62
star
17

USB-Camera

Code examples for running V4L2 USB Cameras on NVIDIA Jetson Developer Kits
Python
58
star
18

buildLibrealsense2TX

Build librealsense 2.0 library on the NVIDIA Jetson TX Development kit. Intel RealSense D400 series cameras.
Shell
56
star
19

buildLibrealsense2Xavier

Build librealsense 2.0 library on the NVIDIA Jetson AGX Xavier Developer Kit. Intel RealSense D400 series cameras.
Shell
56
star
20

jetsonTX1GPIO

A straightforward library to interface with the Jetson TX1 GPIO pins
C
52
star
21

installCaffeJTX2

Install Caffe on the NVIDIA Jetson TX2 Development Kit
Shell
49
star
22

jetson-linux-build

Tools to build the Linux kernel and modules on board Jetson Developer Kits
Shell
46
star
23

camera-caps

Examine the camera capabilities for V4l2 cameras
Python
45
star
24

buildJetsonTX1Kernel

Build the 64-bit Jetson TX1 Kernel
Shell
40
star
25

buildOpenCVTX1

Build the OpenCV library from source for NVIDIA Jetson TX1 Development Kit
Shell
39
star
26

gst-explorer

GStreamer Inspector GUI
Python
37
star
27

buildJetsonXavierNXKernel

Build the linux kernel and modules on board the Jetson Xavier NX.
Shell
33
star
28

installACMModule

Install the CDC ACM and USB to Serial Modules for the Jetson TX1 or Jetson TX2 Development Kit
Shell
29
star
29

buildJetsonXavierKernel

Shell
27
star
30

JHPWMDriver

Adafruit 16 Channel Servo Driver for NVIDIA Jetson Development Kit
C++
26
star
31

installROSTX1

Install Robot Operating System (ROS) on NVIDIA Jetson TX1
Shell
25
star
32

installRealSenseROS

Install the ROS wrapper for RealSense SDK
Shell
24
star
33

installGrinch

Install Grinch Kernel
Shell
22
star
34

backupJetson

Backup a NVIDIA Jetson Developer Kit root system
Shell
22
star
35

jetsonGPIO

A straightforward library to interface with the Jetson TK1 GPIO pins
C
21
star
36

installLXDE

Install LXDE on the NVIDIA Jetson Developer Kits
Shell
21
star
37

installROSTK1

Install Robot Operating System (ROS) on NVIDIA Jetson TK1
Shell
20
star
38

installRealSense2ROSTX

Install the ROS Wrapper for librealsense 2 on the NVIDIA Jetson TX Development Kits
Shell
17
star
39

installLibrealsenseTX2

Install the librealsense for Intel RealSense cameras on the NVIDIA Jetson TX2
Shell
15
star
40

postFlash

Post flash L4T 21.X desktop setup for NVIDIA Jetson TK1 Development Kit. See 'Tags' for corresponding version
Shell
15
star
41

buildJetsonModules

Example on how to build modules and drivers for NVIDIA Jetson TK1
Shell
14
star
42

logitech-f710-module

Support for Logitech F710 game controller on Jetson Xavier
Shell
12
star
43

installLibfreenect2

Install libfreenect2 on a Jetson Development Kit. libfreenect2 is a driver for Microsoft Kinect V2
Shell
12
star
44

installJetsonCar

A collection of ROS packages for a Jetson RACECAR
Arduino
12
star
45

installLibrealsense

Install librealsense for Intel Realsense cameras on Jetson development kits
C
12
star
46

postFlashTX1

Some scripts for setting up a development environment on the NVIDIA Jetson TX1
Shell
12
star
47

jetsonRACECAR

Working area for the Jetson RACECAR Project
C++
11
star
48

buildOpenCV

Scripts to build a GPU accelerated OpenCV for the Jetson TK1 Development Kit
Shell
10
star
49

installSweep

Install the Scanse Sweep sdk and Sweep ROS package on a NVIDIA Jetson Dev Kit
Shell
10
star
50

cuda-using-numba

Writing CUDA code in Python with the help of Numba. Some example code.
Python
9
star
51

JHHC-SR04

Interface a HC-SR04 distance sensor to the NVIDIA Jetson TK1
C++
9
star
52

buildJetsonTK1Kernel

Scripts to help build the kernel and modules on the Jetson TK1
Shell
9
star
53

JHVL53L0X

VL53L0X Time of Flight Sensor interface for NVIDIA Jetson Development Kits
C++
7
star
54

compileGolang

Compile Go (Golang) for NVIDIA Jetson Development Kits
Shell
7
star
55

JHLEDBackpack

I2C interface for Adafruit LED Backpack for 7 segment display
C++
7
star
56

installJetsonBot

Turtlebot based robot using a NVIDIA Jetson TK1
Shell
7
star
57

installRealSenseROSTX2

Install the Intel RealSense package for ROS on the NVIDIA Jetson TX2
Shell
7
star
58

installBLDC

Install the VESC BLDC tool on the Jetson Development Kit
Shell
7
star
59

rpi-pico-jetson

Interact with a Raspberry Pi Pico directly from a NVIDIA Jetson
Shell
6
star
60

installPlayStation3Eye

Pre-compiled module for PlayStation 3 Eye camera for NVIDIA Jetson TK1
Shell
6
star
61

JHLidarLite_V2

C++
6
star
62

installLibrealsenseTX1

Install lbrealsense for Intel RealSense cameras on Jetson TX1 Development Kit
Shell
6
star
63

buildJetsonRTCModule

Build a RTC Module for the DS3232 chip for the Jetson TK1 L4T kernel
Shell
5
star
64

goi2c

Jetson I2C interface in Go (Golang)
Go
4
star
65

pico-rc

Code to interface a Raspberry Pi Pico with a R/C radio receiver
Python
3
star
66

install7260LT4211

Install Intel 7260 mini PCIE on NVIDIA Jetson TK1 under LT4 21.1
Shell
3
star
67

installRealSenseROSTX1

Install librealsense and realsense ROS package on NVIDIA Jetson TX1
Shell
3
star
68

installRACECAR

Install the MIT RACECAR ROS software and dependencies
Shell
3
star
69

JHLidarLite

Interface for Lidar-Lite to Jetson TK1
C++
2
star
70

LidarPlotSketch

Sketch for showing lidar data
C++
2
star
71

installPlayStationEyeTX1

Install driver for the PS3Eye Camera on the Jetson TX1
Shell
2
star
72

buildJetsonFTDIModule

An example for building the FTDI Module for the NVIDIA Jetson TK1
Shell
2
star
73

installRealSenseCameraROS

Install the realsense_camera package for ROS on the Jetson TK1
Shell
2
star
74

TX1FTDIModule

Build a FTDI Module for the NVIDIA Jetson TX1 Development Kit
Shell
2
star
75

allxon-ota-example

Example files for an over the air (OTA) update using the Allxon service for NVIDIA Jetson
Python
2
star
76

system-monitor

A web enabled system monitor for NVIDIA Jetson Development Kits
2
star
77

jetsoncar_teleop

Teleoperation node for JetsonCar
C++
2
star
78

installRazorIMUROS

Install the Sparkfun Razor 9DOF IMU on the Jetson TK1
Shell
1
star
79

femto-ros2

Dockerfile to run Orbbec Femto on NVIDIA Jetson Xavier and Orin
Dockerfile
1
star
80

R200-UVC-Examples

Intel Realsense R200 Examples for UVC on the NVIDIA Jetson Development Kits
QMake
1
star