The Yocto GENIVI Baseline Overview Automotive Linux 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 x86-64 QEMU machine, systemd 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
History Revisited GENIVI Baseline Horizon 2014 Gemini GENIVI Alliance est. March 2009 2009 K2 6.2 2008 1.0 2011 2010 K2 A-Sample 2013 2012 Cassini Borg Apollo Foton Excalibur Discovery BMW, Intel, Wind River, MM 3
History Revisited GENIVI Baseline Horizon 2014 Gemini The Yocto Project 2014 Foton 2013 Excalibur 2013 2012 Cassini Borg 2011 Apollo Discovery The Yocto Project announced March 2011 2012 2011 GENIVI Alliance est. March 2009 1.0 2010 2009 K2 A-Sample K2 6.2 2008 4
History Revisited GENIVI Baseline Horizon 2014 5.0 (Gemini) meta-ivi 2014 5.0 6.0 The Yocto Project 1.6 2014 1.5 (dora) 4.0 (Foton) 2013 3.0 (Excalibur) 4.0 2013 3.0 1.4 (dylan) 2013 1.3 (danny) 2.0 (Discovery) 2012 Cassini meta-ivi layer est. April 2012 denzil 2012 1.2 (denzil) 2012 1.0 (Borg) 2011 Apollo The Yocto Project announced March 2011 2011 GENIVI Alliance est. March 2009 1.0 2010 2009 K2 A-Sample K2 6.2 2008 5
History Revisited GENIVI Baseline Yocto GENIVI Baseline July 2013 GENIVI OSS Projects ALS 2012, September 2012 2012 Cassini 2011 2013 1.0 (Borg) Apollo Horizon 2014 5.0 (Gemini) 4.0 (Foton) 3.0 (Excalibur) 2.0 (Discovery) meta-ivi layer est. April 2012 meta-ivi 4.0 2013 3.0 denzil 2012 2014 5.0 6.0 The Yocto Project announced March 2011 The Yocto Project 2012 2011 1.6 2014 1.5 (dora) 1.4 (dylan) 2013 1.3 (danny) 1.2 (denzil) GENIVI Alliance est. March 2009 1.0 2010 2009 K2 A-Sample K2 6.2 2008 6
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 Linux Foundation 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
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
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
Yocto GENIVI Baseline Building Blocks multimedia multimedia connectivity graphics graphics gnome devtools connectivity extended kernel support core extended support Poky meta-ivi 10
Building Blocks Poky (kernel + core) kernel multimedia kmod linux-yocto connectivity graphics core gnome extended kernel Poky devtools support core base-files base-passwd busybox coreutils dbus eglibc expat glib-2.0 kbd libxml2 ncurses netbase readline systemd / udev util-linux 11
Building Blocks Poky (support+extended) support multimedia connectivity gnome extended graphics devtools support acl attr beecrypt curl db gnutls icu libcap libgcrypt extended libgpg-error libnl libpcre libtasn1 libusb1 libusb-compat popt sqlite3 xuser-account kernel Poky core iptables libpam procps quota shadow 12
Building Blocks Poky (devtools + gnome) devtools multimedia connectivity gnome extended kernel Poky graphics devtools support core e2fsprogs elfutils file gcc-runtime libgcc libjson ossp-uuid python-smartpm rpm gnome libffi 13
Building Blocks Poky (connect.+graphics) connectivity multimedia connectivity gnome extended kernel Poky graphics devtools support core avahi bluez connman ofono openssl wireless-tools wpa-supplicant graphics cairo drm fontconfig freetype mesa wayland xcb xorg-app xorg-driver xorg-font xorg-lib xorg-proto xorg-xserver 14
Building Blocks Poky (multimedia) multimedia multimedia connectivity gnome graphics devtools alsa gstreamer libsamplerate libsndfile pulseaudio speex extended support kernel core Poky 15
Building Blocks meta-ivi audiomanager distro/poky-ivi-systemd.conf gemini-image layer-management obexd common-api dlt-daemon node-startup-controller node-state-manager ecryptfs-utils fuse keyutils multimedia graphics connectivity extended support meta-ivi GENIVI OSS Projects libical 16
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
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
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
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
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/recipesyocto-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
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
Questions? 23
Thank you! contact info Holger Behrens holger.behrens@windriver.com @hbrns 24
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