• Save
Upcoming SlideShare
Loading in...5




An overview of OpenEmbedded for embedded Linux systems. Presentation given for the Portland Linux User Group Advanced Topics meeting on February 17, 2010.

An overview of OpenEmbedded for embedded Linux systems. Presentation given for the Portland Linux User Group Advanced Topics meeting on February 17, 2010.



Total Views
Views on SlideShare
Embed Views



7 Embeds 110

http://blog.zenlinux.com 92
http://www.techgig.com 8
http://www.m.techgig.com 3
http://www.slideshare.net 2
http://www.linkedin.com 2
https://www.linkedin.com 2 1



Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

OpenEmbedded OpenEmbedded Presentation Transcript

  • OpenEmbedded Scott Garman [email_address] PLUG Advanced Topics February 17, 2010
  • What is OpenEmbedded?
    • A set of recipes and metadata to build Linux distributions for embedded devices with the BitBake build system
    • A framework for creating customized embedded Linux distributions
    • Å ngstr ö m is one of the more popular OE-based distros
  • History: The OpenZaurus Project
  • Common Approaches
    • The state of embedded Linux distros:
      • Minimal, no-frills installs (no package mgmt, OS comes as a static disk image)
      • Taking a well-known Linux distro (Debian, RedHat) and “butchering” it by ripping out package mgmt and documentation
      • Result: Need to take your device off-line to update software, re-flash completely
  • The OpenEmbedded Approach
    • BitBake – A cross-compiling and build system inspired by Gentoo's portage
      • Flexible, fine-grained control over compile-time options and optimization levels
    • IPKG – A package format inspired by Debian's dpkg
      • Robust dependency resolution, easy to define package sets for different embedded applications, live upgrades
  • OpenEmbedded Stats
    • As of February 2010:
      • More than 1,900 software packages available
      • More than 250 machine definitions
      • More than 25 machine/package configurations (distros)
    (estimates based on directory/configuration file counts)
  • Getting Started
    • Read the Getting Started wiki pages for your host distribution (do not skip!)
    • Download BitBake
    • Checkout the OpenEmbedded repository (git)
    • Create your local.conf file, which defines which distro your are building for which target machine
  • local.conf # Where BitBake should download sources to DL_DIR = “/oe/build/sources” # BitBake recipe files BBFILES = “/oe/openembedded/recipes/*/*.bb” # Hardware, distribution, and image filesystem MACHINE = “gumstix-connex” DISTRO = “angstrom-2008.1” IMAGE_FSTYPES = “jffs2”
  • Start Baking Those Bits!
    • BitBake can build individual packages, but you will probably want to start by building one of the package sets that gets rolled into a filesystem image
      • bitbake console-image
      • See “Useful targets” on the OE wiki for a list of common images (X11 support, GPE environment, etc)
    • This will take a really long time (hours)
  • More About BitBake
    • Python-based build tool which uses “recipes” to know how to build a package
      • Downloads sources into a local cache so multiple builds can re-use
      • Knows about autoconf and other build methods
    • Will build all dependencies of your package from scratch (including compiling the cross-compiler and then running compiles of your packages in qemu)
  • BitBake Demos Machine configuration: conf/machine/gumstix.conf Package recipe: recipes/xscreensaver/ Task recipe: recipes/tasks/task-nas-server.bb
  • Disadvantages of OpenEmbedded
    • Vendor-supplied methods of setting up the device may be faster
    • BitBake can take a lot of time and disk space to compile everything
    • BitBake's power and flexibility comes at the cost of some complexity
    • If you don't need/care about package management/live updates, OE loses many advantages
  • When to Use OpenEmbedded
    • Your company or organization is developing many embedded products using different devices; you want to standardize on an environment to speed up development
    • You need a robust package management system for deploying live updates to your devices in the field
    • You already have in-house expertise with OE/BitBake and want to leverage it
  • Resources and Credits
    • wiki.openembedded.net
    • www.angstrom-distribution.org
    • developer.berlios.de/projects/bitbake/
    • OpenEmbedded for Deep Embedded Systems:
      • http://www.vollmann.ch/en/pubs/oe.html
    • Free Electrons OpenEmbedded Training:
      • http://free-electrons.com/docs/openembedded/