26.11.2016 Views

Buildroot vs OpenEmbedded/Yocto Project A Four Hands Discussion

belloni-petazzoni-buildroot-oe_0

belloni-petazzoni-buildroot-oe_0

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Embedded Linux Conference 2016<br />

<strong>Buildroot</strong> <strong>vs</strong>. <strong>OpenEmbedded</strong>/<strong>Yocto</strong> <strong>Project</strong>: A <strong>Four</strong> <strong>Hands</strong><br />

<strong>Discussion</strong><br />

Alexandre Belloni, Thomas Petazzoni<br />

Free Electrons<br />

alexandre.belloni@free-electrons.com<br />

thomas.petazzoni@free-electrons.com<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 1/32


Alexandre Belloni<br />

◮ The <strong>Yocto</strong> <strong>Project</strong> guy for this talk<br />

◮ Embedded Linux engineer/trainer at Free Electrons since 2013<br />

◮ <strong>Yocto</strong> <strong>Project</strong>/OE expert<br />

◮ Maintainer of several Freescale boards in meta-fsl, strong contributor to<br />

meta-atmel<br />

◮ <strong>OpenEmbedded</strong> setup for numerous customers<br />

◮ Trainer for Free Electrons <strong>Yocto</strong> <strong>Project</strong> / <strong>OpenEmbedded</strong> course<br />

◮ And also a kernel contributor: co-maintainer of the RTC subsystem and the Atmel<br />

ARM processor support<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 2/32


Thomas Petazzoni<br />

◮ The <strong>Buildroot</strong> guy for this talk<br />

◮ CTO and Embedded Linux engineer/trainer at Free Electrons since 2008<br />

◮ Strong <strong>Buildroot</strong> contributor<br />

◮ Interim <strong>Buildroot</strong> maintainer<br />

◮ Trainer for Free Electrons <strong>Buildroot</strong> course<br />

◮ And also a kernel contributor: support for Marvell processors<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 3/32


Common aspects<br />

◮ Embedded Linux build systems<br />

◮ Goal is to build a complete, customized, embedded Linux system<br />

◮ Root filesystem, toolchain, kernel, bootloaders<br />

◮ Build from scratch from source<br />

◮ Using cross-compilation<br />

◮ Very actively maintained and developed projects<br />

◮ Widely used in the industry<br />

◮ Well documented, training courses<br />

◮ Free software<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 4/32


<strong>Buildroot</strong>: general philosophy<br />

◮ Strong focus on simplicity<br />

◮ Simple to use, but also simple to understand/extend<br />

◮ Special use cases handled via extension scripts, rather than in <strong>Buildroot</strong> itself<br />

◮ Re-use of existing technologies/languages: kconfig, make.<br />

◮<br />

Learning effort worth the investment<br />

◮ Minimalist: small by default<br />

◮ Purpose-agnostic<br />

◮ Open community, no vendor or bureaucratic/corporate management<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 5/32


<strong>Yocto</strong> <strong>Project</strong>: general philosophy<br />

◮ Support for the major architectures<br />

◮ <strong>OpenEmbedded</strong>: only qemu<br />

◮ <strong>Yocto</strong> <strong>Project</strong>: adds support for a few machines<br />

◮ Only provides core recipes, use layers to get support for more packages and more<br />

machines<br />

◮ Custom modifications should stay in a separate layer<br />

◮ Versatile build system: tries to be as flexible as possible and to handle most use<br />

cases.<br />

◮ Open community but the project is still governed by the <strong>Yocto</strong> <strong>Project</strong> Advisory<br />

Board made up of its corporate sponsors.<br />

◮ <strong>OpenEmbedded</strong> is an independent community driven project.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 6/32


<strong>Buildroot</strong>: output<br />

◮ <strong>Buildroot</strong> main product is a root filesystem image<br />

◮ But also: toolchain, kernel image, bootloaders, etc.<br />

◮ Many formats supported: ext2/3/4, ubifs, iso9660, etc.<br />

◮ No binary packages, no package management system<br />

◮ Some people call it a firmware generator<br />

◮ Updates are not possible via packages<br />

◮ Updates require a full system update, like Android<br />

◮ Belief that partial updates are harmful<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 7/32


<strong>Yocto</strong> <strong>Project</strong>: output<br />

◮ Builds distributions, the main output is a package feed<br />

◮ the package management system is optional on the target<br />

◮ it is possible to install or update only part of the system<br />

◮ Also generates root filesystem images by installing those packages. Supports<br />

the usual ext2/3/4, ubifs, iso9660, etc.. but also VM images: vmdk, vdi, qcow2<br />

◮ Finally, images classes or a tool, wic, can be used to create disk images<br />

◮ Also able to generate an SDK alongside the image to allow application developers<br />

to compile and test their applications without having to integrate it in the build.<br />

But, the SDK has to be kept in sync with the image.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 8/32


<strong>Buildroot</strong>: configuration<br />

◮ Re-uses kconfig from the Linux kernel<br />

◮ Simple {menu,x,n,g}config interface<br />

◮ Entire configuration stored in a single .config/defconfig<br />

◮ Defines all aspects of the system: architecture, kernel version/config, bootloaders,<br />

user-space packages, etc.<br />

◮ make menuconfig, make, profit!<br />

◮ Building the same system for different machines: to be handled separately<br />

◮ A tool can generate defconfig from fragments<br />

◮ Doable, but not super easy<br />

◮ Complete separate build for each machine<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 9/32


<strong>Yocto</strong> <strong>Project</strong>: configuration<br />

◮ The configuration is separated in multiple parts:<br />

◮ Distribution configuration (general package configuration, toolchain and libc<br />

selection,...)<br />

◮ Machine configuration (defines the architecture, machine features, BSP.)<br />

◮ Image recipe (what packages should be installed on the target.)<br />

◮ Local configuration (distribution and default machine selection, how many threads to<br />

use when compiling, whether to remove build artifacts,...)<br />

◮ It is also necessary to gather the various layers that will be used and declare them.<br />

◮ Allows to build the same image for different machines or using different<br />

distributions or different images for one machine.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 10/32


<strong>Buildroot</strong>: layers<br />

◮ Initially: no concept of layers<br />

◮ All packages are maintained in the official repository<br />

◮ Allows for very high quality, thanks to review by experts<br />

◮ Addition of BR2_EXTERNAL<br />

◮ Allows to store package definitions, configurations and other artefacts<br />

◮ One BR2_EXTERNAL only<br />

◮ Generally used for proprietary/custom packages and configurations<br />

◮ Can only add packages, not override the ones in <strong>Buildroot</strong><br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 11/32


<strong>Yocto</strong> <strong>Project</strong>: layers<br />

◮ Layer mechanism allows to modify or add new package or image recipes.<br />

◮ Clear separation between the core build system, the BSP and custom<br />

modifications.<br />

◮ Scales properly, third parties provide their layers with BSPs or a set of recipes<br />

handling their dedicated applications<br />

◮ Layers have to be compatible and use the same OE branch base.<br />

◮ Beware of layer quality, reviews are not systematic.<br />

◮ <strong>OpenEmbedded</strong> Metadata Index lists available layers, recipes, machines:<br />

http://layers.openembedded.org/layerindex/<br />

◮ Also, there is a powerful overrides mechanism allowing to adjust recipe variables<br />

based on the machine or distribution.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 12/32


<strong>Buildroot</strong>/<strong>Yocto</strong> <strong>Project</strong>: toolchain<br />

Similar capabilities<br />

◮ Building their own toolchains, based on gcc, a choice of C libraries (glibc, uClibc,<br />

musl)<br />

◮ Using pre-built external toolchains<br />

◮ Somewhat easier in <strong>Buildroot</strong>, since it’s built-in<br />

◮ Only really properly supported with additional vendor layers in the <strong>Yocto</strong> <strong>Project</strong><br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 13/32


<strong>Buildroot</strong>: new package<br />

package/tmux/Config.in<br />

config BR2_PACKAGE_TMUX<br />

bool "tmux"<br />

depends on BR2_USE_MMU # fork()<br />

select BR2_PACKAGE_LIBEVENT<br />

select BR2_PACKAGE_NCURSES<br />

help<br />

tmux is a terminal multiplexer, it enables a number of terminals<br />

(or windows) to be accessed and controlled from a single terminal.<br />

https://tmux.github.io/<br />

package/tmux/tmux.mk<br />

TMUX_VERSION = 2.1<br />

TMUX_SITE = https://github.com/tmux/tmux/releases/download/$(TMUX_VERSION)<br />

TMUX_LICENSE = ISC<br />

TMUX_LICENSE_FILES = README<br />

TMUX_DEPENDENCIES = libevent ncurses host-pkgconf<br />

$(eval $(autotools-package))<br />

package/tmux/tmux.hash<br />

# Locally computed:<br />

sha256 31564e7bf4bcef2de...f6176 tmux-2.1.tar.gz<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 14/32


<strong>Yocto</strong> <strong>Project</strong>: new package<br />

meta-oe/recipes-extended/tmux/tmux 2.1.bb<br />

SUMMARY = "Terminal multiplexer"<br />

HOMEPAGE = "http://tmux.sourceforge.net"<br />

SECTION = "console/utils"<br />

LICENSE = "ISC"<br />

LIC_FILES_CHKSUM = "file://tmux.c;beginline=3;endline=17;md5=8685b4455...<br />

DEPENDS = "ncurses libevent"<br />

SRC_URI = "git://github.com/tmux/tmux.git;branch=master"<br />

SRCREV ?= "310f0a960ca64fa3809545badc629c0c166c6cd2"<br />

S = "${WORKDIR}/git"<br />

B = "${WORKDIR}/build"<br />

inherit autotools pkgconfig<br />

PACKAGECONFIG ??= ""<br />

PACKAGECONFIG[utempter] = \<br />

"ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=no,libutempter,"<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 15/32


<strong>Buildroot</strong>: complexity<br />

◮ Designed to be simple<br />

◮ Every proposed feature for the core is analyzed in terms of<br />

usefulness/complexity ratio<br />

◮ Core logic written entirely in make, less than 1000 lines of code including 230 lines<br />

of comments<br />

◮ Really easy to understand what is going on, why and how a package is built<br />

◮ Almost as simple as a shell script downloading, extracting, building and installing<br />

your software components one after the other<br />

◮ Detailed documentation, lots of resources/talks<br />

◮ One hour talk sufficient to describe all the internals (ELCE 2014)<br />

◮ Typical feedback on IRC: coming over from <strong>Yocto</strong> and very pleasantly surprised<br />

how much easier it is. This is the first thing that’s stumped me<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 16/32


<strong>Yocto</strong> <strong>Project</strong>: complexity<br />

◮ Somewhat steeper learning curve.<br />

◮ The core is bitbake, a separate project written in python (60kloc).<br />

◮ A set of classes define the common tasks.<br />

◮ Recipes are written in a mix of bitbake specific language, python and shell script.<br />

◮ Logging and debugging allows to understand what is done for each task.<br />

◮ Detailed documentation but many different configuration variables.<br />

◮ It is not always easy to understand the best practices (e.g. Poky should not be<br />

used for production, distro/image modifications should not be done in local.conf,<br />

removing tmp/)<br />

◮ People are still confused by the terminology (<strong>Yocto</strong> <strong>Project</strong>, Poky,<br />

<strong>OpenEmbedded</strong>, bitbake)<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 17/32


<strong>Buildroot</strong>: number/variety of packages<br />

◮ 1800+ packages<br />

◮ Graphics: X.org, Wayland, Qt4/Qt5,<br />

Gtk2/Gtk3, EFL<br />

◮ Multimedia: Gstreamer 0.10/1.x, ffmpeg, Kodi,<br />

OpenGL support for numerous platforms<br />

◮ Languages: Python 2/3, PHP, Lua, Perl,<br />

Erlang, Mono, Ruby, Node.js<br />

◮ Networking: Apache, Samba, Dovecot, Exim,<br />

CUPS, lots of servers/tools<br />

◮ Init systems: Busybox (default), initsysv,<br />

systemd<br />

◮ No support for a toolchain on the target<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 18/32


<strong>Yocto</strong> <strong>Project</strong>: number/variety of packages<br />

◮ Several thousand recipes: around 2200 for oe-core, meta-openembedded,<br />

meta-qt5. More than 8400 known by the Metadata Index (includes duplicates).<br />

◮ Mostly the same packages as <strong>Buildroot</strong><br />

◮ Has layers for more languages: Java, Go, Rust, smalltalk<br />

◮ Still has an active layer for Qt3<br />

◮ meta-virtualization (Docker, KVM, LXC, Xen) and meta-openstack layers<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 19/32


<strong>Buildroot</strong>: approach of dependencies<br />

◮ Minimalistic approach<br />

◮ if a feature can be disabled, it should be disabled by default<br />

◮ Lots of automatic dependencies<br />

◮ i.e., if you enable OpenSSL, you will automatically get SSL support in all other<br />

packages you have enabled that can provide SSL support<br />

◮ Leads to small root filesystems by default, with no effort<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 20/32


<strong>Yocto</strong> <strong>Project</strong>: approach of dependencies<br />

◮ Package configuration is done at the distribution level<br />

◮ Enabling OpenSSL will enable it for all the packages<br />

◮ but it is still possible to disable it for a few packages<br />

◮ inversely, it is possible to enable a feature only for selected packages.<br />

◮ Can be amended at the machine level but this should be avoided.<br />

◮ Each recipe can define its own set of default features to lead to a sane default<br />

configuration.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 21/32


<strong>Buildroot</strong>: updates/security<br />

◮ Releases published every three months: two months of development, one month<br />

stabilization.<br />

◮ Every release includes updates of package versions: both security updates and<br />

major updates.<br />

◮ And also potentially changes in the core infrastructure.<br />

◮ No LTS versions with only security updates so far, users are handling this on their<br />

own, only for the packages they care about<br />

◮ Script to assess the unfixed CVEs in a given <strong>Buildroot</strong> configuration is being<br />

contributed.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 22/32


<strong>Yocto</strong> <strong>Project</strong>: updates/security<br />

◮ Releases published every six months: one release in April, one in October.<br />

◮ Planning and roadmap is available on the wiki:<br />

https://wiki.yoctoproject.org/wiki/<strong>Yocto</strong>_<strong>Project</strong>_v2.1_Status<br />

◮ <strong>Four</strong> milestones with 3 months between M1 and the final release<br />

◮ At least the previous and the current releases have appointed maintainers, they<br />

get security and important fixes but no recipe upgrade.<br />

◮ Older releases are maintained by the community, on a best effort basis.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 23/32


<strong>Buildroot</strong>: detection of configuration changes<br />

◮ <strong>Buildroot</strong> does not try to be smart<br />

◮ When doing a change in the configuration, it does not try to detect what needs to<br />

be rebuilt<br />

◮ Once a package has been built, <strong>Buildroot</strong> will not rebuild it unless you force it<br />

◮ Major configuration changes require a full rebuild<br />

◮<br />

Starts to be annoying for large systems<br />

◮ Minor configuration changes can often be handled without a full rebuild<br />

◮ Requires understanding a bit what you’re doing<br />

◮ No way to share build artefacts between different configurations: one<br />

configuration, one build.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 24/32


<strong>Yocto</strong> <strong>Project</strong>: detection of configuration changes<br />

◮ bitbake maintains a shared State Cache (sstate-cache) to allow incremental<br />

builds.<br />

◮ It detects changes in the inputs of task by creating a checksum of those inputs<br />

◮ This cache is shared between all the builds. Building for similar machines is fast.<br />

◮ It is possible to share that cache across hosts (for example a nightly build server<br />

and a developer machine), allowing to greatly speed up a full build.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 25/32


<strong>Buildroot</strong>: architecture support<br />

◮ Wide range of architecture support<br />

◮ Big ones: ARM(64), MIPS, PowerPC(64), x86/x86-64<br />

◮ But also numerous more specific architectures<br />

◮ Xtensa, Blackfin, ARC, m68k, SPARC, Microblaze, NIOSII<br />

◮ ARM noMMU, especially ARMv7-M<br />

◮ Contributions from architecture vendors<br />

◮ MIPS by Imagination Technologies<br />

◮ PowerPC64 by IBM<br />

◮ ARC by Synopsys<br />

◮ Blackfin by Analog Devices<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 26/32


<strong>Yocto</strong> <strong>Project</strong>: architecture support<br />

◮ In the core: ARM, MIPS, PowerPC, x86 and their 64-bit variants<br />

◮ In separate layers:<br />

◮ Microblaze, NIOSII<br />

◮ Usually silicon vendors maintain their own BSP layers:<br />

◮ meta-intel<br />

◮ meta-altera (both ARM and NIOSII)<br />

◮ meta-atmel, meta-fsl, meta-ti, ...<br />

◮ meta-xilinx (both ARM and Microblaze)<br />

◮ But also community effort:<br />

◮ meta-rockchip, meta-sunxi, ...<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 27/32


<strong>Buildroot</strong>: minimal build<br />

Minimal build (qemu_arm_versatile_defconfig) takes 15 minutes and 25 seconds,<br />

image size is 2.2MB.<br />

ALL<br />

toolchain busybox initscripts skeleton linux rootfs-ext2<br />

toolchain-buildroot<br />

host-mke2img host-fakeroot host-makede<strong>vs</strong><br />

host-gcc-final<br />

host-kmod<br />

host-e2fsprogs<br />

host-genext2fs<br />

uclibc<br />

host-pkgconf<br />

host-gcc-initial<br />

linux-headers<br />

host-binutils<br />

host-mpc<br />

host-mpfr<br />

host-gmp<br />

host-m4<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 28/32


<strong>Yocto</strong> <strong>Project</strong>: minimal build<br />

mklibs-native<br />

byacc-native<br />

db-native<br />

prelink-native<br />

binutils-native<br />

popt-native<br />

acl-native<br />

elfutils-native<br />

virtual/libintl-native<br />

rpm-native<br />

attr-native<br />

pseudo-native<br />

libpcre-native<br />

beecrypt-native<br />

pbzip2-native<br />

bzip2-replacement-native<br />

bzip2-native<br />

texinfo-dummy-native<br />

file-replacement-native<br />

file-native<br />

readline-native<br />

sqlite3-native<br />

ossp-uuid-native<br />

perl-native-runtime-native<br />

python-native<br />

libxslt-native<br />

pigz-native<br />

zlib-native<br />

gettext-minimal-native<br />

m4-native<br />

Native<br />

perl-native-runtime<br />

opkg-native<br />

libxml2-native<br />

openssl-native<br />

cryptodev-linux-native<br />

bison-native<br />

unifdef-native<br />

flex-native<br />

libarchive-native<br />

e2fsprogs-native<br />

util-linux-native<br />

bc-native<br />

texinfo-native<br />

lzo-native<br />

ncurses-native<br />

autoconf-native<br />

opkg-utils-native<br />

libffi-native<br />

automake-native<br />

gnu-config-native<br />

quilt-native<br />

libmpc-native<br />

mpfr-native<br />

libtool-native<br />

pkgconfig-native<br />

makede<strong>vs</strong>-native<br />

kconfig-frontends-native<br />

glib-2.0-native<br />

xz-native<br />

kern-tools-native<br />

git-native<br />

kmod-native<br />

gmp-native<br />

update-rc.d-native<br />

gperf-native<br />

gzip-native<br />

gtk-doc-stub-native<br />

ldconfig-native<br />

gettext-native<br />

virtual/arm-oe-linux-gnueabi-libc-initial<br />

linux-libc-headers<br />

libgcc<br />

virtual/arm-oe-linux-gnueabi-gcc-initial<br />

gcc-cross-initial-arm<br />

libgcc-initial<br />

Toolchain<br />

glibc<br />

virtual/arm-oe-linux-gnueabi-g++<br />

gcc-cross-arm<br />

glibc-initial<br />

virtual/arm-oe-linux-gnueabi-libc-for-gcc<br />

virtual/arm-oe-linux-gnueabi-gcc<br />

gcc-runtime<br />

binutils-cross-arm<br />

virtual/arm-oe-linux-gnueabi-binutils<br />

gcc-source-5.2.0<br />

libtool-cross<br />

virtual/arm-oe-linux-gnueabi-compilerlibs<br />

openssl<br />

sysvinit<br />

packagegroup-core-boot<br />

linux-yocto<br />

libusb1<br />

libffi<br />

zlib<br />

opkg-utils<br />

pciutils<br />

netbase<br />

busybox<br />

cryptodev-linux<br />

base-passwd<br />

libusb-compat<br />

ncurses<br />

db<br />

python<br />

sqlite3<br />

readline<br />

gdbm<br />

bzip2<br />

udev<br />

util-linux<br />

depmodwrapper-cross<br />

virtual/libc<br />

modutils-initscripts init-ifupdown gettext run-postinsts<br />

glib-2.0<br />

kmod<br />

virtual/gettext<br />

virtual/update-alternatives<br />

expat<br />

usbutils<br />

virtual/libiconv<br />

initscripts<br />

update-rc.d<br />

libusb<br />

core-image-minimal<br />

qemuwrapper-cross<br />

module-init-tools<br />

Minimal build (core-image-minimal for qemuarm) takes 50 minutes and 47 seconds,<br />

image size is 4.9MB. With an existing sstate-cache, it takes 1 minute 21 seconds.<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 29/32


License compliance<br />

◮ Both are able to create a list of used licenses<br />

◮ Both are able to detect a license change<br />

◮ <strong>Yocto</strong> <strong>Project</strong> can be configured to exclude GPLv3<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 30/32


<strong>Buildroot</strong>/<strong>Yocto</strong> <strong>Project</strong>: choosing<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 31/32


Questions?<br />

Alexandre Belloni<br />

Thomas Petazzoni<br />

alexandre.belloni@free-electrons.com<br />

thomas.petazzoni@free-electrons.com<br />

Slides under CC-BY-SA 3.0<br />

http://free-electrons.com/pub/conferences/2016/elc/belloni-petazzoni-buildroot-oe/<br />

Free Electrons - Embedded Linux, kernel, drivers and Android - Development, consulting, training and support. http://free-electrons.com 32/32

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!