Updating device tree without re-flashing the kernel.


While trying to tweak the device tree on my Jetson TX1, I managed to bork it enough that now it won’t boot into linux and keeps restarting on boot.

Is there a way to just replace the device tree .dtb file in the /boot directory without re-flashing the entire L4T and rootfs?

I’m not sure of boot order when extlinux.conf is not edited, but if you create a bootable SD card, then it is possible the SD will be booted. You’d create one partition on the SD card on your desktop host (if you have only one disk device on the host, this would result in the SD card as a whole being “/dev/sdb”, and the partition “/dev/sdb1”). Partition using gdisk, format it via mkfs.ext4.

You could then mount the SD card on the host using something like “sudo mount /dev/sdb1 /mnt”, followed by unpacking the sample rootfs on “/mnt”. Then use the “sudo ./apply_binaries.sh --root=/mnt” to change the location to modify to “/mnt”. Properly umount the device, put it in the Jetson, boot up the Jetson, and see if it is running on SD card. Should this work, then the current root partition will be mmcblk1p1, while the old one is mmcblk0p1. The old one can be mounted, e.g., “sudo mount /dev/mmcblk0p1 /mnt”, then the dtb copied in or other edits used in the “/mnt” sub-directory tree.

If this does not work, then you can still use a serial console and temporarily edit some of the boot loader environment variables and get it to boot to SD…hopefully you don’t need that extra step. If you do, then here is serial console wiring information: