Debian Net-Installer

Note

This guide is just conceptual, to give you an idea how it will work. If you need help feel free to contact support@karo-electronics.de.

Hint

To get files, e.g. Kernel, Devicetree and other stuff it might be useful to have a look at our debian-tx8m GitHub repository.

Before you start

Connect the 12V DC power to your Developtment Kit and the micro USB connector to the OTG port.

Bring the board into bootmode. If you’re new to enabling the bootmode, see Enabling Boot Mode.

Getting uuu

The universal update utility is used to program your board.

  1. Get uuu, uuu.exe and libusb-1.0.dll from NXP’s official repository here.

Flash U-Boot

  1. Plug the micro USB, that is connected into the OTG port of your board, into your computer.
  2. Open a command line on your computer.
  3. Press the reset button on your board.
  4. Run uuu to flash U-Boot to your module.

Running Debian Net-Installer

Ramdisk, kernel, devicetree

There are three files you will need to start the net-boot:

  • The kernel, Image-imx8mm-tx8m
  • The dtb, imx8mm-tx8m-1610-mipi-mb.dtb
  • The initram file, uInitrd

Setup a NFS share and put these three files inside it, to access them via TFTP in u-boot.

Note

The initram file is for the debian-stretch net installer. If you’d like to try other versions you have to convert the initram .img files to fit u-boot. This is explained at Converting ramdisk .img file for u-boot. It’s not guaranteed that other versions or systems will work with our module.

Preparing your device

  1. Connect a network cable to your board.
  2. Connect the USB to UART cable and connect to your board with a terminal to boot into U-Boot. Detailed description of how to connect to a terminal is in PuTTY Terminal Connection.
  3. Make sure the Boot Mode jumper is open.

Configuring U-Boot

You should now be inside the u-boot terminal. You need to run some commands to setup the netboot.

Note

When you copy multiple lines of the commands, this might work, but U-Boot can also “swollow” some characters. To avoid this, just copy every single line and run it. You might use an editor to prepare the commands to your needs.

  1. Setting addresses for loading netboot:
setenv kernel_addr_r 0x40480000
setenv fdt_addr_r 0x43000000
setenv ramdisk_addr_r 0x50000000
  1. Loading kernel, ramdisk and dtb:
# get an ip-address
dhcp
# connect to your nfs-share
setenv serverip {nfs-ip}
# load files with tftpboot
tftpboot ${kernel_addr_r} Image-imx8mm-tx8m
tftpboot ${fdt_addr_r} imx8mm-tx8m-1610-mipi-mb.dtb
tftpboot ${ramdisk_addr_r} uInitrd

Booting the Installer

Boot the net installer by typing:

booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}

You will be guided through the installation. Make sure to:

  • Install only headless debian with default settings
  • Partition manual with following settings:
|p1,256mb,ext4,mount=/boot
|p2,512mb,swap
|p3,all-space,ext4,mount=/

After installation you will be warned, that there’s no bootloader. This is okay for us, so just keep in mind at which device the installation is and hit [Enter]. The system should boot you back into U-Boot.

Booting your Installation

  1. Set bootargs to boot from eMMC partition:
setenv bootargs 'console=ttymxc0,115200 earlycon=ec_imx6q,0x30860000,115200 root=/dev/mmcblk0p2 rootwait rw ip=dhcp'
  1. Load kernel and dtb again:
dhcp
setenv serverip {nfs-ip}
tftpboot ${loadaddr} Image-imx8mm-tx8m
tftpboot ${fdt_addr} imx8mm-tx8m-1610-mipi-mb.dtb
  1. Boot:
booti ${loadaddr} - ${fdt_addr}

Your installation should boot, just login.

Kernel and devicetree into eMMC

  1. Install NFS client and mount your nfs-share:
apt install nfs-common
mount {nfs-ip}:/tftpboot /mnt
  1. Copy kernel and dtb into /boot
cp /mnt/Image-imx8mm-tx8m /boot/
cp /mnt/imx8mm-tx8m-1610-mipi-mb.dtb /boot/
  1. Reboot your system, now it just should startup itself.

Installing Desktop

If you wish to install a desktop environment you can have a look at Manual Desktop installation.