All Ångström images are built using OpenEmbedded. This document described the steps necessary to setup an environment where you can build images and packages yourself.
For a general introduction to setting up OpenEmbedded, see GettingStarted wiki page. If you run into trouble following the below tutorial, have a look at the GettingStarted wiki page, that contains information on all kinds of cornercases. The tutorial below is kept simple on purpose.
Step 1
Obtain bitbake and OpenEmbedded
Step 2
Install bitbake and OE:
mkdir /OE && cd /OE
tar zxf /path/to/bitbake-1.8.8.tar.gz
bunzip2 /path/to/OE.mtn.bz2
mtn --db=/path/to/OE.mtn pull monotone.openembedded.org org.openembedded.{stable,dev}
mtn --db=/path/to/OE.mtn checkout --branch=org.openembedded.stable
cd /path/to/org.openembedded.stable
mtn pull monotone.openembedded.org org.openembedded.{stable,dev} ; mtn update
make a file to setup the environment variables (e.g. source-me.txt):
BBPATH=/OE/:/OE/build/:/OE/org.openembedded.stable/
PKGDIR=/OE/build/
DL_DIR=/OE/downloads
echo Setting up dev env for Ångström
if [ -z ${ORG_PATH} ]
then
ORG_PATH=${PATH}
export ORG_PATH
fi
if [ -z ${ORG_LD_LIBRARY_PATH} ]
then
ORG_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
export ORG_LD_LIBRARY_PATH
fi
PATH=/OE/bitbake-1.8.8/bin:${ORG_PATH}
cd $PKGDIR
LD_LIBRARY_PATH=
export PATH LD_LIBRARY_PATH BBPATH
export LANG=C
echo "Altered environment for OE Development"
Step 3
Add the following to your local.conf:
# Where to store sources
DL_DIR = "/OE/downloads"
# Which files do we want to parse:
BBFILES := "/OE/org.openembedded.stable/packages/*/*.bb"
BBMASK = ""
# ccache always overfill $HOME....
CCACHE=""
# What kind of images do we want?
IMAGE_FSTYPES = "jffs2 tar.gz "
# Set TMPDIR instead of defaulting it to $pwd/tmp
TMPDIR = "/OE/${DISTRO}-tmp/"
# Make use of my SMP box
PARALLEL_MAKE="-j4"
BB_NUMBER_THREADS = "2"
# Set the Distro
DISTRO = "angstrom-2007.1"
# 'uclibc' or 'glibc' or 'eglibc'
#ANGSTROM_MODE = "glibc"
MACHINE = "<your machine>"
Substitute "<your machine>" with the machine you want to build for, e.g.:
- c7x0 - For pxa25x zaurus clamshells (SL-C700, SL-C750, SL-C760, SL-C860, SL-7500)
- spitz - For pxa27x zaurus clamshells with a microdrive (SL-C3000, SL-C3100, SL-C3200)
- akita - For pxa27x zaurus clamshells without a microdrive (SL-C1000)
- tosa - For the SL-C6000
- h2200 - For the iPAQ h2200 series
- hx4700 - For the iPAQ hx4700
- fic-gta01 - For the neo1973 phone
Or get some inspiration from
here for picking a MACHINE.
Step 4
Start building:
# set environment variables
source source-me.txt
#Go to the OE tree
cd /path/to/org.openembedded.stable
#Make sure it's up to date
mtn pull ; mtn update
#Start building
bitbake base-image ; bitbake console-image ; bitbake x11-image
Step 5
Building for a different machine or C library is just a matter of changing the MACHINE= or ANGSTROM_MODE statement in local.conf to a new value. There is ABSOLUTELY no need for using different directories for that; Angstrom takes care of all the details, it was specifically designed for this.