<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >

<chapter id='ref-images'>
    <title>Images</title>

    <para>
        The OpenEmbedded build system provides several example
        images to satisfy different needs.
        When you issue the <filename>bitbake</filename> command you provide a “top-level” recipe
        that essentially begins the build for the type of image you want.
    </para>

    <note>
        Building an image without GNU General Public License Version 3 (GPLv3),
        GNU Lesser General Public License Version 3 (LGPLv3), and the
        GNU Affero General Public License Version 3 (AGPL-3.0) components
        is only supported for minimal and base images.
        Furthermore, if you are going to build an image using non-GPLv3 and
        similarly licensed components, you must make the following changes in
        the <filename>local.conf</filename> file before using the BitBake
        command to build the minimal or base image:
        <literallayout class='monospaced'>
     1. Comment out the EXTRA_IMAGE_FEATURES line
     2. Set INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0"
        </literallayout>
    </note>

    <para>
        From within the <filename>poky</filename> Git repository, you can use
        the following command to display the list of directories within the
        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
        that containe image recipe files:
        <literallayout class='monospaced'>
     $ ls meta*/recipes*/images/*.bb
        </literallayout>
    </para>

    <para>
        Following is a list of supported recipes:
        <itemizedlist>
            <listitem><para><filename>build-appliance-image</filename>:
                An example virtual machine that contains all the pieces required to
                run builds using the build system as well as the build system itself.
                You can boot and run the image using either the
                <ulink url='http://www.vmware.com/products/player/overview.html'>VMware Player</ulink>
                or <ulink url='http://www.vmware.com/products/workstation/overview.html'>VMware Workstation</ulink>.
                For more information on this image, see the
                <ulink url='&YOCTO_HOME_URL;/documentation/build-appliance'>Build Appliance</ulink> page on
                the Yocto Project website.</para></listitem>
            <listitem><para><filename>core-image-base</filename>:
                A console-only image that fully supports the target device hardware.</para></listitem>
            <listitem><para><filename>core-image-clutter</filename>:
                An image with support for the Open GL-based toolkit Clutter, which enables development of
                rich and animated graphical user interfaces.</para></listitem>
            <listitem><para><filename>core-image-directfb</filename>:
                An image that uses <filename>directfb</filename> instead of X11.
                </para></listitem>
            <listitem><para><filename>core-image-full-cmdline</filename>:
                A console-only image with more full-featured Linux system
                functionality installed.</para></listitem>
                <listitem><para><filename>core-image-lsb</filename>:
                An image that conforms to the Linux Standard Base (LSB)
                specification.
                This image requires a distribution configuration that
                enables LSB compliance (e.g. <filename>poky-lsb</filename>).
                If you build <filename>core-image-lsb</filename> without that
                configuration, the image will not be LSB-compliant.
                </para></listitem>
            <listitem><para><filename>core-image-lsb-dev</filename>:
                A <filename>core-image-lsb</filename> image that is suitable for development work
                using the host.
                The image includes headers and libraries you can use in a host development
                environment.
                This image requires a distribution configuration that
                enables LSB compliance (e.g. <filename>poky-lsb</filename>).
                If you build <filename>core-image-lsb-dev</filename> without that
                configuration, the image will not be LSB-compliant.
                </para></listitem>
            <listitem><para><filename>core-image-lsb-sdk</filename>:
                A <filename>core-image-lsb</filename> that includes everything in
                the cross-toolchain but also includes development headers and libraries
                to form a complete standalone SDK.
                This image requires a distribution configuration that
                enables LSB compliance (e.g. <filename>poky-lsb</filename>).
                If you build <filename>core-image-lsb-sdk</filename> without that
                configuration, the image will not be LSB-compliant.
                This image is suitable for development using the target.</para></listitem>
            <listitem><para><filename>core-image-minimal</filename>:
                A small image just capable of allowing a device to boot.</para></listitem>
            <listitem><para><filename>core-image-minimal-dev</filename>:
                A <filename>core-image-minimal</filename> image suitable for development work
                using the host.
                The image includes headers and libraries you can use in a host development
                environment.
                </para></listitem>
            <listitem><para id='images-core-image-minimal-initramfs'><filename>core-image-minimal-initramfs</filename>:
                A <filename>core-image-minimal</filename> 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.
                See the
                <link linkend='var-PACKAGE_INSTALL'><filename>PACKAGE_INSTALL</filename></link>
                variable for additional information helpful when working with
                initramfs images.
                </para></listitem>
            <listitem><para><filename>core-image-minimal-mtdutils</filename>:
                A <filename>core-image-minimal</filename> 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.
                </para></listitem>
            <listitem><para><filename>core-image-rt</filename>:
                A <filename>core-image-minimal</filename> image plus a real-time test suite and
                tools appropriate for real-time use.</para></listitem>
            <listitem><para><filename>core-image-rt-sdk</filename>:
                A <filename>core-image-rt</filename> image that includes everything in
                the cross-toolchain.
                The image also includes development headers and libraries to form a complete
                stand-alone SDK and is suitable for development using the target.
                </para></listitem>
            <listitem><para><filename>core-image-sato</filename>:
                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 applications such as
                a terminal, editor, file manager, media player, and so forth.
                </para></listitem>
            <listitem><para><filename>core-image-sato-dev</filename>:
                A <filename>core-image-sato</filename> image suitable for development
                using the host.
                The image includes libraries needed to build applications on the device itself,
                testing and profiling tools, and debug symbols.
                This image was formerly <filename>core-image-sdk</filename>.
                </para></listitem>
            <listitem><para><filename>core-image-sato-sdk</filename>:
                A <filename>core-image-sato</filename> image that includes everything in
                the cross-toolchain.
                The image also includes development headers and libraries to form a complete standalone SDK
                and is suitable for development using the target.</para></listitem>
            <listitem><para><filename>core-image-testmaster</filename>:
                A "master" image designed to be used for automated runtime testing.
                Provides a "known good" image that is deployed to a separate
                partition so that you can boot into it and use it to deploy a
                second image to be tested.
                You can find more information about runtime testing in the
                "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
                section in the Yocto Project Development Manual.
                </para></listitem>
            <listitem><para><filename>core-image-testmaster-initramfs</filename>:
                A RAM-based Initial Root Filesystem (initramfs) image tailored for
                use with the <filename>core-image-testmaster</filename> image.
                </para></listitem>
            <listitem><para><filename>core-image-weston</filename>:
                A very basic Wayland image with a terminal.
                This image provides the Wayland protocol libraries and the
                reference Weston compositor.
                For more information, see the
                "<link linkend='wayland'>Wayland</link>" section.
                </para></listitem>
            <listitem><para><filename>core-image-x11</filename>:
                A very basic X11 image with a terminal.
                </para></listitem>
        </itemizedlist>
    </para>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
