1 / 31

OpenEmbedded & BitBake

OpenEmbedded & BitBake. Open Source Software Carlos Ramirez Martinez-Eiroa Professor: Corby Schmitz. Build Tools Make Ant Maven OpenZaurus OpenEmbedded BitBake. Index. Evolution. Make Ant Maven BuiltRoot BitBake. Build Tools.

dermot
Download Presentation

OpenEmbedded & BitBake

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenEmbedded & BitBake Open Source Software Carlos Ramirez Martinez-Eiroa Professor: Corby Schmitz

  2. Build Tools Make Ant Maven OpenZaurus OpenEmbedded BitBake Index

  3. Evolution Make Ant Maven BuiltRoot BitBake

  4. Build Tools • The process of building a computer program is usually managed by a build tool • Build Tool: program that coordinates and controls other programs • The build utility needs to compile and link the various files, in the correct order

  5. Make • Initial release: 1977 • Already seen in class

  6. Ant I • Similar to make, but: • Implemented using the Java language • Requires the Java platform • Is best suited to building Java projects • Ant uses XML to describe the build process and its dependencies - Make has its Makefile format

  7. Ant II • Conceived by James Duncan Davidson while turning Apache Tomcat (from Sun) into open source • A proprietary version of Make was used to build it on the Solaris Operating Environment

  8. Ant III • In the open source world there was no way of controlling which platform was used to build Tomcat • Ant was created as a simple, platform-independent tool to build Tomcat from directives in an XML "build file”

  9. Ant IV • In a Makefile the actions required to create a target are specified as shell commands which are specific to the current platform (usually Unix) • Ant provides a large amount of built-in functionality which can guarantee will behave (nearly) identically on all platforms

  10. Ant V • January 2000, Ant was moved to a separate CVS module and was promoted to a project of its own, independent of Tomcat, and became Apache Ant

  11. Maven uses a construct known as a Project Object Model (POM) to describe: • The software project being built • Its dependencies on other external modules and components • The build order • A key feature of Maven is that it is network-ready - The core engine can dynamically download plug-ins from a repository

  12. Towards OpenEmbedded

  13. A Bit of History I • 2001: Sharp introducestheSL-5000 PDA running Linux • 2002: Chris Larson finds out that the SharpROM sucks and starts hacking on a build system for a customized Linux distribution called "OpenZaurus” • 2002-2003: The OpenZaurus build system is getting stretched (beyond belief) by adding support for many more packages and target devices • January 2003: Brainstorming towards a new distribution and deviceindependent build system

  14. A Bit of History II • February 2003: Holger Schurig creates the OpenEmbedded repository and starts hacking on the first version • May 2003: Chris Larson adds major functionality to the OpenEmbedded coreand starts converting packages from the OpenZaurus build system • December 2003: Michael Lauer releases OpenZaurus3.3.5, abandons theOpenZaurus build system, and converts100s of packages to OpenEmbedded • December 2004: OpenEmbedded is split up into the BitBake build system and the OpenEmbedded metadata

  15. OpenEmbedded is the successor to the great OpenZaurus project The OpenZaurus project was created as an alternative ROM image for the Sharp Zaurus Personal Mobile Tool OpenZaurus

  16. (ROM image) • (ROM image: computer file which contains a copy of the data from a read-only memory chip • Software which is being developed for embedded computers is often written to ROM files for testing on a standard computer before it is written to a ROM chip for use in the embedded system)

  17. OpenZaurus II • The project had pushed buildroot to its limits • Buildroot:set of Makefiles and patches that makes it easy generate a cross-compilation toolchain and root filesystem for a target Linux system using the uClibc C library

  18. OpenZaurus III • Buildroot supported the creation of ipk packages, feeds and images and had support for more than one machine But => impossible to use different patches, files for different architectures, machines or distributions (ipk:lightweight package management system designed specifically for use in Linux devices with limited storage)

  19. OpenEmbedded • OpenEmbedded was created to overcome this shortcoming • On 7 December 2004 Chris Larson split the project into two parts: BitBake, a generic task executor and OpenEmbedded, the metadata for BitBake

  20. OpenEmbedded II • Software framework to create Linux distributions for embedded systems • This may include bootloader, Linux, and applications • Is a set of metadata used to cross-compile, package and install software packages • License: GPL

  21. Objectives • Be self-contained • Be able to use external toolchains or build them • Easily cross-compile software, build packages or create root-filesystems • Easily add new features, machines, architectures,…

  22. BitBake I • OpenEmbedded built tool • Controls how to build things and the build dependencies • Collects and manages an open set of largely independent build descriptions (package recipes) and builds them in proper order

  23. BitBake II • Used to compile different Linux kernels for a variety of PDAs • Easier to use (in theory) than manually using tools like patch and make • Programming language: Python • License: GNU General Public License (GPL), MIT/X Consortium License

  24. Process of Making Images Binary Packages BitBake Recipes Flash Image Task Graph

  25. BitBake File and Data Types • Three different file types: • .conf: configuration data • .bbclass: (build) classes • .bb (.inc): package recipes • BitBake parses the build classes, config files, and recipes • For every task BitBake creates a shell script on-the-fly and executes it

  26. Main Tasks

  27. BitBake Recipe DESCRIPTION = "Hello world program“ PR = "r0“ SRC_URI = "file://myhelloworld.c \ file://README.txt“ do_compile() { ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/myhelloworld.c -o myhelloworld } do_install() { install -m 0755 -d ${D}${bindir} ${D}${docdir}/myhelloworld install -m 0644 ${S}/myhelloworld ${D}${bindir} install -m 0644 ${WORKDIR}/README.txt ${D}${docdir}/myhelloworld }

  28. Summary I • OpenEmbedded: A metadata repository containing • Build classes • Machine configurations • Distribution policies • Recipes To create complete embedded Linux distributions from scratch

  29. Summary II • BitBake: A simple tool to execute tasks on metadata • Parser to handle metadata • Package graph to handle package interdependencies • Task graph to handle task interdependencies • On-the-fly shell script generator

  30. Why all this? • SlugOS/BE is a replacement firmware image for the Linksys NSLU2 • It is produced using OpenEmbedded

  31. Questions?

More Related