question about boot from usb on xavier


I try to use boot from usb on xavier , i can’t found any instruction.
Did i format my usb disk and put the “boot.img” and “tegra194-p2888-0001-p2822-0000.dtb” inside ?
Or using to generate usb boot ?

Thank your response .


#check and get connected sdcard device name  (ex: /dev/sdd or /dev/sdc)
df -h
sudo lshw -quiet -short -c disk
#create new gpt (assuming it is /dev/sdd, it will get at runtime)
sudo parted /dev/sdd mklabel gpt 

#add kernel partition and allocate 64MB
sudo parted /dev/sdd mkpart kernel 0MB 64MB

#add kernel-dtb partition and allocate 1MB
sudo parted /dev/sdd mkpart kernel-dtb 64MB 65MB

# print start/end/size in sectors of partitions
sudo parted /dev/sdd unit s print

#write kernel image to the kernel partition
sudo dd if=<path>/boot.img of=/dev/sdd1

#write kernel-dtb image to the kernel-dtb partition
sudo dd if=<path> kernel-dtb.dtb of=/dev/sdd2

**For kernel and kernel-dtb image, you need use encrypt file, like "boot_sigheader.img.encrypt" and "tegra194-p2888-0001-p2822-0000_sigheader.dtb.encrypt"

Thank your response, if i check my flash.xml , my kernel and kernel-dtb is below

   <partition name="kernel" type="data" oem_sign="true">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 67108864 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> boot.img </filename>

    <partition name="kernel-dtb" type="data" oem_sign="true">
        <allocation_policy> sequential </allocation_policy>
        <filesystem_type> basic </filesystem_type>
        <size> 524288 </size>
        <file_system_attribute> 0 </file_system_attribute>
        <allocation_attribute> 8 </allocation_attribute>
        <percent_reserved> 0 </percent_reserved>
        <filename> tegra194-p2888-0001-p2822-0000.dtb </filename>

So i dd “boot.img” and “tegra194-p2888-0001-p2822-0000.dtb” right ?

Tegra bootloader would verify the signature in the kernel and kernel-dtb header. Pure “boot.img” and “tegra194-p2888-0001-p2822-0000.dtb” are not signed.

You have to use the commands to generate signed kernel and kernel-dtb.

sudo ./ --no-flash -k kernel jetson-xavier mmcblk0p1
sudo ./ --no-flash -k kernel-dtb jetson-xavier mmcblk0p1

After these commands, you should be able to see “boot_sigheader.img.encrypt” and “tegra194-p2888-0001-p2822-0000_sigheader.dtb.encrypt”. You have to use dd command to put these two to correct partition on your usb drive.

Hi WayneWWW,

I use USB typeC HUB and USB disk plugin into HUB, but it’s seem some error happen.

[0004.469] I> Loading kernel & kernel-dtb from removable storage (6)
[0004.480] W> No valid slot number is found in scratch register
[0004.481] W> Return default slot: _a
[0004.486] I> USB Firmware Version: 60.05 release
[0005.005] I> USB 2.0 port 2 new high-speed USB device detected
[0005.007] W> WARNING: event and command not matching, cmd_trb_ptr = 0xa0796700, cmd_ring.dma = 0xa07967c0
[0005.008] E> slot id is 1
[0005.009] W> WARNING: event and command not matching, cmd_trb_ptr = 0xa0796700, cmd_ring.dma = 0xa07967c0
[0005.014] W> WARNING: event and command not matching, cmd_trb_ptr = 0xa0796700, cmd_ring.dma = 0xa07967c0
[0005.018] I>
[0005.018] I> Enumerated USB Device 05e3:0610
[0005.022] I>
[0005.024] E> Enumerated device doesn’t belong to MSD class!!
[0005.029] E> USBMSD: Failed to initialize enumerated usb device is not MSD.
[0005.036] E> USBMSD: Failed to open usbmsd open, 0.
[0005.041] E> Error opening USBMSD driver 0, err: 7c7c0312
[0005.046] W> Failed to initialize device 6-0


It is weird that a USB stick is not a MSD class (mass storage device). Could you share what stick you are using?

This is how i connect.

Hi WayneWWW:

       I use the type-C USB Disk, it can boot kermel from USB Disk, Thank your help.

Do you have a specific model of the USB drive? This seems to be something unusual.

Also, if you run “lsusb” you will see a list of USB devices. Find the one which is that particular device, and note its ID. The ID will have a format such as “0955:7019” (but different from that specific ID). Find the verbose lsusb by naming the ID. Example (adjust for your ID):

sudo lsusb -d 0955:7019 -vvv

Also, if you run “lsblk -f” on the host, then you will see each mass storage device. That output would be useful.