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 board 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-st-stm32mp | Board support layer for STMicroelectronics based devices. |
meta-tegra | Board support layer for NVIDIA based devices. |
meta-ti | Board support layer for Texas Instruments based devices. |
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 (you 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.
This 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 Factory can easily customize the BSP layers enabled.
To define your own set of BSP layers,
modify (create if your Factory was created before LmP v76) the lmp-manifest/conf/bblayers-factory.inc
bblayers include fragment.
Replace the BSPLAYERS
variable with your own list of BSP layers.
Make sure meta-lmp-bsp
is also included, 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 \
"