I have followed workflow 10 as specified in README_initrd_flash.txt. I completed the below 3 steps to generate the QSPI image, generate the NVMe image, and flash both devices, respectively:
All image creation and flash steps proceeded successfully. I am using the pre-production SOM on the NX dev kit and did not have an SD card plugged in
Despite the flash completing successfully, when I reboot, the bootloader dropped directly into the UEFI shell. I observed that the NVMe was not selectable as a boot device, even though it is shown in the PCI list.
If I put a good SD card back in, I am able to boot from that. I can then mount the NVMe and see that all the partitions were flashed properly
Are there steps I am missing to make the UEFI bootloader, which is presumably being loaded from the QSPI, “see” the NVMe as a boot option??
Yes this is the NVIDIA dev kit. You are correct that we are using JetPack 35.1.0, workflow 10 example 2.
Yes the Xavier NX SOM has an SD card slot but I did not have a card in it during this exercise (per the statement in workflow 10 saying this is OK)
Again no, I did not populate the SD card. That is correct, we want to use the board with only QSPI and NVMe only and booting directly from NVMe, however as I mentioned this was not listed as a selectable boot device on UEFI boot manager menu, even though I confirmed the partitions on the NVMe (including esp, kernel and app) had been flashed successfully.
Attached are the flash.log (taken from minicom while peforming step 3 of workflow 10 example 2, calling ‘sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only’). Also attached are boot.log which is the serial debug output of board booting afterwards (with no SD card in it).
You may notice our scheme calls for renaming APP partition to RECOVERY and adding some other custom partitions we are using for subsequent installation steps. I modified the header file in the L4TLauncher application to use the same partition names. I also changed this reference in the flash scripts in BSP where necessary.
Hopefully you can bear with me there and understand this scheme is working fine when we use an SD card. It is the NVMe device that does not appear to be detected by the L4TLauncher. A mass storage controller device is indicated when I run ‘pci’ from UEFI shell, this entry disappears when I remove the NVMe so I think that is the drive.
Can you please advise if you have any insight as to why device may not be detected? Thanks
Just in case it is helpful, I wanted to add the specific NVMe I am using is a Micron 2100AI M.2 SSD. Would appreciate if you have any insight why it isn’t showing up in the boot manager menu
Could you help to revert these changes and do the same flash process to check if the NVMe still not visible in UEFI list? If it could be seen in the list, and we could try adding them back one-by-one to debug.
I have performed these steps, trying the 3 steps you mention on a clean BSP with the pre-built UEFI bootloader binaries and clean configuration files like p3668.conf.common and flash_l4t_external.xml file. My result is unchanged. The flash proceeds successfully and the NVMe is setup with the partitions detailed in the flash_l4t_external.xml file, but it is no seen as a boot option in the boot manager menu on the UEFI bootloader.
Can I ask for the exact model SSD you are using? I am going to overnight it so I can repeat the experiment on the actual hardware you are using.
Is there any other reason why the default UEFI bootloader which comes with Jetpack 35.1.0 would not be able to see this drive? This is a hot issue for us, we need to be able to direct boot from the NVMe because the 16GB SD card / eMMC is too small for our application. Appreciate your help in resolving
what is the proper way to flash nx devkit without sdcard? knowing the number of sectors + 512 sector size? Tried three lines shared above but it won’t work
I am attaching the boot up log with the UEFI bootloader debug binary. Please let me know if you see any clues regarding not being able to detect the NVMe, nothing looked obvious to me.
I have ordered the NVMe you mentioned from Transcend, it will be here on Friday and I will repeat the test again, but since both NVMes are Gen3 PCIe M.2 I’m not confident that will change the behavior at all.
Did you make any other changes to your 35.1.0 JetPack or did you just run apply_binaries.sh and the 3 commands you provided. Did you put any special kernel or rootfs on (I’m thinking that wouldn’t matter because the UEFI bootloader hasn’t loaded the kernel at this time the boot manager menu is up) bootloader_debug_log (62.5 KB)
Could you also please provide the output of gdisk -l for your NVMe after the flash process so that we can compare that the disk partitions look the same. Thanks
All, please be advised that it seems to matter which manufacturer NVMe is used. I did not have any luck getting the Micron 2100AI M.2 SSD (NVMe Gen3 x4) recognized as a bootable drive in the UEFI boot manager menu. However when I purchased the SSD Kevin is using it worked just fine