Download presentation
1
OpenEmbedded & BitBake
Open Source Software Carlos Ramirez Martinez-Eiroa Professor: Corby Schmitz
2
Index Build Tools Make Ant Maven OpenZaurus OpenEmbedded BitBake
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” : 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 device independent 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 core and starts converting packages from the OpenZaurus build system December 2003: Michael Lauer releases OpenZaurus3.3.5, abandons the OpenZaurus build system, and converts100s of packages to OpenEmbedded December 2004: OpenEmbedded is split up into the BitBake build system and the OpenEmbedded metadata
15
OpenZaurus 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
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 TASK DESCRIPTION FUNCTION Fetch
Downloads data from upstream do_fetch() Unpack Unpacks data do_unpack() Patch Applies patches do_patch() Configure Configures the source tree do_configure() Compile Compiles the source tree do_compile() Stage Installs to the staging area do_stage() Install Installs into the packaging are do_install() Package Creates packages do_package()
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 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?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.