JetsonNano flash to USB SSD to boot

Ok, open your own log and check these lines.

This is the uboot bootloader which is responsible for loading the kernel.

U-Boot 2020.04-g46e4604c78 (Jul 26 2021 - 12:09:42 -0700)

SoC: tegra210
Model: NVIDIA Jetson Nano Developer Kit
Board: NVIDIA P3450-0000
DRAM:  4 GiB
MMC:   sdhci@700b0000: 1, sdhci@700b0600: 0
Loading Environment from SPI Flash... SF: Detected mx25u3235f with page size 256 Bytes, erase size 4 KiB, total 4 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Hit any key to stop autoboot:  2  1  0 
switch to partitions #0, OK
mmc1 is current device
Scanning mmc 1:1...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
845 bytes read in 27 ms (30.3 KiB/s)
1:	primary kernel
Retrieving file: /boot/initrd
7160133 bytes read in 332 ms (20.6 MiB/s)
Retrieving file: /boot/Image

As you can see, this bootloader firstly found “mmc1” as boot device. mmc1 is the sdcard on your board.
And it found “/boot/extlinux/extlinux.conf”, “/boot/initrd” and “/boot/Image” from mmc1. You can just call them kernel to make it easier to understand.

This step- loading kernel from the drive is what we call “boot from something”.

After kernel is up, there would be a kernel cmdline. looks like below.

tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1125 core_edp_ma=4000 gpt tegra_fbmem=0x800000@0x92ca9000 is_hdmi_initialised=1 earlycon=uart8250,mmio32,0x70006000 root=PARTUUID=0e165ff1-d050-4ae9-a085-9c5309602862 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0

There is one keyword “root=/dev/mmcblk0p1” inside the cmdline. This line indicates where to mount the filesystem.
In your case, “dev/mmcblk0p1” is still sdcard, so it will load file system from sdcard.

Back to those flash methods.

Actually, Jetson/L4T/Boot From External Device - eLinux.org is just doing the second point. The last parameter in flash.sh will tell the kernel where to mount the file system. It does not really tell uboot where boot the kernel.
This method is general one for all jetson platforms since bootloader may not boot some components due to driver problem. For example, TX2 and TX2-NX uboot are not able to boot from usb.

As for the tutorial from l4t developer guide, it wants to ensure both kernel and rootfs are from the external drive.