The Yocto GENIVI Baseline – Overview

Automotive Summit, Fall 2013 Holger Behrens, Wind River Automotive Solutions Abstract

The Yocto GENIVI Baseline, a public project of the GENIVI Alliance, based on the Yocto Projects layer for In-Vehicle Infotainment, meta-ivi and the Yocto Projects reference system Poky.

meta-ivi contains specific metadata to define tasks to build a Yocto GENIVI Baseline image for either ARMv7a, IA-32, or a -64 QEMU machine, specific distribution data sets, and the additional package meta data needed to turn the Yocto Projects reference system Poky into GENIVI compliant system.

This presentation gives an overview of the building block used by the GENIVI Alliance to create a software baseline that complies to its latest specification.

2 | © 2013 Wind River. All Rights Reserved. History Revisited

GENIVI Baseline Horizon 2014 Gemini

Foton 2013 Excalibur

Discovery 2012 Cassini Borg

Apollo2011

20101.0 GENIVI Alliance est. March 2009 2009 K2 A-Sample BMW, , Wind River, MM K2 6.2 2008

3 | © 2013 Wind River. All Rights Reserved. History Revisited

GENIVI Baseline The Yocto Project Horizon 2014 2014 Gemini

Foton 2013 2013 Excalibur

Discovery 2012 2012 Cassini Borg The Yocto Project announced March 2011 Apollo2011 2011

20101.0 GENIVI Alliance est. March 2009 2009 K2 A-Sample

K2 6.2 2008

4 | © 2013 Wind River. All Rights Reserved. History Revisited

GENIVI Baseline meta-ivi The Yocto Project Horizon 6.0 1.6 2014 2014 2014 5.0 (Gemini) 5.0 1.5 (dora)

4.0 (Foton) 4.0 1.4 (dylan) 2013 2013 2013 3.0 (Excalibur) 3.0 1.3 (danny)

2.0 (Discovery) denzil 1.2 (denzil) 2012 meta-ivi layer 2012 2012 Cassini est. April 2012 1.0 (Borg) The Yocto Project announced March 2011 Apollo2011 2011

20101.0 GENIVI Alliance est. March 2009 2009 K2 A-Sample

K2 6.2 2008

5 | © 2013 Wind River. All Rights Reserved. History Revisited

GENIVI Baseline meta-ivi The Yocto Project Horizon 6.0 1.6 2014 2014 2014 5.0 (Gemini) 5.0 1.5 (dora) Yocto GENIVI Baseline July 2013 4.0 (Foton) 4.0 1.4 (dylan) 2013 2013 2013 GENIVI OSS Projects 3.0 (Excalibur) 3.0 1.3 (danny) ALS 2012, September 2012 2.0 (Discovery) denzil 1.2 (denzil) 2012 meta-ivi layer 2012 2012 Cassini est. April 2012 1.0 (Borg) The Yocto Project announced March 2011 Apollo2011 2011

20101.0 GENIVI Alliance est. March 2009 2009 K2 A-Sample

K2 6.2 2008

6 | © 2013 Wind River. All Rights Reserved. About Yocto GENIVI Baseline

The meta-ivi based Yocto GENIVI Baseline is a GENIVI compliant Linux distribution for a variety of embedded devices. The meta-ivi project aligns itself with The Yocto Project, and the distribution is the result of making the Yocto Project reference system Poky GENIVI compliant.

The Yocto Project is a workgroup whose goal is to produce tools and processes that will enable the creation of Linux distributions for embedded software that are independent of the underlying architecture of the embedded software itself. The Yocto Project is an open source project whose focus is on improving the software development process for embedded Linux distributions. The Yocto Project provides interoperable tools, metadata, and processes that enable the rapid, repeatable development of Linux-based embedded systems.

7 | © 2013 Wind River. All Rights Reserved. Yocto GENIVI Basline – Inputs

. Yocto Project 1.5 – Poky 10.0 – URI: git://git.yoctoproject.org/poky branch: dora . Collection of software related to In-Vehicle Infotainment systems – meta-ivi layer – URI: git://git.yoctoproject.org/meta-ivi branch: 5.0

8 | © 2013 Wind River. All Rights Reserved. Supported Machines

We do smoke test the builds of the three machines that we currently support:

. QEMU (ARMv7) – emulated machine: vexpressa9 . QEMU (IA-32) – emulated machine: qemux86 . QEMU (x86-64) – emulated machine: qemux86-64

Please check the Yocto GENIVI Baseline wiki regarding any community supported machines.

9 | © 2013 Wind River. All Rights Reserved. Yocto GENIVI Baseline – Building Blocks

multimedia multimedia

connectivity graphics graphics

gnome devtools connectivity

extended support extended

kernel core support

Poky meta-ivi

10 | © 2013 Wind River. All Rights Reserved. Building Blocks – Poky (kernel + core)

kernel

multimedia • kmod • linux-yocto

connectivity graphics core

gnome devtools • base-files • libxml2 • base-passwd • ncurses • busybox • netbase extended support • coreutils • readline • dbus • systemd / kernel core • eglibc • util-linux • expat • glib-2.0 Poky • kbd

11 | © 2013 Wind River. All Rights Reserved. Building Blocks – Poky (support+extended)

support • acl • libgpg-error multimedia • attr • libnl • beecrypt • libpcre • curl • libtasn1 connectivity graphics • db • libusb1 • gnutls • -compat • icu • popt gnome devtools • libcap • sqlite3 • libgcrypt • xuser-account extended support extended

kernel core • iptables • libpam Poky • procps • quota • shadow

12 | © 2013 Wind River. All Rights Reserved. Building Blocks – Poky (devtools + gnome)

devtools • e2fsprogs multimedia • elfutils • file • gcc-runtime connectivity graphics • libgcc • libjson • ossp-uuid gnome devtools • python-smartpm • rpm extended support gnome

kernel core • libffi

Poky

13 | © 2013 Wind River. All Rights Reserved. Building Blocks – Poky (connect.+graphics)

connectivity • avahi multimedia • bluez • connman • connectivity graphics • openssl • wireless-tools • wpa-supplicant gnome devtools graphics

extended support • cairo • xorg-driver • drm • xorg-font kernel core • fontconfig • xorg-lib • freetype • xorg-proto • mesa • xorg-xserver Poky • wayland • xcb • xorg-app

14 | © 2013 Wind River. All Rights Reserved. Building Blocks – Poky (multimedia)

multimedia • alsa multimedia • gstreamer • libsamplerate • libsndfile connectivity graphics • pulseaudio • speex gnome devtools

extended support

kernel core

Poky

15 | © 2013 Wind River. All Rights Reserved. Building Blocks – meta-ivi distro/poky-ivi-systemd.conf gemini-image audiomanager layer-management obexd multimedia common-api graphics dlt- node-startup-controller connectivity

node-state-manager extended ecryptfs-utils support fuse keyutils meta-ivi

GENIVI OSS Projects libical

16 | © 2013 Wind River. All Rights Reserved. Setup Build Environment

. mkdir $HOME/yocto-genivi-baseline . cd $HOME/yocto-genivi-baseline . git clone git://git.yoctoproject.org/poky . cd poky; git checkout dora; cd - . git clone git://git.yoctoproject.org/meta-ivi . cd meta-ivi; git checkout 5.0; cd . source poky/oe-init-build-env . $EDITOR conf/bblayers.conf . $EDITOR conf/local.conf

17 | © 2013 Wind River. All Rights Reserved. Setup Build Environment – local.conf

Add to the end of the file (conf/local.conf)

INCOMPATIBLE_LICENSE = "GPLv3" DISTRO = "poky-ivi-systemd" BB_NUMBER_THREADS = “8" PARALLEL_MAKE = "-j 8" #MACHINE = "vexpressa9" #MACHINE = "qemux86-64" MACHINE = "qemux86"

18 | © 2013 Wind River. All Rights Reserved. Setup Build Environment – bblayers.conf

. Add the meta-ivi and meta-ivi-bsp path to the $BUILDDIR/conf/bblayers.conf BBLAYERS variable.

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf # changes incompatibly LCONF_VERSION = "6"

BBPATH = "${TOPDIR}" BBFILES ?= ""

BBLAYERS ?= " \ /var/lib/jenkins/yocto-genivi-baseline/poky/meta \ /var/lib/jenkins/yocto-genivi-baseline/poky/meta-yocto \ /var/lib/jenkins/yocto-genivi-baseline/poky/meta-yocto-bsp \ /var/lib/jenkins/yocto-genivi-baseline/meta-ivi \ /var/lib/jenkins/yocto-genivi-baseline/meta-ivi/meta-ivi-bsp \ " BBLAYERS_NON_REMOVABLE ?= " \ /var/lib/jenkins/yocto-genivi-baseline/poky/meta \ /var/lib/jenkins/yocto-genivi-baseline/poky/meta-yocto \ "

19 | © 2013 Wind River. All Rights Reserved. Build Yocto GENIVI Basline Image

Build gemini-image including GENIVI 5.0 (Gemini) components

. bitbake gemini-image

Depending on your internet connection (most all of the sources are downloaded), and the configuration of your build machine, this make take time. https://wiki.yoctoproject.org/wiki/Build_Performance

20 | © 2013 Wind River. All Rights Reserved. Parsing recipes...done. Parsing of 877 .bb files complete (0 cached, 877 parsed). 1207 targets, 78 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies

Build Configuration: BB_VERSION = "1.20.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-12.04" TARGET_SYS = "i586-poky-linux" MACHINE = "qemux86" DISTRO = "poky-ivi-systemd" DISTRO_VERSION = "5.0.0" TUNE_FEATURES = "m32 i586" TARGET_FPU = "" meta meta-yocto meta-yocto-bsp = "dora:4d8ab87d25ea6e59dc88375813ef88ee0ac813d0" meta-ivi meta-ivi-bsp = "5.0:a18d27d3716706dcf036f88acce96900bc0641b8"

NOTE: Preparing runqueue NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks […] NOTE: recipe gemini-image-5.0.0-r0: task do_populate_lic: Started NOTE: recipe gemini-image-5.0.0-r0: task do_rootfs: Started NOTE: recipe gemini-image-5.0.0-r0: task do_populate_lic: Succeeded NOTE: recipe gemini-image-5.0.0-r0: task do_rootfs: Succeeded NOTE: Running noexec task 4099 of 4099 (ID: 12, /var/lib/jenkins/yocto-genivi-baseline/meta-ivi/recipes- yocto-ivi/images/gemini-image.bb, do_build) NOTE: Tasks Summary: Attempted 4099 tasks of which 342 didn't need to be rerun and all succeeded.

Summary: There were 3 WARNING messages shown.

21 | © 2013 Wind River. All Rights Reserved. Yocto GENIVI Baseline – Run Emulator

. QEMU (ARMv7) – emulated machine: vexpressa9

$HOME/yocto-genivi-baseline/meta-ivi/scripts/runqemu \ gemini-image vexpressa9

. QEMU (IA-32) – emulated machine: qemux86

$HOME/yocto-genivi-baseline/poky/scripts/runqemu \ gemini-image qemux86

. QEMU (x86-64) – emulated machine: qemux86-64

$HOME/yocto-genivi-baseline/poky/scripts/runqemu \ gemini-image qemux86-64

22 | © 2013 Wind River. All Rights Reserved. Questions?

23 | © 2013 Wind River. All Rights Reserved. Thank you!

contact info Holger Behrens [email protected] @hbrns

24 | © 2013 Wind River. All Rights Reserved. References

1. https://projects.genivi.org/ 2. https://projects.genivi.org/GENIVI_Baselines/meta-ivi 3. https://git.yoctoproject.org/cgit/cgit.cgi/meta-ivi/ 4. https://wiki.yoctoproject.org/wiki/Releases 5. https://www.yoctoproject.org/about 6. https://git.yoctoproject.org/cgit/cgit.cgi/poky/ 7. https://www.yoctoproject.org/ecosystem/compliance-program-registrar

25 | © 2013 Wind River. All Rights Reserved.