The primary interface to the build system is the bitbake command (see the BitBake users manual). BitBake will download and patch files from the internet, so it helps if you are on a well connected machine.
Note that you should issue all BitBake commands from inside of the
build/
directory, or you should
override TMPDIR
in
your $OEBASE/build/conf/local.conf
to point
elsewhere (by default it goes to tmp/
relative to
the directory you run bitbake commands in).
BitBake might complain that there is a problem with the setting in
/proc/sys/vm/mmap_min_addr
, which needs to be set
to zero. You can set it by doing the following as root:
# echo 0 > /proc/sys/vm/mmap_min_addr
Note that you can not use a text editor to do this since files
in /proc
are not real files. Also note that this
above change will be lost when you reboot your system. To have the
change made automatically when the system boots, some systems provide
a /etc/sysctl.conf
file. Add the following line
to that file:
vm.mmap_min_addr=0
If your system does not provide
the /etc/sysctl.conf
mechanism, you can try adding
the above echo command line to
your /etc/rc.local
.
Once BitBake and OpenEmbedded are set up and configured, you can build software and images like this:
$ bitbake
A recipe name corresponds to a BitBake .bb
file. A
BitBake file is a logical unit of tasks to be executed. Normally this is
a package to be built. Inter-recipe dependencies are obeyed. The recipes
are located by BitBake via the BBFILES
variable (set
in your $OEBASE/build/conf/local/conf
), which is a
space separated list of .bb
files, and does handle
wildcards.
To build a single package, bypassing the long parse step (and therefore its dependencies -- use with care):
$ bitbake -b $OEBASE/openembedded/packages/blah/blah.bb
There are a few groups of special recipes located in subdirectories
of the $OEBASE/openembedded/packages/
directory. These groups are:
tasks/
A collection of meta-packages that depend on real packages to make managing package sets easier.
meta/
A collection of usefull meta tasks and recipes that don't fit in a general category.
images/
A collection of image targets that depend on packages that will be installed into an image which can be put on the target system.
Although BitBake can build individual packages, it is often more useful to build a set of packages and combine them into an image. The following recipe names are commonly used to that effect.
helloworld-image
Builds an image, that if used as a root filesystem, will start a static executable that prints hello world then loops infinitely. Can be used to test the Linux boot procedure into user space (init).
bootstrap-image
Build image contains task-base packages.
console-image
Build an image without the X11, gtk+, or qt windowing libraries.
x11-image
Builds an image with X11.
beagleboard-demo-image
Builds the Ångström distribution like Koen proposed.
opie-image
Build image based on the Open Palmtop Integrated Environment (OPIE). OPIE is a completely Open Source based graphical user environment and suite of applications for small form-factor devices, such as PDAs, running Linux.
opie-kdepim-image
Build image based on the OPIE and full featured KDE-based PIM (pi-sync, ko/pi, ka/pi, etc).
pivotboot-image
Build image that is necessary to flash a Sharp SL C3000, Zaurus. It pivots after booting from the NAND and finalizes the install to the HD during the first boot.
twin-image
A image with task-base plus a couple of editors, nano and vim (why two?), and a mail reader, mutt.
uml-image
A root image for user-mode-linux. Includes task-base, and parts of opie.
gpe-image
Build a GPE Palmtop Environment based kernel and rootfs. The GPE provides a user interface environment for palmtop/handheld computers running the GNU/Linux or any other UNIX-like operating system.
task-base
Build a kernel and core packages for a basic installation. You won't be able to do much more than ssh to the machine if this is all that is installed.
task-dvb
Meta-package for DVB application (DVB = Digital Video Broadcasting).
task-python-everything
All of python.
task-native-sdk
Mata-package for native (on-device) SDK.
meta-opie
Build all OPIE related packages and some more for OPIE based usage.
meta-gpe
Basic packages to go with gpe-image.
helloworld
Builds a static executable that prints hello world then loops infinitely.
world
Build everything. This takes a long time, a lot of network bandwidth, and a lot of disc space. Can also break your toolchain.
package-index
Target to update the "feed" files to reflect the current set of .ipk's that exist in the deploy directory. Commonly used after building some packages individually to update the feed and allow them to be installed via a package manager or the ipkg command line tools.
virtual/kernel
Builds the appropriate kernel for your device.