Difference between revisions of "How to get the Ubuntu distribution"

From IGEP - ISEE Wiki

Jump to: navigation, search
 
(45 intermediate revisions by 10 users not shown)
Line 1: Line 1:
== How to get the Ubuntu distribution ==
+
==How to get the Ubuntu distribution==
 
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. Some points to note:
 
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. Some points to note:
  
*Ubuntu will target the new ARM EABI.
+
==Overview of How-To==
*For now, builds will expect a minimum of an ARMv5 instruction set.
+
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.
*Ubuntu will target ARM with VFP (Vector Floating Point).
+
 
*We will continue to work with vendors to provide hardware drivers for various ARM-based devices.
+
==Requirements==
*Ubuntu will likely have a different set of kernels than Debian (although the specific set is still under discussion).
+
* A SD card at least 2GB ( recommended 4GB )
 +
 
 +
 
 +
 
 +
==References==
 +
Much of this How-To is extracted from different sources. If you would like to read some of the original articles or resources, please visit them and thank the authors:
 +
 
 +
* The Ubuntu website ( http://www.ubuntu.com )
 +
* Ubuntu on ARM ( http://www.ubuntu.com/products/whatisubuntu/arm )
 +
* The rootstock project ( https://launchpad.net/project-rootstock )
 +
* ARM rootfs from scratch ( https://wiki.ubuntu.com/ARM/RootfsFromScratch )
 +
 
 +
==Ubuntu releases==
 +
==Releases==
 +
['''TIP'''] If you want to install the ubuntu image you should install the ubuntu rootfs and use the ISEE kernel and bootloader.
 +
 
 +
['''IMPORTANT'''] ISEE is not responsable about the Ubuntu releases you should read the information about Ubuntu deprecation releases in the Ubuntu webpage.
 +
 
 +
===Ubuntu 12.04.4 LTS (for IGEPv2, IGEP COM MODULE ISEE devices)===
 +
IGEPv2, IGEP COM Module and IGEP COM Proton Ubuntu page is located [[IGEPv2 Ubuntu Distro|here]]
 +
 
 +
===Ubuntu 12.04.4 LTS Hard Float (for IGEPv5)===
 +
IGEPv5 Ubuntu page is located [[IGEPv5 Ubuntu Distro|here]]
 +
 
 +
===Ubuntu 14.04 Lxde (for IGEP iMX6)===
 +
IGEP iMX6 Ubuntu page is located [[IGEP iMX6  Ubuntu Distro|here]]
 +
 
 +
===Ubuntu Base Firmware (All Boards)===
 +
Ubuntu base page is located [[IGEP Firmware Ubuntu|here]]
 +
 
 +
 
 +
 
 +
==Old Releases==
 +
===Ubuntu 10.10 (Maverick Meerkat)===
 +
First, download the compressed image from http://cdimage.ubuntu.com/ubuntu-netbook/ports/releases/
 +
 
 +
wget http://cdimage.ubuntu.com/ubuntu-netbook/ports/releases/maverick/release/ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz
 +
 
 +
Next, uncompress the image with
 +
 
 +
gunzip ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz
 +
 
 +
Then write the raw image to a blank SD card (the card size should be >2G)
 +
 
 +
sudo dd if=<uncompressed image> of=/dev/mmcblk0  # change /dev/mmcblk0 with appropriate device
 +
 
 +
Current boot file system (x-loader + u-boot + kernel) not works, so we need to replace. First download and extract this package
 +
 
 +
wget https://edge.launchpad.net/ubuntu/+source/linux/2.6.35-22.33/+buildjob/1970697/+files/linux-image-2.6.35-22-omap_2.6.35-22.33_armel.deb
 +
ar -x linux-image-2.6.35-22-omap_2.6.35-22.33_armel.deb
 +
tar jxf data.tar.bz2
 +
sudo cp -fr boot lib usr /media/<rootfs>      # change <rootfs> with appropriate SD rootfs partition
 +
 
 +
then, create an uImage file with
 +
 
 +
mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d boot/vmlinuz-2.6.35-22-omap uImage
 +
cp uImage /media/<bootfs>    # change <bootfs> with appropriate SD boot partition
 +
 
 +
next, download and copy x-loader from
 +
 
 +
wget http://downloads.isee.biz/pub/SW_Releases/binaries/x-loader/v1.4.4-3/x-load-1.4.4-3.igep0020-sdcard.bin.ift
 +
cp x-load-1.4.4-3.igep0020-sdcard.bin.ift /media/<bootfs>/MLO    # change <bootfs> with appropriate SD boot partition
 +
 
 +
and finally, do the same with u-boot
 +
 
 +
wget http://downloads.isee.biz/pub/SW_Releases/binaries/u-boot-arm/v2010.06-3/u-boot-arm-2010.06-3.igep0020.bin
 +
cp u-boot-arm-2010.06-3.igep0020.bin /media/<bootfs>/u-boot.bin      # change <bootfs> with appropriate SD boot partition
 +
 
 +
The last step is copy boot.scr to boot.ini
 +
 
 +
cp /media/<bootfs>/boot.scr /media/<bootfs>/boot.ini    # change <bootfs> with appropriate SD boot partition
 +
 
 +
Umount bootfs and rootfs partitions, push your SD card in your IGEP socket, power up and enjoy !
 +
 
 +
====System Testing and known issues====
 +
* Can't bring up eth0, no network - this is a known issue that has been fixed but may not have been applied yet.
 +
** https://bugs.launchpad.net/ubuntu/+source/linux/+bug/645689 (see tips and tricks for solution)
 +
 
 +
====Tips and tricks====
 +
=====Upgrade kernel to 2.6.35-23=====
 +
Note: This solves the eth0 issue.
 +
 
 +
Donwload and copy the 2.6.35-23 kernel
 +
 
 +
wget http://downloads.igep.es/ubuntu/maverick/linux-image-2.6.35-23-omap_2.6.35-23.40_armel.deb
 +
sudo cp linux-image-2.6.35-23-omap_2.6.35-23.40_armel.deb /media/<rootfs>      # change <rootfs> with appropriate SD rootfs partition
 +
 
 +
Boot up your Ubuntu , open a terminal and install
 +
 
 +
sudo dpkg -i linux-image-2.6.35-23-omap_2.6.35-23.40_armel.deb
 +
 
 +
Reboot your system, now the ethernet an wifi should work.
 +
 
 +
'''Note:''' Some users have encountered that after kernel update still booting the old kernel, to solve this issue do:
 +
 
 +
mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n initramfs -d /media/<rootfs>/boot/initrd.img-2.6.35-23-omap /media/<bootfs>/uInitrd
 +
mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n 2.6.35-23-omap -d /media/<rootfs>/boot/vmlinuz-2.6.35-23-omap /media/<bootfs>/uImage
 +
 
 +
=====How to get SGX Video Acceleration (under construction, not tested yet)=====
 +
src: https://wiki.ubuntu.com/ARM/OMAP/Graphics
 +
 
 +
First we'll install kernel headers
 +
 
 +
wget http://downloads.igep.es/ubuntu/maverick/linux-headers-2.6.35-23-omap_2.6.35-23.40_armel.deb
 +
sudo dpkg --install --force-depends linux-headers-2.6.35-23-omap_2.6.35-23.40_armel.deb
 +
 
 +
Activate the universe and multiverse repositories, then install the following packages:
  
== Overview of How-To ==
+
sudo apt-get install libegl1-sgx-omap3 libgles1-sgx-omap3 libgles2-sgx-omap3
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.
 
  
Unless otherwise noted, this How-To works with the '''Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine''' but most of the contents are valid also for other GNU/Linux distributions. We do not issue any guarantee that this will work on other distributions.
+
Before using it just be sure your user is also included at 'video' group.
  
This How-To will start out by a '''Make a bootable MMC card on Linux'''.
+
sudo adduser <your user> video
  
And then, we will cover the '''Getting a copy of a ubuntu root file system''' for various Ubuntu releases. These should give you a good basis overview of creating an ubuntu-based ARM root filesystem.
+
Now you can test the SGX with a DEMO, grab and untar the SDK Demo Package
  
== Requirements ==
+
wget http://neuvoo.org/neuvoo/distfiles/SGX-3.01.00.07-SDK.tar.gz
*A SD card at least 2GB ( recommended 4GB )
+
tar xzf SGX-3.01.00.07-SDK.tar.gz
  
== Feedback and Contributing ==
+
Then to run the demos just get into the X11 Binaries directory (e.g. OGLES/SDKPackage/Binaries/CommonX11/Demos/EvilSkull) and run the demo:
  
Creating articles in the wiki is a collaborative process, at any point, if you see a mistake you can contribute to this article.
+
./OGLESEvilSkull
  
Please, use the discussion tab for user comments. This is useful to separate page content and the discussion thereof and also, if you don't want to give normal users the right to edit the page but still want user contributed notes.
+
=====How to cross build ubuntu maverick kernel from sources=====
 +
Create a script for setting the environment
  
Editing permissions are restricted to registered users. [http://www.igep.es Register in the main IGEP site] and you will have single sign-on.
+
echo "Setting environment for armel cross-compile"
 +
export ARCH=arm
 +
export CROSS_COMPILE=arm-none-linux-gnueabi-
 +
export PATH=<path to cross compiler>:$PATH  (set the correct path to cross compiler) 
 +
export DEB_BUILD_ARCH=armel
 +
export DEB_HOST_ARCH=armel
  
Consult the [http://www.mediawiki.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
+
Clone the ubuntu maverick repository
  
== References ==
+
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-maverick.git
 +
cd ubuntu-maverick
  
Much of this How-To is extracted from different sources. If you would like to read some of the original articles or resources, please visit them and thank the authors:
+
Setup the environment and run ...
  
*The Ubuntu website ( http://www.ubuntu.com )
+
source armconfig
*Ubuntu on ARM ( http://www.ubuntu.com/products/whatisubuntu/arm )
+
fakeroot debian/rules clean
*The rootstock project ( https://launchpad.net/project-rootstock )
+
fakeroot debian/rules binary-omap
*ARM rootfs from scratch ( https://wiki.ubuntu.com/ARM/RootfsFromScratch )
 
  
== Make a bootable MMC card on Linux ==
+
The resulting two .deb files will be located in ../
  
 +
===Ubuntu 9.04 (Jaunty Jackalope)===
 +
====Make a bootable MMC card on Linux====
 
Thanks to Graeme Gregory and Steve Sakoman, you can now use [http://www.sakoman.com/OMAP3/a-script-for-partitioningformatting-a-bootable-sdmicrosd-card.html a script to automate the tedious process of creating a bootable SD/microSD card.]
 
Thanks to Graeme Gregory and Steve Sakoman, you can now use [http://www.sakoman.com/OMAP3/a-script-for-partitioningformatting-a-bootable-sdmicrosd-card.html a script to automate the tedious process of creating a bootable SD/microSD card.]
  
Line 54: Line 167:
 
  bootm 80200000
 
  bootm 80200000
  
And use the mkimage tool to convert this file into a script image which can be executed using U-Boot's source command.  
+
And use the mkimage tool to convert this file into a script image which can be executed using U-Boot's source command.
  
 
  $ source /usr/local/poky/eabi-glibc/arm/environment-setup
 
  $ source /usr/local/poky/eabi-glibc/arm/environment-setup
 
  $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Boot setup script' -d boot-ini.source boot.ini
 
  $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Boot setup script' -d boot-ini.source boot.ini
 +
 +
If you are not using IGEP's virtual machine, you can download and install the Poky SDK from http://www.igep.es/index.php?option=com_content&amp;view=article&amp;id=99&amp;Itemid=112&amp;dir=/var/www/vhosts/igep.es/httpdocs/downloads/01-ISEE_Products/IGEPv2/SW_Releases/poky/purple-3.2/v3.2.1-0/sdk once logged in. This will provide the /usr/local/poky directory. If you use this option, the appropriate source command is <tt>source /usr/local/poky/eabi-glibc/environment-setup-arm-none-linux-gnueabi</tt>.
  
 
The result will be a boot.ini file which you will copy to SD card boot partition
 
The result will be a boot.ini file which you will copy to SD card boot partition
Line 63: Line 178:
 
  $ cp boot.ini /media/boot
 
  $ cp boot.ini /media/boot
  
== Ubuntu releases ==
+
====Get a copy of a ARM ubuntu root file system====
 
+
In order to get a copy of a ARM ubuntu root file system, you will need to install qemu and a recent version of debootstrap and the qemu package. On some systems you may also need the qemu-kvm-extras package to run the ARM emulation.
=== Ubuntu 9.04 (Jaunty Jackalope) ===
 
 
 
In order to get a copy of a ARM ubuntu root file system, you will need to install qemu and a recent version of debootstrap and the qemu package
 
  
 
  $ sudo apt-get install qemu
 
  $ sudo apt-get install qemu
 +
$ sudo apt-get install qemu-kvm-extras
 
  $ wget http://ports.ubuntu.com/pool/main/d/debootstrap/debootstrap_1.0.12_all.deb
 
  $ wget http://ports.ubuntu.com/pool/main/d/debootstrap/debootstrap_1.0.12_all.deb
 
  $ sudo dpkg -i debootstrap_1.0.12_all.deb
 
  $ sudo dpkg -i debootstrap_1.0.12_all.deb
Line 101: Line 214:
 
   --seed lxde,gdm
 
   --seed lxde,gdm
  
After few hours, a file named armel-rootfs-[date].tgz will be in your working directory
+
This step can take a long time. For example, building ubuntu-desktop on a Celeron 1.6GHz laptop takes approximately 10 hours. When it is finished, a file named armel-rootfs-[date].tgz will be in your working directory.
  
 
Next, mount your SD card ext3 partition (/media/rootfs) and untar the rootfs
 
Next, mount your SD card ext3 partition (/media/rootfs) and untar the rootfs
Line 109: Line 222:
 
Finally, umount the SD card, insert the card in your board and power up.
 
Finally, umount the SD card, insert the card in your board and power up.
  
=== Ubuntu 10.10 (Maverick Meerkat BETA)  ===
+
--- That's all folks ---
 
 
First, download the compressed image from http://cdimage.ubuntu.com/ubuntu-netbook/ports/releases/
 
 
 
wget http://cdimage.ubuntu.com/ubuntu-netbook/ports/releases/maverick/beta/ubuntu-netbook-10.10-beta-preinstalled-netbook-armel+omap.img.gz
 
 
 
Next, uncompress the image with
 
 
 
gunzip ubuntu-netbook-10.10-beta-preinstalled-netbook-armel+omap.img.gz
 
 
 
Then write the raw image to a blank SD card (the card size should be &gt;2G)
 
 
 
sudo dd if=&lt;uncompressed image&gt; of=/dev/mmcblk0  # change /dev/mmcblk0 with appropriate device
 
 
 
Remove all file but uImage from /media/rootfs and create a boot.source file like this
 
 
 
setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000'
 
setenv bootargs 'mem=512M console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1024x768MR-16@60 root=/dev/mmcblk0p2 rw rootwait'
 
boot
 
 
 
create the boot.ini with
 
 
 
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Boot setup script' -d boot.source boot.ini
 
 
 
I have only an ethernet cable, so I'm going on. Put these lines in /media/rootfs/etc/rc.local&nbsp;: <br>
 
<pre>apt-get install -y openssh-server 2&gt;&amp;1 | tee /root/install.log
 
useradd -G admin,root -s /bin/bash -m igep
 
echo "igep:igep" | chpasswd
 
exit 0
 
</pre>
 
Check /etc/interfaces for "auto eth0", then boot the board with ethernet cable and wait some minutes. You can verify sshd status for example with (I've used a mac so nmap may differ):<br>
 
<pre>sudo nmap -sS -PN -e &lt;interface&gt; -p22 &lt;ip&gt;
 
</pre>
 
If you prefer passwordless ssh key authentication, create a key with ssh-keygen and copy the content of your .ssh/id_rsa.pub in authorized_keys&nbsp;:
 
<br> <pre>* ON&nbsp;THE IGEP *
 
$ cd /media/rootfs/home/igep
 
$ mkdir .ssh
 
$ chmod 700 .ssh
 
$ touch authorized_keys
 
$ chmod 600 authorized_keys
 
$ cat /wherever/it/is/your's/id_rsa.pub &gt;&gt; authorized_keys
 
</pre>
 
Remember to enable PubkeyAuthentication in /media/rootfs/etc/ssh/sshd_config&nbsp;:<br>
 
<pre>PubkeyAuthentication yes
 
</pre>
 
==== Minor problems<br>  ====
 
 
 
*/etc/hosts is missing and generates a sudo error
 
  
<br>
+
=See also=
 +
* [[How to get the Linaro distribution]]
 +
* [[How to get the Angstrom distribution]]
 +
* [[How to get the Android distribution]]
 +
* [[How to get the Meego distribution]]
 +
* [[How to get the Poky Linux distribution]]
  
--- That's all folks ---
 
  
[[Category:Software_distributions|Ubuntu]]
+
[[Category:Ubuntu]]
 +
[[Category:Software distributions]]

Latest revision as of 10:32, 25 June 2018

How to get the Ubuntu distribution

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. Some points to note:

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.

Requirements

  • A SD card at least 2GB ( recommended 4GB )


References

Much of this How-To is extracted from different sources. If you would like to read some of the original articles or resources, please visit them and thank the authors:

Ubuntu releases

Releases

[TIP] If you want to install the ubuntu image you should install the ubuntu rootfs and use the ISEE kernel and bootloader.

[IMPORTANT] ISEE is not responsable about the Ubuntu releases you should read the information about Ubuntu deprecation releases in the Ubuntu webpage.

Ubuntu 12.04.4 LTS (for IGEPv2, IGEP COM MODULE ISEE devices)

IGEPv2, IGEP COM Module and IGEP COM Proton Ubuntu page is located here

Ubuntu 12.04.4 LTS Hard Float (for IGEPv5)

IGEPv5 Ubuntu page is located here

Ubuntu 14.04 Lxde (for IGEP iMX6)

IGEP iMX6 Ubuntu page is located here

Ubuntu Base Firmware (All Boards)

Ubuntu base page is located here


Old Releases

Ubuntu 10.10 (Maverick Meerkat)

First, download the compressed image from http://cdimage.ubuntu.com/ubuntu-netbook/ports/releases/

wget http://cdimage.ubuntu.com/ubuntu-netbook/ports/releases/maverick/release/ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz

Next, uncompress the image with

gunzip ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz

Then write the raw image to a blank SD card (the card size should be >2G)

sudo dd if=<uncompressed image> of=/dev/mmcblk0  # change /dev/mmcblk0 with appropriate device

Current boot file system (x-loader + u-boot + kernel) not works, so we need to replace. First download and extract this package

wget https://edge.launchpad.net/ubuntu/+source/linux/2.6.35-22.33/+buildjob/1970697/+files/linux-image-2.6.35-22-omap_2.6.35-22.33_armel.deb
ar -x linux-image-2.6.35-22-omap_2.6.35-22.33_armel.deb
tar jxf data.tar.bz2
sudo cp -fr boot lib usr /media/<rootfs>      # change <rootfs> with appropriate SD rootfs partition

then, create an uImage file with

mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d boot/vmlinuz-2.6.35-22-omap uImage
cp uImage /media/<bootfs>     # change <bootfs> with appropriate SD boot partition

next, download and copy x-loader from

wget http://downloads.isee.biz/pub/SW_Releases/binaries/x-loader/v1.4.4-3/x-load-1.4.4-3.igep0020-sdcard.bin.ift
cp x-load-1.4.4-3.igep0020-sdcard.bin.ift /media/<bootfs>/MLO     # change <bootfs> with appropriate SD boot partition

and finally, do the same with u-boot

wget http://downloads.isee.biz/pub/SW_Releases/binaries/u-boot-arm/v2010.06-3/u-boot-arm-2010.06-3.igep0020.bin
cp u-boot-arm-2010.06-3.igep0020.bin /media/<bootfs>/u-boot.bin      # change <bootfs> with appropriate SD boot partition

The last step is copy boot.scr to boot.ini

cp /media/<bootfs>/boot.scr /media/<bootfs>/boot.ini     # change <bootfs> with appropriate SD boot partition

Umount bootfs and rootfs partitions, push your SD card in your IGEP socket, power up and enjoy !

System Testing and known issues

Tips and tricks

Upgrade kernel to 2.6.35-23

Note: This solves the eth0 issue.

Donwload and copy the 2.6.35-23 kernel

wget http://downloads.igep.es/ubuntu/maverick/linux-image-2.6.35-23-omap_2.6.35-23.40_armel.deb
sudo cp linux-image-2.6.35-23-omap_2.6.35-23.40_armel.deb /media/<rootfs>      # change <rootfs> with appropriate SD rootfs partition

Boot up your Ubuntu , open a terminal and install

sudo dpkg -i linux-image-2.6.35-23-omap_2.6.35-23.40_armel.deb

Reboot your system, now the ethernet an wifi should work.

Note: Some users have encountered that after kernel update still booting the old kernel, to solve this issue do:

mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n initramfs -d /media/<rootfs>/boot/initrd.img-2.6.35-23-omap /media/<bootfs>/uInitrd
mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n 2.6.35-23-omap -d /media/<rootfs>/boot/vmlinuz-2.6.35-23-omap /media/<bootfs>/uImage
How to get SGX Video Acceleration (under construction, not tested yet)

src: https://wiki.ubuntu.com/ARM/OMAP/Graphics

First we'll install kernel headers

wget http://downloads.igep.es/ubuntu/maverick/linux-headers-2.6.35-23-omap_2.6.35-23.40_armel.deb
sudo dpkg --install --force-depends linux-headers-2.6.35-23-omap_2.6.35-23.40_armel.deb

Activate the universe and multiverse repositories, then install the following packages:

sudo apt-get install libegl1-sgx-omap3 libgles1-sgx-omap3 libgles2-sgx-omap3

Before using it just be sure your user is also included at 'video' group.

sudo adduser <your user> video

Now you can test the SGX with a DEMO, grab and untar the SDK Demo Package

wget http://neuvoo.org/neuvoo/distfiles/SGX-3.01.00.07-SDK.tar.gz
tar xzf SGX-3.01.00.07-SDK.tar.gz

Then to run the demos just get into the X11 Binaries directory (e.g. OGLES/SDKPackage/Binaries/CommonX11/Demos/EvilSkull) and run the demo:

./OGLESEvilSkull
How to cross build ubuntu maverick kernel from sources

Create a script for setting the environment

echo "Setting environment for armel cross-compile"
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
export PATH=<path to cross compiler>:$PATH  (set the correct path to cross compiler)  
export DEB_BUILD_ARCH=armel
export DEB_HOST_ARCH=armel

Clone the ubuntu maverick repository

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-maverick.git
cd ubuntu-maverick

Setup the environment and run ...

source armconfig
fakeroot debian/rules clean
fakeroot debian/rules binary-omap

The resulting two .deb files will be located in ../

Ubuntu 9.04 (Jaunty Jackalope)

Make a bootable MMC card on Linux

Thanks to Graeme Gregory and Steve Sakoman, you can now use a script to automate the tedious process of creating a bootable SD/microSD card.

Take care if you do not have your system in English. You have to change the word "Disk" in the former script, line #10 with the translation in the language of your system.

Having followed this excellent tutorial it's time to mount your SD card boot partition (/media/boot). With your preferred editor create a boot-ini.source file like this.

# Set bootargs for ubuntu MMC boot
setenv bootargs 'console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1024x768MR-16@60 root=/dev/mmcblk0p2 rw rootwait '
# Read kernel from OneNAND
onenand read 80200000 280000 400000 
# and boot ...
bootm 80200000

And use the mkimage tool to convert this file into a script image which can be executed using U-Boot's source command.

$ source /usr/local/poky/eabi-glibc/arm/environment-setup
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Boot setup script' -d boot-ini.source boot.ini

If you are not using IGEP's virtual machine, you can download and install the Poky SDK from http://www.igep.es/index.php?option=com_content&view=article&id=99&Itemid=112&dir=/var/www/vhosts/igep.es/httpdocs/downloads/01-ISEE_Products/IGEPv2/SW_Releases/poky/purple-3.2/v3.2.1-0/sdk once logged in. This will provide the /usr/local/poky directory. If you use this option, the appropriate source command is source /usr/local/poky/eabi-glibc/environment-setup-arm-none-linux-gnueabi.

The result will be a boot.ini file which you will copy to SD card boot partition

$ cp boot.ini /media/boot

Get a copy of a ARM ubuntu root file system

In order to get a copy of a ARM ubuntu root file system, you will need to install qemu and a recent version of debootstrap and the qemu package. On some systems you may also need the qemu-kvm-extras package to run the ARM emulation.

$ sudo apt-get install qemu
$ sudo apt-get install qemu-kvm-extras
$ wget http://ports.ubuntu.com/pool/main/d/debootstrap/debootstrap_1.0.12_all.deb
$ sudo dpkg -i debootstrap_1.0.12_all.deb

Next, you will download a helper program to build the rootfs

$ wget http://launchpad.net/project-rootstock/trunk/0.1/+download/rootstock-0.1.3.tar.gz
$ tar xzf rootstock-0.1.3.tar.gz
$ cd rootstock-0.1.3

The following example will create a tarball of ubuntu-desktop based image for your target device:

$ sudo ./rootstock --fqdn ubuntu --login jdoe --password letmein --imagesize 3G --seed ubuntu-desktop --dist jaunty

Typical images (example settings):

To build a xubuntu-desktop image use the following options:

  --imagesize 2G --seed xubuntu-desktop

For an ubuntu-desktop image (a similar size is needed if you want a kubuntu image):

  --imagesize 3G --seed ubuntu-desktop

A typical remote development comandline environment if you run an armel board headless (note that you should edit /etc/network/interfaces and set up your network device on first login for this):

  --imagesize 3G --seed build-essential,openssh-server

A very light desktop (lxde):

  --seed lxde,gdm

This step can take a long time. For example, building ubuntu-desktop on a Celeron 1.6GHz laptop takes approximately 10 hours. When it is finished, a file named armel-rootfs-[date].tgz will be in your working directory.

Next, mount your SD card ext3 partition (/media/rootfs) and untar the rootfs

$ sudo tar xzf armel-rootfs-[date].tgz -C /media/rootfs

Finally, umount the SD card, insert the card in your board and power up.

--- That's all folks ---

See also