I need some clarification on preparing a USB drive for booting on the Jetson Nano
So for starters: I am on JetPack 4.5.1 and I know that now the boot loader is in the QSPI internal flash.
I have seen these two instructions for this topic around:
The Linux_for_Tegra is prepared by the sdkmanager. Or you can download it manually. But the manual way needs you to install all the things by yourself manually.
It is actually the full package that includes all the binaries/tools for flashing jetson. Sdcard image is just an easy entry for some newbie trying to use jetson nano/NX.
Please refer to the quick start guide in this download center it will teach you which pin to jumper and let the board get into recovery mode. Also, you need to prepare the x64 16.04 or 18.04 ubuntu host for using Linux_for_Tegra. VM is not supported.
Is it possible to prepare a USB drive without using the jetson nano, plug it in and boot ?
Both methods are preparing the usb drive on the ubuntu host but not jetson nano. You can see the first line in the first document : 1.Connect the flash drive to the host computer.
In embedded system, we usually say “host” and “device” to tell the x86/64 host machine and the arm64 device (nano).
Sure. What I meant was that we need connect USB Drive to host computer and the jetson device also to host computer (via micro-USB cable) for the flashing process.
I wondered about its significance.
I am doing this on jetson nano itself. Yes, I am aware of the process for flashing and using Ubuntu 18.04 on x86 for the process .I believe the qemu-user-static is used on x86 to run a arm64 binary within the chroot.
But here I am just trying to build a custom roootfs on the jetson nano itself.
So this question is about that.
We didn’t try that on jetson nano before. Better moving this job to the driver package on the host. Run the apply_binaries.sh to install necessary libraries/drivers to the rootfs.
I can confirm that first set of steps work on jetson-nano also. That is until the apply_binaries.sh.
After reading some posts in the forum on booting from usb I have a few questions.
Now that I have prepared a custom rootfs, I also found we can create an sdcard image.
Under the section “To generate an image to be flashed to an SD card”, it describes how to generate an image for the SD Card with whatever rootfs we have created.
What will happen this image is flashed to an USB drive and then try to boot it (maybe with or without sdcard ?). Will it boot like how it boots from an sdcard ?
(If needed I would edit the extlinux conf to set the correct root device)
You can also refer to this post I just wrote to another user few days ago to understand some concepts about those boot from external device.
We didn’t try to flash sdcard image to a usb drive before, so I cannot give you a solid answer. But if you want to remove the sdcard and only let usb to do the work, you need to make sure usb is able to load the extlinux.conf on the usb but not the sdmmc.
So my guess is if the bootloader on the QSPI of Nano is sort of independent then any image found on either sdcard or USB it shoud work (with exlinux.conf editing), unless there is some specific bootloader stuff (like a stage2) that is there on the APP that is specific to sdcard or USB.
So now that I tried I can confirm that flashing the sd-blob.img to a USB drive also works. We only have to mount the image’s APP partition and edit the extlinux.conf and set root device to /dev/sda1. So this can be an alternative to people who want to move from an sdcard to USB
In my case I had created a custom rootfs starting with a ubuntu base and kubuntu-desktop installed on that. It boots the kernel and I get a login. I will have to continue the customization.
So I believe if I just used the sample rootfs of Nvidia I would have booted normally and got the setup and customisation screen