IGEPv2 Ubuntu Distro flash

From IGEP - ISEE Wiki

Jump to: navigation, search

How to get the Ubuntu 12.04.4 LTS in the Nand Flash Memory
The Ubuntu project is excited to be working with the ARM ecosystem to port Ubuntu for ARM-based devices. This work fits with our goals of making Ubuntu available as an open platform to as many people as possible.

Overview of How-To

This How-To is meant to be a starting point for people to learn install an Ubuntu image for OMAP3-based IGEP platforms as quickly and easily as possible.

This How-To covers IGEPv2, IGEP COM Module and IGEP COM Proton boards Nand Flash Install. if you are looking Ubuntu for IGEPv5 go to this other Howto.

Prerequisites

First you need follow theIGEPv2 Ubuntu Distribution howto and boot the IGEPv2 / IGEP COM Module / IGEP COM Proton using the Ubuntu distribution described in the howto.

Where are the Nand Flash partitions?

We need to check where the Nand flash partitions are located we will use the command lsblk command for check it:

root@igep00x0:~# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mtdblock0    31:0    0   512K  0 disk
mtdblock1    31:1    0    12M  0 disk
mtdblock2    31:2    0 499.5M  0 disk
mmcblk0     179:0    0   3.8G  0 disk
|-mmcblk0p1 179:1    0  70.6M  0 part /boot
`-mmcblk0p2 179:2    0   3.7G  0 part /

Where:

mdtblock0: Bootloader partition
mtdblock1: Boot partition
mtdblock2: rootfs partition

Erase the partitions

It's very important erase the partitions before try to write anything into the flash memory. We will erase all NAND partitions using these commands:

$ flash_eraseall /dev/mdt0 
$ flash_eraseall /dev/mtd1 
$ flash_eraseall /dev/mtd2

Install the Bootloader

Download the writeloader binary package from here ARMEL version or from here if you are using hard float version.

After download the appropriate package we're ready for install the bootloader in the internal flash

ARMEL version

$ writeloader-armel -i /boot/MLO -o /dev/mtd0

ARM Hard float version

$ writeloader-armhf -i /boot/MLO -o /dev/mtd0

Install the kernel (first boot)

We must create a jffs2 partition for the boot device, we will use this command:

$ mount -t jffs2 /dev/mtdblock1 /mnt

Now we can copy the boot content inside as

$ cd /mnt
$ cp /boot/igep.ini .
$ cp /boot/zImage .

Now we will edit the file /boot/igep.ini (using nano) due we must specify the root boot partition.
Find inside the file any line similar to this one and comment it:

--- Configure MMC boot ---

Change:

root=/dev/mmcblk0p2 rw rootwait

to

;root=/dev/mmcblk0p2 rw rootwait

And now we will activate the rootfs as ubi, you should locate these commented lines:

--- Configure UBI FS boot ---
;ubi.mtd=2
;root=ubi0:igep0020-rootfs
;rootfstype=ubifs

And uncomment the three lines as:

ubi.mtd=2
root=ubi0:igep0020-rootfs
rootfstype=ubifs

At leatest save the file.

and after that we can unmount the device as

$ cd ..
$ umount /mnt

Install the Rootfs (Using Ubi filesystem)

a) Format the partition with ubi

$ ubiformat /dev/mtd2

b) Attach the device

$ ubiattach -p /dev/mtd2

c) Create the ubi volume

$ ubimkvol /dev/ubi0 -N rootfs -s 486MiB

d) Download the ubi ubuntu 12.04.4 LTS armel image or ubi ubuntu 12.04.4 LTS armhf image

NOTE: This image is generated using this command:

$ mkfs.ubifs -r ubuntu-12.04.04-lts-isee-igep00x0-armel/ -m 2048 -e 129024 -c 4044 -o ubuntu-12.04.04-lts-isee-igep00x0-20140606-armel.ubi.img

Where:

ubuntu-12.04.04-lts-isee-igep00x0-armel: Is the rootfs uncompressed directory

ubuntu-12.04.04-lts-isee-igep00x0-20140606-armel.ubi.img : Is the ubi generated image

e) Copy the ubi ubuntu image inside your board You can use ssh (the image has a openssh server installed) or you can install wget tool and download the image directly.

f) Install the ubi ubuntu image if you want to use the armel image do:

$ ubiupdatevol /dev/ubi0_0 /root/ubuntu-12.04.04-lts-isee-igep00x0-20140606-armel.ubi.img

or the hard float alternative

$ ubiupdatevol /dev/ubi0_0 /root/ubuntu-12.04.04-lts-isee-igep00x0-20140606-armhf.ubi.img

g) Mount the ubi partition and verify the content

$ mount -t ubifs ubi0:rootfs /mnt/
$ls -al
drwxrwxr-x 21 igep igep 1376 Jun  5 15:06 .
drwxrwxr-x 22 igep igep 4096 Jun  9 11:11 ..
drwxr-xr-x  2 root root 6848 Jun  5 15:29 bin
drwxr-xr-x  2 root root  160 Apr 19  2012 boot
drwxr-xr-x  4 root root 5824 Jun  3 15:04 dev
drwxr-xr-x 50 root root 7624 Jun  5 16:06 etc
drwxr-xr-x  4 root root  288 Jun  5 15:23 home
drwxr-xr-x 11 root root 2056 Jun  5 15:21 lib
drwxr-xr-x  2 root root  160 Jun  3 15:02 media
drwxr-xr-x  2 root root  160 Apr 19  2012 mnt
drwxr-xr-x  2 root root  160 Jun  3 15:02 opt
drwxr-xr-x  2 root root  160 Apr 19  2012 proc
drwx------  3 root root  440 Jun  5 15:54 root
drwxr-xr-x  6 root root  616 Jun  5 15:14 run
drwxr-xr-x  2 root root 8256 Jun  5 15:21 sbin
drwxr-xr-x  2 root root  160 Mar  5  2012 selinux
drwxr-xr-x  2 root root  160 Jun  3 15:02 srv
drwxr-xr-x  2 root root  160 Apr 14  2012 sys
drwxrwxrwt  3 root root  224 Jun  5 16:06 tmp
drwxr-xr-x 10 root root  672 Jun  3 15:02 usr
drwxr-xr-x 11 root root  864 Jun  3 15:02 var

h) Edit fstab for "boot" partition

After login edit the file: /mnt/etc/fstab and change this line:

LABEL="boot" /boot vfat defaults 0 0

to

/dev/mtdblock1 /boot jffs2 defaults 0 0

Save the file.

i) Umount the ubi partition

$ umount /mnt

Boot from Flash (first time)

Unplug the power cord and eject the microsd card then plug the power cord again.

 * Loading cpufreq kernel modules...                                     [ OK ]
 * CPU0...                                                               [ OK ]  * CPUFreq Utilities: Setting ondemand CPUFreq governor...

Ubuntu 12.04.4 LTS igep00x0 ttyO2

igep00x0 login:

Use the same root password ("letmein" - is the default)

Mount manually the boot partition with this command:

$ mount -t jffs2 /dev/mtdblock1 /boot 

After mount the boot partition go to /root/packages and install the kernel with:

$ dpkg -i linux-image-2.6.37_0009.isee_armel.deb

and after that install the wifi firmware with

$ dpkg -i igep-fw-wifi-marvell-8686_0.1_all.deb

At leatest go to /boot directory and copy the file vmlinuz-2.6.37 as zImage

$ cd /boot 
$ cp vmlinuz-2.6.37 zImage 

Now you can reboot the board ... after that you've the ubuntu installed into the Nand Flash memory

Known issues

ISSUE - Booting device shows: The disk drive for /boot is not ready yet or not present.

During the reboot process the console will show you this message:

The disk drive for /boot is not ready yet or not present.
Continue to wait, or Press S to skip mounting or M for manual recovery

We will skip the /boot mount at this time (press 's') and the boot process will continue showing:

Skipping /boot at user request
modprobe: FATAL: Could not load /lib/modules/2.6.37/modules.dep: No such file or directory

modprobe: FATAL: Could not load /lib/modules/2.6.37/modules.dep: No such file or directory

 * Loading cpufreq kernel modules...                                     [ OK ]
 * CPU0...                                                               [ OK ]  * CPUFreq Utilities: Setting ondemand CPUFreq governor...

Ubuntu 12.04.4 LTS igep00x0 ttyO2

igep00x0 login:

After login edit the file: /etc/fstab and change this line:

LABEL="boot" /boot vfat defaults 0 0

to

/dev/mtdblock1 /boot jffs2 defaults 0 0

Save the file.