How can i change the boot order of my jetson nano

I have flashed jetPack 4.6.2 on my jetson nano, now i want to boot from my usb SSD. I have flashed the SSD with the following instructions :

To set up a flash drive manually for booting

Applies to: Jetson Xavier NX series, Jetson Nano devices, Jetson AGX Xavier series, and Jetson TX1 only

1.For this method only, confirm that the device can boot successfully from eMMC. If it cannot, correct the problem by flashing to eMMC first.

2.Connect the flash drive to the host computer.

3.Check the flash drive’s device name (e.g. /dev/sdb):

$ sudo lsblk -p -d | grep sd

4.Create a new GPT:

$ sudo parted /dev/<sdx> mklabel gpt

Where <sdx> is the device name that your host computer assigned to the flash drive.

For example, if the host computer assigns the flash drive device name sdb, the command is:

$ sudo parted /dev/sdb mklabel gpt

5.Add the APP partition:

$ sudo parted /dev/<sdx> mkpart APP 0GB <size>

Where <size> is the size of the partition. It must be at least 16 GB. It may be larger if the flash drive has enough space.

For example, if <sdx> is sdb and the partition is to contain 16 GB, enter:

$ sudo parted /dev/sdb mkpart APP 0GB 16GB

The device name of the APP partition will be /dev/<sdx>1.

6.Format APP as an ext4 partition and mount it.

$ sudo mkfs.ext4 /dev/<sdx>1

$ sudo mount /dev/<sdx>1 /mnt

You may format APP as ext2 or ext3, but ext4 is strongly recommended because it is faster, more compact, and more reliable.

7.Connect the Jetson device to a host computer and put it into recovery mode, then enter the following commands to generate the rootfs without flashing the device:

$ cd Linux_for_Tegra/

$ sudo BOOTDEV=sda1 ./flash.sh --no-flash <board> sda1

$ sudo mkdir tmp_system

$ sudo mount bootloader/system.img.raw ./tmp_system

$ sudo rsync -axHAWX --numeric-ids --info=progress2 --exclude=/proc ./tmp_system/ /mnt

Where sda1 is the device name that the Jetson device will assign to APP.

8.Unmount the flash drive and disconnect it from the host computer:

$ sudo umount /mnt

$ sudo umount ./tmp_system

9.Plug the flash drive into the target device and power it on or reboot it.

10.If your device still boots from its internal storage, you may need to change the boot order. See [Flashing to an External Storage Device](https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3271/Tegra%20Linux%20Driver%20Package%20Development%20Guide/flashing.html#wwpID0E0RJ0HA) for instructions.

Then when i want to change to boot order with the following instructions :

### Changing Boot Order with CBoot

For devices that use CBoot to boot, you can change boot order in the CBoot environment after you have flashed the device:

1.Interrupt CBoot while it is loading the boot configurations from extlinux.conf by pressing any key.

2.Enter these commands to change the boot order and verify the change:

$ setvar boot-order <dev1> <dev2> <dev3> ...

$ printvar boot-order

You may specify any number of <dev> parameters. The valid values for these parameters are:

•emmc

•nvme

•nvme:C<n> (where <n> is the device number)

•nvme:pcie@<addr>, net (where <addr> is the device’s PCIe address)

•sd

•usb

3.To reboot, enter boot.

But i can’t interrupt Cboot while it’s loading, and when i enter the command setvar in the terminal it returns command not found. Can someone help me please ?

Here the output of lsblk -f :

jetson-nano@jetsonnano-desktop:~$ lsblk -f
NAME         FSTYPE LABEL      UUID                                 MOUNTPOINT
loop0        vfat   L4T-README 1234-ABCD                            
sda                                                                
└─sda1       ext4   Jetson     4978be97-7e37-40bc-a3af-add2eb81b8d5 /media/jetso
mmcblk0                                                            
├─mmcblk0p1  ext4              cc712c75-719d-42cd-abfa-b11f778544fe /
├─mmcblk0p2                                                        
├─mmcblk0p3                                                        
├─mmcblk0p4                                                        
├─mmcblk0p5                                                        
├─mmcblk0p6                                                        
├─mmcblk0p7                                                        
├─mmcblk0p8                                                        
├─mmcblk0p9                                                        
├─mmcblk0p10                                                        
├─mmcblk0p11                                                        
├─mmcblk0p12                                                        
├─mmcblk0p13                                                        
├─mmcblk0p14                                                        
├─mmcblk0p15                                                        
├─mmcblk0p16                                                        
└─mmcblk0p17                                                        
mmcblk0boot0                                                        
mmcblk0boot1                                                        
mmcblk0rpmb                                                        
zram0                                                               [SWAP]
zram1                                                               [SWAP]
zram2                                                               [SWAP]
zram3                                                               [SWAP]

Nano is using uboot to boot. Not cboot.

ok but I didn’t find the boot_targets function and the uboot folder

https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/flashing.html#wwpID0E06J0HA

thank you but where is the U‑Boot variable boot_targets, in which folder ?

There is no folder here… You need to interrupt the uboot and set the variable…

ok, how can I interrupt the uboot please ?

When you see the uboot coming from uart… use your keyboard to interrupt it…

Ok and it happens when i flash the device or when i boot the device ?

Boot the device… that is why if is called bootloader.

ok but when i boot the device i can’t interrupt the uboot

i did’nt see the moment where the uboot come from the uart

What do you see in your uart?

When I boot the device i only see this :


and then the device start

Yes, because that is not uart log at all.

okk i understand thank you

FYI, serial console is how you interrupt boot. If you are not doing so with that, then it won’t interrupt. Any of the R32.x and earlier releases will interrupt with any key, whereas R34.x+ needs the escape key.

2 Likes