Possible install L4T in external SD card and boot TX from that?

I am planning to install L4T in an external SD card on my TX1, since the on board eMMC 16G flash is not enough for me.
Is it possible (Hacking somewhere) to use JetPack for L4T to achieve that? For instance using JetPack 2.3.1 to install everything on the external SD card, not on eMMC flash and then boot TX from SD card, is it possible? If yes, could someone please show the way? Thanks a lot in advance!

Be careful to distinguish between where the boot loader is searched for, and where the root partition is searched for. An install to eMMC can easily be changed to boot to SD card without flash…the eMMC would remain as boot loader location/configuration, and also work as a rescue system.

The normal flash target is mmcblk0p1 (eMMC). SD card is mmcblk1p1 (the first GPT partition on the SD card, e.g., via gparted).

If you have an existing eMMC install, then u-boot configuration is taken from “/boot/extlinux/extlinux.conf”. At the moment the boot loader hands off to the kernel the “root=” part of the “APPEND” key/value pair is how the kernel finds its root partition (do keep in mind though that there is also an initrd in newer releases…even so, the initrd eventually does a pivot root change to the “root=” parameter).

Simply create your file system on SD card first partition, then change the extlinux.conf “mmcblk0p1” to be “mmcblk1p1”. If something were to go wrong you might find it useful to use a serial console since it can select among multiple boot entries of extlinux.conf (instead of nuking the original entry you could create a second entry and only boot to that with serial console selection). See:

Placing a sample rootfs on SD is as simple as creating and formatting that first partition, unpacking sample rootfs onto it using sudo (permissions matter), and then using “sudo ./apply_binaries.sh -r /wherever/sd/is/mounted” to complete the rootfs.

@linuxdev, Thanks. Is there any convenient solution to apply JetPack for L4T (Jetson Development Pack) installation totally from PC host to the external SD? not internal eMMC flash?

@linuxdev, I am now following http://elinux.org/Jetson/TX1_Serial_Console, however, seems the serial console doesn’t work for me.
I can only see the output of the system start up message, but I can’t send or type any character. What’s the problem?
from the start up message, I saw:

[FAILED] Failed to start Set console keymap.
See 'systemctl status console-setup.service' for details.

Any idea?

I don’t use JetPack (I have a Fedora host, JetPack won’t run on it), so I don’t know if it allows pointing to SD card. The flash target for eMMC is mmcblk0p1, the flash target for SD card is mmcblk1p1. Probably JetPack can aim at that. However, this also puts boot loader configuration on SD card, so you can’t simply swap SD cards for testing different root file systems unless each card has everything for boot. Even if you flash to eMMC, pointing root device to SD card means you are operating entirely on the SD card for whatever occurs once the Linux kernel loads.

The serial console message tends to imply your root file system is incomplete or otherwise not correct. I’m guessing this was an excerpt from after the kernel loads. More information on exactly what was done would be needed to figure out what’s going on, especially logs from right at the start of powering up. Your serial console is working, something else is failing.

Note that the u-boot boot loader offers you a very short moment right after booting up where you can hit any key to interrupt boot and pick a boot entry or debug things in the boot loader. If you don’t hit a key at the correct moment early on, then boot will just continue using the default entry. Looks like the default entry reaches an invalid root partition.

Here is an excerpt of one serial console log near the start of boot:

tegra-pcie: link 1 down, ignoring
In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
<b>Hit any key to stop autoboot:</b>  0 
MMC: no card present
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
977 bytes read in 89 ms (9.8 KiB/s)
p2371-2180 eMMC boot options
<i>1:    primary kernel</i>
<b>Enter choice: 1:      primary kernel</b>
Retrieving file: /boot/initrd

Note the “Hit any key to stop autoboot”…don’t hit a key here, it’s just to poke around in the u-boot environment…if you do stop here, type “boot” and enter key to continue. If you have more than one boot entry, the “Enter choice:” is when you hit a key to stop boot (if there are two or more boot entries it’ll give something like a 2 second pause). You can use the backspace key to remove garbage if you entered a keystroke other than the boot choice you want, then type in the correct number, and continue. Once you see the “Retrieving file” it’s too late and u-boot is about to overwrite itself with the Linux kernel.

I am not able to send any character by the USB-Serial adapter. I am wondering the hardware TX signal level might be wrong. What’s the signal level? will it must be 3.3V TTL?

I figured it out the serial connection issue was due to the wrong signal level setting on my USB-Serial converter. It must be 3.3V TTL that working.