Buildroot vs OpenEmbedded/Yocto Project A Four Hands Discussion
belloni-petazzoni-buildroot-oe_0
belloni-petazzoni-buildroot-oe_0
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