# Reference: Images

The Yocto Project build process supports several types of images to satisfy different needs. When you issue the `bitbake` command you provide a “top-level” recipe that essentially begins the build for the type of image you want.

Building an image without GNU Public License Version 3 (GPLv3) components is only supported for minimal and base images. Furthermore, if you are going to build an image using non-GPLv3 components, you must make the following changes in the `local.conf` file before using the BitBake command to build the minimal or base image:

         1. Comment out the EXTRA_IMAGE_FEATURES line
         2. Set INCOMPATIBLE_LICENSE = "GPLv3"

From within the `poky` Git repository, use the following command to list the supported images:

         $ ls meta*/recipes*/images/*.bb

These recipes reside in the `meta/recipes-core/images`, `meta/recipes-extended/images`, `meta/recipes-graphics/images`, and `meta/recipes-sato/images` directories of your local Yocto Project file structure (Git repository or extracted release tarball). Although the recipe names are somewhat explanatory, here is a list that describes them:

- `core-image-base`: A console-only image that fully supports the target device hardware.

- `core-image-core`: An X11 image with simple applications such as terminal, editor, and file manager.

- `core-image-minimal`: A small image just capable of allowing a device to boot.

- `core-image-minimal-dev`: A `core-image-minimal` image suitable for development work.

- `core-image-minimal-initramfs`: A `core-image-minimal` image that has the Minimal RAM-based Initial Root Filesystem (`initramfs`) as part of the kernel, which allows the system to find the first “init” program more efficiently.

- `core-image-minimal-mtdutils`: A `core-image-minimal` image that has support for the Minimal MTD Utilities, which let the user interact with the MTD subsystem in the kernel to perform operations on flash devices.

- `core-image-basic`: A foundational basic image without support for X that can be reasonably used for customization.

- `core-image-lsb`: A `core-image-basic` image suitable for implementations that conform to Linux Standard Base (LSB).

- `core-image-lsb-dev`: A `core-image-lsb` image that is suitable for development work.

- `core-image-lsb-sdk`: A `core-image-lsb` that includes everything in meta-toolchain but also includes development headers and libraries to form a complete standalone SDK. See the External Development Using the Poky SDK section for more information.

- `core-image-clutter`: An image with support for the Open GL-based toolkit Clutter, which enables development of rich and animated graphical user interfaces.

- `core-image-sato`: An image with Sato support, a mobile environment and visual style that works well with mobile devices. The image supports X11 with a Sato theme and Pimlico applications and also contains terminal, editor, and file manager.

- `core-image-sato-dev`: A `core-image-sato` image suitable for development that also includes a native toolchain and libraries needed to build applications on the device itself. The image also includes testing and profiling tools as well as debug symbols. This image was formerly `core-image-sdk`.

- `core-image-sato-sdk`: A `core-image-sato` image that includes everything in meta-toolchain. The image also includes development headers and libraries to form a complete standalone SDK. See the External Development Using the Poky SDK section for more information.

From the Yocto Project release 1.1 onwards, `-live` and `-directdisk` images have been replaced by a "live" option in `IMAGE_FSTYPES` that will work with any image to produce an image file that can be copied directly to a CD or USB device and run as is. To build a live image, simply add "live" to `IMAGE_FSTYPES` within the `local.conf` file or wherever appropriate and then build the desired image as normal.