SlideShare a Scribd company logo
Drew Moseley
Solutions Architect
Mender.io
Comparing embedded Linux build systems and distros
Session overview
● Review of embedded Linux
development challenges.
● Define build system and criteria.
● Discuss a few popular options.
● Give me an opportunity to learn about
some of the other tools.
Goal: Help new embedded
Linux developers get started
About me
Drew Moseley
○ 10 years in Embedded Linux/Yocto development.
○ Longer than that in general Embedded Software.
○ Project Lead and Solutions Architect.
drew.moseley@mender.io
https://twitter.com/drewmoseley
https://www.linkedin.com/in/drewmoseley/
https://twitter.com/mender_io
Mender.io
○ Over-the-air updater for Embedded Linux
○ Open source (Apache License, v2)
○ Dual A/B rootfs layout (client)
○ Remote deployment management (server)
○ Under active development
Challenges for Embedded Linux Developers
Hardware variety
Storage Media
Software may be maintained in forks
Cross development
Initial device provisioning
Simple Makefiles don't cut it (anymore)
Facts:
● These systems are huge
● Dependency Hell is a thing
● Builds take a long time
● Builds take a lot of resources
● Embedded applications require
significant customization
● Developers need to modify
from defaults
Build System Defined
_Is_
● Mechanism to specify and build
○ Define hardware/BSP
components
○ Integrate user-space
applications; including custom
code
● Need reproducibility
● Must support multiple developers
● Allow for parallel processing
● (Cross) Toolchains
● License Management
_Is Not_
● An IDE
● A Distribution
● A deployment and provisioning
tool
● An out-of-the-box solution
Desktop Distros - Overview
(or why can’t I just use <favorite-distro>?)
You can.
Sort-of.
Desktop Distros - Details
Use installer (or build scripts) from
favorite distro
Increased usage (Raspberry Pi)
Slim down to meet your needs
Generally uses prebuilt binaries
Imposes (significant?) policy
Dependent on distro vendor decisions
Likely not targeted at embedded applications
May not be cross-development friendly
Desktop Distros - Summary
Pros:
● Lots of choices to start with
● Developer familiarity
● Large selection of prebuilt
packages
● Quick getting started
● Simplicity
● On-target builds are possible
Cons:
● Policy imposed by vendor
● Difficulty in removing packages
due to dependencies
● Reproducibility is complicated
● On-target builds may be slow
● Off-target builds may be difficult
or impossible
“It’s not an embedded Linux distribution -- it creates a custom one for you”1
● Recipes, metadata, dependencies and configuration
● Primary output: package feed
● Secondary output: boot images
● Builds all components from source
● Mechanism, not policy
Products:
● Root filesystem image
● Kernel, Bootloader, Toolchain
● Package Feed
Yocto Project - Overview
1
See more at https://www.yoctoproject.org
Organized into independent layers:
● Separation of functionality
● Allows different release schedules
● Expandability
○ Recipes developed in python and bash
SDK mechanism
● Separation of system and application devs
● Easily allows multiple developers to contribute
Optimizations:
● Faster build time reusing prebuilt binaries
● Parallel builds
Previous ELC talk estimated ~ 8400 software
packages available
Yocto Project - Details
$ git clone -b rocko 
git://git.yoctoproject.org/poky.git
$ source poky/oe-init-build-env
$ MACHINE=qemux86 bitbake 
core-image-minimal
$ runqemu qemux86
Yocto Project - Getting Started
Yocto Project - Summary
Pros:
● Widely supported by board and
semiconductor vendors
● Active developer community
● Wide functionality and board
support enabled by layer
mechanism
● Customizable and expandable
● Minimal native tooling required
Cons:
● Steep learning curve
● Unfamiliar environment to
non-embedded developers
● Resource-intensive
○ Long initial build times
○ Disk space
“Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux
systems through cross-compilation.”1
● Primary output: boot images
● Does not support rpm-style package mgmt
● “Firmware Generator”
● Builds all components from source
● Focus on simplicity
Products:
● Root filesystem image
● Kernel, Bootloader, Toolchain
Buildroot - Overview
1
See more at https://buildroot.org/
Buildroot - Details
Uses Makefiles and Kconfig
● Widely support and well-known
Relatively small images and quick builds
BR2_EXTERNAL mechanism
● Local additions stored outside the Buildroot
source tree
● Package recipes, defconfigs, etc.
Recipes developed in kconfig and make
SDK mechanism
● Separation of system and application devs
● Easily allows multiple developers to contribute
Previous ELC talk estimated ~ 1800 software
packages available
Buildroot - Getting Started
$ git clone -b 2018.02 https://git.buildroot.net/buildroot
$ cd buildroot
$ make qemu_arm_vexpress_defconfig
$ make
$ eval $(grep qemu-system-arm board/qemu/arm-vexpress/readme.txt)
Buildroot - Summary
Pros:
● Community driven design
● Quick to get started
● Easy to understand
● Active developer community
● Broad architecture and board
support
Cons:
● Little corporate sponsorship
● Configuration changes require
full rebuild
● No reusable shared state by
default
OpenWRT - Overview
“OpenWrt provides a fully writable filesystem with package management.”1
Primary focus is networking
○ Replacement firmware for consumer devices
○ Primarily a binary distribution
○ On-device package management
Products:
○ Firmware image in device-specific format
○ Network available package repositories
1
See more at https://openwrt.org/
OpenWRT - Build System
● General Linux software build system
● Consists of Makefiles and patches
● Generates a cross-toolchain and root filesystem image
● Uses kconfig
● More details here:
○ https://openwrt.org/docs/guide-developer/build-system
OpenWRT - Summary
Pros:
● Great choice as replacement
firmware
● Good choice for:
○ Router/networking device
○ If your application needs
package-based updates
Cons:
● Less flexible for general
Embedded applications
● Policy imposed by OpenWRT
design
● Package based updates can make
fleet management difficult
Other Criteria
● Hardware vendor
provided material
● Training and
documentation
● Vendor for support
● Developer experience
Related Tools
uClinux (http://www.uclinux.org/)
● Port of Linux to systems without a Memory
Management Unit
● Kernel 2.6, user applications, libraries and
tool chains.
crosstool-NG (https://crosstool-ng.github.io/)
● Cross-toolchain generator
● Uses kConfig
Other Build Options
ELBE (https://github.com/linutronix/elbe)
ISAR (https://github.com/ilbers/isar/)
Android ((https://source.android.com/)
...
To Be
Continued...
Summary - Use Cases
● Beginner/hobbyist/maker:
○ Commercial dev board/easy getting started
○ Desktop distro or OpenWRT
● Commercial use, single configuration
○ Fast build time/easy getting started
○ Buildroot
● Commercial use, multiple configurations
○ Modular/HW vendor support
○ Yocto Project
Summary
Yocto Project Buildroot OpenWRT Desktop Distro
Expandability
Configurability
Ease of Getting
Started
Package
Availability
Industry Support
Thank You!
Q & A
@drewmoseley
drew.moseley@mender.io
Ad

More Related Content

What's hot (20)

Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
Sherif Mousa
 
Linux day 2016 Yocto Project
Linux day 2016 Yocto ProjectLinux day 2016 Yocto Project
Linux day 2016 Yocto Project
Marco Cavallini
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yocto
Alex Gonzalez
 
Bringing Tizen to a Raspberry Pi 2 Near You
Bringing Tizen to a Raspberry Pi 2 Near YouBringing Tizen to a Raspberry Pi 2 Near You
Bringing Tizen to a Raspberry Pi 2 Near You
Samsung Open Source Group
 
Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène J...
Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène J...Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène J...
Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène J...
Anne Nicolas
 
Crafting GNU/Linux distributions for Embedded target from Scratch/Source
Crafting GNU/Linux distributions for Embedded target from Scratch/SourceCrafting GNU/Linux distributions for Embedded target from Scratch/Source
Crafting GNU/Linux distributions for Embedded target from Scratch/Source
Sourabh Singh Tomar
 
Debugging embedded devices using GDB
Debugging embedded devices using GDBDebugging embedded devices using GDB
Debugging embedded devices using GDB
Chris Simmonds
 
Yocto Project Kernel Lab hands-on
Yocto Project Kernel Lab hands-onYocto Project Kernel Lab hands-on
Yocto Project Kernel Lab hands-on
Trevor Woerner
 
Crafting GNU/ linux distributions for embedded target using Builroot
Crafting GNU/ linux distributions for embedded target using BuilrootCrafting GNU/ linux distributions for embedded target using Builroot
Crafting GNU/ linux distributions for embedded target using Builroot
Sourabh Singh Tomar
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
Opersys inc.
 
[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework
ICS
 
Generating a Reproducible and Maintainable Embedded Linux Environment with Po...
Generating a Reproducible and Maintainable Embedded Linux Environment with Po...Generating a Reproducible and Maintainable Embedded Linux Environment with Po...
Generating a Reproducible and Maintainable Embedded Linux Environment with Po...
LF Events
 
yocto_scale_handout-with-notes
yocto_scale_handout-with-notesyocto_scale_handout-with-notes
yocto_scale_handout-with-notes
Steve Arnold
 
Building Emmbedded Linux with Yocto project
Building Emmbedded Linux with Yocto projectBuilding Emmbedded Linux with Yocto project
Building Emmbedded Linux with Yocto project
twcoimbatore
 
Tdc2014 tizen common_20140603
Tdc2014 tizen common_20140603Tdc2014 tizen common_20140603
Tdc2014 tizen common_20140603
Phil www.rzr.online.fr
 
BeagleBoard Workshop ESC Boston 2011
BeagleBoard Workshop ESC Boston 2011BeagleBoard Workshop ESC Boston 2011
BeagleBoard Workshop ESC Boston 2011
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3
Opersys inc.
 
Getting Started with EasyBuild - Tutorial Part 2
Getting Started with EasyBuild - Tutorial Part 2Getting Started with EasyBuild - Tutorial Part 2
Getting Started with EasyBuild - Tutorial Part 2
inside-BigData.com
 
Building Embedded Linux UDOONEO
Building Embedded Linux UDOONEOBuilding Embedded Linux UDOONEO
Building Embedded Linux UDOONEO
NEEVEE Technologies
 
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Opersys inc.
 
Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
Sherif Mousa
 
Linux day 2016 Yocto Project
Linux day 2016 Yocto ProjectLinux day 2016 Yocto Project
Linux day 2016 Yocto Project
Marco Cavallini
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yocto
Alex Gonzalez
 
Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène J...
Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène J...Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène J...
Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène J...
Anne Nicolas
 
Crafting GNU/Linux distributions for Embedded target from Scratch/Source
Crafting GNU/Linux distributions for Embedded target from Scratch/SourceCrafting GNU/Linux distributions for Embedded target from Scratch/Source
Crafting GNU/Linux distributions for Embedded target from Scratch/Source
Sourabh Singh Tomar
 
Debugging embedded devices using GDB
Debugging embedded devices using GDBDebugging embedded devices using GDB
Debugging embedded devices using GDB
Chris Simmonds
 
Yocto Project Kernel Lab hands-on
Yocto Project Kernel Lab hands-onYocto Project Kernel Lab hands-on
Yocto Project Kernel Lab hands-on
Trevor Woerner
 
Crafting GNU/ linux distributions for embedded target using Builroot
Crafting GNU/ linux distributions for embedded target using BuilrootCrafting GNU/ linux distributions for embedded target using Builroot
Crafting GNU/ linux distributions for embedded target using Builroot
Sourabh Singh Tomar
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
Opersys inc.
 
[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework
ICS
 
Generating a Reproducible and Maintainable Embedded Linux Environment with Po...
Generating a Reproducible and Maintainable Embedded Linux Environment with Po...Generating a Reproducible and Maintainable Embedded Linux Environment with Po...
Generating a Reproducible and Maintainable Embedded Linux Environment with Po...
LF Events
 
yocto_scale_handout-with-notes
yocto_scale_handout-with-notesyocto_scale_handout-with-notes
yocto_scale_handout-with-notes
Steve Arnold
 
Building Emmbedded Linux with Yocto project
Building Emmbedded Linux with Yocto projectBuilding Emmbedded Linux with Yocto project
Building Emmbedded Linux with Yocto project
twcoimbatore
 
BeagleBoard Workshop ESC Boston 2011
BeagleBoard Workshop ESC Boston 2011BeagleBoard Workshop ESC Boston 2011
BeagleBoard Workshop ESC Boston 2011
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3
Opersys inc.
 
Getting Started with EasyBuild - Tutorial Part 2
Getting Started with EasyBuild - Tutorial Part 2Getting Started with EasyBuild - Tutorial Part 2
Getting Started with EasyBuild - Tutorial Part 2
inside-BigData.com
 
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Opersys inc.
 

Similar to Embedded Linux Build Systems - Texas Linux Fest 2018 (20)

Embedded linux build systems
Embedded linux build systems  Embedded linux build systems
Embedded linux build systems
Mender.io
 
IoT: Contrasting Yocto/Buildroot to binary OSes
IoT: Contrasting Yocto/Buildroot to binary OSesIoT: Contrasting Yocto/Buildroot to binary OSes
IoT: Contrasting Yocto/Buildroot to binary OSes
Mender.io
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and Debian
Mender.io
 
Why the yocto project for my io t project elc_edinburgh_2018
Why the yocto project for my io t project elc_edinburgh_2018Why the yocto project for my io t project elc_edinburgh_2018
Why the yocto project for my io t project elc_edinburgh_2018
Mender.io
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
ICS
 
Yocto Project : Custom Embedded Linux Distribution
Yocto Project : Custom Embedded Linux DistributionYocto Project : Custom Embedded Linux Distribution
Yocto Project : Custom Embedded Linux Distribution
emertxemarketing
 
Yocto_DevDay_Advanced_Class_Portland_2018.pptx
Yocto_DevDay_Advanced_Class_Portland_2018.pptxYocto_DevDay_Advanced_Class_Portland_2018.pptx
Yocto_DevDay_Advanced_Class_Portland_2018.pptx
Rajeshravi49
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Per Henrik Lausten
 
embedded-linux-120203.pdf
embedded-linux-120203.pdfembedded-linux-120203.pdf
embedded-linux-120203.pdf
twtester
 
Iot development from prototype to production
Iot development from prototype to productionIot development from prototype to production
Iot development from prototype to production
Mender.io
 
Strategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and imagesStrategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and images
Mender.io
 
IoT Development from Prototype to Production
IoT Development from Prototype to ProductionIoT Development from Prototype to Production
IoT Development from Prototype to Production
Mender.io
 
Yocto-Buildroot Presentation for Embedded
Yocto-Buildroot Presentation for EmbeddedYocto-Buildroot Presentation for Embedded
Yocto-Buildroot Presentation for Embedded
harishsconnect
 
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
melbats
 
A million ways to provision embedded linux devices
A million ways to provision embedded linux devicesA million ways to provision embedded linux devices
A million ways to provision embedded linux devices
Mender.io
 
iot_9Yocto Project getting started,,.pdf
iot_9Yocto Project getting started,,.pdfiot_9Yocto Project getting started,,.pdf
iot_9Yocto Project getting started,,.pdf
arabnuradin
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015
Chris Simmonds
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
Scott Garman
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Marco Cavallini
 
Eclipse Con US 2013 - Buildroot Eclipse Bundle : A powerful IDE for Embedded ...
Eclipse Con US 2013 - Buildroot Eclipse Bundle : A powerful IDE for Embedded ...Eclipse Con US 2013 - Buildroot Eclipse Bundle : A powerful IDE for Embedded ...
Eclipse Con US 2013 - Buildroot Eclipse Bundle : A powerful IDE for Embedded ...
melbats
 
Embedded linux build systems
Embedded linux build systems  Embedded linux build systems
Embedded linux build systems
Mender.io
 
IoT: Contrasting Yocto/Buildroot to binary OSes
IoT: Contrasting Yocto/Buildroot to binary OSesIoT: Contrasting Yocto/Buildroot to binary OSes
IoT: Contrasting Yocto/Buildroot to binary OSes
Mender.io
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and Debian
Mender.io
 
Why the yocto project for my io t project elc_edinburgh_2018
Why the yocto project for my io t project elc_edinburgh_2018Why the yocto project for my io t project elc_edinburgh_2018
Why the yocto project for my io t project elc_edinburgh_2018
Mender.io
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
ICS
 
Yocto Project : Custom Embedded Linux Distribution
Yocto Project : Custom Embedded Linux DistributionYocto Project : Custom Embedded Linux Distribution
Yocto Project : Custom Embedded Linux Distribution
emertxemarketing
 
Yocto_DevDay_Advanced_Class_Portland_2018.pptx
Yocto_DevDay_Advanced_Class_Portland_2018.pptxYocto_DevDay_Advanced_Class_Portland_2018.pptx
Yocto_DevDay_Advanced_Class_Portland_2018.pptx
Rajeshravi49
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Per Henrik Lausten
 
embedded-linux-120203.pdf
embedded-linux-120203.pdfembedded-linux-120203.pdf
embedded-linux-120203.pdf
twtester
 
Iot development from prototype to production
Iot development from prototype to productionIot development from prototype to production
Iot development from prototype to production
Mender.io
 
Strategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and imagesStrategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and images
Mender.io
 
IoT Development from Prototype to Production
IoT Development from Prototype to ProductionIoT Development from Prototype to Production
IoT Development from Prototype to Production
Mender.io
 
Yocto-Buildroot Presentation for Embedded
Yocto-Buildroot Presentation for EmbeddedYocto-Buildroot Presentation for Embedded
Yocto-Buildroot Presentation for Embedded
harishsconnect
 
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
melbats
 
A million ways to provision embedded linux devices
A million ways to provision embedded linux devicesA million ways to provision embedded linux devices
A million ways to provision embedded linux devices
Mender.io
 
iot_9Yocto Project getting started,,.pdf
iot_9Yocto Project getting started,,.pdfiot_9Yocto Project getting started,,.pdf
iot_9Yocto Project getting started,,.pdf
arabnuradin
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015
Chris Simmonds
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Marco Cavallini
 
Eclipse Con US 2013 - Buildroot Eclipse Bundle : A powerful IDE for Embedded ...
Eclipse Con US 2013 - Buildroot Eclipse Bundle : A powerful IDE for Embedded ...Eclipse Con US 2013 - Buildroot Eclipse Bundle : A powerful IDE for Embedded ...
Eclipse Con US 2013 - Buildroot Eclipse Bundle : A powerful IDE for Embedded ...
melbats
 
Ad

More from Mender.io (12)

Mender: The open-source software update solution
Mender: The open-source software update solutionMender: The open-source software update solution
Mender: The open-source software update solution
Mender.io
 
The ultimate guide to software updates on embedded linux devices
The ultimate guide to software updates on embedded linux devicesThe ultimate guide to software updates on embedded linux devices
The ultimate guide to software updates on embedded linux devices
Mender.io
 
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
Mender.io
 
Configuring wifi in open embedded builds
Configuring wifi in open embedded buildsConfiguring wifi in open embedded builds
Configuring wifi in open embedded builds
Mender.io
 
Mender; the open-source software update solution
Mender; the open-source software update solutionMender; the open-source software update solution
Mender; the open-source software update solution
Mender.io
 
Software Updates for Connected Devices - OSCON 2018
Software Updates for Connected Devices - OSCON 2018Software Updates for Connected Devices - OSCON 2018
Software Updates for Connected Devices - OSCON 2018
Mender.io
 
Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018
Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018
Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018
Mender.io
 
Linux IoT Botnet Wars - ESC Boston 2018
Linux IoT Botnet Wars - ESC Boston 2018Linux IoT Botnet Wars - ESC Boston 2018
Linux IoT Botnet Wars - ESC Boston 2018
Mender.io
 
Securing the Connected Car - SCaLE 2018
Securing the Connected Car - SCaLE 2018Securing the Connected Car - SCaLE 2018
Securing the Connected Car - SCaLE 2018
Mender.io
 
Mender.io | Securing the Connected Car
Mender.io | Securing the Connected CarMender.io | Securing the Connected Car
Mender.io | Securing the Connected Car
Mender.io
 
Linux IoT Botnet Wars and the lack of basic security hardening
Linux IoT Botnet Wars and the lack of basic security hardeningLinux IoT Botnet Wars and the lack of basic security hardening
Linux IoT Botnet Wars and the lack of basic security hardening
Mender.io
 
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and GolangMender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io
 
Mender: The open-source software update solution
Mender: The open-source software update solutionMender: The open-source software update solution
Mender: The open-source software update solution
Mender.io
 
The ultimate guide to software updates on embedded linux devices
The ultimate guide to software updates on embedded linux devicesThe ultimate guide to software updates on embedded linux devices
The ultimate guide to software updates on embedded linux devices
Mender.io
 
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
Mender.io
 
Configuring wifi in open embedded builds
Configuring wifi in open embedded buildsConfiguring wifi in open embedded builds
Configuring wifi in open embedded builds
Mender.io
 
Mender; the open-source software update solution
Mender; the open-source software update solutionMender; the open-source software update solution
Mender; the open-source software update solution
Mender.io
 
Software Updates for Connected Devices - OSCON 2018
Software Updates for Connected Devices - OSCON 2018Software Updates for Connected Devices - OSCON 2018
Software Updates for Connected Devices - OSCON 2018
Mender.io
 
Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018
Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018
Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018
Mender.io
 
Linux IoT Botnet Wars - ESC Boston 2018
Linux IoT Botnet Wars - ESC Boston 2018Linux IoT Botnet Wars - ESC Boston 2018
Linux IoT Botnet Wars - ESC Boston 2018
Mender.io
 
Securing the Connected Car - SCaLE 2018
Securing the Connected Car - SCaLE 2018Securing the Connected Car - SCaLE 2018
Securing the Connected Car - SCaLE 2018
Mender.io
 
Mender.io | Securing the Connected Car
Mender.io | Securing the Connected CarMender.io | Securing the Connected Car
Mender.io | Securing the Connected Car
Mender.io
 
Linux IoT Botnet Wars and the lack of basic security hardening
Linux IoT Botnet Wars and the lack of basic security hardeningLinux IoT Botnet Wars and the lack of basic security hardening
Linux IoT Botnet Wars and the lack of basic security hardening
Mender.io
 
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and GolangMender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io
 
Ad

Recently uploaded (20)

pharmacology.pdffffffffffffffffffffffffff
pharmacology.pdffffffffffffffffffffffffffpharmacology.pdffffffffffffffffffffffffff
pharmacology.pdffffffffffffffffffffffffff
anooshaazam312
 
Introduction-to-Robotics-PowerPoint-Presentation-on-Robotics (1).ppt
Introduction-to-Robotics-PowerPoint-Presentation-on-Robotics (1).pptIntroduction-to-Robotics-PowerPoint-Presentation-on-Robotics (1).ppt
Introduction-to-Robotics-PowerPoint-Presentation-on-Robotics (1).ppt
AshaManjhi
 
the-importance-of-learning-french-140722055824-phpapp01.ppt
the-importance-of-learning-french-140722055824-phpapp01.pptthe-importance-of-learning-french-140722055824-phpapp01.ppt
the-importance-of-learning-french-140722055824-phpapp01.ppt
LipicaJasujaWadhwa
 
Biology SBK10.pdffgguhjjjjghjtrdrettdryttrdtr
Biology SBK10.pdffgguhjjjjghjtrdrettdryttrdtrBiology SBK10.pdffgguhjjjjghjtrdrettdryttrdtr
Biology SBK10.pdffgguhjjjjghjtrdrettdryttrdtr
abayamargaug
 
Oxygen Concentrators | Medical Machine Equipment
Oxygen Concentrators | Medical Machine EquipmentOxygen Concentrators | Medical Machine Equipment
Oxygen Concentrators | Medical Machine Equipment
blueredblue74
 
OSPF & DHCP PPT.pptx it is relATED TO NETWORKING
OSPF & DHCP PPT.pptx it is relATED TO NETWORKINGOSPF & DHCP PPT.pptx it is relATED TO NETWORKING
OSPF & DHCP PPT.pptx it is relATED TO NETWORKING
ritikghw
 
CCTV Camera Installation guide of .pdf
CCTV Camera Installation guide   of .pdfCCTV Camera Installation guide   of .pdf
CCTV Camera Installation guide of .pdf
Ebba6
 
Computer Hardware using mostly in daily.
Computer Hardware using mostly in daily.Computer Hardware using mostly in daily.
Computer Hardware using mostly in daily.
manshajunaid205
 
TabulationwjsnnanamamamNananaka of Data.pptx
TabulationwjsnnanamamamNananaka of Data.pptxTabulationwjsnnanamamamNananaka of Data.pptx
TabulationwjsnnanamamamNananaka of Data.pptx
sriyansh4443
 
ppt untuk seminar proposal dan persiapannya
ppt untuk seminar proposal dan persiapannyappt untuk seminar proposal dan persiapannya
ppt untuk seminar proposal dan persiapannya
Rasidinmamakidin
 
Fonepaw Data Recovery Crack 2025 with key free Download
Fonepaw Data Recovery Crack 2025 with key free DownloadFonepaw Data Recovery Crack 2025 with key free Download
Fonepaw Data Recovery Crack 2025 with key free Download
mampisoren09
 
Spectrophotometer instrument basics -.pptx
Spectrophotometer instrument basics -.pptxSpectrophotometer instrument basics -.pptx
Spectrophotometer instrument basics -.pptx
muthulakshmitc
 
荷兰代尔夫特理工大学毕业证书文凭定制TUDelft成绩单定制
荷兰代尔夫特理工大学毕业证书文凭定制TUDelft成绩单定制荷兰代尔夫特理工大学毕业证书文凭定制TUDelft成绩单定制
荷兰代尔夫特理工大学毕业证书文凭定制TUDelft成绩单定制
Taqyea
 
Bone Tubeoudgkaitaurauraurarhafhau4rculosis.pptx
Bone   Tubeoudgkaitaurauraurarhafhau4rculosis.pptxBone   Tubeoudgkaitaurauraurarhafhau4rculosis.pptx
Bone Tubeoudgkaitaurauraurarhafhau4rculosis.pptx
gaisga4er
 
Multilingual hand gesture to speech conversion system
Multilingual hand gesture to speech conversion systemMultilingual hand gesture to speech conversion system
Multilingual hand gesture to speech conversion system
Himabindu905359
 
ADRENAL CORTbsbsbshEX 3 & 4 - 22MBBS.pptx
ADRENAL CORTbsbsbshEX 3 & 4 - 22MBBS.pptxADRENAL CORTbsbsbshEX 3 & 4 - 22MBBS.pptx
ADRENAL CORTbsbsbshEX 3 & 4 - 22MBBS.pptx
c2422429
 
linearly separable and therefore a set of weights exist that are consistent ...
linearly separable and therefore a set of weights exist that are consistent  ...linearly separable and therefore a set of weights exist that are consistent  ...
linearly separable and therefore a set of weights exist that are consistent ...
mebibek_hu
 
Microsoft Office 365 Crack Latest Version 2025?
Microsoft Office 365 Crack Latest Version 2025?Microsoft Office 365 Crack Latest Version 2025?
Microsoft Office 365 Crack Latest Version 2025?
yousfhashmi786
 
00804.pptvjlvpuvupvpyvupv6v07upv60v7vupv0v6p
00804.pptvjlvpuvupvpyvupv6v07upv60v7vupv0v6p00804.pptvjlvpuvupvpyvupv6v07upv60v7vupv0v6p
00804.pptvjlvpuvupvpyvupv6v07upv60v7vupv0v6p
hkrishna9495
 
>parallel desktop Crack Latest Free 2025 | PPT
>parallel desktop Crack Latest Free 2025 | PPT>parallel desktop Crack Latest Free 2025 | PPT
>parallel desktop Crack Latest Free 2025 | PPT
yousfhashmi786
 
pharmacology.pdffffffffffffffffffffffffff
pharmacology.pdffffffffffffffffffffffffffpharmacology.pdffffffffffffffffffffffffff
pharmacology.pdffffffffffffffffffffffffff
anooshaazam312
 
Introduction-to-Robotics-PowerPoint-Presentation-on-Robotics (1).ppt
Introduction-to-Robotics-PowerPoint-Presentation-on-Robotics (1).pptIntroduction-to-Robotics-PowerPoint-Presentation-on-Robotics (1).ppt
Introduction-to-Robotics-PowerPoint-Presentation-on-Robotics (1).ppt
AshaManjhi
 
the-importance-of-learning-french-140722055824-phpapp01.ppt
the-importance-of-learning-french-140722055824-phpapp01.pptthe-importance-of-learning-french-140722055824-phpapp01.ppt
the-importance-of-learning-french-140722055824-phpapp01.ppt
LipicaJasujaWadhwa
 
Biology SBK10.pdffgguhjjjjghjtrdrettdryttrdtr
Biology SBK10.pdffgguhjjjjghjtrdrettdryttrdtrBiology SBK10.pdffgguhjjjjghjtrdrettdryttrdtr
Biology SBK10.pdffgguhjjjjghjtrdrettdryttrdtr
abayamargaug
 
Oxygen Concentrators | Medical Machine Equipment
Oxygen Concentrators | Medical Machine EquipmentOxygen Concentrators | Medical Machine Equipment
Oxygen Concentrators | Medical Machine Equipment
blueredblue74
 
OSPF & DHCP PPT.pptx it is relATED TO NETWORKING
OSPF & DHCP PPT.pptx it is relATED TO NETWORKINGOSPF & DHCP PPT.pptx it is relATED TO NETWORKING
OSPF & DHCP PPT.pptx it is relATED TO NETWORKING
ritikghw
 
CCTV Camera Installation guide of .pdf
CCTV Camera Installation guide   of .pdfCCTV Camera Installation guide   of .pdf
CCTV Camera Installation guide of .pdf
Ebba6
 
Computer Hardware using mostly in daily.
Computer Hardware using mostly in daily.Computer Hardware using mostly in daily.
Computer Hardware using mostly in daily.
manshajunaid205
 
TabulationwjsnnanamamamNananaka of Data.pptx
TabulationwjsnnanamamamNananaka of Data.pptxTabulationwjsnnanamamamNananaka of Data.pptx
TabulationwjsnnanamamamNananaka of Data.pptx
sriyansh4443
 
ppt untuk seminar proposal dan persiapannya
ppt untuk seminar proposal dan persiapannyappt untuk seminar proposal dan persiapannya
ppt untuk seminar proposal dan persiapannya
Rasidinmamakidin
 
Fonepaw Data Recovery Crack 2025 with key free Download
Fonepaw Data Recovery Crack 2025 with key free DownloadFonepaw Data Recovery Crack 2025 with key free Download
Fonepaw Data Recovery Crack 2025 with key free Download
mampisoren09
 
Spectrophotometer instrument basics -.pptx
Spectrophotometer instrument basics -.pptxSpectrophotometer instrument basics -.pptx
Spectrophotometer instrument basics -.pptx
muthulakshmitc
 
荷兰代尔夫特理工大学毕业证书文凭定制TUDelft成绩单定制
荷兰代尔夫特理工大学毕业证书文凭定制TUDelft成绩单定制荷兰代尔夫特理工大学毕业证书文凭定制TUDelft成绩单定制
荷兰代尔夫特理工大学毕业证书文凭定制TUDelft成绩单定制
Taqyea
 
Bone Tubeoudgkaitaurauraurarhafhau4rculosis.pptx
Bone   Tubeoudgkaitaurauraurarhafhau4rculosis.pptxBone   Tubeoudgkaitaurauraurarhafhau4rculosis.pptx
Bone Tubeoudgkaitaurauraurarhafhau4rculosis.pptx
gaisga4er
 
Multilingual hand gesture to speech conversion system
Multilingual hand gesture to speech conversion systemMultilingual hand gesture to speech conversion system
Multilingual hand gesture to speech conversion system
Himabindu905359
 
ADRENAL CORTbsbsbshEX 3 & 4 - 22MBBS.pptx
ADRENAL CORTbsbsbshEX 3 & 4 - 22MBBS.pptxADRENAL CORTbsbsbshEX 3 & 4 - 22MBBS.pptx
ADRENAL CORTbsbsbshEX 3 & 4 - 22MBBS.pptx
c2422429
 
linearly separable and therefore a set of weights exist that are consistent ...
linearly separable and therefore a set of weights exist that are consistent  ...linearly separable and therefore a set of weights exist that are consistent  ...
linearly separable and therefore a set of weights exist that are consistent ...
mebibek_hu
 
Microsoft Office 365 Crack Latest Version 2025?
Microsoft Office 365 Crack Latest Version 2025?Microsoft Office 365 Crack Latest Version 2025?
Microsoft Office 365 Crack Latest Version 2025?
yousfhashmi786
 
00804.pptvjlvpuvupvpyvupv6v07upv60v7vupv0v6p
00804.pptvjlvpuvupvpyvupv6v07upv60v7vupv0v6p00804.pptvjlvpuvupvpyvupv6v07upv60v7vupv0v6p
00804.pptvjlvpuvupvpyvupv6v07upv60v7vupv0v6p
hkrishna9495
 
>parallel desktop Crack Latest Free 2025 | PPT
>parallel desktop Crack Latest Free 2025 | PPT>parallel desktop Crack Latest Free 2025 | PPT
>parallel desktop Crack Latest Free 2025 | PPT
yousfhashmi786
 

Embedded Linux Build Systems - Texas Linux Fest 2018

  • 1. Drew Moseley Solutions Architect Mender.io Comparing embedded Linux build systems and distros
  • 2. Session overview ● Review of embedded Linux development challenges. ● Define build system and criteria. ● Discuss a few popular options. ● Give me an opportunity to learn about some of the other tools. Goal: Help new embedded Linux developers get started
  • 3. About me Drew Moseley ○ 10 years in Embedded Linux/Yocto development. ○ Longer than that in general Embedded Software. ○ Project Lead and Solutions Architect. [email protected] https://twitter.com/drewmoseley https://www.linkedin.com/in/drewmoseley/ https://twitter.com/mender_io Mender.io ○ Over-the-air updater for Embedded Linux ○ Open source (Apache License, v2) ○ Dual A/B rootfs layout (client) ○ Remote deployment management (server) ○ Under active development
  • 4. Challenges for Embedded Linux Developers Hardware variety Storage Media Software may be maintained in forks Cross development Initial device provisioning
  • 5. Simple Makefiles don't cut it (anymore) Facts: ● These systems are huge ● Dependency Hell is a thing ● Builds take a long time ● Builds take a lot of resources ● Embedded applications require significant customization ● Developers need to modify from defaults
  • 6. Build System Defined _Is_ ● Mechanism to specify and build ○ Define hardware/BSP components ○ Integrate user-space applications; including custom code ● Need reproducibility ● Must support multiple developers ● Allow for parallel processing ● (Cross) Toolchains ● License Management _Is Not_ ● An IDE ● A Distribution ● A deployment and provisioning tool ● An out-of-the-box solution
  • 7. Desktop Distros - Overview (or why can’t I just use <favorite-distro>?) You can. Sort-of.
  • 8. Desktop Distros - Details Use installer (or build scripts) from favorite distro Increased usage (Raspberry Pi) Slim down to meet your needs Generally uses prebuilt binaries Imposes (significant?) policy Dependent on distro vendor decisions Likely not targeted at embedded applications May not be cross-development friendly
  • 9. Desktop Distros - Summary Pros: ● Lots of choices to start with ● Developer familiarity ● Large selection of prebuilt packages ● Quick getting started ● Simplicity ● On-target builds are possible Cons: ● Policy imposed by vendor ● Difficulty in removing packages due to dependencies ● Reproducibility is complicated ● On-target builds may be slow ● Off-target builds may be difficult or impossible
  • 10. “It’s not an embedded Linux distribution -- it creates a custom one for you”1 ● Recipes, metadata, dependencies and configuration ● Primary output: package feed ● Secondary output: boot images ● Builds all components from source ● Mechanism, not policy Products: ● Root filesystem image ● Kernel, Bootloader, Toolchain ● Package Feed Yocto Project - Overview 1 See more at https://www.yoctoproject.org
  • 11. Organized into independent layers: ● Separation of functionality ● Allows different release schedules ● Expandability ○ Recipes developed in python and bash SDK mechanism ● Separation of system and application devs ● Easily allows multiple developers to contribute Optimizations: ● Faster build time reusing prebuilt binaries ● Parallel builds Previous ELC talk estimated ~ 8400 software packages available Yocto Project - Details
  • 12. $ git clone -b rocko git://git.yoctoproject.org/poky.git $ source poky/oe-init-build-env $ MACHINE=qemux86 bitbake core-image-minimal $ runqemu qemux86 Yocto Project - Getting Started
  • 13. Yocto Project - Summary Pros: ● Widely supported by board and semiconductor vendors ● Active developer community ● Wide functionality and board support enabled by layer mechanism ● Customizable and expandable ● Minimal native tooling required Cons: ● Steep learning curve ● Unfamiliar environment to non-embedded developers ● Resource-intensive ○ Long initial build times ○ Disk space
  • 14. “Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.”1 ● Primary output: boot images ● Does not support rpm-style package mgmt ● “Firmware Generator” ● Builds all components from source ● Focus on simplicity Products: ● Root filesystem image ● Kernel, Bootloader, Toolchain Buildroot - Overview 1 See more at https://buildroot.org/
  • 15. Buildroot - Details Uses Makefiles and Kconfig ● Widely support and well-known Relatively small images and quick builds BR2_EXTERNAL mechanism ● Local additions stored outside the Buildroot source tree ● Package recipes, defconfigs, etc. Recipes developed in kconfig and make SDK mechanism ● Separation of system and application devs ● Easily allows multiple developers to contribute Previous ELC talk estimated ~ 1800 software packages available
  • 16. Buildroot - Getting Started $ git clone -b 2018.02 https://git.buildroot.net/buildroot $ cd buildroot $ make qemu_arm_vexpress_defconfig $ make $ eval $(grep qemu-system-arm board/qemu/arm-vexpress/readme.txt)
  • 17. Buildroot - Summary Pros: ● Community driven design ● Quick to get started ● Easy to understand ● Active developer community ● Broad architecture and board support Cons: ● Little corporate sponsorship ● Configuration changes require full rebuild ● No reusable shared state by default
  • 18. OpenWRT - Overview “OpenWrt provides a fully writable filesystem with package management.”1 Primary focus is networking ○ Replacement firmware for consumer devices ○ Primarily a binary distribution ○ On-device package management Products: ○ Firmware image in device-specific format ○ Network available package repositories 1 See more at https://openwrt.org/
  • 19. OpenWRT - Build System ● General Linux software build system ● Consists of Makefiles and patches ● Generates a cross-toolchain and root filesystem image ● Uses kconfig ● More details here: ○ https://openwrt.org/docs/guide-developer/build-system
  • 20. OpenWRT - Summary Pros: ● Great choice as replacement firmware ● Good choice for: ○ Router/networking device ○ If your application needs package-based updates Cons: ● Less flexible for general Embedded applications ● Policy imposed by OpenWRT design ● Package based updates can make fleet management difficult
  • 21. Other Criteria ● Hardware vendor provided material ● Training and documentation ● Vendor for support ● Developer experience
  • 22. Related Tools uClinux (http://www.uclinux.org/) ● Port of Linux to systems without a Memory Management Unit ● Kernel 2.6, user applications, libraries and tool chains. crosstool-NG (https://crosstool-ng.github.io/) ● Cross-toolchain generator ● Uses kConfig
  • 23. Other Build Options ELBE (https://github.com/linutronix/elbe) ISAR (https://github.com/ilbers/isar/) Android ((https://source.android.com/) ... To Be Continued...
  • 24. Summary - Use Cases ● Beginner/hobbyist/maker: ○ Commercial dev board/easy getting started ○ Desktop distro or OpenWRT ● Commercial use, single configuration ○ Fast build time/easy getting started ○ Buildroot ● Commercial use, multiple configurations ○ Modular/HW vendor support ○ Yocto Project
  • 25. Summary Yocto Project Buildroot OpenWRT Desktop Distro Expandability Configurability Ease of Getting Started Package Availability Industry Support