Bitbake & Yocto Project
Gumstix publishes several different pre-built images as well as kernel and bootloader binaries. It is also possible to build these binaries using bitbake by setting up the Yocto Project build environment. Developers who are familiar with the OpenEmbedded build system will find a lot in common between the Yocto Project and OpenEmbedded, because the Yocto Project uses some of OpenEmbedded elements while improving build environment in multiple aspects. The Yocto Project build system consists of a collection of BitBake "recipes". These recipes contain the source URL of the package, dependencies, and compile and install options. It uses the information in these recipes to track dependencies, cross-compile the package, and create binary packages. It will also create complete images including boot loaders, kernel, and root file system. As a first step the framework will build a cross-compiler toolchain for the target platform.
Setup And Usage
Please refer to the Getting Started guide located at Gumstix Repo. Gumstix Repo will conveniently fetch from multiple repositories and configure a build environment.
Yocto Project is a flexible, capable build tool. There is, however, a lot to know in order to fully exploit its power. After setting up your build environment, your directory structure should look like this:
poky |-bitbake |-documentation |-meta |-meta-gumstix |-meta-gumstix-extras |-meta-hob |-meta-openembedded |-meta-skeleton |-meta-ti |-meta-yocto |-meta-yocto-bsp |-oe-init-build-env `-scripts
The two bold faced directories are Gumstix Board Specific Layers (Gumstix BSP). These two are the places to look at if you would like to add/remove recipes (and ultimately packages in the root file system). Other layers are the dependencies of Gumstix BSP. Additionally, you can get the source code from their Github repositories: meta-gumstix and meta-gumstix-extras.
This directory contains recipes that either add Gumstix specific features or override the standard OpenEmbedded recipes. This is where the Gumstix specific customizations reside. Bitbake will give preference to recipes that it finds the Gumstix BSP over recipes contained in other meta layers.
This directory completes the meta-gumstix layer with the recipes to build the custom Gumstix Linux distributions. For the available types of build targets, please see this.
For the complete explanation of each directory, take a look at the Appendix A. Reference: Directory Structure in the Yocto Project Reference Manual
These instructions are for creating an Yocto Project build system for the Gumstix COMs. Much like Gentoo Ebuilds on x86, the Yocto Project is a software framework to create Linux distributions. It downloads the source code and cross compiles it for you as needed. The Yocto Project builds everything from scratch including the cross compilation toolchain. This section will show you how to set up the environment on your Linux development system.
Gumstix offers four different pre-built images for download. The console image is a lightweight root file system image providing only a command-line interface with out any GUI support. It is similar to server versions offered by several other Linux distributions and can be a great building block for making a custom image. The palmtop image offers a handheld-like environment with a lightweight GUI designed for small, touchscreen displays. The desktop image is a fully-fledged Linux desktop environment complete with web browsers, media players and office utilities. As so many applications are built-in, this image is too large for the NAND flash and must be loaded onto a bootable microSD or NFS mount.
This table summarizes the bitbake command needed to build a particular piece of software. For example, to build a complete desktop image, type 'bitbake gumstix-xfce-image' within the development environment.
|bitbake u-boot||u-boot (boot loader)||✓||✓||✓|
|bitbake virtual/kernel||linux kernel||✓||✓||✓|
|bitbake gumstix-console-image||Gumstix console image||✓||✓||✓|
|bitbake gumstix-palmtop-image||Gumstix palmtop image|
|bitbake gumstix-xfce-image||Gumstix desktop image||✓||✓||✓|