CM-T54: Linux: Getting started

From Compulab Mediawiki
Revision as of 06:25, 20 April 2015 by Grinberg (talk | contribs) (Install on mSATA drive)
Jump to: navigation, search

Introduction

This article provides an introduction on how to install the Debian example root filesystem image on the CompuLab CM-T54 System-on-Module / Computer-on-Module eMMC internal storage device.

Preparation steps

  • Obtain a PC workstation with a serial communication port.
  • For networked installation you need to install a TFTP server on the host PC. For Windows machines we recommend TFTPD32 included in the Linux package for CM-T54 (link below).
  • Download the Linux package for CM-T54 from CompuLab website. Unzip the package to a directory on your host workstation.
  • All image files mentioned below can be found in the images subdirectory
  • Connect the host PC to the SB-T54 base-board (connector P11) via the serial cable supplied with the evaluation kit.
  • Start terminal emulation software on your PC. Set baud rate to 115200 bps, 8 bit per frame, 1 stop bit, no parity, no flow control.
  • Turn on the CM-T54 evaluation system. The U-Boot boot-loader will start and you will get a command prompt.
Admolition note.png If the boot settings of your CM-T54 are different than default, you may need to press and hold Ctrl-C while turning the CM-T54 on, in order to get command prompt.

Boot into the installation environment (ramdisk)

The first step in CM-T54 Linux installation is starting the installation environment (Linux kernel and Ramdisk image). This can be done using the following media:

Using installation environment on MMC/SD card

  • Copy kernel.img, omap5-sbc-t54.dtb, ramdisk.img and bootscr.img from Linux package for CM-T54 to the root directory on the first partition of the MMC/SD card.
  • Insert the MMC/SD card into the MMC/SD socket (P9) on the SB-T54 baseboard and reset the module.
  • The installation environment boot will start automatically.
  • To start installation environment boot manually, use the following U-Boot commands:
CM-T54 # mmc dev 0
CM-T54 # mmc rescan
CM-T54 # load mmc 0 0x82000000 bootscr.img
CM-T54 # source 0x82000000

Using installation environment from USB storage device

  • Copy kernel.img, omap5-sbc-t54.dtb, ramdisk.img and bootscr.img from Linux package for CM-T54 to the root directory on the first partition of the USB storage device.
  • Insert USB storage device into SB-T54 USB port (P25 or P26).
  • Remove MMC/SD card from the MMC/SD socket (P9) on the SB-T54 baseboard.
  • Use the following U-Boot commands to start installation environment boot:
CM-T54 # usb start
CM-T54 # load usb 0 0x82000000 bootscr.img
CM-T54 # source 0x82000000

Using installation environment from TFTP server

  • Connect the SB-T54 Ethernet port to your local network.
  • Put kernel.img, omap5-sbc-t54.dtb, and ramdisk.img from Linux package for CM-T54 to a location accessible by the TFTP server:
    - On Windows machine: copy kernel.img, omap5-sbc-t54.dtb, and ramdisk.img to the same folder and point the TFTP server to that folder
    - On Linux machine: copy kernel.img, omap5-sbc-t54.dtb, and ramdisk.img to TFTP server root directory, usually /tftpboot or /tftproot.
  • Initialize CM-T54 Ethernet controller:
CM-T54 # usb start
  • You can use U-boot dhcp command to obtain IP address
CM-T54 # dhcp
or manually set ipaddr environment variable:
CM-T54 # setenv ipaddr <CM-T54 ip address>
  • Use the following U-Boot commands to start installation environment boot:
CM-T54 # setenv bootargs "root=/dev/ram0 rw ramdisk_size=16384 console=ttyO3,115200n8 vram=16M ip=dhcp"
CM-T54 # tftpboot 0x88000000 omap5-sbc-t54.dtb
CM-T54 # tftpboot 0x82000000 kernel.img
CM-T54 # tftpboot 0x88080000 ramdisk.img
CM-T54 # bootz 0x82000000 0x88080000 0x88000000

Install Kernel and Debian Linux Images

After the ramdisk image is loaded the Linux login prompt will appear. Login as root into the system.

compulab login: root

Mount the installation source media

The next step is installing the kernel and Debian Linux images. The following media can be used as a source for installation:

Mount an MMC/SD Card
  • Copy the zImage-cm-t54, omap5-sbc-t54.dtb and the debian-image.tar.bz2 from the Linux package for CM-T54 to the root directory of any partition on the MMC/SD card. The partition can be formatted either ext2/3/4 or FAT file system.
  • Insert the MMC/SD card into the SD socket (P9) on the SB-T54.
  • The MMC/SD card is mounted automatically under /media/mmcblk0pX. Where X is the partition number.
  • If for some reason the MMC/SD card hasn't been mounted automatically, use the following mount command:
root@compulab:~# mkdir -p /media/mmcblk0pX && mount /dev/mmcblk0pX /media/mmcblk0pX
Mount a USB Storage Device
  • Copy the zImage-cm-t54, omap5-sbc-t54.dtb and the debian-image.tar.bz2 from Linux package for CM-T54 to the root directory of any partition on the USB storage device.
  • Plug the USB storage device to any USB host port (P25 or P26) on the SB-T54.
  • The USB device is mounted automatically under /media/sdXY. Where X is the device letter and Y is the partition number.
  • If for some reason the USB storage device hasn't been mounted automatically, use the following mount command:
root@compulab:~# mkdir -p /media/sdXY && mount /dev/sdXY /media/sdXY
Mount an NFS drive
  • Connect the CM-T54 Ethernet port (P13) to your local network.
  • Copy the zImage-cm-t54, omap5-sbc-t54.dtb and the debian-image.tar.bz2 from the Linux package for CM-T54 to a directory exported through NFS.
  • During Ramdisk image booting the CM-T54 attempts to obtain an IP address using DHCP. If from some reason the IP address has not been obtained, use the following commands to obtain IP address for the CM-T54:
    • Obtain IP using DHCP:
      root@compulab:~# ifup eth0
    • If there is no DHCP server on the network, you can set a static IP address using ifconfig:
      root@compulab:~# ifconfig eth0 <ip address>
  • Mount the NFS share containing the zImage-cm-t54, omap5-sbc-t54.dtb and the debian-image.tar.bz2 files:
root@compulab:~#  mount -o nolock <host ip>:/path/to/nfs/share /mnt/net

Install Images on eMMC

Admolition note.png The below procedure will work only on empty eMMC chip. If you have already used the eMMC, please delete all the partitions before proceeding.
  • In this subsection the term /mount/point can be:
    • /mnt/net if NFS is used
    • /media/mmcblk0pX if an MMC/SD card is used, where X is the partition number.
    • /media/sdXY if USB storage is used, where X is the USB drive letter and Y is the partition number.
  • Create two partitions for the Linux kernel (FAT32 100M) and root file system (EXT4 the rest of the disk) on the eMMC:
root@compulab:~# echo -e "n\np\n1\n2048\n204800\na\n1\nt\nc\nn\np\n2\n204801\n\nw\neof\n" | fdisk -u /dev/mmcblk0
  • Refresh the device nodes:
root@compulab:~# mdev -s && umount /dev/mmcblk0p1 && umount /dev/mmcblk0p2
  • Format the first partition with FAT32 file system:
root@compulab:~# mkfs.vfat -n boot /dev/mmcblk0p1
  • Format the second partition with EXT4 file system:
root@compulab:~# mkfs.ext4 /dev/mmcblk0p2
  • Mount both partitions:
root@compulab:~# mkdir -p /media/mmcblk0p1 && mount /dev/mmcblk0p1 /media/mmcblk0p1
root@compulab:~# mkdir -p /media/mmcblk0p2 && mount /dev/mmcblk0p2 /media/mmcblk0p2
  • Copy the zImage-cm-t54 and the omap5-sbc-t54.dtb to the first (FAT) partition:
root@compulab:~# cp /mount/point/zImage-cm-t54 /mount/point/omap5-sbc-t54.dtb /media/mmcblk0p1 && sync
  • Extract the content of debian-image.tar.bz2 onto the second partition:
root@compulab:~# tar --numeric-owner -xvpjf /mount/point/debian-image.tar.bz2 -C /media/mmcblk0p2 && sync
  • Remove MMC/SD card from SB-T54 MMC/SD card socket (if used for installation) and reboot the module:
root@compulab:~# reboot

Install on mSATA drive

Admolition note.png The below procedure will work only on empty mSATA drive. If you have already used the drive, please delete all the partitions before proceeding.
  • In this subsection the term /mount/point can be:
    • /mnt/net if NFS is used
    • /media/mmcblk0pX if an MMC/SD card is used, where X is the partition number.
    • /media/sdXY if USB storage is used, where X is the USB drive letter and Y is the partition number.
  • Identify mSATA drive special device file
export SATA_DRIVE=/dev/`basename /sys/devices/44000000.ocp/4a140000.sata/ata1/host0/target0:0:0/0:0:0:0/block/sd?`
  • Create two partitions for the Linux kernel (FAT32 100M) and root file system (EXT4 the rest of the disk) on mSATA drive:
root@compulab:~# echo -e "n\np\n1\n\n+100M\na\n1\nt\nc\nn\np\n2\n\n\nw\neof\n" | fdisk ${SATA_DRIVE}
  • Format the first partition with FAT32 file system:
root@compulab:~# mkfs.vfat -n boot ${SATA_DRIVE}1
  • Format the second partition with EXT4 file system:
root@compulab:~# mkfs.ext4 ${SATA_DRIVE}2
  • Mount both partitions:
root@compulab:~# mkdir -p /media/boot && mount ${SATA_DRIVE}1 /media/boot
root@compulab:~# mkdir -p /media/rootfs && mount ${SATA_DRIVE}2 /media/rootfs
  • Copy the zImage-cm-t54 and the omap5-sbc-t54.dtb to the first (FAT) partition:
root@compulab:~# cp /mount/point/zImage-cm-t54 /mount/point/omap5-sbc-t54.dtb /media/boot && sync
  • Extract the content of debian-image.tar.bz2 onto the second partition:
root@compulab:~# tar --numeric-owner -xvpjf /mount/point/debian-image.tar.bz2 -C /media/rootfs && sync
  • Reboot the module:
root@compulab:~# reboot

After Installation

Select video out

CM-T54 supports four video output devices: HDMI, DVI, LCD, LVDS. All of them are enabled by default. Current version of Xorg driver of CM-T54 example root file system supports mirror video output mode only. It causes last registered video output device (LVDS) resolution to be propagated to other devices.


In order to force a specific video output device to be selected as a primary device the U-Boot environment variables should be adjusted:

  • HDMI/DVI output enabled (LCD/LVDS disabled)
CM-T54 # setenv mmcloadfdt 'load mmc ${mmcdev} ${fdtaddr} ${fdtfile}; run fdt_adjust_video;'
CM-T54 # setenv fdt_adjust_video 'fdt addr ${fdtaddr}; run fdt_disable_lvds; run fdt_disable_lcd'
CM-T54 # setenv fdt_disable_lvds 'fdt set /ocp/dss/encoder@58004000 status "disabled"; fdt rm /ocp/i2c@48070000/sn65dsi83@2c; fdt rm /aliases display3;'
CM-T54 # setenv fdt_disable_lcd 'fdt rm /display; fdt rm /ocp/dss/port/endpoint@1; fdt rm /aliases display2;'
CM-T54 # saveenv
  • LCD output enabled (LVDS disabled)
CM-T54 # setenv mmcloadfdt 'load mmc ${mmcdev} ${fdtaddr} ${fdtfile}; run fdt_adjust_video;'
CM-T54 # setenv fdt_adjust_video 'fdt addr ${fdtaddr}; run fdt_disable_lvds'
CM-T54 # setenv fdt_disable_lvds 'fdt set /ocp/dss/encoder@58004000 status "disabled"; fdt rm /ocp/i2c@48070000/sn65dsi83@2c; fdt rm /aliases display3;'
CM-T54 # saveenv
  • Default settings
CM-T54 # setenv mmcloadfdt 'load mmc ${mmcdev} ${fdtaddr} ${fdtfile};'
CM-T54 # saveenv

Boot from mSATA drive

  • Set the bootargs environment variable:
CM-T54 # setenv bootargs "root=/dev/sda2 rootfstype=ext4 rw rootwait console=ttyO3"
  • To boot Linux, type:
CM-T54 # setenv bootdelay 3
CM-T54 # setenv bootcmd 'load scsi 0 ${loadaddr} zImage-cm-t54 && load scsi 0 ${fdtaddr} omap5-sbc-t54.dtb && bootz ${loadaddr} - ${fdtaddr}'
CM-T54 # saveenv
CM-T54 # boot

See also