Embedded Linux

Alex J Lennon (ajlennon@dynamicdevices.co.uk)

https://slides.com/ajlennon/embedded-linux

Overview

 

  • A bit about me / Arcom & Embedded Linux
  • A brief history of Embedded Linux
  • What do I need to build Embedded Linux?
  • Demo - Building with Yocto / OpenEmbedded
  • Demo - Talking about 'recipes' (if time allows)
  • Demo - Using Mono .NET with Linux (if time allows)
  • Thoughts on the future
  • Questions (& perhaps some answers!)

Arcom & Embedded Linux

  • Started at Arcom Control Systems in Cambridge in '96
  • 188EB / 386EX target boards,
  • Mainly C & Assembler code (Borland Turbo C!)
  • Bare Metal, DOS, RTOSses (QNX, pSOS, VxWorks)

AIM104-386EX ('98)

Target 188EB ('96)

AIM104-MULTI-IO

AIM104-ADC16-IN8

AIM104-RELAY8-IN8

AIM104-SER4

Stackable PC/104 I/O

First Linux Capable Board!

SBC104 (1996)

  • 25MHz 386
  • BIOS
  • 2MB or 4MB DRAM
  • 1MB or 4MB Internal FLASH
  • Support for M-SYSTEMS Disk On Chip
  • RTC, Floppy/IDE Interface, LPP/SPPx2

Disk-On-Module

Linux is going to be BIG !!!

Nah!!!

The proof!

SBC-MediaGX (1999)

  • 233MHz x86 CPU
  • EBX Form Factor
  • <= 128MB RAM
  • <= 16MB onboard Flash
  • FDD/HDD interface

Viper ('2003)

  • 400MHz PXA255 ARM XScale
  • PC/104 bus
  • <= 64MB RAM
  • <= 16MB onboard Flash
  • USB/CF/Serial/GPIO

Arcom Embedded Linux (AEL)

Development Kits with Free Tux Penguin!!!

And Now?

A Brief History of Embedded Linux

Timeline

  • 1995 - BusyBox created. Debian installer on 1.44 FDD
  • 1997 - LRP (Linux Router Project) created
  • 1999 - ARM support, MTD layer work starts (block flash), ucLibC work starts

     *** People are rolling their own embedded distros.

Linux goes Mobile ***

  • 2001 - BuildRoot project starts for cross-compilation
  • 2001 - Sharp creates Zaurus SL-500D running Linux, OpenZaurus project created
  • 2003 - OpenEmbedded created from OpenZaurus, Familiar Linux, OpenSIMpad
  • 2004 - Poky Linux created based on OpenEmbedded, OpenWRT created for LinkSys WRT54G
  • 2010 - Intel Spin out Poky Linux as the Yocto Project

(Thanks to Chris Simmonds' "A timeline for embedded Linux" for this)

Today?

  • More than 2 billion monthly active Android devices (running Embedded Linux)
    ref: https://www.macrumors.com/2017/05/17/2-billion-active-android-devices

ref: https://www.linux.com/news/embedded-linux-keeps-growing-amid-iot-disruption-says-study

What do I need to build Embedded Linux?

 

Should I cross compile or build on the target?

Cross compilation is

  • faster (usually)
  • replicable (if we archive sources)
  • retargetable (we can change target)

What do I need to cross compile Embedded Linux?

  • A host PC to do my build
     
  • A target board with a supported architecture (e.g. ARM) to run my build
     
  • A build system to manage the cross compilation of packages, dependencies between packages, and creation of an image I can run on the target 
    • Buildroot (https://buildroot.org)
      • May be easier to get started
      • Has a following. I haven't used this myself.

What do I need to cross compile Embedded Linux?

  • A build system to manage the cross compilation of packages, dependencies between packages, and creation of an image I can run on the target
    • LTIB (http://ltib.org)
      • I have had trouble with this
      • Limited support for packages
    • Yocto (https://www.yoctoproject.org)
      • There is a learning curve, but it is a comprehensive flexible build environment with lots of package support

What are the components of Yocto?

  • "BitBake is a make-like build tool with the special focus of distributions and packages for embedded Linux cross compilation, although it is not limited to that."

 

  • Meta-data to describe how to build an image, there is some core data, and the rest is provided in layers (BSP etc.)

    https://layers.openembedded.org

Where do I get Yocto?

  • Some vendors, such as NXP, provide their own tested release for their own reference boards.
  • Alternatively follow the Yocto Project Quick Start and download the community sources.

    Use a release branch or master if you are feeling brave.

Yocto Releases

https://wiki.yoctoproject.org/wiki/Releases
Sumo 2.5 April 2018   Not started 19.0 1.38
Rocko 2.4 Fall 2017   Development 18.0 1.36
Pyro 2.3 May 2017 2.3.1 Stable 17.0 1.34
Morty 2.2 Nov 2016 2.2.1 Stable 16.0 1.32
Krogoth 2.1 Apr 2016 2.1.3 Community 15.0 1.30
Jethro 2.0 Nov 2015 2.0.3 Community 14.0 1.28
Fido 1.8 Apr 2015 1.8.2 Community 13.0 1.26
Dizzy 1.7 Oct 2014 1.7.3 Community 12.0 1.24
Daisy 1.6 Apr 2014 1.6.3 Community 11.0 1.22
Dora 1.5 Oct 2013 1.5.4 Community 10.0 1.20
Dylan 1.4 Apr 2013 1.4.3* Community 9.0 1.18
Danny 1.3 Oct 2012 1.3.2 Community 8.0 1.16
Denzil 1.2 Apr 2012 1.2.2 Community 7.0 1.15
Edison 1.1 Oct 2011? 1.1.2 Community 6.0 1.13
Bernard 1.0 ??? 2011? 1.0.2 Community 5.0 1.11
Laverne 0.9 ??? 2010?     4.0 1.11
Purple N/A ??? ????     3.2  
Pinky N/A ??? ????     3.1  
Blinky N/A ??? ????     3.0  
Clyde N/A ??? ????     2.0  
Inky N/A ??? ????     1.0
 

Yocto Layers

https://layers.openembedded.org
openembedded-core Core metadata Base git://git.openembedded.org/openembedded-core
meta-oe Additional shared OE metadata Base git://git.openembedded.org/meta-openembedded
e100-bsp Ettus E1XX series BSP Machine (BSP) git://github.com/EttusResearch/meta-ettus.git
e300-bsp Ettus E3XX Series BSP Machine (BSP) https://github.com/EttusResearch/meta-ettus.git
meta-96boards BSP Layer for 96boards platforms Machine (BSP) https://github.com/96boards/meta-96boards
meta-aarch64 AArch64 (64-bit ARM) architecture support Machine (BSP) git://git.linaro.org/openembedded/meta-linaro.git
meta-acer Acer machines support Machine (BSP) git://github.com/shr-distribution/meta-smartphone.git
meta-altera Altera SoC BSP layer Machine (BSP) https://github.com/kraj/meta-altera
meta-amd AMD board support common layer (official) Machine (BSP) git://git.yoctoproject.org/meta-amd
meta-amdfalconx86 AMD Falcon board support layer (official) Machine (BSP) git://git.yoctoproject.org/meta-amd
meta-arduino Board Support for the Arduino Yún Machine (BSP) https://gitlab.com/toganlabs/meta-arduino
meta-artik Yocto BSP layer for Samsung Artik boards Machine (BSP) https://github.com/resin-os/meta-artik
meta-asus Asus machines support Machine (BSP) git://github.com/shr-distribution/meta-smartphone.git
meta-at-chip Beck IPC LINUX@CHIP metadata layer Machine (BSP) https://github.com/beck-ipc/meta-at-chip.git
meta-atmel Official Yocto Project layer for Atmel SoCs Machine (BSP) git://github.com/linux4sam/meta-atmel.git
meta-beagleboard Support for beagleboard.org devices Machine (BSP) git://github.com/beagleboard/meta-beagleboard.git
meta-bug BugLabs bug20 machine support Machine (BSP) git://github.com/buglabs/meta-bug.git
meta-bytesatwork Official BSP layer for bytesatwork based platform Machine (BSP) git://github.com/bytesatwork/meta-bytesatwork.git
meta-cavium-arm BSP layer for arm64 based Cavium Thunderx SoC's Machine (BSP) https://github.com/mjaggi-cavium/meta-cavium-arm
meta-chip Yocto BSP layer for C.H.I.P. boards Machine (BSP) https://github.com/agherzan/meta-chip.git
meta-ci20 Meta layer to support Creator CI20 mips boards Machine (BSP) https://github.com/akuster/meta-ci20
meta-cubox SolidRun CuBox platform BSP Machine (BSP) git://github.com/dv1/meta-cubox.git
meta-digi-arm Support for Digi ConnectCore/ConnectCard Modules Machine (BSP) https://github.com/digi-embedded/meta-digi
meta-dra7xx-evm Tizen BSP layer for DRA7XX-EVM Machine (BSP) https://github.com/vitalyvch/meta-dra7xx-evm.git
meta-efikamx Genesi Efika MX machine support Machine (BSP) git://github.com/kraj/meta-efikamx.git
meta-exynos BSP layer for exynos based machines Machine (BSP) https://github.com/slimlogic/meta-exynos.git
meta-freescale Freescale/NXP BSP layer Machine (BSP) https://git.yoctoproject.org/git/meta-freescale
meta-freescale-3rdparty Freescale ARM hardware support (extra boards) Machine (BSP) git://github.com/Freescale/meta-freescale-3rdparty.git
meta-fsl-arm Freescale ARM hardware support Machine (BSP) git://git.yoctoproject.org/meta-fsl-arm
meta-fsl-ppc Freescale PowerPC hardware support Machine (BSP) git://git.yoctoproject.org/meta-fsl-ppc
meta-geeksphone geeksphone device support Machine (BSP) git://github.com/shr-distribution/meta-smartphone.git
meta-gumstix Gumstix board support (official) Machine (BSP) git://github.com/gumstix/meta-gumstix.git
meta-gumstix-community Gumstix board support (unofficial community BSP) Machine (BSP) https://github.com/schnitzeltony/meta-gumstix-community
meta-gumstix-extras Gumstix board support extras (official) Machine (BSP) https://github.com/gumstix/meta-gumstix-extras.git
meta-handheld Older handheld device support (Zaurus, iPAQ, etc.) Machine (BSP) git://git.openembedded.org/meta-handheld
meta-htc HTC smartphone support Machine (BSP) git://github.com/shr-distribution/meta-smartphone.git
meta-igep IGEP board support Machine (BSP) git://github.com/ebutera/meta-igep.git
meta-img BSP layer for providing MIPS based machine targets Machine (BSP) https://github.com/MIPS/meta-img.git
meta-intel Intel board support common layer (official) Machine (BSP) git://git.yoctoproject.org/meta-intel
meta-intel-edison-bsp Intel Edison module support Machine (BSP) git://git.yoctoproject.org/meta-intel-edison
meta-intel-quark Intel Quark platform support Machine (BSP) git://git.yoctoproject.org/meta-intel-quark
meta-ivi-bsp BSP layer for IVI reference hardware Machine (BSP) git://git.yoctoproject.org/meta-ivi
meta-jz-mips BSP for devices with Ingenic MIPS SoC. Machine (BSP) https://github.com/leon-anavi/meta-jz-mips.git
meta-kirkwood Marvell Kirkwood-based device support Machine (BSP) git://github.com/kelvinlawson/meta-kirkwood.git
meta-lsi LSI Axxia Communication Processors Platform BSP Machine (BSP) git://git.yoctoproject.org/meta-lsi
meta-medusa-bsp myStromer board support Machine (BSP) https://github.com/tramseyer/meta-medusa-bsp.git
meta-mender-beaglebone Mender over-the-air (OTA) updater beaglebone support Machine (BSP) https://github.com/mendersoftware/meta-mender
meta-mender-qemu Mender over-the-air (OTA) updater QEMU support Machine (BSP) https://github.com/mendersoftware/meta-mender
meta-mender-raspberrypi Mender over-the-air (OTA) updater raspberrypi support Machine (BSP) https://github.com/mendersoftware/meta-mender
meta-mender-toradex-nxp Mender over-the-air (OTA) updater toradex-nsp support Machine (BSP) https://github.com/mendersoftware/meta-mender
meta-meson Upstream Linux Amlogic Meson Yocto/OpenEmbedded Layer Machine (BSP) https://github.com/superna9999/meta-meson
meta-mibtec Layer to support MIS/MIBTEC baseboards and modules Machine (BSP) git://github.com/rob-w/meta-mibtec
meta-minnow MinnowBoard BSP layer Machine (BSP) git://git.yoctoproject.org/meta-minnow
meta-nanopi FriendlyARM NanoPi board support Machine (BSP) git://git.kernelconcepts.de/meta-nanopi.git
meta-netbookpro Psion NetBook Pro device support Machine (BSP) git://github.com/tworaz/meta-netbookpro
meta-netmodule BSP Layer from NetModule for various boards Machine (BSP) https://github.com/netmodule/meta-netmodule.git
meta-nokia Nokia N900 support Machine (BSP) git://github.com/shr-distribution/meta-smartphone.git
meta-nslu2 Linksys NSLU2 device support Machine (BSP) git://github.com/kraj/meta-nslu2
meta-odroid This support the series of Odroid boards made by Hardkernel Machine (BSP) https://github.com/akuster/meta-odroid
meta-openmoko OpenMoko device support Machine (BSP) git://github.com/shr-distribution/meta-smartphone.git
meta-openpandora OpenPandora machine support Machine (BSP) git://github.com/openpandora/meta-openpandora.git
meta-ouya support ouya game console Machine (BSP) https://github.com/pwgen/meta-ouya
meta-palm Palm Pre machine support Machine (BSP) git://github.com/shr-distribution/meta-smartphone.git
meta-parallella Support for the Parallella board from Adapteva Machine (BSP) https://github.com/nathanrossi/meta-parallella.git
meta-phytec Phytec board support (official) Machine (BSP) git://git.phytec.de/meta-phytec
meta-pine64 Pine64 board support Machine (BSP) https://github.com/mont3z/meta-pine64.git
meta-qcom BSP layer for Qualcomm SoC and Boards Machine (BSP) http://git.yoctoproject.org/git/meta-qcom
meta-qemu-bsps layer for other qemu machines Machine (BSP) https://github.com/akuster/meta-qemu-bsps
meta-raspberrypi Raspberry Pi board support Machine (BSP) git://git.yoctoproject.org/meta-raspberrypi
meta-renesas-rza1 Official BSP layer for Renesas RZ/A1 platforms Machine (BSP) git://github.com/renesas-rz/meta-renesas-rza1
meta-rockchip Layer supporting public rockchip-based development boards and products Machine (BSP) git://git.yoctoproject.org/meta-rockchip
meta-rtlwifi OpenEmbedded/Yocto Project development layer for out of tree Realtek WiFi Linux kernel drivers Machine (BSP) https://github.com/EmbeddedAndroid/meta-rtlwifi
meta-samsung Samsung smartphone support Machine (BSP) git://github.com/shr-distribution/meta-smartphone.git
meta-seattle BSP for AMD AMDs 64bit ARM-based processor (codenamed "Seattle") Machine (BSP) git://git.yoctoproject.org/meta-amd
meta-sitec-s4 Layer for supporting sitec systems S4 Machine (BSP) https://github.com/sitec-systems/meta-sitec-s4
meta-sitec-score This layer adds support for sitec systems S Core Machine (BSP) https://github.com/sitec-systems/meta-sitec-score
meta-steppeeagle Official layer for AMD SteppeEagle board support Machine (BSP) http://git.yoctoproject.org/cgit/cgit.cgi/meta-amd
meta-sunxi Allwinner sunxi board support Machine (BSP) https://github.com/linux-sunxi/meta-sunxi
meta-synopsys Synopsys ARC hardware support Machine (BSP) https://github.com/foss-for-synopsys-dwc-arc-processors/meta-synopsys
meta-tegra BSP layer for NVIDIA Tegra processors Machine (BSP) https://github.com/madisongh/meta-tegra
meta-ti Texas Instruments board support (official) Machine (BSP) git://git.yoctoproject.org/meta-ti
meta-toradex-bsp-common BSP for Toradex Computer on Modules, SoC independent part Machine (BSP) git://git.toradex.com/meta-toradex-bsp-common.git
meta-toradex-nxp BSP for Toradex Computer on Modules based on NXP SoCs Machine (BSP) git://git.toradex.com/meta-toradex-nxp.git
meta-toradex-tegra BSP for Toradex Computer on Modules based on NVIDIA SoCs Machine (BSP) git://git.toradex.com/meta-toradex-tegra.git
meta-vesta Rigado BSP for the Vesta IoT Gateways Machine (BSP) https://git.rigado.com/vesta/meta-vesta.git
meta-via-vab820-bsp VIA VAB-820 / AMOS-820 BSP layer Machine (BSP) git://github.com/viaembedded/meta-via-vab820-bsp.git
meta-xilinx Xilinx hardware support Machine (BSP) git://git.yoctoproject.org/meta-xilinx
meta-xilinx-community Additional Xilinx hardware support Machine (BSP) git://git.yoctoproject.org/meta-xilinx-community
meta-yocto-bsp BSP layer for Yocto Project reference hardware Machine (BSP) git://git.yoctoproject.org/meta-yocto
meta-yocto-bsp-old Former Yocto Project reference BSPs Machine (BSP) git://git.yoctoproject.org/meta-yocto-bsp-old
meta-agl Automotive Grade Linux (distro layer) Distribution https://git.automotivelinux.org/AGL/meta-agl
meta-angstrom Ångström distribution Distribution git://github.com/Angstrom-distribution/meta-angstrom.git
meta-arago-distro Arago/TI-SDK distribution Distribution git://arago-project.org/git/meta-arago.git
meta-asteroid Distro layer for AsteroidOS Distribution https://github.com/AsteroidOS/meta-asteroid
meta-cshored CShore Embedded Distribution - OE/Yocto-based routers and network appliances - pre-alpha Distribution https://github.com/cshoredaniel/meta-cshored.git
meta-debian Using Debian source code to bitbake images Distribution git://github.com/meta-debian/meta-debian.git
meta-debian-extra Build Debian packages whose versions are different from meta-debian. Distribution https://github.com/meta-debian/meta-debian-extra
meta-digi-dey Provides the Digi Embedded Yocto distribution images Distribution https://github.com/digi-embedded/meta-digi
meta-distro-openswitch Openswitch Distribution Layer Distribution https://git.openswitch.net/openswitch/ops-build
meta-eca Mobile access point Distribution git://git.yoctoproject.org/meta-eca
meta-eldk Denx ELDK distribution Distribution git://git.denx.de/eldk.git
meta-fnordpipe layer for xen and lxc host images Distribution https://github.com/fnordpipe/meta-fnordpipe.git
meta-guacamayo Guacamayo distribution Distribution git://github.com/Guacamayo/meta-guacamayo.git
meta-intel-edison-distro Distro layer for official Intel Edison images Distribution git://git.yoctoproject.org/meta-intel-edison
meta-intel-iot-devkit Distro layer for the Intel IoT Developer Kit Distribution git://git.yoctoproject.org/meta-intel-iot-devkit
meta-ivi Collection of software related to In-Vehicle Infotainment systems Distribution git://git.yoctoproject.org/meta-ivi
meta-luneos Distro layer for LuneOS Distribution https://github.com/webOS-ports/meta-webos-ports
meta-luv luvOS distribution Distribution https://github.com/01org/luv-yocto
meta-medusa-dist myStromer distribution Distribution https://github.com/tramseyer/meta-medusa-dist.git
meta-mel Mentor Embedded Linux distribution (from Mentor Graphics Corporation) Distribution https://github.com/MentorEmbedded/meta-mentor
meta-micro micro distribution Distribution git://git.openembedded.org/meta-micro
meta-mmmpi An example distro layer customised for the Raspberry Pi Distribution https://bitbucket.org/mmmpi/meta-mmmpi.git
meta-nexell Yocto BSP layer for Nexell s5pxx18 boards Distribution http://git.nexell.co.kr:8081/gerrit/nexell/yocto/krogoth/meta-nexell
meta-oryx Oryx Embedded Linux Distribution https://gitlab.com/oryx/meta-oryx.git
meta-overc Full featured, container based distribution Distribution git://github.com/OverC/meta-overc.git
meta-poky Poky reference distribution for the Yocto Project Distribution git://git.yoctoproject.org/meta-yocto
meta-refkit IoT Reference OS Kit for Intel(r) Architecture distro layer Distribution https://github.com/intel/intel-iot-refkit
meta-resin-artik Artik resinOS layer Distribution https://github.com/resin-os/resin-artik
meta-resin-beaglebone Beaglebone resinOS layer Distribution https://github.com/resin-os/resin-beaglebone
meta-resin-common Base resinOS layer (common) Distribution https://github.com/resin-os/meta-resin
meta-resin-daisy Base resinOS layer (daisy) Distribution https://github.com/resin-os/meta-resin
meta-resin-edison Edison resinOS layer Distribution https://github.com/resin-os/resin-edison
meta-resin-fido Base resinOS layer (fido) Distribution https://github.com/resin-os/meta-resin
meta-resin-fsl-arm Freescale ARM resinOS layer Distribution https://github.com/resin-os/resin-fsl-arm
meta-resin-intel Intel resinOS layer Distribution https://github.com/resin-os/resin-intel
meta-resin-jethro Base resinOS layer (jethro) Distribution https://github.com/resin-os/meta-resin
meta-resin-odroid Odroid resinOS layer Distribution https://github.com/resin-os/resin-odroid
meta-resin-parallella Parallella resinOS layer Distribution https://github.com/resin-os/resin-parallella
meta-resin-qemu Qemu resinOS layer Distribution https://github.com/resin-os/resin-qemu
meta-resin-raspberrypi Raspberry Pi resinOS layer Distribution https://github.com/resin-os/resin-raspberrypi
meta-resin-toradex Toradex resinOS layer Distribution https://github.com/resin-os/resin-toradex
meta-resin-ts Technologic resinOS layer Distribution https://github.com/resin-os/resin-ts
meta-resin-via-arm VIA ARM resinOS layer Distribution https://github.com/resin-os/resin-via-arm
meta-resin-zc702 Zynq ZC702 resinOS layer Distribution https://github.com/resin-os/resin-zc702
meta-rpb Linaro Reference Platform Build Distro Distribution https://github.com/96boards/meta-rpb
meta-shr-distro SHR distribution Distribution git://github.com/shr-distribution/meta-smartphone.git
meta-slugos SlugOS distribution Distribution git://github.com/kraj/meta-slugos
meta-spdxscanner spdx support Distribution https://github.com/dl9pf/meta-spdxscanner
meta-talologger Packages the taloLogger home automation data collection software suite Distribution https://github.com/hlounent/meta-talologger
meta-warp7-distro WaRP7 distro Distribution https://github.com/WaRP7/meta-warp7-distro.git
meta-webos WebOS distribution (official) Distribution git://github.com/openwebos/meta-webos
meta-webos-ports Distro layer for LuneOS Distribution https://github.com/webOS-ports/meta-webos-ports
meta-woce WebOS community Edition distribution Distribution git://github.com/kraj/meta-woce
meta-yocto Poky reference distribution for the Yocto Project Distribution git://git.yoctoproject.org/meta-yocto
meta-yogurt PHYTEC integration and test distribution Distribution git://git.phytec.de/meta-yogurt
meta-alt-desktop-extras Lightweight (legacy) X desktop, tools, and recipe extensions Miscellaneous https://github.com/sarnold/meta-alt-desktop-extras
meta-axon Using Erlang on YP Miscellaneous https://github.com/joaohf/meta-axon
meta-baryon Baryon example NAS distribution Miscellaneous git://git.yoctoproject.org/meta-baryon
meta-cgl Carrier Grade Linux compliance packages Miscellaneous git://git.yoctoproject.org/meta-cgl
meta-cube meta-cube provides the distro-agnostic portions of the OverC runtime. Miscellaneous git://github.com/OverC/meta-overc.git
meta-darwin OpenEmbedded meta layer for darwin based SDKs Miscellaneous git://git.yoctoproject.org/meta-darwin
meta-earlyinit Instead of initramfs, especially when using read-only-rootfs on small systems Miscellaneous https://github.com/cshoredaniel/meta-earlyinit.git
meta-flatpak Flatpak support layer Miscellaneous https://github.com/intel/intel-iot-refkit
meta-gir GObject Introspection Support Miscellaneous git://github.com/meta-gir/meta-gir.git
meta-intel-galileo Intel Galileo platform support Miscellaneous git://git.yoctoproject.org/meta-intel-galileo
meta-kernel-dev Kernel development extras Miscellaneous git://git.yoctoproject.org/meta-yocto-kernel-extras
meta-linaro Linaro layer for openembedded Miscellaneous git://git.linaro.org/openembedded/meta-linaro.git
meta-mentor-staging Mentor Graphics Staging Layer for Yocto/OE Miscellaneous https://github.com/MentorEmbedded/meta-mentor
meta-mingw OpenEmbedded meta layer for mingw based SDKs Miscellaneous git://git.yoctoproject.org/meta-mingw
meta-openbmc OpenBMC is an open software framework to build a complete Linux image for a Board Management Controller (BMC). Miscellaneous https://github.com/facebook/openbmc
meta-pareon This layer automates using Pareon Verify with OpenEmbedded Miscellaneous https://github.com/vectorfabrics/meta-pareon
meta-readonly-rootfs-overlay This yocto meta layer implements a read-only root file system with a writeable overlay. Miscellaneous https://github.com/cmhe/meta-readonly-rootfs-overlay
meta-refkit-computervision IoT Reference OS Kit for Intel(r) Architecture profile for computer vision use cases Miscellaneous https://github.com/intel/intel-iot-refkit
meta-refkit-core Core layer for the IoT Reference OS Kit for Intel(r) Architecture Miscellaneous https://github.com/intel/intel-iot-refkit
meta-refkit-extra IoT Reference OS Kit for Intel(r) Architecture demo layer Miscellaneous https://github.com/intel/intel-iot-refkit
meta-refkit-industrial IoT Reference OS Kit for Intel(r) Architecture profile for industrial use cases Miscellaneous https://github.com/intel/intel-iot-refkit
meta-ro-rootfs Staging area for improvements to read-only-rootfs handling Miscellaneous https://github.com/MentorEmbedded/meta-ro-rootfs
meta-runit-init Use busybox 'runit' commands as main init Miscellaneous https://github.com/cshoredaniel/meta-runit-init.git
meta-security-isafw Image Security Analyser FW layer Miscellaneous https://github.com/01org/meta-security-isafw
meta-sitec-bsp Support for sitec systems BSP for the use with OpenEmbedded and/or Yocto. Miscellaneous https://github.com/sitec-systems/meta-sitec-bsp
meta-swupdate-boards Layer with examples how to use SWUpdate Miscellaneous https://github.com/sbabic/meta-swupdate-boards
meta-tlk Time Limited Kernel layer Miscellaneous git://git.yoctoproject.org/meta-intel
meta-updater OTA Software Updates using OSTree Miscellaneous https://github.com/advancedtelematic/meta-updater
meta-gnome GNOME UI support Software git://git.openembedded.org/meta-openembedded
meta-networking Network-related software Software git://git.openembedded.org/meta-openembedded
meta-ada Ada support Software git://github.com/Lucretia/meta-ada.git
meta-agl-demo Automotive Grade Linux (demo apps layer) Software https://git.automotivelinux.org/AGL/meta-agl-demo
meta-android Android specific tools Software git://github.com/shr-distribution/meta-smartphone.git
meta-arago-extras Arago/TI extra apps Software git://arago-project.org/git/meta-arago.git
meta-aspnet ASP.NET 5 Software git://github.com/Tragetaschen/meta-aspnet.git
meta-audio This contains recipes for various audio DSP tools Software https://github.com/errordeveloper/oe-meta-audio
meta-aurora aurora UI Software git://github.com/shr-distribution/meta-smartphone.git
meta-azul-zulu-java Azul Zulu Java JDK Releases Software https://github.com/zulu-openjdk/meta-zulu-java.git
meta-barebox Support for the barebox bootloader. Software https://github.com/menschel-d/meta-barebox.git
meta-bc Linphone VoIP library support Software git://git.linphone.org/meta-bc.git
meta-beagleboard-extras BeagleBoard extras Software git://github.com/beagleboard/meta-beagleboard
meta-browser Web browsers (Chromium, Firefox, etc.) Software git://github.com/OSSystems/meta-browser.git
meta-buglabs BugLabs middleware and specific OSGi components Software git://github.com/buglabs/meta-buglabs.git
meta-chicken Chicken toolchain support Software git://github.com/OSSystems/meta-chicken
meta-ci The OpenEmbedded/Yocto BSP layer for CI related things. Software https://github.com/koenkooi/meta-ci.git
meta-clang Clang/llvm alternative to gcc for C/C++ cross compiler Software https://github.com/kraj/meta-clang
meta-cloud-services General package support for cloud and clustering development Software git://git.yoctoproject.org/meta-cloud-services
meta-clutter Recipes for cogl, clutter and friends Software git://github.com/Guacamayo/meta-clutter.git
meta-cpan CPAN distributions as meant by CPAN authors Software https://github.com/rehsack/meta-cpan.git
meta-crosswalk Crosswalk is a web runtime for ambitious HTML5 applications. Software git://github.com/crosswalk-project/meta-crosswalk
meta-dpdk DPDK support layer Software git://git.yoctoproject.org/meta-dpdk
meta-efi-secure-boot Support UEFI Secure Boot and MOK Secure Boot Software git://github.com/jiazhang0/meta-secure-core.git
meta-efl Enlightenment UI support Software git://git.openembedded.org/meta-openembedded
meta-encrypted-storage Provide secure storage for application data Software git://github.com/jiazhang0/meta-secure-core.git
meta-epiphany Yocto layer to support the Epiphany processor Software https://github.com/peteasa/meta-epiphany.git
meta-erlang Erlang support Software https://github.com/joaohf/meta-erlang
meta-exotic Yocto layer to support cross compiler creation for exotic or foreign microcontrollers Software https://github.com/peteasa/meta-exotic.git
meta-filesystems Support for additional filesystems Software git://git.openembedded.org/meta-openembedded
meta-foss-openswitch Openswitch FOSS layer Software https://git.openswitch.net/openswitch/ops-build
meta-fsl-demos OpenEmbedded/Yocto layer for Freescale's Demonstration images Software https://github.com/Freescale/meta-fsl-demos.git
meta-fso freesmartphone.org framework support Software git://github.com/shr-distribution/meta-smartphone.git
meta-game-emulators Software layer for video game system emulators Software https://github.com/sergioprado/meta-game-emulators
meta-games Open-source games Software git://github.com/cazfi/meta-games.git
meta-gnss-sdr Global Navigation Satellite Systems Software Defined Receiver (GNSS-SDR) related recipes. Software git://github.com/carlesfernandez/meta-gnss-sdr.git
meta-go This layer provides support for cross-compiling programs written in Go language Software https://github.com/mem/oe-meta-go
meta-golang Go language support Software https://github.com/madisongh/meta-golang
meta-gpe GPE UI support (very minimal currently) Software git://git.openembedded.org/meta-openembedded
meta-gplv2 Recipes corresponding to old, obsolete versions of software that are GPLv2 licensed where the upstream have moved to GPLv3 licenses. Software git://git.yoctoproject.org/meta-gplv2
meta-gstreamer10 OpenEmbedded layer for GStreamer 1.0 Software git://github.com/dv1/meta-gstreamer1.0.git
meta-hamradio Hamradio related software Software https://github.com/hambedded-linux/meta-hamradio.git
meta-hdl HDL tools layer for OpenEmbedded Software https://github.com/nathanrossi/meta-hdl
meta-homeassistant Layer for Home Assistant Software https://github.com/bachp/meta-homeassistant.git
meta-initramfs initramfs tools Software git://git.openembedded.org/meta-openembedded
meta-integrity Provide Linux integrity support Software git://github.com/jiazhang0/meta-secure-core.git
meta-intel-clear-containers Layer enabling Intel® Clear Containers Software git://git.yoctoproject.org/meta-intel-clear-containers
meta-intel-iot-middleware Shared middleware recipes for Intel IoT platforms Software git://git.yoctoproject.org/meta-intel-iot-middleware
meta-intel-qat Intel Quick Assist Technology Layer Software git://git.yoctoproject.org/meta-intel-qat
meta-intel-realsense Support for Intel® RealSense™ cameras Software https://github.com/IntelRealSense/meta-intel-realsense
meta-iot-cloud OpenEmbedded layer to add support for multiple cloud service provider solutions. Software https://github.com/intel-iot-devkit/meta-iot-cloud.git
meta-iot-web IoT web components Software https://github.com/intel/iot-web-layers
meta-java Java support Software git://git.yoctoproject.org/meta-java
meta-jupyter Jupyter notebooks support layer Software https://github.com/sybotech/meta-jupyter
meta-kali Kali penetration test tools Software https://github.com/akuster/meta-kali
meta-kde4 KDE 4 / Plasma Active Software https://bitbucket.org/gen_dev_sst/meta-kde4.git
meta-kf5 KDE Frameworks 5 Software https://github.com/e8johan/meta-kf5.git
meta-linaro-toolchain Linaro toolchain support Software git://git.linaro.org/openembedded/meta-linaro.git
meta-lorawan LoRaWAN tools Software https://github.com/gotthardp/meta-lorawan.git
meta-luneui Recipes for LuneOS UI Software https://github.com/webOS-ports/meta-webos-ports
meta-lxde Software layer providing recipes for the LXDE desktop Software git://git.toradex.com/meta-lxde.git
meta-maker OpenEmbedded recipes for makers. Software http://git.yoctoproject.org/git/meta-maker
meta-mapbox Mapbox Qt SDK for Yocto Software https://github.com/mapbox/meta-mapbox
meta-measured Tools and utilities related to measuring software and trusted computing Software https://github.com/flihp/meta-measured.git
meta-mel-support Mentor Embedded Linux Support Layer for Yocto/OE Software https://github.com/MentorEmbedded/meta-mentor
meta-mender-core Mender over-the-air (OTA) software updater Software https://github.com/mendersoftware/meta-mender
meta-mender-demo Mender over-the-air (OTA) updater demo configuration Software https://github.com/mendersoftware/meta-mender
meta-micropython MicroPython support Software https://github.com/imyller/meta-micropython.git
meta-mono Mono Software git://git.yoctoproject.org/meta-mono
meta-multimedia Multimedia-related software Software git://git.openembedded.org/meta-openembedded
meta-musl Support for the musl C library Software https://github.com/kraj/meta-musl.git
meta-netmodule-extras Additioanl packets used by NetModule Software https://github.com/netmodule/meta-netmodule-extras.git
meta-nodejs Node.js support Software https://github.com/imyller/meta-nodejs.git
meta-office Office applications and libs Software git://github.com/schnitzeltony/meta-office.git
meta-oic Support for building the Open Interconnect Consortium Iotivity framework Software git://git.yoctoproject.org/meta-oic
meta-openclovis Layer to support SAFplus midleware components Software https://github.com/joaohf/meta-openclovis
meta-openhab Yocto layer providing openHAB (home automation software) Software https://github.com/ulfwin/meta-openhab
meta-openstack OpenStack support Software git://git.yoctoproject.org/meta-cloud-services
meta-openstack-compute-deploy OpenStack compute node support Software git://git.yoctoproject.org/meta-cloud-services
meta-openstack-controller-deploy OpenStack controller node support Software git://git.yoctoproject.org/meta-cloud-services
meta-openstack-qemu OpenStack QEMU image support Software git://git.yoctoproject.org/meta-cloud-services
meta-openwrt OE Metadata for OpenWRT packages Software https://github.com/kraj/meta-openwrt
meta-opie Opie UI support Software git://git.openembedded.org/meta-opie
meta-optee Linaro layer for OP-TEE Software git://git.linaro.org/openembedded/meta-linaro.git
meta-oracle-java Oracle Java support Software git://git.yoctoproject.org/meta-oracle-java
meta-osmocombb OsmocomBB support Software git://github.com/shr-distribution/meta-smartphone.git
meta-perl Additional Perl recipes Software git://git.openembedded.org/meta-openembedded
meta-printing meta-printing layer for openembedded Software https://github.com/rossburton/meta-printing
meta-pypy Cross/Embedded PyPy (https://bitbucket.org/pypy/pypy) support Software https://github.com/mzakharo/meta-pypy.git
meta-python Python support Software git://git.openembedded.org/meta-openembedded
meta-qa QA test framework and suites Software https://github.com/MontaVista-OpenSourceTechnology/meta-qa
meta-qt3 Qt 3.x support Software git://git.yoctoproject.org/meta-qt3
meta-qt4 Qt 4.x support Software git://git.yoctoproject.org/meta-qt4
meta-qt5 Qt5 modules Software git://github.com/meta-qt5/meta-qt5.git
meta-qt5-extra Desktop environments and applications based on qt5 Software git://github.com/schnitzeltony/meta-qt5-extra.git
meta-rauc RAUC update handler support Software https://github.com/rauc/meta-rauc.git
meta-realtime Additional realtime support Software git://git.yoctoproject.org/meta-realtime
meta-redhawk-sdr REDHAWK SDR Dependencies Software http://github.com/geontech/meta-redhawk-sdr
meta-retro Old games and emulators Software git://github.com/schnitzeltony/meta-retro
meta-ros ROS (Robot Operating System) support layer Software git://github.com/bmwcarit/meta-ros.git
meta-rpiexperiences RPi-Monitor software support Software https://github.com/XavierBerger/meta-rpiexperiences.git
meta-rslsync Resilio Sync recipes Software https://github.com/imyller/meta-rslsync.git
meta-ruby Ruby support Software git://git.openembedded.org/meta-openembedded
meta-rust Rust compiler and package manager Software https://github.com/meta-rust/meta-rust.git
meta-sdl SmartDeviceLink Software git://github.com/phongt/meta-sdl.git
meta-sdr Software Defined Radio (SDR) related recipes. Software https://github.com/balister/meta-sdr.git
meta-secure-core Provide the use cases for the Linux applications on secure boot, integrity and encryption Software git://github.com/jiazhang0/meta-secure-core.git
meta-security Security tools for Internet Connected devices Software git://git.yoctoproject.org/meta-security
meta-security-framework adds higher-level security middleware and tools Software https://github.com/01org/meta-intel-iot-security.git
meta-security-smack adds the Smack LSM to OpenEmbedded distros Software https://github.com/01org/meta-intel-iot-security.git
meta-selinux SELinux support Software git://git.yoctoproject.org/meta-selinux
meta-shr SHR applications Software git://github.com/shr-distribution/meta-smartphone.git
meta-signing-key Provide user and sample key store support Software git://github.com/jiazhang0/meta-secure-core.git
meta-smalltalk GNU Smalltalk and ports Software git://github.com/sysmocom/meta-smalltalk.git
meta-snappy Snap support layer Software https://github.com/morphis/meta-snappy.git
meta-sourcery CodeSourcery toolchain support layer by Mentor Graphics Corporation Software git://github.com/MentorEmbedded/meta-sourcery.git
meta-spec Support for the Simple PCIe FMC Carrier (SPEC) Software git://ohwr.org/fmc-projects/spec/spec-getting-started/meta-spec.git
meta-swupd swupd (software updater from Clear Linux) integration layer Software git://git.yoctoproject.org/meta-swupd
meta-swupdate Layer supporting Software Update via swupdate Software https://github.com/sbabic/meta-swupdate
meta-systemd systemd support Software git://git.openembedded.org/meta-openembedded
meta-telephony Telephony-related software Software git://git.osmocom.org/meta-telephony
meta-toradex-demos Software layer providing recipes to build the Toradex demo images Software git://git.toradex.com/meta-toradex-demos.git
meta-tpm Provide TPM 1.x support Software git://github.com/jiazhang0/meta-secure-core.git
meta-tpm2 Provide TPM 2.x support Software git://github.com/jiazhang0/meta-secure-core.git
meta-tracing Layer to add necessary agent support for Sourcery Analyzer (lttng+systemtap bits) Software git://github.com/MentorEmbedded/meta-tracing.git
meta-uav Software for drones Software https://github.com/koenkooi/meta-uav.git
meta-virtualization Hypervisor, virtualization tool stack, and cloud support Software git://git.yoctoproject.org/meta-virtualization
meta-web-kiosk Layer enabling browser based kiosk devices with virtual keyboard support Software git://git.yoctoproject.org/meta-web-kiosk
meta-webkit WebKit engines and browsers: WebKitForWayland / WebKitGTK+ Software https://github.com/Igalia/meta-webkit
meta-webserver Web server related software Software git://git.openembedded.org/meta-openembedded
meta-wolfssl Lightweight, portable, C-language-based SSL/TLS library Software https://github.com/wolfSSL/meta-wolfssl
meta-wpe Web Platform for Embedded multimedia Software http://github.com/WebPlatformForEmbedded/meta-wpe
meta-x10 x10 protocol related software Software git://github.com/baillaw/meta-x10.git
meta-xfce XFCE UI support Software git://git.openembedded.org/meta-openembedded
meta-zulu-java Provides recipes for packaging Azul's Zulu Java releases Software https://github.com/zulu-openjdk/meta-zulu-java.git

change history • about this site • FAa

Building with Yocto / OpenEmbedded

From Yocto Project Quick Start

    http://www.yoctoproject.org/docs/2.1/yocto-project-qs/yocto-project-qs.html

 

Ubuntu and Debian

     $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

Initialize the Build Environment: Run the oe-init-build-env environment setup script to define the OpenEmbedded build environment on your build host.

     $ source oe-init-build-env

 

Start the Build: Continue with the following command to build an OS image for the target, which is core-image-sato in this example:

     $ bitbake core-image-sato

Simulate Your Image Using QEMU: Once this particular image is built, you can start QEMU and run the image:

     $ runqemu qemux86

Demo

  • A look at the configuration files
  • A look at simple recipes
  • A look at how layers work
     
  • Creating recipes [if time allows]
  • Using Mono .NET with Linux [if time allows]

Thoughts for the Future?

  • Virtual Build environments - Docker
    • Replicable builds, archived and versioned
    • Potential for cloud CPU rental for build
  • Virtual Deployment environments - Resin.io
    • Push code to a repository
    • Resin.io builds and pushes code deltas to target
    • Virtual channel to device (even if behind NAT)

Questions ?

Resources

OpenEmbedded

https://www.openembedded.org/wiki/Main_Page

Yocto Project

https://www.yoctoproject.org/

Yocto Quickstart

http://www.yoctoproject.org/docs/2.1/yocto-project-qs/yocto-project-qs.html

Building your own recipes from first principles

https://wiki.yoctoproject.org/wiki/Building_your_own_recipes_from_first_principles

Building and running embedded Linux .NET applications from first principles

https://wiki.yoctoproject.org/wiki/Building_and_running_embedded_Linux_.NET_applications_from_first_principles
Made with Slides.com