Boot Jetson TX2 from SD Card - require to know config changes

The easiest way…the way which I prefer since it leaves the eMMC available for rescue…is to chain load. On the eMMC “/boot/extlinux/extlinux.conf” the APPEND key/value pair offers the command line the Linux kernel uses. In that the “root=” determines where Linux will find its root partition (prior to that U-Boot determines where to look for extlinux.conf separately from where Linux will look).

“mmcblk0p1” is the first partition of eMMC; “mmcblk1p1” is the first partition of the SD card. If “root=mmcblk1p1”, then Linux will look at SD card instead of eMMC (U-Boot will still require eMMC first partition to have extlinux.conf, and editing files in “/boot/” of SD will have no effect).

When manually flashing on command line you would normally use a command such as this:

sudo ./flash.sh -S 29318MiB jetson-tx2 mmcblk0p1

…if you instead name “mmcblk1p1” instead of “mmcblk0p1”, then U-Boot will look for extlinux.conf on SD card instead of eMMC. Note that there are differences in boot with a missing SD card when extlinux.conf is on eMMC versus when it is on the SD card, which is why I prefer to flash normally and then edit “root=” (versus flashing to mmcblk1p1). In this latter scheme of flashing to mmcblk1p1 any edits to extlinux.conf on the eMMC will be ignored…the inverse of changing only the “root=”.

During a manual command line flash you normally unpack the sample rootfs, and then run “sudo ./apply_binaries.sh”. If you use the “sudo ./apply_binaries.sh -r /some/where/else”, then the binaries go to the alternate location. You might use your PC to mount an SD card there, unpack sample rootfs onto it, and the apply_binaries.sh…this will give you a complete file system on the SD card which can then be used directly on the Jetson. Be sure the SD card is using ext4 on the first partition (GPT partitions are used, e.g., from gdisk). If for some reason your host uses 64-bit ext4 extensions you may need to mkfs.ext4 using options to disable those extensions.

If you use a serial console you can make multiple boot entries and pick which one you want at boot time. You can also drop into the U-Boot environment, run “help” to see commands, and examine some of the variables which are boot macros used to determine boot device and order. Typing “boot” would continue to a normal boot.