Building the Angstrom Distribution for the CFA910

Not open for further replies.

CF Support

Building and customizing the CFA910 base operating system and software is not a daunting process. To get started you will need to install a bit of software if you do not already have it. Our examples to retrieve software are using the Ubuntu/Debian 'apt-get' tool but they should translate to Fedora's 'yum' or another package management system.

First, please be aware that this process can take a very long time to build, downloads a decent amount of data, and uses a fair chunk of hard-drive space.
A low-powered PC (single core CPU, etc) will take days to complete the build.
You should have at least 30GB free on the drive/partition you'll be building the system on.
The build process will download in excess of 1.8GB of source packages from various internet git/svn/ftp/http servers.

sudo apt-get install gcc g++ cpp autoconf texinfo help2man diffstat texi2html chrpath bitbake git-core make cvs subversion bzip2 gawk xz-utils python-psyco
Those packages are a amalgamation of compilers, build tools, and documentation tools. That covers most cases, when building with the 'bitbake' build tool it may prompt you for additional tools it needs installed. The 'bitbake' tool is used by the Angstrom Distribution to retrieve, configure, compile, and package all the various software packages that make up Angstrom Distribution of operating system and user software. It even takes care of building the proper compiler and tools for building software for the target architecture, in our case the ARM9.

Now we need to set up the build environment for the Angstrom Distribution. For the purposes of this documentation, our home directory is located at '/home/builder'. We do our working directory creation in our home directory; you will need to modify the documentation and configurations if you wish to do this with other directories.

From the '/home/builder' directory, create the 'angstrom' working directory and change to it. We will do all of our commands with this as the current working directory.
mkdir angstrom
cd angstrom
Download a clone of our Angstrom recipes and configurations (~130MB).
git clone git://
Download the local.tar.gz file attached to this post and copy it into your 'angstrom' directory. Then unpack it in your 'angstrom' directory.
tar -xvzf local.tar.gz
This created a 'build' directory tree under your 'angstrom' directory. This tree contains one important file, 'local.conf' which contains the core build configuration. You will need to modify a few variables in this file to build on your machine.

You will need to modify the variables 'DL_DIR' and 'BBFILES' to reflect the location of your 'angstrom' directory while keeping the later portions of those paths. Edit 'angstrom/build/conf/local.conf' with the editor of your choice.
DL_DIR = "/home/builder/angstrom/sources"
BBFILES := "/home/builder/angstrom/openembedded/recipes/*/*.bb"
For a user named 'joe' it may look like this
DL_DIR = "/home/joe/angstrom/sources"
BBFILES := "/home/joe/angstrom/openembedded/recipes/*/*.bb"
This 'local.conf' parallelizes the build in order to reduce the build time. On a quad-core desktop this build takes about 4 hours. Given the amount of processing power you have, you may want to adjust two variables. The variable 'PARALLEL_MAKE' is used to specify the number of jobs (processes) the 'make' utility uses for parallel compilation of a package. The variable 'BB_NUMBER_THREADS' specifies how many threads the 'bitbake' utility uses to do its tasks which include configuring packages, running 'make' or other build tools, and installing packages into a deployable image.

If you want to add or remove packages that are included in the deployable disk image you can edit the 'bitbake' recipe file that creates the image. It is located in 'angstrom/openembedded/recipes/images/'.

Ubuntu has an odd caveat in that it comes with 'sh' mapped to 'dash' instead of the usual 'bash'. The 'bitbake' tool does not like this, it will tell you that "Using dash as /bin/sh causes various subtle build problems, please use bash instead.". In order to use 'bash' as 'sh' on your system you can run this Ubuntu configuration command. Note that this modifies your system to use 'bash' whenever 'sh' is invoked.

sudo update-alternatives --install /bin/sh sh /bin/bash 1
To build distribution for the CFA910 as configured you need to set one environment variable for 'bitbake' to find the files it requires. Then execute 'bitbake', specifying the recipe to build, the 'cfa-10022-image'.
export BBPATH=~/angstrom/build:~/angstrom/openembedded
bitbake cfa-10022-image
This should start the build process which will probably take some time. You can interrupt the process and restart it. It will start over where it left off. As mentioned 'bitbake' may ask you to "Please install following missing utilities:...." and you will need to install them with the system's package management tools like 'apt-get' for Ubuntu.

If you have other problems please post them in a thread and we will help you resolve them.
Looking for additional LCD resources? Check out our LCD blog for the latest developments in LCD technology.


CF Mark

Please note the above instructions have been updated recently.

Also, there is a small change that needs to be made to a bitbake recipe file to build the obex-data-server package successfully.
Edit "angstrom/openembedded/recipes/openobex/" and add "imagemagick" to the DEPENDS variable like so:

DEPENDS = "gtk+ bluez4 dbus-glib openobex imagemagick"
These instructions will be removed once this change has been added to the github crystalfontz/openembedded repository.
Not open for further replies.