Personal tools
You are here: Home Hardware PRAP Open Embedded build environment

Open Embedded build environment

How to set up ones own Open Embedded build chain on Debian GNU/Linux.

The next step after getting some operating system(s) to run on the Beagle Board was to get Pure Data (anywhere) to run on it. The way that it works on embedded systems is that you build an application on your host-machine, cross-compiling it against the architecture of the target system. As far as the Beagle Board goes, a logical choice is to do so through the Open Embedded build chain, which is how the Angstrom distribution itself is built.

Doing so, I mainly sticked to a tutorial on building Open Embedded for the Beagle Board from Git. There is also a repository to apt-get the whole Open Embedded build chain, but I decided not to go down that route; mainly because there doesn't seem to be support for Angstrom at this stage. More Beagle Board specific information on building Open Embedded is available here, and generic information about Open Embedded and Angstrom is available at:

Software requirements on host machine

There is some software requirements for your host machine. My own host machine runs Debian, so these Debian-specific requirements (basically a list of apt-gettable packages) turned out useful, as well as this tutorial

. I ended up with a somewhat weird mixture of the three; a guess pretty much as good as any:

sudo aptitude install ccache sed wget cvs subversion git-core coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils gawk help2man diffstat gtk-doc-tools  file g++ python-psyco minicom

Some of these packages I actually had already installed, but I am listing them here for the sake of completion. I guess you'll just have to accept the somewhat uninformative "this is what worked for me" statement. That's quite amazing in itself, since the above command got me straight into aptitude dependency hell, which I tried to escape by accepting the first resolution suggestion which aptitude came up with. Seems like it worked.

Be careful about kernel settings!

The third tutorial mentioned suggests to tweak your kernel settings by setting

vm.vdso_enabled = 0
vm.mmap_min_addr = 0

in /etc/sysctl.conf. I should mention that in the second in which I tried to make this changes effective by typing

sudo sysctl -p

my system froze like it never did before. Plus, it wouldn't boot after that, costing me quite some time to download a live CD to boot from in order to undo those changes. Since then, I have not experienced any trouble in using the Open Embedded build chain without these settings.

Open Embedded and Bitbake install

For the rest of the process, I basically followed that same tutorial

, since it came closest to my specific situation. For the sake of completion, here is what I did:

export OE_HOME=$HOME/oe
mkdir -p $OE_HOME/opt
cd  $OE_HOME/opt
svn co svn://svn.berlios.de/bitbake/branches/bitbake-1.8/ bitbake
cd $OE_HOME
git clone git://git.openembedded.net/openembedded
mkdir -p $OE_HOME/beagleboard/beagleboard/conf
cat > $OE_HOME/beagleboard/beagleboard/conf/local.conf <<_EOF
DISTRO = "angstrom-2008.1"
BBFILES = "$OE_HOME/openembedded/packages/*/*.bb"
TMPDIR = "$OE_HOME/tmp"
MACHINE = "beagleboard"
ENABLE_BINARY_LOCALE_GENERATION = "0"
_EOF

I had a direct (proxy-free) connection to the internet, so in accordance with the tutorial, I opted for the following procedure for setting up the Beagle Board profile:

cd $OE_HOME
cat > $OE_HOME/beagleboard/beagleboard/profile.sh <<_EOF
export OE_HOME=\$HOME/oe
export MY_OE_CONF="beagleboard"
export BBPATH=\$OE_HOME/beagleboard/:\$OE_HOME/beagleboard/\$MY_OE_CONF:\$OE_HOME/openembedded
export BBFILES="\$OE_HOME/openembedded/packages/*/*.bb"
export PATH=\$OE_HOME/opt/bitbake/bin:\$PATH
if [ "\$PS1" ]; then
  if [ "\$BASH" ]; then
    export PS1="\[\033[01;32m\]OE:\$MY_OE_CONF\[\033[00m\] \${PS1}"
  fi
fi
_EOF

And here's the rest:

chmod +x  beagleboard/beagleboard/profile.sh
source beagleboard/beagleboard/profile.sh
cd $OE_HOME/openembedded
git pull
git checkout
cd $OE_HOME

Test: building nano for the Beagle Board

As opposed to the tutorial, I then did not bitbake a whole Angstrom image, but instead limited myself to a small test by just building a package for the nano text editor:

bitbake nano
That still took a while though, since the build process has to work through a lot of dependencies. The reward was that I ended up with an .ipkg for nano. As an Open Embedded beginner, it was somewhat hard to find under $OE_HOME/tmp/deploy/glibc/ipk/armv7a/nano_2.0.7-r0.1_armv7a.ipk. I then transfered that file onto the SD card containing Koen's Angstrom demo image, which I had installed earlier, and after booting the Beagle Board from that card, I happily installed a working nano on my system with the help of the graphical GPE Package Manager.
Document Actions
Florian Hollerweger. Cite/attribute Resource. admin. (2008, November 10). Open Embedded build environment. Retrieved May 26, 2017, from Florian Hollerweger Web site: http://flo.mur.at/hardware/prap/open-embedded-build-environment. All Rights Reserved.