Install JetPack 4.5 to boot from USB: For those looking of a step-by-step guide

If you tried to install JetPack 4.5 into an USB device instead of a microSD card you probably followed the first steps of the docs and stopped when you couldn’t find the script ./flash.sh. That’s because at the beggining of that guide it’s said that you must download the lastest Tegra, but it’s currently possible only from the SDK Manager, that is delivered as a .deb binary, recommended to be installed in a x64 computer with 8gb of RAM.

Once you installed a Debian-based distro (I installed a minimal Lubuntu 18.4 in a Virtual Machine) login to your Nvidia Developer account and download the SDK Manager.

Then, from the SDKM, select your board, accept the license, and select “Download packages and install later”.
That takes a while. While you wait for the download to end, install the required package:

$ sudo apt-get install qemu-user-static

Files are downloaded to your ~/Downloads/nvidia/sdkm_downloads dir. Once it’s done downloading go to that dir and uncompress there the file "Jetson*_aarch64.tbz2”.
Then, from a terminal, enter sub dir “rootfs” in the newly expanded dir and run:

$ sudo tar xpf ../../Tegra*.tbz2

Then go back one dir ($ cd ..) and run:

$ sudo ./apply_binaries.sh

From there on, you can follow the docs for putting your device into forced recovery mode (you will need jumper wires) and flashing the system image to an USB drive.
Your flash.sh is now there, in dir ~/Downloads/nvidia/sdkm_downloads/Linux_for_Tegra.

2 Likes

Thanks for your kind share!

1 Like

You’re welcome! Please feel free to edit if I missed something

1 Like

UPDATE: I was having issues following this method, like the initial setup script not running, so I tried the suggestion by TWarren and worked great.

What I did:

  • Write the JetPack 4.5 image to a microSD card, boot your Jetson and complete the initial configuration.
  • Create GPT partition table on USB device with only one ext4 partition with the label “APP” (the docs suggest so, but it’s probably not significant)
  • Clone the mounted and running system to the USB device (method suggested by the Arch Wiki):
    $ sudo e2image -ra -p /dev/mmcblk1 /dev/sda1 -f
  • Edit /boot/extlinux/extlinux.conf on USB device to boot from /dev/sda1 instead of /dev/mmcblk1.
    (I tried with de UUID and LABEL instead of /dev/sda but it didn’t work, I guess the initrd isn’t able to access them).
  • Turn the Jetson off, remove the microSD card, and reboot.
    Keep in mind that you will be cloning your rootfs, with passwords, SSH and GPG keys included.

Tried this but I got this (my SD is mmcblk0):

command:
sudo e2image -ra -p /dev/mmcblk0 /dev/sda1 -f

answer:
e2image 1.44.1 (24-Mar-2018)
e2image: Bad magic number in super-block while trying to open /dev/mmcblk0
Couldn’t find valid filesystem superblock.
Found a gpt partition table in /dev/mmcblk0

Hi, try cloning only the root partition (mmcblk1 normally), the rest of the partitions are related to the bootloader and are no longer necessary.

So here’s what worked for me:

  1. Perform a clean restore of a JetPack 4.5.1 to a microSD card using Etcher on a Mac
  2. Booting my Nano from that SD card and performing all the necessary setup
  3. Power off the Nano and clone the microSD card to a USB drive on a Mac using Etcher app - sadly using e2image method resulted in some weird errors when I booted into the resulting system on a USB
  4. Connect both a USB drive we’ve created and microSD card we’ve used as a source and power on the Nano
  5. Edit /boot/extlinux/extlinux.conf on both the microSD card and on the USB drive we’ve created to boot from /dev/sda1 instead of /dev/mmcblk1" which in my case was mmcblk0p1
  6. Reboot the Nano with both microSD card in it and USB drive attached - it’ll boot from a USB drive but will find the information on a boot source on a microSD card for this time - and will overwrite this to search for in on a USB drive for the future boots!
  7. Power off the Nano, remove the microSD card and turn it on - it’ll successfully boot from a USB drive (at least that worked for me)

Sadly it’s been a week of trial and error before I finally found a solution for myself. Hope it’ll help someone else as well

Than you! If there isn’t still an official USB image it is probably because they are still working on it and solving bugs. If there’s no urgency, like a dying microSD in my case, it might be better to wait some weeks for the official USB image and guide.
I was lucky and only lost 3 days looking for a solution that worked, but I see it’s not a definitive one.

1 Like

Sadly my luck did not last for long - for some reason after I installed a MS Visual Studio and edited a Bluetooth configuration file to properly work with headsets and speakers my Jetson stopped booting from USB again 😓

Will have to wait for some time to get it fixed as well - too unreliable as of now

1 Like

I have tried the first method a bunch of times, the closest I got was the installer failing to run. Currently trying the copy and reboot method that @alexanderre had a bit of luck with but we will see how far I get.

No dice, it boots and allows me to log into the bionic beaver desktop…seems as if something failed to load in the boot sequence.

After carefully following what the docs said, I was received by the same Ubuntu login screen, unable to actually login because default Ubuntu passwords didn’t work.
Try the method I described with e2image o maybe rsync, but on the fresh booted Jetson Nano, running the cloning command from tty2 with only the essential processes running.
I’ve even modified kernel modules in cloned system and it hasn’t broken.

After using e2iage I am now able to boot from a 120GB USB SSD ,but if I run df -kh it seems as if the SSD is only 30 GB in size (I was using a 32GB microSD for the original install):

Filesystem Size Used Avail Use% Mounted on
/dev/sda1 30G 17G 12G 59% /
none 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 2.0G 28M 2.0G 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 397M 12K 397M 1% /run/user/120
tmpfs 397M 0 397M 0% /run/user/1000

How can I reclaim the missing 90 GB on my SSD?

You can expand the partition using gparted or similar software.
You will have to do it from another computer or from the nano running from a microSD since the partition must be unmounted to be resized. Do not “move” it, just expand it to fit the remaining space (visually at the right in gparted).

Thanks, I confirm I was able to reclaim the space using gparted from the microSD.

1 Like

Did not see your thread until yesterday… This is what worked for me.

1 Like

I see they apparently found the problem and will be updating the docs. We’re still waiting for a ready-to-flash image, I hope It’s on the way.
When my system dies, I’ll try again following the docs and will mark this post as obsolete if it works.

I am trying to follow the documentation on how to boot from USB for a jetson NX, but I am stuck. When I go to run the flash.sh script, i have no idea what i have to put in as my “valid board name”. How do I figure out what my board name is?

@fixed-term.nuno.fernandes should also be linked at the top of the documentation but you can find “board” info here.

1 Like

Thank you!