SlideShare a Scribd company logo
1 of 31
OpenEmbedded & BitBake
Open Source Software
Carlos Ramirez Martinez-Eiroa
Professor: Corby Schmitz
Index
• Build Tools
• Make
• Ant
• Maven
• OpenZaurus
• OpenEmbedded
• BitBake
Evolution
Make Ant Maven
BuiltRoot BitBake
QuickTime™ and a
decompressor
are needed to see this picture.
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
QuickTime™ and a
decompressor
are needed to see this picture.
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
QuickTime™ and a
decompressor
are needed to see this picture.
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
QuickTime™ and a
decompressor
are needed to see this picture.
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”
QuickTime™ and a
decompressor
are needed to see this picture.
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
QuickTime™ and a
decompressor
are needed to see this picture.
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
QuickTime™ and a
decompressor
are needed to see this picture.
• 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
QuickTime™ and a
decompressor
are needed to see this picture.
Towards OpenEmbedded
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
device independent build system
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
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
QuickTime™ and a
decompressor
are needed to see this picture.
QuickTime™ and a
decompressor
are needed to see this picture.
(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)
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
QuickTime™ and a
decompressor
are needed to see this picture.
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,
les for different architectures, machines orfi
distributions
(ipk: lightweight package management system
designed specifically for use in Linux devices with
limited storage)
QuickTime™ and a
decompressor
are needed to see this picture.
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
QuickTime™ and a
decompressorare needed to see this picture.
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
QuickTime™ and a
decompressorare needed to see this picture.
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,…
QuickTime™ and a
decompressorare needed to see this picture.
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
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
Process of Making Images
BitBake
Recipes
Binary
Packages
Task Graph
Flash Image
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
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()
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
}
Summary I
• OpenEmbedded: A metadata repository
containing
– Build classes
– Machine configurations
– Distribution policies
– Recipes
To create complete embedded Linux distributions
from scratch
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
Why all this?
• SlugOS/BE is a replacement firmware
image for the Linksys NSLU2
• It is produced using OpenEmbedded
Questions?

More Related Content

What's hot

.docker : how to deploy Digital Experience in a container drinking a cup of c...
.docker : how to deploy Digital Experience in a container drinking a cup of c....docker : how to deploy Digital Experience in a container drinking a cup of c...
.docker : how to deploy Digital Experience in a container drinking a cup of c...Andrea Fontana
 
Linux day 2016 Yocto Project
Linux day 2016 Yocto ProjectLinux day 2016 Yocto Project
Linux day 2016 Yocto ProjectMarco Cavallini
 
A timeline for embedded Linux
A timeline for embedded LinuxA timeline for embedded Linux
A timeline for embedded LinuxChris Simmonds
 
yocto_scale_handout-with-notes
yocto_scale_handout-with-notesyocto_scale_handout-with-notes
yocto_scale_handout-with-notesSteve Arnold
 
Docker - the what why and hows
Docker - the what why and howsDocker - the what why and hows
Docker - the what why and howsSouvik Maji
 
Android rpi-csimmonds-fosdem-2019
Android rpi-csimmonds-fosdem-2019Android rpi-csimmonds-fosdem-2019
Android rpi-csimmonds-fosdem-2019Chris Simmonds
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Projectrossburton
 
Yocto Project Kernel Lab, Hands-On
Yocto Project Kernel Lab, Hands-OnYocto Project Kernel Lab, Hands-On
Yocto Project Kernel Lab, Hands-OnTrevor Woerner
 
New Perl module Container::Buildah - SVPerl presentation
New Perl module Container::Buildah - SVPerl presentationNew Perl module Container::Buildah - SVPerl presentation
New Perl module Container::Buildah - SVPerl presentationIan Kluft
 
Debian or Yocto Project? Which is the best for your Embedded Linux project?
Debian or Yocto Project? Which is the best for your Embedded Linux project?Debian or Yocto Project? Which is the best for your Embedded Linux project?
Debian or Yocto Project? Which is the best for your Embedded Linux project?Chris Simmonds
 
Reducing boot time in embedded Linux
Reducing boot time in embedded LinuxReducing boot time in embedded Linux
Reducing boot time in embedded LinuxChris Simmonds
 
Virtual machines and containers
Virtual machines and containersVirtual machines and containers
Virtual machines and containersPatrick Pierson
 
Docker introduction
Docker introductionDocker introduction
Docker introductionGourav Varma
 
Docker get started
Docker get startedDocker get started
Docker get startedTruong LD
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)Chris Simmonds
 

What's hot (20)

.docker : how to deploy Digital Experience in a container drinking a cup of c...
.docker : how to deploy Digital Experience in a container drinking a cup of c....docker : how to deploy Digital Experience in a container drinking a cup of c...
.docker : how to deploy Digital Experience in a container drinking a cup of c...
 
Linux day 2016 Yocto Project
Linux day 2016 Yocto ProjectLinux day 2016 Yocto Project
Linux day 2016 Yocto Project
 
A timeline for embedded Linux
A timeline for embedded LinuxA timeline for embedded Linux
A timeline for embedded Linux
 
yocto_scale_handout-with-notes
yocto_scale_handout-with-notesyocto_scale_handout-with-notes
yocto_scale_handout-with-notes
 
Docker - the what why and hows
Docker - the what why and howsDocker - the what why and hows
Docker - the what why and hows
 
Yocto Project - OSCON 7-17-2012
Yocto Project - OSCON 7-17-2012Yocto Project - OSCON 7-17-2012
Yocto Project - OSCON 7-17-2012
 
Android rpi-csimmonds-fosdem-2019
Android rpi-csimmonds-fosdem-2019Android rpi-csimmonds-fosdem-2019
Android rpi-csimmonds-fosdem-2019
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Web fundamentals
Web fundamentalsWeb fundamentals
Web fundamentals
 
Automated infrastructure
Automated infrastructureAutomated infrastructure
Automated infrastructure
 
Yocto Project Kernel Lab, Hands-On
Yocto Project Kernel Lab, Hands-OnYocto Project Kernel Lab, Hands-On
Yocto Project Kernel Lab, Hands-On
 
New Perl module Container::Buildah - SVPerl presentation
New Perl module Container::Buildah - SVPerl presentationNew Perl module Container::Buildah - SVPerl presentation
New Perl module Container::Buildah - SVPerl presentation
 
Docker
DockerDocker
Docker
 
Debian or Yocto Project? Which is the best for your Embedded Linux project?
Debian or Yocto Project? Which is the best for your Embedded Linux project?Debian or Yocto Project? Which is the best for your Embedded Linux project?
Debian or Yocto Project? Which is the best for your Embedded Linux project?
 
PIC your malware
PIC your malwarePIC your malware
PIC your malware
 
Reducing boot time in embedded Linux
Reducing boot time in embedded LinuxReducing boot time in embedded Linux
Reducing boot time in embedded Linux
 
Virtual machines and containers
Virtual machines and containersVirtual machines and containers
Virtual machines and containers
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker get started
Docker get startedDocker get started
Docker get started
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)
 

Viewers also liked

Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
 
twlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdsotwlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdsoViller Hsiao
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux NetworkingPLUMgrid
 
Linux kernel tracing
Linux kernel tracingLinux kernel tracing
Linux kernel tracingViller Hsiao
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git민태 김
 
Yet another introduction to Linux RCU
Yet another introduction to Linux RCUYet another introduction to Linux RCU
Yet another introduction to Linux RCUViller Hsiao
 

Viewers also liked (7)

Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
twlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdsotwlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdso
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
 
Linux kernel tracing
Linux kernel tracingLinux kernel tracing
Linux kernel tracing
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
 
Yet another introduction to Linux RCU
Yet another introduction to Linux RCUYet another introduction to Linux RCU
Yet another introduction to Linux RCU
 

Similar to OpenEmbedded & BitBake - Denx

docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...Matteo Bisi
 
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...Lucas Jellema
 
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
.docker : How to deploy Digital Experience in a container, drinking a cup of ....docker : How to deploy Digital Experience in a container, drinking a cup of ...
.docker : How to deploy Digital Experience in a container, drinking a cup of ...ICON UK EVENTS Limited
 
Packaging tool options
Packaging tool optionsPackaging tool options
Packaging tool optionsLen Bass
 
Being a Moby maintainer
Being a Moby maintainerBeing a Moby maintainer
Being a Moby maintainerAkihiro Suda
 
Introduction to LinuxKit - Docker Bangalore Meetup
Introduction to LinuxKit - Docker Bangalore MeetupIntroduction to LinuxKit - Docker Bangalore Meetup
Introduction to LinuxKit - Docker Bangalore MeetupAjeet Singh Raina
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainAjeet Singh Raina
 
Stefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto ProjectStefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto Projectlinuxlab_conf
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with DockerRavindu Fernando
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetesDongwon Kim
 
Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...All Things Open
 
Yocto Project introduction
Yocto Project introductionYocto Project introduction
Yocto Project introductionYi-Hsiu Hsu
 
Comparing Next-Generation Container Image Building Tools
 Comparing Next-Generation Container Image Building Tools Comparing Next-Generation Container Image Building Tools
Comparing Next-Generation Container Image Building ToolsAkihiro Suda
 
IBM Container Service Overview
IBM Container Service OverviewIBM Container Service Overview
IBM Container Service OverviewKyle Brown
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERIndrajit Poddar
 

Similar to OpenEmbedded & BitBake - Denx (20)

Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
 
Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
 
docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...docker : how to deploy Digital Experience in a container drinking a cup of co...
docker : how to deploy Digital Experience in a container drinking a cup of co...
 
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
 
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
.docker : How to deploy Digital Experience in a container, drinking a cup of ....docker : How to deploy Digital Experience in a container, drinking a cup of ...
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
 
Java developer intro to environment management with vagrant puppet and docker
Java developer intro to environment management with vagrant puppet and dockerJava developer intro to environment management with vagrant puppet and docker
Java developer intro to environment management with vagrant puppet and docker
 
Packaging tool options
Packaging tool optionsPackaging tool options
Packaging tool options
 
Project Moby
Project MobyProject Moby
Project Moby
 
Being a Moby maintainer
Being a Moby maintainerBeing a Moby maintainer
Being a Moby maintainer
 
Introduction to LinuxKit - Docker Bangalore Meetup
Introduction to LinuxKit - Docker Bangalore MeetupIntroduction to LinuxKit - Docker Bangalore Meetup
Introduction to LinuxKit - Docker Bangalore Meetup
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker Captain
 
Stefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto ProjectStefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto Project
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Rexdockercon2017
Rexdockercon2017Rexdockercon2017
Rexdockercon2017
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
 
Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...
 
Yocto Project introduction
Yocto Project introductionYocto Project introduction
Yocto Project introduction
 
Comparing Next-Generation Container Image Building Tools
 Comparing Next-Generation Container Image Building Tools Comparing Next-Generation Container Image Building Tools
Comparing Next-Generation Container Image Building Tools
 
IBM Container Service Overview
IBM Container Service OverviewIBM Container Service Overview
IBM Container Service Overview
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
 

Recently uploaded

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Recently uploaded (20)

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

OpenEmbedded & BitBake - Denx

  • 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 QuickTime™ and a decompressor are needed to see this picture.
  • 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 QuickTime™ and a decompressor are needed to see this picture.
  • 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 QuickTime™ and a decompressor are needed to see this picture.
  • 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 QuickTime™ and a decompressor are needed to see this picture.
  • 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” QuickTime™ and a decompressor are needed to see this picture.
  • 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 QuickTime™ and a decompressor are needed to see this picture.
  • 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 QuickTime™ and a decompressor are needed to see this picture.
  • 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 QuickTime™ and a decompressor are needed to see this picture.
  • 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 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 QuickTime™ and a decompressor are needed to see this picture. QuickTime™ and a decompressor are needed to see this picture.
  • 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 QuickTime™ and a decompressor are needed to see this picture.
  • 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, les for different architectures, machines orfi distributions (ipk: lightweight package management system designed specifically for use in Linux devices with limited storage) QuickTime™ and a decompressor are needed to see this picture.
  • 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 QuickTime™ and a decompressorare needed to see this picture.
  • 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 QuickTime™ and a decompressorare needed to see this picture.
  • 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,… QuickTime™ and a decompressorare needed to see this picture.
  • 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 BitBake Recipes Binary Packages Task Graph Flash Image
  • 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 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