/boot on nvme is used instead of eMMC

Hi,

I have the following setup: Jetson AGX (Rudi AGX from Connecttech) with a custom (unsigned) device tree.
Everything worked fine so far (loading device tree via FDT command in extlinux.conf) but when i added an NVMe SSD to the system it started loading a default device tree. I also found the reason: it takes the /boot partition from the NVMe drive (which is later mounted on /data), if there is none it takes the default FDT file. So everything works again (by copying the /boot partition to /data/boot) but the behavior feels strange to me.
Could you please explain me why it boots from NVMe when there is one inserted and what would make sense to change that it would boot from eMMC regardless of inserting a disk? (e.g. formatting the disk MBR instead of GPT and remove boot flag?)

extlinux.conf – nothing special in here

TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      FDT /boot/tegra194-agx-cti-custom.dtb
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4

mount

/dev/mmcblk0p1 on / type ext4 (rw,relatime,data=ordered)
/dev/nvme0n1p1 on /data type ext4 (rw,noatime,data=ordered)

Thanks a lot
Thomas

Please refer to NVIDIA Jetson Linux Driver Package Software Features : Bootloader | NVIDIA Docs

Thanks for that input but the referenced UBoot document doesn’t apply to Jetson AGX

Applies to: NVIDIA® Jetson Nano™ devices, NVIDIA® Jetson™ TX2 series, and NVIDIA® Jetson TX1

afaik the CBoot docs should apply:
https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/bootflow_jetson_xavier.html#wwpID0E0JB0HA

Kernel Boot Sequence Using extlinux.conf

CBoot functionality includes a default booting scan sequence. It scans bootable devices in the following order:

  1. External SD card
  2. External NVMe device
  3. USB device
  4. Internal eMMC

here also the order seems to be correct, the remaining question is: why does it boot a default setup when it doesn’t find extlinux.conf on the NVMe (the correct extlinux.conf is on the eMMC)?
this would also imply that as soon as someone attaches an external SD card to the Jetson it will boot a wrong system configuration (by not loading the extlinux.conf from eMMC:/boot but trying to load it from SD not finding it, failing and booting some default)

Best Regards

I reported the same but was told this is a feature, not a bug.

eg: if you have a SD or nvme drive as a data disk, bootloader will attempt to find /boot/extlinux/extlinux.conf from it, if not found, it will NOT go on to try the next devices on the list, so your internal emmc extlinux.conf is ignored. The only workaround is to update the bootloader config to remove SD/nvme from the boot device list.

1 Like

Thanks for you reply,
where did you report that?

At least that is a workaround. Am I assuming it right that you have to change the boot-configuration in the bootloader device tree, rebuild & flash the new bootloader?

Thanks!

You need to modify the file Linux_for_Tegra/bootloader/cbo.dts and change the line: boot-order to remove usb and/or nvme. Then rebuild the dts file: ../kernel/dtc -I dts -O dtb -o cbo.dtb cbo.dts and reflash.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.