My experience getting OE built for a BeagleBoard….
A Fresh Start
Wanting to start with a fresh host, I did a network install of CentOS 5.3 from our internal CentOS mirror (this will turn out to bite me later) onto a new hard drive.
With the fresh CentOS install I started looking at putting together the OpenEmbedded build environment (see BeagleBoard#OpenEmbedded and OpenEmbedded Getting_Started.) The Getting_Started page provides the basis for my process.
Just to make things interesting I decide to place the root for the build inside a fresh user account so my first step is:
$ mkdir -p ~/oe/stuff/build/conf
(this will also cause a little confusion later.)
Installing BitBake
Even after configuring proxy settings in ~/.subversion/servers, I can’t get svn to checkout bitbake. The workaround is to download bitbake-1.8.12.tar.gz and extracting the tarball to ~/oe/stuff/bitbake.
Getting GIT
I try following the steps at Bulding Git on CentOS 5. The first difference is using yum vs apt-get, so installing dependencies is:
sudo yum install gettext-devel expat-devel curl-devel zlib-devel openssl-devel
instead of:
sudo apt-get install gettext-devel expat-devel curl-devel zlib-devel openssl-devel
Of course, I am still connected to the corporate internal network so when I get to this command:
wget http://kernel.org/pub/software/scm/git/git-1.6.2.tar.gz
the process just hangs–another proxy issue. Time to call IT and get a DMZ port… Ok, now I am back connected to a DMZ port, no more fiddling with proxy issues from tool to tool. The GIT install goes off without a hitch once connected to a DMZ port. Moving on now the GIT is got …
Obtaining OpenEmbedded using GIT
Since we are now on a DMZ port, the git clone process goes off without a hitch. Moving on to the local configuration, lack of attention to detail cost me a half hour (due to my use of the ~/oe/stuff root.)
Local Configuration and ‘bitbake console-image’
We make some small changes here to the local.conf file, /home/cmma/oe/stuff/build/conf/local.conf:
BBFILES = "/home/cmma/oe/stuff/openembedded/recipes/*/*.bb" DISTRO = "angstrom-2008.1" MACHINE = "beagleboard"
Note the machine is set to ‘beagleboard’.
When adding BBPATH to my .bashrc file I updated the /stuff/build path element, but failed to update the /stuff/openembedded path element. This caused bitbake to fail and I spent some time researching the error messages. When I reviewed the .bashrc I caught my mistake.
I found I was still missing some dependencies and ran:
sudo yum install gcc-c++ diffstat texi2html python-devel
This is where my choice of a local miror started to get me in trouble–it didn’t have other dependencies that bitbake needed. So there was a manual install of the following:
pysqlite help2man
Once the required dependencies were in place, I installed the recommend psyco:
$ cd ~/src $ svn co http://codespeak.net/svn/psyco/dist/ psyco-dist
following the instructions found here (I had previously configured all sources to be downloaded to ~/src so that’s where psyco went as well.)
After that my bitbake command:
$ bitbake console-image
started without and complaints and 4 hours later it completed.
Updates
Two days later I’ve just issued my first ‘git pull’ () and the ‘bitbake console-image’ is currently about 10% complete. I don’t expect any issues from here on.
This was all done in preparation for a custom beagleboard solution I am working on which will require some OMAP pinmux changes. Confirming we can build an image was the first step in this process.
4 replies on “Bulding OpenEmbedded for BeagleBoard”
[…] following changes were made to configuration files mentioned in previous posts (Building OpenEmbedded for BeagleBoard and Building Angstrom…) to support the new local overlay […]
I was struggling to get the bitbake running.
Thanks for the info. That is relly helpful.
Is it just me or is OpenEmbedded much more complicated than it ought to be? Compared to BuildRoot, it seems much more difficult to get started.
I haven’t used BuildRoot, but I did spend more than a few days coming up to speed on OE.