Yocto: Difference between revisions
m →Images |
|||
Line 46: | Line 46: | ||
These image definitions are provided as a starting point for creating project-specific, custom image definitions. | These image definitions are provided as a starting point for creating project-specific, custom image definitions. | ||
<br /> | <br /> | ||
<br /> | |||
=== Creating a Custom Image === | |||
* In your custom layer, create the ''images'' subdirectory in one of your ''recipes-...' directory. | |||
* In the ''images'' directory, create two image recipe files that inherit from ''core-image'': | |||
<pre class="code"> | |||
SUMMARY = "My deployment image" | |||
LICENSE = "MIT" | |||
inherit core-image | |||
IMAGE_FEATURES += "splash" | |||
</pre> | |||
and | |||
<pre class="code"> | |||
SUMMARY = "My development image" | |||
inherit core-image | |||
require my-image.bb | |||
IMAGE_FEATURES += "ssh-server-dropbear tools-debug debug-tweaks" | |||
CORE_IMAGE_EXTRA_INSTALL += "i2c-tools " | |||
</pre> | |||
where the first image recipe is for deployment and the second is for development. Note that the development version includes the deployment version with the ''require'' statement, and adds to IMAGE_FEATURES and CORE_IMAGE_EXTRA_INSTALL. | |||
<br /> | <br /> | ||
Revision as of 2022-11-06T15:42:37
Prerequisites
sudo apt install gcc g++ \ python3-distutils python-is-python3
Images
Images are recipes that ultimately inherit from meta/classes/image.bbclass and set the global variable IMAGE_INSTALL. Most images, however, will inherit from meta/classes/core-image.bbclass which inherits directly from image.bbclass, provides a mapping from IMAGE_FEATURES to package groups, and adds the two package groups packagegroup-core-boot and packagegroup-base-extended to IMAGE_INSTALL.
Images are defined in recipe files with the file extension 'bb'. In order to separate them from package recipes, there is a convention to put image recipes into a folder named images. Making use of this, we can list all images defined by all layers via
cd poky ls meta*/recipes*/images/*.bb
IMAGE_FEATURES
The IMAGE_FEATURES variable is defined in meta/classes/image.bbclass with an empty value. It accepts only a predefined set of features (e.g., x11, debug-tweaks, dev-pkgs, dbg-pkgs). This affects how recipes will execute their tasks and which packages will be selected to go into the image. The image recipe meta/recipes-core/images/core-image-base.bb, for example, adds the splash feature.
IMAGE_INSTALL
Holds a list of package groups whose packages (from the package feed area) will go into the filesystem image.
Reference images
The following reference images are defined in the meta layer:
core-image-minimal | small image that just boots the target device | |
core-image-minimal-dev | core-image-minimal with headers and libraries allowing development work | |
core-image-minimal-initramfs | core-image-minimal with kernel support for in-RAM filesystem | |
core-image-base | console-only system fully supporting the target hardware | |
core-image-full-cmdline | console-only image that includes many system tools | |
core-image-x11 | image with basic X11 and a terminal |
These image definitions are provided as a starting point for creating project-specific, custom image definitions.
Creating a Custom Image
- In your custom layer, create the images subdirectory in one of your recipes-...' directory.
- In the images directory, create two image recipe files that inherit from core-image:
SUMMARY = "My deployment image" LICENSE = "MIT" inherit core-image IMAGE_FEATURES += "splash"
and
SUMMARY = "My development image" inherit core-image require my-image.bb IMAGE_FEATURES += "ssh-server-dropbear tools-debug debug-tweaks" CORE_IMAGE_EXTRA_INSTALL += "i2c-tools "
where the first image recipe is for deployment and the second is for development. Note that the development version includes the deployment version with the require statement, and adds to IMAGE_FEATURES and CORE_IMAGE_EXTRA_INSTALL.
Package Groups
Package groups are recipes that inherit from meta/classes/packagegroup.bbclass and set the content of the global variable PACKAGES. Package groups are defined in recipe files with the file extension 'bb'.
Note that the packagegroup must be inherited before PACKAGES is defined.
inherit packagegroup PACKAGES = '...'
Using devtool
Use devtool to make changes to an existing recipe and automatically generate an append recipe from those changes.