Booting Issue on Jetson Orin Nano with Minimal Root Filesystem - PARTUUID Mount Fail

Hi,

I recently flashed my Jetson Orin Nano Developer Kit with Jetson Linux version 36.3, following the official instructions provided on this page: Link1

Instead of using the sample root filesystem, I generated a minimal flavor root filesystem as outlined in the official documentation here:Link2

To note, my host machine runs Ubuntu 20.04, but the instructions specify that generating the minimal root filesystem requires Ubuntu 22.04. To address this, I generated the minimal root filesystem on a system running Ubuntu 22.04 (via AnyDesk) and then copied the generated file (sample_fs.tbz2) to my Ubuntu 20.04 host machine.

I followed the flashing procedure exactly as provided in the official guide and flashed the system onto an NVMe drive attached to the Jetson Orin Nano Developer Kit. The flashing process completed successfully, and I have included the log file generated during the procedure.

After flashing, I connected a display to the Jetson board. While the NVIDIA startup screen appeared and the boot process began, I encountered a boot failure. Upon reviewing the logs, I discovered an error related to a PARTUUID mount failure.

I would appreciate any guidance on how to resolve this issue. Could the problem be related to the flashing process, the root filesystem, or is there something else I might have missed?

flash_3-5_0_20241010-184156.log (49.1 KB)

You should use serial console to check the status of the board and attach full log.

Hi,

I used the serial console to check the status of the board and have attached the full log. Please take a look and help me resolve the booting issue.

Thank you.

fulllog_boardstatus.log (73.6 KB)

This log indicates it is already in recovery boot. Which means this log has no value to check.

Follow this page to make it able to do normal boot again. If normal boot fails, share me that log.

Hi,

I have switched to normal mode and rebooted, but it still fails. I’ve attached the log file. Please take a look and help me resolve the issue.

Thank you.
NormalBootingLog.log (339.5 KB)

It looks like PCIe driver is gone from your log and leads to nvme not able to mount.

Do you remember too keep the pcie driver in yoru minimal rootfs?

Hi,

I didn’t find any PCIe folder at the following path:
../Linux_for_Tegra/rootfs/lib/modules/5.15.236-tegra/kernel/drivers/. Do I need to include that driver folder in the above directory? If yes, could you please guide me on how to do that? If not, where should I check to confirm whether the PCIe drivers are included?

Thank you.

Why is this kernel “5.15.236” when our latest BSP is still using 5.15.148?

Did you customize the kernel and without adding any of kernel modules with it? This is not related just aboue PCIe driver. Basically every NVIDIA downstream driver is not in your BSP.

Apologies, there was a mistake in the path I provided. It should be “5.15.136-tegra,” not “5.15.236-tegra.”

But these drivers are there by default…

etPack_6.0_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra/rootfs/lib/modules/5.15.136-tegra$ find -iname "*pcie*"
./kernel/drivers/pci/controller/pcie-brcmstb.ko
./kernel/drivers/pci/controller/dwc/pcie-tegra194.ko
./kernel/drivers/pci/controller/pcie-rockchip-host.ko
./kernel/drivers/phy/rockchip/phy-rockchip-pcie.ko
./kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko
./updates/drivers/pci/controller/tegra-pcie-edma.ko
./updates/drivers/misc/tegra-pcie-dma-test.ko
./updates/drivers/net/ethernet/nvidia/pcie

Also, some drivers are from initrd too. Did you also change the initrd?

Yes, the drivers are found.

I haven’t changed the initrd. Please let me know How can I verify that?

Did you change l4t_initrd.img in your BSP before flash?

No changes were made to l4t_initrd.img in my BSP before flashing.

Could you flash usb drive for your board first? Want to check pcie after you boot up with usb first.

or just another way for this issue: Did you flash and boot the nvme successfully before you apply the minimal rootfs?

I exactly followed the steps below for flashing:

I first created sample_fs.tbz2 in the following way in Ubuntu 22.04:

cd Linux_for_Tegra/tools/samplefs
sudo ./nv_build_samplefs.sh --abi aarch64 --distro ubuntu --flavor minimal --version jammy

After executing the above command, the sample_fs.tbz2 file was generated inside the Linux_for_Tegra/tools/samplefs folder.

I then copied that file to my Ubuntu 20.04 host machine, placing it in the folder where Jetson_Linux_R36.3.0_aarch64.tbz2 exists. I executed the following commands:

tar xf Jetson_Linux_R36.3.0_aarch64.tbz2
sudo tar xpf sample_fs.tbz2 -C Linux_for_Tegra/rootfs/
cd Linux_for_Tegra/
sudo ./tools/l4t_flash_prerequisites.sh
sudo ./apply_binaries.sh

Next, to configure the username and password, I ran:

sudo ./tools/l4t_create_default_user.sh -u <username> -p <password> -a

After that, I set the Jetson Orin Nano Developer Kit to Force Recovery Mode and flashed it using the following command:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
  -c tools/kernel_flash/flash_l4t_t234_nvme.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

This is everything I have done. I didn’t make any modifications or changes to the existing files.

No, I didn’t flash USB drive to my board first. Is that necessary?

@WayneWWW

These are the exact steps that I have followed. Please take a look.

Just to clarify. If you don’t do this by yourself but flash the board with sdkmanager, will it pass the flash and boot up fine?

Yes, it was previously flashed using the NVIDIA SDK Manager, and everything was working fine. I just disabled the GUI features and used it in server mode. However, now I plan to completely remove the GUI features and flash it using a minimal root filesystem. When I tried this, I encountered a booting issue. Is this what you were expecting?