Open Embedded Bit Bake Open Source Software Carlos
Open. Embedded & Bit. Bake Open Source Software Carlos Ramirez Martinez-Eiroa Professor: Corby Schmitz
Index • • Build Tools Make Ant Maven Open. Zaurus Open. Embedded Bit. Bake
Evolution Make Ant Built. Root Maven Bit. Bake
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
Make • Initial release: 1977 • Already seen in class
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
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
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, platformindependent tool to build Tomcat from directives in an XML "build file”
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
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
• 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
Towards Open. Embedded
A Bit of History I • 2001: Sharp introducesthe. SL-5000 PDA running Linux • 2002: Chris Larson finds out that the Sharp. ROM sucks and starts hacking on a build system for a customized Linux distribution called "Open. Zaurus” • 2002 -2003: The Open. Zaurus 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 device independent build system
A Bit of History II • February 2003: Holger Schurig creates the Open. Embedded repository and starts hacking on the first version • May 2003: Chris Larson adds major functionality to the Open. Embedded core and starts converting packages from the Open. Zaurus build system • December 2003: Michael Lauer releases Open. Zaurus 3. 3. 5, abandons the Open. Zaurus build system, and converts 100 s of packages to Open. Embedded • December 2004: Open. Embedded is split up into the Bit. Bake build system and the Open. Embedded metadata
Open. Zaurus • Open. Embedded is the successor to the great Open. Zaurus project • The Open. Zaurus project was created as an alternative ROM image for the Sharp Zaurus Personal Mobile Tool
(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)
Open. Zaurus 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 u. Clibc C library
Open. Zaurus 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)
Open. Embedded • Open. Embedded was created to overcome this shortcoming • On 7 December 2004 Chris Larson split the project into two parts: Bit. Bake, a generic task executor and Open. Embedded, the metadata for Bit. Bake
Open. Embedded 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
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, …
Bit. Bake I • Open. Embedded 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
Bit. Bake 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
Process of Making Images Binary Packages Bit. Bake Recipes Flash Image Task Graph
Bit. Bake File and Data Types • Three different file types: –. conf: configuration data –. bbclass: (build) classes –. bb (. inc): package recipes • Bit. Bake parses the build classes, config files, and recipes • For every task Bit. Bake creates a shell script on-thefly and executes it
Main Tasks TASK DESCRIPTION FUNCTION Fetch Downloads data from upstream do_fetch() Unpacks data do_unpack() Patch Applies patches do_patch() Configures the source tree do_configure() Compiles the source tree do_compile() Stage Installs to the staging area do_stage() Installs into the packaging are do_install() Package Creates packages do_package()
Bit. Bake Recipe DESCRIPTION = "Hello world program“ PR = "r 0“ 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 }
Summary I • Open. Embedded: A metadata repository containing – – Build classes Machine configurations Distribution policies Recipes To create complete embedded Linux distributions from scratch
Summary II • Bit. Bake: 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
Why all this? • Slug. OS/BE is a replacement firmware image for the Linksys NSLU 2 • It is produced using Open. Embedded
Questions?
- Slides: 31