Baking Bits


Jan 07, 2010 GMT
Oliver Frommel

To build the Angstrom distribution from source you need to set up the Openembedded environment. With help from the build tool Bitbake it can cross compile software for many embedded targets on a host PC. You will find Bitbake in the repositories of many standard Linux distributions. However I had some problems with the tool shipped in Ubuntu 9.10 Karmic Koala, so I just downloaded the Bitbake source and installed it. Just download the package from the web site, unpack it and execute »python install« as root.

You can get the Openembedded environment from the Git repository. For this I created a directory called »OE« in my home directory:

mkdir OE
cd OE
git clone git:// openembedded

Now you need to edit the configuration file that determines the target system and some other parameters. Simply copy the sample configuration and edit it.

mkdir -p build/conf
cp openembedded/conf/local.conf.sample build/conf/local.conf

I had to change the following variables in the configuration:

MACHINE = "beagleboard"
BBFILES := "/home/oliver/OE/openembedded/recipes/*/*.bb"
DISTRO = "angstrom-2008.1"
TMPDIR = /home/oliver/OE/tmp

Additionally you need to remove the last line in the file starting with »REMOVE_THIS_LINE«, otherwise the build process will fail.

One the documentation web page on Openembedded and Angstrom you will find a link to a small file called »source-me.txt« which sets the required environment variables for the build process. I only changed the variable that points to the Openembedded tree:

export OETREE=/home/oliver/OE

Make the changes effective by executing »source source-me.txt« in the Bash shell.

With all requirements fulfilled the build process starts with the command »bitbake base-image« which builds a minimal image. To build Angstrom with a graphical user interface you can use »bitbake x11-image«. The Bitbake tool will complain if there are still requirements missing. For instance I had to set the kernel variable »/proc/sys/vm/mmap_min_addr« and install some more tools on the Ubuntu host PC, among them »texinfo« for the »makeinfo« requirement.

When Angstrom starts to build you need some patience if you don't own a fast PC. On my home machine with and Athlon 2800+ and 1 GB of RAM it took several days, including sleeping breaks. You should install the Python Psyco extension to speed up the process at least a little bit. And be sure to build only the required locales by setting the appropriate variable in your »local.conf«:


When the build completes successfully you need to copy the distribution files and the bootloader to the SD card you are using for the Beagleboard file systems. In my case I had the root fs mounted on »/media/ALINUX« and the VFAT boot fs mounted on »/media/BOOT«:

tar xf ./tmp/deploy/glibc/images/beagleboard/console-image-beagleboard.tar -C /media/ALINUX
cp ./tmp/deploy/glibc/images/beagleboard/uImage-beagleboard.bin /media/BOOT/

Plug the SD card back into the Beagleboard slot and happily boot your self-compiled Angstrom distribution:


  • Thanks but why not Ubuntu?

    I just finished creating an Ubuntu Install for my little Beagle, I forgot to add the wireless drivers so no network, but I will fix that soon and then I will try to get GUI up an running from a repo (if I find one).

    I understand that Angstrom works out of the box with gui and such, but is there no possibility to get that functionality from the Karmic ARM port?
  • Thanks

    Nice tutorial. Bookmarked it happy
comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More