Difference between revisions of "CM-T43: Linux: Getting started"

From Compulab Mediawiki
Jump to: navigation, search
(Introduction)
 
Line 1: Line 1:
== Introduction ==
+
#REDIRECT [[CM-T43: Linux: Manual Installation]]
This article provides an introduction on how to install the Debian example root filesystem image on the CompuLab CM-T43 System-on-Module / Computer-on-Module internal storage.
 
 
 
== 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 [http://tftpd32.jounin.net/ TFTPD32] included in the Linux package for CM-T43 (link below).
 
* Download the Linux package for CM-T43 from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres CompuLab website]. Unzip the package to a directory on your host workstation.
 
* All image files mentioned below can be found in the {{filename|images}} subdirectory.
 
* Connect the host PC to the SB-SOM-T43 base-board (connector P8) 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-T43 evaluation system. The U-Boot boot-loader will start and you will get a command prompt.
 
*: {{Note|If the boot settings of your CM-T43 are different than default, you may need to press and hold '''Ctrl-C''' while turning the CM-T43 on, in order to get command prompt.}}
 
 
 
== Boot into the installation environment (ramdisk) ==
 
The first step in CM-T43 Linux installation is starting the installation environment (Linux kernel and Ramdisk image).
 
This can be done using one of the following media:
 
* [[#Using installation environment on MMC/SD card|MMC/SD card]]
 
* [[#Using installation environment from USB storage device|USB storage device]]
 
* [[#Using installation environment from TFTP server|Network TFTP server]]
 
 
 
=== Using installation environment on MMC/SD card ===
 
* Copy {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, {{filename|ramdisk.img}} and {{filename|bootscr.img}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] 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-SOM-T43 baseboard.
 
Use the following U-Boot commands to start installation environment boot:
 
<pre>
 
CM-T43 # mmc dev 0
 
CM-T43 # mmc rescan
 
CM-T43 # load mmc 0 0x82000000 bootscr.img
 
CM-T43 # source 0x82000000
 
</pre>
 
* Continue to the [[#Install Kernel and Debian Linux Images | Install Kernel and Debian Linux Images]] section.
 
 
 
=== Using installation environment from USB storage device ===
 
* Copy {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, {{filename|ramdisk.img}} and {{filename|bootscr.img}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to the root directory on the first partition of the USB storage device.
 
 
 
* Insert USB storage device into SB-SOM-T43 USB port (P6 or P26).
 
* Remove MMC/SD card from the MMC/SD socket (P9) on the SB-SOM-T43 baseboard.
 
* Use the following U-Boot commands to start installation environment boot:
 
<pre>
 
CM-T43 # usb start
 
CM-T43 # load usb 0 0x88000000 am437x-sb-som-t43.dtb
 
CM-T43 # load usb 0 0x82000000 kernel.img
 
CM-T43 # load usb 0 0x88080000 ramdisk.img
 
CM-T43 # setenv bootargs "root=/dev/ram0 rw ramdisk_size=16384 console=ttyO0,115200n8 vram=16M ip=dhcp"
 
CM-T43 # bootz 0x82000000 0x88080000 0x88000000
 
</pre>
 
 
 
* Continue to the [[#Install Kernel and Debian Linux Images | Install Kernel and Debian Linux Images]] section.
 
 
 
=== Using installation environment from TFTP server ===
 
* Connect the SB-SOM-T43 Ethernet port (P21) to your local network.
 
* Put {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, and {{filename|ramdisk.img}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to a location accessible by the TFTP server:
 
*: - On Windows machine: copy {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, and {{filename|ramdisk.img}} to the same folder and point the TFTP server to that folder.
 
*: - On Linux machine: copy {{filename|kernel.img}}, {{filename|am437x-sb-som-t43.dtb}}, and {{filename|ramdisk.img}} to TFTP server root directory, usually {{filename|/tftpboot}} or {{filename|/tftproot}}.
 
 
 
* You can use U-Boot {{cmd|dhcp}} command to obtain IP address
 
<pre>
 
CM-T43 # dhcp
 
</pre>
 
:or manually set {{parameter|ipaddr}} environment variable:
 
<pre>
 
CM-T43 # setenv ipaddr <CM-T43 ip address>
 
</pre>
 
* Use the following U-Boot commands to start installation environment boot:
 
<pre>
 
CM-T43 # setenv bootargs "root=/dev/ram0 rw ramdisk_size=16384 console=ttyO0,115200n8 vram=16M ip=dhcp"
 
CM-T43 # tftpboot 0x88000000 am437x-sb-som-t43.dtb
 
CM-T43 # tftpboot 0x82000000 kernel.img
 
CM-T43 # tftpboot 0x88080000 ramdisk.img
 
CM-T43 # bootz 0x82000000 0x88080000 0x88000000
 
</pre>
 
 
 
* Continue to the [[#Install Kernel and Debian Linux Images | Install Kernel and Debian Linux Images]] section.
 
 
 
=== Install Kernel and Debian Linux Images ===
 
After the ramdisk image is loaded the Linux login prompt will appear. Login as {{parameter|root}} into the system.
 
<pre>
 
compulab login: root
 
</pre>
 
 
 
==== Mount the installation source media ====
 
 
 
The next step is installing the kernel and Debian Linux images.
 
One of the following media can be used as a source for installation:
 
* [[#Mount an MMC/SD Card|MMC/SD Card]]
 
* [[#Mount a USB Storage Device|USB storage device]]
 
* [[#Mount an NFS drive|NFS drive]]
 
 
 
===== Mount an MMC/SD Card =====
 
* Copy the {{filename|zImage-cm-t43}}, {{filename|am437x-sb-som-t43.dtb}} and the {{filename|debian-image.tar.bz2}} from the [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] 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-SOM-T43.
 
* 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:
 
<pre>
 
root@compulab:~# mkdir -p /media/mmcblk0pX && mount /dev/mmcblk0pX /media/mmcblk0pX
 
</pre>
 
* Continue to the [[#Install Images on eMMC | Install Images on eMMC]] section.
 
 
 
===== Mount a USB Storage Device =====
 
* Copy the {{filename|zImage-cm-t43}}, {{filename|am437x-sb-som-t43.dtb}} and the {{filename|debian-image.tar.bz2}} from [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to the root directory of any partition on the USB storage device.
 
* Plug the USB storage device to any USB host port (P6 or P26) on the SB-SOM-T43.
 
* 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:
 
<pre>
 
root@compulab:~# mkdir -p /media/sdXY && mount /dev/sdXY /media/sdXY
 
</pre>
 
* Continue to the [[#Install Images on eMMC | Install Images on eMMC]] section.
 
 
 
===== Mount an NFS drive =====
 
* Connect the SB-SOM-T43 Ethernet port (P21) to your local network.
 
* Copy the {{filename|zImage-cm-t43}}, {{filename|am437x-sb-som-t43.dtb}} and the {{filename|debian-image.tar.bz2}} from the [http://compulab.co.il/products/computer-on-modules/cm-t43/#devres Linux package for CM-T43] to a directory exported through NFS.
 
* During Ramdisk image booting the CM-T43 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-T43:
 
** Obtain IP using DHCP:<pre>root@compulab:~# ifup eth0</pre>
 
** If there is no DHCP server on the network, you can set a static IP address using {{cmd|ifconfig}}:<pre>root@compulab:~# ifconfig eth0 <ip address></pre>
 
* Mount the NFS share containing the {{filename|zImage-cm-t43}}, {{filename|am437x-sb-som-t43.dtb}} and the {{filename|debian-image.tar.bz2}} files:
 
<pre>
 
root@compulab:~# mount -o nolock <host ip>:/path/to/nfs/share /mnt/net
 
</pre>
 
 
 
==== Install Images ====
 
* In this subsection the term {{filename|/mount/point}} can be:
 
** {{filename|/mnt/net}} if NFS is used
 
** {{filename|/media/mmcblk0pY}} if an MMC/SD card is used, where Y is the partition number.
 
** {{filename|/media/sdXY}} if USB storage is used, where X is the USB drive letter and Y is the partition number.
 
 
 
===== Install Images on eMMC =====
 
* Create two partitions for the Linux kernel (FAT32 100M) and root file system (EXT4 the rest of the disk) on the eMMC.
 
*: {{note|If an SD-Card is inserted in the SD card socket, eMMC will be enumerated as /dev/mmcblk1.<br>If an SD-Card is not inserted in the SD card socket, eMMC will be enumerated as /dev/mmcblk0. In the following instructions /dev/mmcblkX(p1,p2) refers to the eMMC.}}
 
<pre>
 
root@compulab:~# echo -e "n\np\n1\n2048\n204800\na\n1\nt\nc\nn\np\n2\n204801\n\nw\neof\n" | fdisk -u /dev/mmcblkX
 
</pre>
 
* Refresh the device nodes:
 
<pre>
 
root@compulab:~# mdev -s && umount /dev/mmcblkXp1 && umount /dev/mmcblkXp2
 
</pre>
 
* Format the first partition with FAT32 file system:
 
<pre>
 
root@compulab:~# mkfs.vfat -n boot /dev/mmcblkXp1
 
</pre>
 
* Format the second partition with EXT4 file system:
 
<pre>
 
root@compulab:~# mkfs.ext4 /dev/mmcblkXp2
 
</pre>
 
* Mount both partitions:
 
<pre>
 
root@compulab:~# mkdir -p /media/mmcblkXp1 && mount /dev/mmcblkXp1 /media/mmcblkXp1
 
root@compulab:~# mkdir -p /media/mmcblkXp2 && mount /dev/mmcblkXp2 /media/mmcblkXp2
 
</pre>
 
* Copy the {{filename|zImage-cm-t43}} and the {{filename|am437x-sb-som-t43.dtb}} to the first (FAT) partition:
 
<pre>
 
root@compulab:~# cp /mount/point/zImage-cm-t43 /mount/point/am437x-sb-som-t43.dtb /media/mmcblkXp1 && sync
 
</pre>
 
* Extract the content of {{filename|debian-image.tar.bz2}} onto the second partition:
 
<pre>
 
root@compulab:~# tar --numeric-owner -xvpjf /mount/point/debian-image.tar.bz2 -C /media/mmcblkXp2 && sync
 
</pre>
 
* Remove MMC/SD card from SB-SOM-T43 MMC/SD card socket (if used for installation) and reboot the module.
 
 
 
===== Install Images on NAND =====
 
* Format the NAND flash kernel partition and write the kernel image onto it:
 
<pre>
 
root@compulab:~# flash_erase /dev/mtd3 0 0
 
root@compulab:~# nandwrite -p /dev/mtd3 /mount/point/zImage-cm-t43
 
</pre>
 
* Format the NAND flash dtb partition and write the device tree image onto it:
 
<pre>
 
root@compulab:~# flash_erase /dev/mtd4 0 0
 
root@compulab:~# nandwrite -p /dev/mtd4 /mount/point/am437x-sb-som-t43.dtb
 
</pre>
 
* Format the NAND flash root filesystem partition:
 
<pre>
 
root@compulab:~# ubiformat /dev/mtd5
 
</pre>
 
* Attach the NAND flash root filesystem partition:
 
<pre>
 
root@compulab:~# ubiattach -m 5 -d 0
 
</pre>
 
* Create a ubi volume and name it "rootfs":
 
<pre>
 
root@compulab:~# ubimkvol /dev/ubi0 -m -N rootfs
 
</pre>
 
* Mount the ubi volume:
 
<pre>
 
root@compulab:~# mkdir -p /media/rootfs && mount -t ubifs ubi0:rootfs /media/rootfs
 
</pre>
 
* Extract the content of {{filename|debian-image.tar.bz2}} onto the /media/rootfs:
 
<pre>
 
root@compulab:~# tar --numeric-owner -xpf /mount/point/debian-image.tar.bz2 -C /media/rootfs && sync
 
</pre>
 
* Unmount the ubi volume:
 
<pre>
 
root@compulab:~# umount /media/rootfs
 
</pre>
 
* Reboot the CM-T43 Evaluation system.
 
 
 
== After Installation ==
 
 
 
=== Boot from eMMC ===
 
* Set the {{parameter|bootargs}} environment variable:
 
<pre>
 
CM-T43 # setenv bootargs "root=/dev/mmcblkXp2 rw rootfstype=ext4 rootwait console=ttyO0"
 
</pre>
 
* Set the {{parameter|bootcmd}} environment variable and save the environment:
 
<pre>
 
CM-T43 # setenv bootcmd 'mmc dev 1 && mmc rescan && load mmc 1 ${loadaddr} zimage-cm-t43 && load mmc 1 ${fdtaddr} am437x-sb-som-t43.dtb && bootz ${loadaddr} - ${fdtaddr}'
 
CM-T43 # saveenv
 
</pre>
 
* To boot Linux, type:
 
<pre>
 
CM-T43 # boot
 
</pre>
 
 
 
=== Boot from NAND ===
 
* Set the {{parameter|bootargs}} environment variable:
 
<pre>
 
CM-T43 # setenv bootargs "console=ttyO0,115200n8 root=ubi0:rootfs rw rootfstype=ubifs ubi.mtd=rootfs"
 
</pre>
 
* Set the {{parameter|bootcmd}} environment variable and save the environment:
 
<pre>
 
CM-T43 # setenv bootcmd 'nand read ${loadaddr} 0 980000 && nand read ${fdtaddr} 980000 80000 && bootz ${loadaddr} - ${fdtaddr}'
 
CM-T43 # saveenv
 
</pre>
 
* To boot Linux, type:
 
<pre>
 
CM-T43 # boot
 
</pre>
 
 
 
== See also ==
 
 
 
* [[CM-T43: Linux: Debian]]
 
* [[CM-T43: Linux: Kernel]]
 
* [[Linux: Development for ARM modules]]
 
 
 
[[Category:Linux|Getting started]]
 
[[Category:CM-T43|Linux: Getting started]]
 

Latest revision as of 11:23, 29 June 2016