Flashing into the SSD using initrd [jetsonhacks]


I am currently stuck in a boot loop after flashing the Jetson AGX xavier (developer kit) to boot from SSD. I was following the guide created by jetsonhacks (Native Boot for Jetson Xaviers - JetsonHacks). However the guide doesn’t go over creating a partition on the SSD which can be seen in the instruction set here (https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/flashing.html#wwpID0E0NK0HA) The flashing process completes as seen in the log file (attached with this post) but the board doesn’t boot into the OS, is stuck with a black screen.

I am working with a 1TB PCIe Gen4 SSD from WD (WD SN850). Please find the log file below and let me know how to move ahead with booting from the SSD. I also read that flashing with initrd doesn’t work with Gen4 SSDs, let me know if that is the reason for this problem. [flash_1-12_0_20211006-153641.log|attachment]

(upload://q6WmSHXKMIhzmQ8nUVBS1vkhtnw.log) (74.4 KB)


Looks like your log attachment is not successful. Please attach again.

Apologies! Please find the attachment here again[flash_1-7_0_20210930-160845.log|attachment]

flash_1-12_0_20211006-153641.log (74.4 KB)

Hi @pranavkhekare01

If you are still having trouble,

Can you please follow these steps to flash both the eMMC and nVME?

This wiki provides a guide for using NVIDIA’s initrd flashing procedure provided since Jetpack 4.6.

You need to specify the command as follows:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device -c [ --external-only ] [ -S APP-size ] board-name rootdev

For example in your case:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 -c ./tools/kernel_flash/flash_l4t_nvme.xml -S 8GiB --showlogs --erase-all jetson-agx-xavier-devkit nvme0n1p1.

If you want to have a bigger partition than 8GiB,

You need to take a look at the configuration file in tools/kernel_flash/flash_l4t_nvme.xml which has two entries:

  1. sector_size
  2. num_sectors

You need to configure it so that the multiplication of both, give you the size of the disk you are going to use. So you probably need to increase the num_sectors variable and leave the sector_size in 512 just for consistency, then you can use that amount of bytes you assigned, and subtract that 1GiB that you are talking into the size of the partition in the -S flag, so that you use something like sector_size*num_sectors/1024^3 - 1.

If you have any more questions, please ask them.

Roberto Gutierrez,
Embedded Software Engineer,

Hey @robertogs2 ,
Thank you for responding. The current method worked, but I kept the -S flag at 16GiB, I wanted to use 512GiB/1000GiB as my default drive space. How much would the value of Num_sectors be for making that possible?
Thank you for your help.

Hi @pranavkhekare01,

Doing the math, for 512GiB it should be 51210241024*1024 bytes, and for each sector 512 bytes, then just divide both values, and that is the amount of num_sectors


Adding escape sequences so the forums won’t mess it up:

“Doing the math, for 512GiB it should be 512*1024*1024*1024 bytes”
(I love the power of the backslash key! Why are there no ballads/heroic songs about the backslash?? :P )

1 Like