IGEPv2 Ubuntu Distro flash
From IGEP - ISEE Wiki
WORKING PROGRESS
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.
Contents
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 appropiate 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 .
and after that we can unmount the device as
$ cd .. $ umount /mnt
Now we will edit the file 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.
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 image
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
$ ubiupdatevol /dev/ubi0_0 /root/ubuntu-12.04.04-lts-isee-igep00x0-20140606-armel.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
Boot from Flash (first time)
Unplug the power cord and eject the microsd card then plug the power cord again. 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:
Use the same root password ("letmein" - is the default)
After login edit the file: /etc/fstab and change this line:
LABEL="boot" /boot vfat defaults 0 0
to
LABEL="boot" /boot jffs2 defaults 0 0