Document created by jesseg Employee on Aug 23, 2012Last modified by Jodi Paul on Apr 19, 2013
Version 2Show Document
  • View in full screen mode


OpenEmbedded is a build system developed initially by OpenZaurus team. They have started using BuildRoot build system, but during development BuildBoot didn't fit developer needs.

Installing OpenEmbedded

In order to install OpenEmbedded you need to follow the steps below:

Create base directories to install

First all create the directory where you will install OpenEmbedded:

$ cd ~ 
$ mkdir oe 
$ cd oe 
$ mkdir stuff

Download necessary software

Download the bitbake. Bitbake is (for simplification) tool to execute task and manage metadata files.

$ cd ~/oe/stuff 
$ svn co svn:// bitbake

If you can't download bitbake using subversion (svn), then download from site:

$ cd ~/oe/stuff 
$ wget 
$ tar zxvf bitbake-1.8.12.tar.gz 
$ mv bitbake-1.8.12 bitbake

Bitbake is a set of python scripts, then you can to use Python JIT (Just-In-Time) Psyco compiler to speed it up:

$ sudo apt-get install python-psyco 

Download openembedded:

$ git clone git:// 

If you are behind firewall which blocks git port, then download though http:

$ git clone 

Configuring OpenEmbedded

Create local configuration:

$ cd ~/oe/stuff 
$ mkdir -p build/conf 
$ cp openembedded/conf/local.conf.sample build/conf/local.conf 
$ vi build/conf/local.conf

Edit this configuration file and define the variable BBFILES, MACHINE, DISTRO, and TARGET_OS. See the example for i.MX31ADS board:

BBFILES := "${HOME}/oe/stuff/openembedded/recipes/*/*.bb" 
MACHINE = "mx31ads" 
DISTRO = "angstrom-2008.1" 
TARGET_OS = "linux-gnueabi"

Also remove or comment the last line:

REMOVE_THIS_LINE:="${@bb.fatal('Read the comments in your conf/local.conf')}" 

Setup the environment

Export environment variables necessary by bitbake:

$ export BBPATH=~/oe/stuff/build:~/oe/stuff/openembedded 
$ export PATH=~/oe/stuff/bitbake/bin:$PATH

Change mmap_min_addr to 0:

$ sudo -s 
# echo 0 > /proc/sys/vm/mmap_min_addr

If you don't want do that every time then edit your /etc/sysctl.conf and add:

vm.mmap_min_addr = 0 

If user distro uses dash instead bash as shell, then change it to bash:

# cd /bin 
# rm sh 
# ln -s bash sh

Building image

Test OpenEmbedded building a basic image (you should not execute this as root):

$ bitbake bootstrap-image 



Some packages may be needed to run bitbake. On Ubuntu they are: help2man, diffstat, texi2html, texinfo, subversion, gawk



The bootstrap-image is just a basic image only with kernel and shell, but you can choice other image like gpe-image, etc.

If you have problems because you're using proxy, open the file /etc/wgtrc and add proxy information, ie:

http_proxy = http://your_proxy:port/ 
ftp_proxy = http://your_proxy:port/

Extracting the rootfs

If you got a successful compilation then extract it in your /tftboot directory:

$ cd /tftpboot 
$ mkdir oe 
$ cd oe 
$ sudo tar xvf /home/alan/oe/stuff/tmp/deploy/glibc/images/mx27ads/Angstrom-bootstrap-image-glibc-ipk-2009.X-test-20090618-mx27ads.rootfs.tar

Now just export your /tftpboot/oe directory on NFS as usual (editing /etc/exports).



Remove init:/linuxrc from your kernel command line, otherwise init will break



For more details about the installation of OpenEmbedded: [1]