JTK1 and JTX1 are very close to exact matches in terms of how u-boot is used. I assume your “/dev/sda1” is a GPT partition connected directly to the SATA controller, and not USB.
Something which can confuse people is the concept that u-boot and the Linux kernel may use files from a different partition or device. When you flash a Jetson, you tell u-boot where to look for configuration, e.g., normally you want to point to “mmcblk0p1” and place configuration on eMMC. At the moment u-boot hands off to the kernel, this is where the APPEND can change kernel to point somewhere else for root partition (the “root=” APPEND parameter).
I always suggest flashing to eMMC via mmcblk0p1…after that change your APPEND to whatever device you want. I strongly suggest the “/boot” directory of both u-boot config device and kernel rootfs device be copies of each other…that way you don’t need to think about what file is accessed from which device.
Take your eMMC extlinux.conf, copy an entry, and then make your edits. For example, if this is the original extlinux.conf:
TIMEOUT 30
DEFAULT primary
MENU TITLE p2371-2180 eMMC boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 root=/dev/mmcblk0p1 rw rootwait
…you could change to this, and pick entry 2 as an option via serial console during the u-boot kernel selection stage:
TIMEOUT 30
DEFAULT primary
MENU TITLE p2371-2180 eMMC boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 root=/dev/mmcblk0p1 rw rootwait
LABEL <b>sda1</b>
MENU LABEL <b>SATA device sda1</b>
LINUX /boot/Image
FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 <b>root=/dev/sda1</b> rw rootwait
In the above sample edit, if you’ve tested and found sda1 is what you want, change “DEFAULT primary” to be “DEFAULT sda1”. Keep these files as duplicates between sda1 and eMMC and you have yourself a rescue system. This implies any file mentioned in extlinux.conf. In some cases the file will be accessed by u-boot from eMMC, and later by the kernel on sda1.
Expanding the topic, should you flash to SD card on mmcblk1p1, this implies the location of files for u-boot config changes from eMMC to SD card…without an SD card this would fail to boot. However, the SD card variant would still follow kernel handoff as per the “root=” parameter, and so config would be from “/boot” of SD, but kernel would use “/boot” of sda1. You almost never want to flash u-boot to point at a non-eMMC device…it’s best to leave it on eMMC, and then redirect only the kernel.
Note that u-boot must understand the partition and device of where it gets extlinux.conf, the kernel must understand the partition and device of the “APPEND” key/value pair. Sometimes u-boot can hand off the kernel to things u-boot does not understand and things will work well. I don’t know why someone would need it, but it is also possible to point the kernel to a device u-boot does not see or understand, and also have things work well. When there are two devices involved, the main danger is if you edit the wrong one and don’t realize the stage of boot is pointing to the other…it can make for some interesting frustration. This and the ability to rescue and restore is a big reason to keep exact copies of “/boot” on both devices even when not required.