2. What is OpenBricks ?
Enterprise-grade embedded
Linux framework and build system.
For easy and custom Linux distribution bring-up.
Runs on a wide variety of hardware.
For rapid prototyping or full-blown product development.
• “Hum, seems like I’ve already heard about that ...
So how is it different from … ?”
B. Zores – FOSDEM 2011
3. State of the Art
2011 Embedded Linux build systems:
• OpenEmbedded (Angström, Poky, Yocto, ...)
• Buildroot
• OpenWRT
• T2 SDE
• Linux Target Image Builder (LTIB)
• “Professional”: Windriver, Montavista, Mentor Graphics …
• And now OpenBricks ??
• More details in a further talk, but in the mean time:
http://tinyurl.com/EmbeddedLinuxBuildSystems
B. Zores – FOSDEM 2011
5. The 5 minutes Overview
Embedded Linux build framework
for individuals and/or enterprises for either
easy prototyping or full-blown products development.
Replaces traditional BSPs with a fine-grained
package tuning ability (through kconfig interface).
Support for x86, ARM, PowerPC and MIPS architectures
with reference boards optimizations.
Brings up low-level system and features
major applicative frameworks (Qt, EFL, GTK, SDL)
for developers to only focus on end-user applications.
Multimedia-oriented but with general purpose:
• Currently sustains the GeeXboX STB OS project.
• But allow you to build your unique one too …
B. Zores – FOSDEM 2011
6. Supported Architectures
x86 (32/64 bits):
from generic builds to custom ATOM/ION optimized ones.
PowerPC (32/64 bits)
MIPS (32 bits)
ARM:
• ARM9 (e.g. Marvell Kirkwood …)
• ARM11 (e.g. Broadcom BCM11107 Persona family …)
• Cortex A8 / A9 (e.g. TI OMAP3, TI OMAP4, nVidia Tegra250 …)
With known reference boards optimizations:
Beagleboard, IGEPv2, Touchbook, Pandaboard …
Much more to be expected:
Freescale i.MX, Qualcomm SnapDragon,
Marvell Armada, Intel CE4xxx …
B. Zores – FOSDEM 2011
7. Applicative Features
Supported Languages:
• Shell, C, C++, Python, Perl, Lua, Vala
Supported Frameworks:
• Nokia Qt 4.7.1 with support for:
• Webkit
• QtMobility
• QtDeclarative / QML
• Enlightenment EFL 1.0
• GTK+ 2.22
• SDL Simple DirectMedia Layer 1.2
B. Zores – FOSDEM 2011
8. Multimedia Features - Graphics
Native framebuffer interface.
Accelerated DirectFB engine.
Accelerated X11 Infrastructure.
Support for Khronos group standards:
• EGL Native Platform Graphics Interface
• Desktop OpenGL 3.0
• Embedded OpenGL|ES 2.1
• Embedded OpenVG 1.0
• Provided either by Mesa or by manufacturer’s binary blobs.
B. Zores – FOSDEM 2011
9. Multimedia Features - Audio/Video
Audio Frameworks:
• ALSA, PulseAudio
Software Video Frameworks:
• SMP-optimized FFmpeg decoders.
Hardware Video Frameworks:
• Khronos OpenMAX (OMAP3, OMAP4, Tegra2).
• nVidia VDPAU (x86 with nVidia GeForce GPU).
• Freedesktop VA-API (x86 with Intel or ATI GPUs).
• Broadcom CrystalHD (BCM 70012/70015 chips).
• Other native SoC acceleration (OMAP3, OMAP4).
B. Zores – FOSDEM 2011
10. Multimedia Features - Applications
Frameworks and Players:
• MPlayer, Xine, GStreamer, VLC
• libplayer Audio/Video abstraction framework
Media Center frontends:
• XBMC
• Video Disk Recorder (VDR)
• Enna
• HTS Showtime
• Nokia QtMediaHub
• MythTV
B. Zores – FOSDEM 2011
11. Build System Overview
Fully POSIX shell scripts based:
• Easy understanding, hacking and maintenance ...
• … at least much more than obfuscated Makefiles or Python stuff ;-)
Does not require any externals tools or environment.
• Required host build tools and packages are built along the way.
• Cross-Compilation Safety and Robustness
• Triggers GCC internal errors on -I/usr/include and -L/usr/lib
Fully customizable:
• Supports customized distribution flavours
pre-generated configurations.
• Complete standalone package/feature selection
through Kconfig interface.
• Per-package fine-tuning through use flags (similar to Gentoo).
Features per-package metadata rules for abstracted in/out.
With more than 550 supported packages.
B. Zores – FOSDEM 2011
12. Toolchain Overview
Support for multiple GCC-based cross-compilers:
• OpenBricks multi-architectures native one.
• Linaro for ARM.
• CodeSourcery for ARM.
• Support for multiple C libraries:
• GNU libc (glibc)
• Embedded GLIBC (eGlibc). This is default one !
• uClibc
• klibc (for early ramdisk bits).
Do your own mix !
B. Zores – FOSDEM 2011
13. Configuration Overview (1/2)
Up to 3-levels of hardware configuration tuning:
• Architecture (e.g. ARM, x86 …)
• Platform (e.g generic, OMAP3, OMAP4 …)
• Machine (e.g. generic, Beagleboard, IGEPv2 …)
• The deeper, the more optimized (footprint, selected packages …),
but the less portable …
-> it’s up to you to choose depending on your needs !
Automatic package inter-dependencies
selection and build process.
Support for per arch/platform/machine package overlay.
B. Zores – FOSDEM 2011
14. Configuration Overview (2/2)
Features fine-tuning through “use flags” (similar to Gentoo):
• Conditionally build specific features.
• Enable flags per-package or system-wide.
• You can also have package-specific flags.
• Infinite number of them …
Pre-determined packages subset, a.k.a. build flavours:
• Minimalist base bootable system.
• GeeXboX MediaCenter-oriented distribution.
• Add your own distro here !
B. Zores – FOSDEM 2011
15. Key Build Framework Features
Bleeding-edge packages: latest stable package version policy.
Support for arch/platform/machine
specific package overlay (sources, patches …).
Modern user-space: systemd, udev, D-Bus, connman …
Stuff gets packaged into low-resources OPKG packages.
Multiple OPK build residue: runtime, devel, debug.
Multiple target system delivery forms:
• Flashable disk images: JFFS2, UBIFS, EXT 2/3/4.
• x86 LiveCD (ISO) and network (PXE) bootable images.
• Flat root filesystem
• Virtual machines images: QEMU, VMware
B. Zores – FOSDEM 2011
16. Package Description Template
Files Structure:
• build: cross-build rules
• install: installation rules for target (optional)
• installdev: installation rules for host toolchain (optional)
• meta: metadata, use flags and package description.
• unit (optional)
• package.service: systemd service.
• patches (optional)
• 01_fix.diff
• 02_feature.diff
• series (optional)
B. Zores – FOSDEM 2011
17. “Simple” package example: syslink (1/4)
●
Metadata description:
PKG_NAME=syslink
PKG_VERSION=0.24.9.2
PKG_URL="$DISTRO_SRCS/tisyslink-${PKG_VERSION}.tar.bz2"
PKG_REV=1
PKG_DEPENDS="$TARGET_LIBC tiler"
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY=optional
PKG_SECTION=libs
PKG_SHORTDESC="TI OMAP4 SysLink DSP interface"
PKG_LONGDESC="SysLink is the next generation IPC driver
developed for OMAP4 and beyond. SysLink is an evolution of
both the previous-generation IPC drivers - DSPBridge and
DSPLink."
B. Zores – FOSDEM 2011
18. “Simple” package example: syslink (2/4)
Build Rules:
#!/bin/sh
. config/options
cd $BUILD/$1*
do_configure
--disable-debug
make
make_install
B. Zores – FOSDEM 2011
23. How you can one help (or get helped) ?
Get some help or information:
• Website provides a complete documentation on build system internals.
• On our mailing list: devel@openbricks.org
Join the development team:
• Add new packages, hence features.
• Add support for new/more hardware (yours ?).
• Increase flavours support by adding your custom distribution subset.
Sponsor us with a couple of reference boards.
• Only way for the team to really support your architecture …
• We’re still interested in Intel / Freescale / Qualcomm / Marvell boards.
Donations
• The usual way: helps us buy new toys to be supported ...
B. Zores – FOSDEM 2011