Jetson Orin Nano: Unable to Change UEFI Boot Device
Issue Overview
Users of the Nvidia Jetson Orin Nano DevKit are experiencing difficulties in changing or selecting the UEFI boot device. The system consistently follows a predetermined boot sequence (NVMe -> USB -> SD) regardless of user attempts to modify the boot order or select a specific boot device. This issue persists even when multiple storage devices are connected to the board. Changes made in the UEFI settings, such as deleting boot options, changing boot order, or directly selecting the Boot Manager, are not retained after reaching the ‘L4TLauncher:’ stage.
Possible Causes
- Firmware limitations: The UEFI firmware may have restrictions that prevent custom boot order modifications.
- Software bug: There could be a bug in the L4TLauncher or bootloader that resets UEFI settings.
- Configuration issue: Incorrect or conflicting settings in the bootloader or kernel command line.
- Hardware limitation: The Jetson Orin Nano DevKit may have a fixed boot priority that overrides user settings.
- Outdated software: The issue might be related to an older version of Jetpack or L4T (Linux for Tegra).
Troubleshooting Steps, Solutions & Fixes
-
Verify current setup:
- Check the Jetpack version: The user reported using L4T 35.3.1. Ensure you’re using the latest stable version.
- Confirm you’re using the Jetson Orin Nano DevKit, not a custom board.
-
Flash individual boot devices:
- Flash NVMe, USB, and SD card individually following the official Nvidia guide.
- Verify that each device boots correctly when it’s the only storage attached.
-
Modify rootfs target:
- Edit
/boot/extlinux/extlinux.conf
on each boot device. - Change the root parameter from:
root=PARTUUID=ad43ec6f-6d79-4df0-b915-1c936b0e33ef
to:
root=/dev/sda1
- Adjust
sda1
to match the appropriate device for each boot option.
- Edit
-
Modify flash script:
- If creating a custom image, modify the
flash.sh
script to use device names instead of UUIDs. - Look for the section in
flash.sh
that sets thecmdline
variable. - Change:
cmdline+="root=PARTUUID=${_tmp_uuid} rw rootwait rootfstype=ext4 "
to:
cmdline+="root=/dev/${target_rootdev} rw rootwait rootfstype=ext4 "
- If creating a custom image, modify the
-
Check kernel command line:
- After booting, run
cat /proc/cmdline
to view the current kernel command line. - Verify that the root device is correctly specified.
- After booting, run
-
Create a rescue boot option:
- Prepare a USB drive with a minimal rescue system.
- Modify its
extlinux.conf
to ensure it uses its own rootfs. - This can serve as a fallback if the main system becomes unbootable.
-
Use serial console for debugging:
- Connect a serial console to monitor the full boot process.
- This can help identify at which point the boot device selection is overridden.
-
Check for firmware updates:
- Look for any available updates to the Jetson Orin Nano’s firmware or UEFI.
- Apply updates if available, following Nvidia’s official documentation.
-
Contact Nvidia Support:
- If the issue persists after trying these steps, reach out to Nvidia’s developer support.
- Provide them with:
- Your exact hardware configuration
- Jetpack and L4T versions
- Detailed boot logs
- Steps you’ve already taken to troubleshoot
Remember that modifying boot configurations can potentially render your system unbootable. Always have a backup plan and a way to recover your system before making changes.