OpenEmbedded / Yocto Project Layers¶
The Linux microPlatform (LmP) is composed of several OpenEmbedded and Yocto Project layers, including the core build system, distribution, images, and Board Support Packages (BSPs).
LmP Base Layers¶
Layer | Description |
---|---|
openembedded-core (Base) | Main collaboration point when working on OpenEmbedded projects, and part of the core recipes. It is distro-less and contains only emulated machine support. Provides the default toolchain used by the LmP distribution. |
meta-openembedded | A collection of layers and recipes for the OE-core universe. Since the reduction in recipes to the core, meta-openembedded was created for everything else. There are currently approximately 650 recipes in this layer. It is used by the LmP for additional utilities and network support. |
meta-virtualization | Provides support for building Docker, LXC, Xen, KVM, Libvirt, and associated packages necessary for constructing OE-based virtualized / container solutions. It is used by the LmP for Docker container runtime support. |
meta-clang | Provides clang/llvm as alternative to system C/C++ compiler for OpenEmbedded/Yocto Project based distributions. |
meta-updater | Provides support for OTA Software Updates using OSTree and TUF / Uptane. |
meta-security | Provides security tools, hardening tools for Linux kernels and libraries for implementing security mechanisms. |
meta-lmp (Base) | This layer provides the LmP distribution configuration, unified kernel, and images. |
LmP BSP Layers¶
Layer | Description |
---|---|
meta-lmp (BSP) | LmP BSP definitions and configurations for officially supported targets. |
meta-arm | Provides support for general recipes for the ARM architecture and BSP support for ARM reference platforms. |
meta-intel | Board support layer for Intel based devices. |
meta-raspberrypi | Board support layer for the Raspberry Pi boards. based devices. |
meta-yocto | Board support layer for the Yocto Project hardware references, such as BeagleBone Black. |
meta-freescale | Board support layer for the Freescale platforms. |
meta-freescale-3rdparty | Additional board support layer for Freescale platforms (not officially supported by meta-Freescale maintainers). |
meta-xilinx | Provides support for Xilinx BSPs (e.g. ZynqMP). |
meta-xilinx-tools | Provides support for using Xilinx tools on supported architectures (e.g. ZynqMP). |
The meta-lmp Base Layer¶
The meta-lmp-base
layer provides the LmP distribution
configuration and a base set of recipes and config files, such as a unified
Linux kernel and a set of standard images.
Configuration for the LmP distro can be found at
conf/distro/lmp.conf
and conf/distro/include/lmp.inc
.
The lmp-base-console-image
recipe can be found at
recipes-samples/images/lmp-base-console-image.bb
. You can find the
default set of packages used by the image via the
CORE_IMAGE_BASE_INSTALL
variable.
The meta-lmp-bsp Layer¶
meta-lmp-bsp
provides the kernel recipes, u-boot configuration
fragments, WIC files, and so on for supported targets.
While primarily used as an extension of the vendor BSP layers (e.g. meta-freescale), it can also handle board configuration for cases where the vendor layer is not easily compatible with LmP (e.g. a layer based on an older Yocto Project release).
The main configuration can be found at conf/machine/include/lmp-machine-custom.inc
.
This gets included by meta-lmp-base/classes/lmp.bbclass
if available (users can decide
to use meta-lmp-base
only).
Here is an example of how a BSP configuration gets extended from the vendor BSP layer:
# Beaglebone
PREFERRED_PROVIDER_virtual/bootloader:beaglebone-yocto = "u-boot-fio"
PREFERRED_PROVIDER_u-boot:beaglebone-yocto = "u-boot-fio"
WKS_FILE_DEPENDS:append:beaglebone-yocto = " u-boot-default-script"
PREFERRED_PROVIDER_u-boot-default-script:beaglebone-yocto = "u-boot-ostree-scr-fit"
SOTA_CLIENT_FEATURES:append:beaglebone-yocto = " ubootenv"
OSTREE_KERNEL_ARGS:beaglebone-yocto ?= "console=ttyS0,115200n8 ${OSTREE_KERNEL_ARGS_COMMON}"
KERNEL_DEVICETREE:append:beaglebone-yocto = " am335x-boneblack-wireless.dtb"
IMAGE_BOOT_FILES:beaglebone-yocto = "u-boot.img MLO boot.itb"
KERNEL_IMAGETYPE:beaglebone-yocto = "fitImage"
KERNEL_CLASSES:beaglebone-yocto = " kernel-lmp-fitimage "
When adding or changing the LmP BSP configuration values, please use
meta-subscriber-overrides/conf/machine/include/lmp-factory-custom.inc
instead, which gets parsed after lmp-machine-custom.inc
and is
factory specific.
lmp-machine-custom.inc
should be used for LmP upstream BSP support
only.
Customizing the LmP BSP Layers List¶
LmP is composed of a set of base layers plus an extensive list of BSP layers that are all enabled by default (see LmP BSP Layers).
As this is not desired by everyone, any FoundriesFactory user can easily customize the BSP layers enabled and used by a Factory.
To define your own set of BSP layers (used by Bitbake), modify (or
create if your Factory was created before LmP v76) the
lmp-manifest/conf/bblayers-factory.inc
bblayers include fragment,
replacing the BSPLAYERS
variable with your own list of BSP layers.
Make sure meta-lmp-bsp
is also included by default, unless you
want to completely define your own BSP configuration.
An example for enabling only the meta-intel
BSP layer:
$ cat conf/bblayers-factory.inc
# This is a FoundriesFactory bblayers include file
# meta-subscriber-overrides is the main FoundriesFactory layer
# Do not remove unless you really know what you are doing.
BASELAYERS += "${OEROOT}/layers/meta-subscriber-overrides"
# Customize list of default BSP layers included by LMP by uncommenting
# the following lines and manually including your own list (= to replace).
# You can find the standard BSP list at the bblayers-bsp.inc file, which
# gets parsed before this file.
#
BSPLAYERS = " \
${OEROOT}/layers/meta-intel \
${OEROOT}/layers/meta-lmp/meta-lmp-bsp \
"