Booting Jetson Xavier AGX from the SD Card
First of all, I would like to thank Jetson Hacks for creating a wonderful tutorial
I just followed everything as described in his blog until the part where I had to edit the extlinux.conf
file.
So below instructions is just an add-on to his blog on that part alone for Jetson AGX Xavier.
mount | head -n 1
-> Tells which partition your OS is booted from -> A command which is very hand in the end to check where the OS is booting from. So make
sure you enter this before and after making the changes on the Jetson board.
So I changed the original EMMC(i.e on the Jetson board itself without the SD card) extlinux.conf(/boot/extlinux/extlinux.conf)
My original extlinux.conf
looks like below after the change. Make sure you take a backup as suggested by jetsonhacks in his blog and video. I changed the mmbclk0p1
to mmbclk1p1
and then things started working. My jetson board booted after that from the SD card. Yes, don’t be surprised, that’s the only change I did. But there is one problem. If you remove the SD, the device will not boot again. So if you wish to boot it again from the internal EMMC, make sure you reset it back to the original state. Yeah, it’s a pretty dirty hack. But it works!!
**************************************************************************************************************************************
TIMEOUT 30
DEFAULT primary
MENU TITLE L4T boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} quiet root=/dev/mmcblk1p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4
# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
# sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot
LABEL backup
MENU LABEL backup kernel
LINUX /boot/Image.backup
INITRD /boot/initrd
APPEND ${cbootargs}
**************************************************************************************************************************************
There are some changes in /etc/fstab
and /media/ubuntu/UUID/lib/init/fstab
that I read on the various forums.
You can ignore this. I didn’t do any changes.
I also edited the /media/ubuntu/UUID/boot/extlinux/extlinux.conf
and those settings didn’t work as described in jetson hacks. Probably it was written in 2017
for old jetpack versions and different versions R32.
In summary, the problem was resolved when I edited the /boot/extlinux/extlinux.conf
on the jetson board and not the one on the SD card. Probably Nvidia or Jetson team decided not to scan the SD card inserted, as it is supposed to be in the boot priority.
Note - This gives us an advantage that next time if you mess up the SD card, just format the SD card and then copy the image from the eMMC to the SD card again as explained in the jethacks blog. Make sure that you change the settings to root=/dev/mmcblk0p1
in the eMMC.
Ignore the below
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Doesn’t matter, if fstab is created in /lib/init
folder of the external SD card. Doesn’t matter that either on /etc/fstab
on the EMMC.
What only matters is what you edit in the file extlinux.conf in the internal EMMC. vim /boot/extlinux/extlinux.conf
, just change mmcblk0p1
to mmcblk1p1
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Updates -> 11th Mar, 2022
- Sometimes the SD card is not recognized, which fails to boot. Then it won’t boot from the emmc. I raised an issue with Nvidia. However they don’t have a solution. However, my solutions are
- Remove and insert the SD card again while turning it off. This should fix the problem most of the time.
- If this doesn’t work, you need to flash by running the command
sudo ./flash.sh jetson-xavier mmcblk0p1
. This will reset the whole board by erasing all the data on the emmc. Now go back to theextlinux.conf
to reset as described in the beginning of the blog to the SD card.