This is a follow-on to my last post and to the excellent instructions at the nvidia forums. The purpose to writing it again here is to mostly keep a recipe for myself and others. It may be possible to replace the rootfs from Linux 4 Tegra using this method, and I'm going to try that.

Pre-requisites:
  • X86-64 machine running Ubuntu 14.04
  • Micro USB cable
  • Nvidia TX1
  • 16+ GB SD Card (may be optional)
  • 3.3 volt TTL-level usb serial port installed on ttyS0
Background and Considerations

The general theory of operation is to use the Debian netboot/netinstall initrd image. This image is enough to begin the install process using internet-sourced packages. There is no netboot server required in this case. The last post used the Jessie distro's initrd, and I'm going to try the Sid one this time. As I said, no net boot server is required. So, to get the initrd onto the device, we'll put it in the boot directory of the factory mmc image. Then, we can modify the boot configuration file to boot using the initrd. Once it has booted into the installer, we should be able replace the contents on the mmc rootfs.

Steps on the x86_64 machine

  • Login and download and install the L4T package.
  • Download the ARM64 Sid net install initrd.
  • Unpack, apply_binaries.sh, and repack the initrd following these instructions.
  • Open a serial terminal for the TX1′s serial port and reboot the TX1
  • At the uBoot prompt of the TX1 enter UMS mode
  • Mount the TX1 rootfs, and copy the new initrd into /boot
  • Edit the /boot/extlinux/extlinux.conf to add the reference to the new initrd.
  • Backup the entire /boot directory from the TX1.
  • Reboot the TX1 and allow u-boot to run the autoboot
  • In the next boot menu (extlinux) choose your new netboot option
Steps on the TX1
  • Choose your locale settings
  • Select the network interface that looks most like eth0 and configure
  • Follow the instructions normally until you get to partitioning
  • DO NOT CHOOSE GUIDED PARTITIONING
  • Select Manual partitioning
  • select the APP partition (of mmc0 or mmc1, mmc0 is on-board)
  • Use as Ext4
  • Format
  • Mount as root
  • "Done setting up this partition"
  • Finish and write to disk
  • Accept that no swap space is used.
  • Wait for the installation to finish (mine hung making install log)
  • Reboot
Back on the x86-64 machine:
  • In the serial terminal, re-start UMS mode
  • Re-mount the root file system
  • Re-run the apply-binaries.sh, but on the mounted TX1 root filesystem this time
  • Copy the /boot/extlinux folder from your backup of boot into the new /boot
  • Unmount and reboot