diff --git a/poky/documentation/bsp-guide/bsp.xml b/poky/documentation/bsp-guide/bsp.xml
new file mode 100644
index 0000000..f5c3f31
--- /dev/null
+++ b/poky/documentation/bsp-guide/bsp.xml
@@ -0,0 +1,2259 @@
+<!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; ] >
+<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
+
+<chapter id='bsp'>
+
+<title>Board Support Packages (BSP) - Developer's Guide</title>
+
+<para>
+    A Board Support Package (BSP) is a collection of information that
+    defines how to support a particular hardware device, set of devices, or
+    hardware platform.
+    The BSP includes information about the hardware features
+    present on the device and kernel configuration information along with any
+    additional hardware drivers required.
+    The BSP also lists any additional software
+    components required in addition to a generic Linux software stack for both
+    essential and optional platform features.
+</para>
+
+<para>
+    This guide presents information about BSP layers, defines a structure for components
+    so that BSPs follow a commonly understood layout, discusses how to customize
+    a recipe for a BSP, addresses BSP licensing, and provides information that
+    shows you how to create a
+    <link linkend='bsp-layers'>BSP Layer</link> using the
+    <link linkend='creating-a-new-bsp-layer-using-the-bitbake-layers-script'><filename>bitbake-layers</filename></link>
+    tool.
+</para>
+
+<section id='bsp-layers'>
+    <title>BSP Layers</title>
+
+    <para>
+        A BSP consists of a file structure inside a base directory.
+        Collectively, you can think of the base directory, its file structure,
+        and the contents as a <firstterm>BSP layer</firstterm>.
+        Although not a strict requirement, BSP layers in the Yocto Project
+        use the following well-established naming convention:
+        <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>
+        </literallayout>
+        The string "meta-" is prepended to the machine or platform name, which is
+        <replaceable>bsp_root_name</replaceable> in the above form.
+        <note><title>Tip</title>
+            Because the BSP layer naming convention is well-established,
+            it is advisable to follow it when creating layers.
+            Technically speaking, a BSP layer name does not need to
+            start with <filename>meta-</filename>.
+            However, various scripts and tools in the Yocto Project
+            development environment assume this convention.
+        </note>
+    </para>
+
+    <para>
+        To help understand the BSP layer concept, consider the BSPs that the
+        Yocto Project supports and provides with each release.
+        You can see the layers in the
+        <ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>
+        through a web interface at
+        <ulink url='&YOCTO_GIT_URL;'></ulink>.
+        If you go to that interface, you will find a list of repositories
+        under "Yocto Metadata Layers".
+        <note>
+            Layers that are no longer actively supported as part of the
+            Yocto Project appear under the heading "Yocto Metadata Layer
+            Archive."
+        </note>
+        Each repository is a BSP layer supported by the Yocto Project
+        (e.g. <filename>meta-raspberrypi</filename> and
+        <filename>meta-intel</filename>).
+        Each of these layers is a repository unto itself and clicking on
+        the layer name displays two URLs from which you can
+        clone the layer's repository to your local system.
+        Here is an example that clones the Raspberry Pi BSP layer:
+        <literallayout class='monospaced'>
+     $ git clone git://git.yoctoproject.org/meta-raspberrypi
+        </literallayout>
+    </para>
+
+    <para>
+        In addition to BSP layers, the
+        <filename>meta-yocto-bsp</filename> layer is part of the
+        shipped <filename>poky</filename> repository.
+        The <filename>meta-yocto-bsp</filename> layer maintains several
+        "reference" BSPs including the ARM-based Beaglebone, MIPS-based
+        EdgeRouter, and generic versions of
+        both 32-bit and 64-bit IA machines.
+    </para>
+
+    <para>
+        For information on typical BSP development workflow, see the
+        "<link linkend='developing-a-board-support-package-bsp'>Developing a Board Support Package (BSP)</link>"
+        section.
+        For more information on how to set up a local copy of source files
+        from a Git repository, see the
+        "<ulink url='&YOCTO_DOCS_DEV_URL;#locating-yocto-project-source-files'>Locating Yocto Project Source Files</ulink>"
+        section in the Yocto Project Development Tasks Manual.
+    </para>
+
+    <para>
+        The BSP layer's base directory
+        (<filename>meta-<replaceable>bsp_root_name</replaceable></filename>)
+        is the root directory of that Layer.
+        This directory is what you add to the
+        <ulink url='&YOCTO_DOCS_REF_URL;#var-BBLAYERS'><filename>BBLAYERS</filename></ulink>
+        variable in the <filename>conf/bblayers.conf</filename> file found in your
+        <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
+        which is established after you run the OpenEmbedded build environment
+        setup script (i.e.
+        <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>).
+        Adding the root directory allows the
+        <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
+        to recognize the BSP layer and from it build an image.
+        Here is an example:
+        <literallayout class='monospaced'>
+     BBLAYERS ?= " \
+       /usr/local/src/yocto/meta \
+       /usr/local/src/yocto/meta-poky \
+       /usr/local/src/yocto/meta-yocto-bsp \
+       /usr/local/src/yocto/meta-mylayer \
+       "
+        </literallayout>
+        <note><title>Tip</title>
+            Ordering and
+            <ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PRIORITY'><filename>BBFILE_PRIORITY</filename></ulink>
+            for the layers listed in <filename>BBLAYERS</filename>
+            matter.
+            For example, if multiple layers define a machine
+            configuration, the OpenEmbedded build system uses
+            the last layer searched given similar layer
+            priorities.
+            The build system works from the top-down through
+            the layers listed in <filename>BBLAYERS</filename>.
+        </note>
+    </para>
+
+    <para>
+        Some BSPs require or depend on additional layers
+        beyond the BSP's root layer in order to be functional.
+        In this case, you need to specify these layers in the
+        <filename>README</filename> "Dependencies" section of the
+        BSP's root layer.
+        Additionally, if any build instructions exist for the
+        BSP, you must add them to the "Dependencies" section.
+    </para>
+
+    <para>
+        Some layers function as a layer to hold other BSP layers.
+        These layers are knows as
+        "<ulink url='&YOCTO_DOCS_REF_URL;#term-container-layer'>container layers</ulink>".
+        An example of this type of layer is OpenEmbedded's
+        <ulink url='https://github.com/openembedded/meta-openembedded'><filename>meta-openembedded</filename></ulink>
+        layer.
+        The <filename>meta-openembedded</filename> layer contains
+        many <filename>meta-*</filename> layers.
+        In cases like this, you need to include the names of the actual
+        layers you want to work with, such as:
+        <literallayout class='monospaced'>
+     BBLAYERS ?= " \
+       /usr/local/src/yocto/meta \
+       /usr/local/src/yocto/meta-poky \
+       /usr/local/src/yocto/meta-yocto-bsp \
+       /usr/local/src/yocto/meta-mylayer \
+       .../meta-openembedded/meta-oe \
+       .../meta-openembedded/meta-perl \
+       .../meta-openembedded/meta-networking \
+       "
+        </literallayout>
+       and so on.
+    </para>
+
+    <para>
+        For more information on layers, see the
+        "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
+        section of the Yocto Project Development Tasks Manual.
+    </para>
+</section>
+
+<section id='preparing-your-build-host-to-work-with-bsp-layers'>
+    <title>Preparing Your Build Host to Work With BSP Layers</title>
+
+    <para>
+        This section describes how to get your build host ready
+        to work with BSP layers.
+        Once you have the host set up, you can create the layer
+        as described in the
+        "<link linkend='creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a new BSP Layer Using the <filename>bitbake-layers</filename> Script</link>"
+        section.
+        <note>
+            For structural information on BSPs, see the
+            <link linkend='bsp-filelayout'>Example Filesystem Layout</link>
+            section.
+        </note>
+        <orderedlist>
+            <listitem><para>
+                <emphasis>Set Up the Build Environment:</emphasis>
+                Be sure you are set up to use BitBake in a shell.
+                See the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
+                section in the Yocto Project Development Tasks Manual for information
+                on how to get a build host ready that is either a native
+                Linux machine or a machine that uses CROPS.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Clone the <filename>poky</filename> Repository:</emphasis>
+                You need to have a local copy of the Yocto Project
+                <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+                (i.e. a local <filename>poky</filename> repository).
+                See the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</ulink>"
+                and possibly the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#checking-out-by-branch-in-poky'>Checking Out by Branch in Poky</ulink>"
+                or
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#checkout-out-by-tag-in-poky'>Checking Out by Tag in Poky</ulink>"
+                sections all in the Yocto Project Development Tasks Manual for
+                information on how to clone the <filename>poky</filename>
+                repository and check out the appropriate branch for your work.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Determine the BSP Layer You Want:</emphasis>
+                The Yocto Project supports many BSPs, which are maintained in
+                their own layers or in layers designed to contain several
+                BSPs.
+                To get an idea of machine support through BSP layers, you can
+                look at the
+                <ulink url='&YOCTO_RELEASE_DL_URL;/machines'>index of machines</ulink>
+                for the release.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Optionally Clone the
+                <filename>meta-intel</filename> BSP Layer:</emphasis>
+                If your hardware is based on current Intel CPUs and devices,
+                you can leverage this BSP layer.
+                For details on the <filename>meta-intel</filename> BSP layer,
+                see the layer's
+                <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/tree/README'><filename>README</filename></ulink>
+                file.
+                <orderedlist>
+                    <listitem><para>
+                        <emphasis>Navigate to Your Source Directory:</emphasis>
+                        Typically, you set up the
+                        <filename>meta-intel</filename> Git repository
+                        inside the
+                        <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+                        (e.g. <filename>poky</filename>).
+                        <literallayout class='monospaced'>
+     $ cd /home/<replaceable>you</replaceable>/poky
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Clone the Layer:</emphasis>
+                        <literallayout class='monospaced'>
+     $ git clone git://git.yoctoproject.org/meta-intel.git
+     Cloning into 'meta-intel'...
+     remote: Counting objects: 15585, done.
+     remote: Compressing objects: 100% (5056/5056), done.
+     remote: Total 15585 (delta 9123), reused 15329 (delta 8867)
+     Receiving objects: 100% (15585/15585), 4.51 MiB | 3.19 MiB/s, done.
+     Resolving deltas: 100% (9123/9123), done.
+     Checking connectivity... done.
+                        </literallayout>
+                        </para></listitem>
+                    <listitem><para>
+                        <emphasis>Check Out the Proper Branch:</emphasis>
+                        The branch you check out for
+                        <filename>meta-intel</filename> must match the same
+                        branch you are using for the Yocto Project release
+                        (e.g. &DISTRO_NAME_NO_CAP;):
+                        <literallayout class='monospaced'>
+     $ cd meta-intel
+     $ git checkout -b &DISTRO_NAME_NO_CAP; remotes/origin/&DISTRO_NAME_NO_CAP;
+     Branch &DISTRO_NAME_NO_CAP; set up to track remote branch &DISTRO_NAME_NO_CAP; from origin.
+     Switched to a new branch '&DISTRO_NAME_NO_CAP;'
+                        </literallayout>
+                        <note>
+                            To see the available branch names in a cloned repository,
+                            use the <filename>git branch -al</filename> command.
+                            See the
+                            "<ulink url='&YOCTO_DOCS_DEV_URL;#checking-out-by-branch-in-poky'>Checking Out By Branch in Poky</ulink>"
+                            section in the Yocto Project Development Tasks
+                            Manual for more information.
+                        </note>
+                        </para></listitem>
+                </orderedlist>
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Optionally Set Up an Alternative BSP Layer:</emphasis>
+                If your hardware can be more closely leveraged to an
+                existing BSP not within the <filename>meta-intel</filename>
+                BSP layer, you can clone that BSP layer.</para>
+
+                <para>The process is identical to the process used for the
+                <filename>meta-intel</filename> layer except for the layer's
+                name.
+                For example, if you determine that your hardware most
+                closely matches the <filename>meta-raspberrypi</filename>,
+                clone that layer:
+                <literallayout class='monospaced'>
+     $ git clone git://git.yoctoproject.org/meta-raspberrypi
+     Cloning into 'meta-raspberrypi'...
+     remote: Counting objects: 4743, done.
+     remote: Compressing objects: 100% (2185/2185), done.
+     remote: Total 4743 (delta 2447), reused 4496 (delta 2258)
+     Receiving objects: 100% (4743/4743), 1.18 MiB | 0 bytes/s, done.
+     Resolving deltas: 100% (2447/2447), done.
+     Checking connectivity... done.
+                </literallayout>
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Initialize the Build Environment:</emphasis>
+                While in the root directory of the Source Directory (i.e.
+                <filename>poky</filename>), run the
+                <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
+                environment setup script to define the OpenEmbedded
+                build environment on your build host.
+                <literallayout class='monospaced'>
+     $ source &OE_INIT_FILE;
+                </literallayout>
+                Among other things, the script creates the
+                <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
+                which is <filename>build</filename> in this case
+                and is located in the
+                <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
+                After the script runs, your current working directory
+                is set to the <filename>build</filename> directory.
+                </para></listitem>
+        </orderedlist>
+    </para>
+</section>
+
+<section id="bsp-filelayout">
+    <title>Example Filesystem Layout</title>
+
+    <para>
+        Defining a common BSP directory structure allows
+        end-users to understand and become familiar with
+        that standard.
+        A common format also encourages standardization
+        of software support for hardware.
+    </para>
+
+    <para>
+        The proposed form described in this section does
+        have elements that are specific to the OpenEmbedded
+        build system.
+        It is intended that developers can use this structure
+        with other build systems besides the OpenEmbedded build
+        system.
+        It is also intended that it will be be simple to extract
+        information and convert it to other formats if required.
+        The OpenEmbedded build system, through its standard
+        <ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>layers mechanism</ulink>,
+        can directly accept the format described as a layer.
+        The BSP layer captures all the hardware-specific details
+        in one place using a standard format, which is useful
+        for any person wishing to use the hardware platform
+        regardless of the build system they are using.
+    </para>
+
+    <para>
+        The BSP specification does not include a build system
+        or other tools - the specification is concerned with
+        the hardware-specific components only.
+        At the end-distribution point, you can ship the BSP
+        layer combined with a build system and other tools.
+        Realize that it is important to maintain the distinction
+        that the BSP layer, a build system, and tools are
+        separate components that could be combined in
+        certain end products.
+    </para>
+
+    <para>
+        Before looking at the recommended form for the directory structure
+        inside a BSP layer, you should be aware that some
+        requirements do exist in order for a BSP layer to
+        be considered <firstterm>compliant</firstterm> with the Yocto Project.
+        For that list of requirements, see the
+        "<link linkend='released-bsp-requirements'>Released BSP Requirements</link>"
+        section.
+    </para>
+
+    <para>
+        Below is the typical directory structure for a BSP layer.
+        While this basic form represents the standard,
+        realize that the actual layout for individual
+        BSPs could differ.
+        <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/
+     meta-<replaceable>bsp_root_name</replaceable>/<replaceable>bsp_license_file</replaceable>
+     meta-<replaceable>bsp_root_name</replaceable>/README
+     meta-<replaceable>bsp_root_name</replaceable>/README.sources
+     meta-<replaceable>bsp_root_name</replaceable>/binary/<replaceable>bootable_images</replaceable>
+     meta-<replaceable>bsp_root_name</replaceable>/conf/layer.conf
+     meta-<replaceable>bsp_root_name</replaceable>/conf/machine/*.conf
+     meta-<replaceable>bsp_root_name</replaceable>/recipes-bsp/*
+     meta-<replaceable>bsp_root_name</replaceable>/recipes-core/*
+     meta-<replaceable>bsp_root_name</replaceable>/recipes-graphics/*
+     meta-<replaceable>bsp_root_name</replaceable>/recipes-kernel/linux/linux-yocto_<replaceable>kernel_rev</replaceable>.bbappend
+        </literallayout>
+    </para>
+
+    <para>
+        Below is an example of the Raspberry Pi BSP
+        layer that is available from the
+        <ulink url='&YOCTO_GIT_URL;'>Source Respositories</ulink>:
+        <literallayout class='monospaced'>
+     meta-raspberrypi/COPYING.MIT
+     meta-raspberrypi/README.md
+     meta-raspberrypi/classes
+     meta-raspberrypi/classes/sdcard_image-rpi.bbclass
+     meta-raspberrypi/conf/
+     meta-raspberrypi/conf/layer.conf
+     meta-raspberrypi/conf/machine/
+     meta-raspberrypi/conf/machine/raspberrypi-cm.conf
+     meta-raspberrypi/conf/machine/raspberrypi-cm3.conf
+     meta-raspberrypi/conf/machine/raspberrypi.conf
+     meta-raspberrypi/conf/machine/raspberrypi0-wifi.conf
+     meta-raspberrypi/conf/machine/raspberrypi0.conf
+     meta-raspberrypi/conf/machine/raspberrypi2.conf
+     meta-raspberrypi/conf/machine/raspberrypi3-64.conf
+     meta-raspberrypi/conf/machine/raspberrypi3.conf
+     meta-raspberrypi/conf/machine/include
+     meta-raspberrypi/conf/machine/include/rpi-base.inc
+     meta-raspberrypi/conf/machine/include/rpi-default-providers.inc
+     meta-raspberrypi/conf/machine/include/rpi-default-settings.inc
+     meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
+     meta-raspberrypi/conf/machine/include/tune-arm1176jzf-s.inc
+     meta-raspberrypi/docs
+     meta-raspberrypi/docs/Makefile
+     meta-raspberrypi/docs/conf.py
+     meta-raspberrypi/docs/contributing.md
+     meta-raspberrypi/docs/extra-apps.md
+     meta-raspberrypi/docs/extra-build-config.md
+     meta-raspberrypi/docs/index.rst
+     meta-raspberrypi/docs/layer-contents.md
+     meta-raspberrypi/docs/readme.md
+     meta-raspberrypi/files
+     meta-raspberrypi/files/custom-licenses
+     meta-raspberrypi/files/custom-licenses/Broadcom
+     meta-raspberrypi/recipes-bsp
+     meta-raspberrypi/recipes-bsp/bootfiles
+     meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
+     meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
+     meta-raspberrypi/recipes-bsp/common
+     meta-raspberrypi/recipes-bsp/common/firmware.inc
+     meta-raspberrypi/recipes-bsp/formfactor
+     meta-raspberrypi/recipes-bsp/formfactor/formfactor
+     meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi
+     meta-raspberrypi/recipes-bsp/formfactor/formfactor/raspberrypi/machconfig
+     meta-raspberrypi/recipes-bsp/formfactor/formfactor_0.0.bbappend
+     meta-raspberrypi/recipes-bsp/rpi-u-boot-src
+     meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files
+     meta-raspberrypi/recipes-bsp/rpi-u-boot-src/files/boot.cmd.in
+     meta-raspberrypi/recipes-bsp/rpi-u-boot-src/rpi-u-boot-scr.bb
+     meta-raspberrypi/recipes-bsp/u-boot
+     meta-raspberrypi/recipes-bsp/u-boot/u-boot
+     meta-raspberrypi/recipes-bsp/u-boot/u-boot/*.patch
+     meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
+     meta-raspberrypi/recipes-connectivity
+     meta-raspberrypi/recipes-connectivity/bluez5
+     meta-raspberrypi/recipes-connectivity/bluez5/bluez5
+     meta-raspberrypi/recipes-connectivity/bluez5/bluez5/*.patch
+     meta-raspberrypi/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd
+     meta-raspberrypi/recipes-connectivity/bluez5/bluez5brcm43438.service
+     meta-raspberrypi/recipes-connectivity/bluez5/bluez5_%.bbappend
+     meta-raspberrypi/recipes-core
+     meta-raspberrypi/recipes-core/images
+     meta-raspberrypi/recipes-core/images/rpi-basic-image.bb
+     meta-raspberrypi/recipes-core/images/rpi-hwup-image.bb
+     meta-raspberrypi/recipes-core/images/rpi-test-image.bb
+     meta-raspberrypi/recipes-core/packagegroups
+     meta-raspberrypi/recipes-core/packagegroups/packagegroup-rpi-test.bb
+     meta-raspberrypi/recipes-core/psplash
+     meta-raspberrypi/recipes-core/psplash/files
+     meta-raspberrypi/recipes-core/psplash/files/psplash-raspberrypi-img.h
+     meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend
+     meta-raspberrypi/recipes-core/udev
+     meta-raspberrypi/recipes-core/udev/udev-rules-rpi
+     meta-raspberrypi/recipes-core/udev/udev-rules-rpi/99-com.rules
+     meta-raspberrypi/recipes-core/udev/udev-rules-rpi.bb
+     meta-raspberrypi/recipes-devtools
+     meta-raspberrypi/recipes-devtools/bcm2835
+     meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb
+     meta-raspberrypi/recipes-devtools/pi-blaster
+     meta-raspberrypi/recipes-devtools/pi-blaster/files
+     meta-raspberrypi/recipes-devtools/pi-blaster/files/*.patch
+     meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb
+     meta-raspberrypi/recipes-devtools/python
+     meta-raspberrypi/recipes-devtools/python/python-rtimu
+     meta-raspberrypi/recipes-devtools/python/python-rtimu/*.patch
+     meta-raspberrypi/recipes-devtools/python/python-rtimu_git.bb
+     meta-raspberrypi/recipes-devtools/python/python-sense-hat_2.2.0.bb
+     meta-raspberrypi/recipes-devtools/python/rpi-gpio
+     meta-raspberrypi/recipes-devtools/python/rpi-gpio/*.patch
+     meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.3.bb
+     meta-raspberrypi/recipes-devtools/python/rpio
+     meta-raspberrypi/recipes-devtools/python/rpio/*.patch
+     meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb
+     meta-raspberrypi/recipes-devtools/wiringPi
+     meta-raspberrypi/recipes-devtools/wiringPi/files
+     meta-raspberrypi/recipes-devtools/wiringPi/files/*.patch
+     meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb
+     meta-raspberrypi/recipes-graphics
+     meta-raspberrypi/recipes-graphics/eglinfo
+     meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
+     meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
+     meta-raspberrypi/recipes-graphics/mesa
+     meta-raspberrypi/recipes-graphics/mesa/mesa-gl_%.bbappend
+     meta-raspberrypi/recipes-graphics/mesa/mesa_%.bbappend
+     meta-raspberrypi/recipes-graphics/userland
+     meta-raspberrypi/recipes-graphics/userland/userland
+     meta-raspberrypi/recipes-graphics/userland/userland/*.patch
+     meta-raspberrypi/recipes-graphics/userland/userland_git.bb
+     meta-raspberrypi/recipes-graphics/vc-graphics
+     meta-raspberrypi/recipes-graphics/vc-graphics/files
+     meta-raspberrypi/recipes-graphics/vc-graphics/files/egl.pc
+     meta-raspberrypi/recipes-graphics/vc-graphics/files/vchiq.sh
+     meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics-hardfp.bb
+     meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.bb
+     meta-raspberrypi/recipes-graphics/vc-graphics/vc-graphics.inc
+     meta-raspberrypi/recipes-graphics/wayland
+     meta-raspberrypi/recipes-graphics/wayland/weston_%.bbappend
+     meta-raspberrypi/recipes-graphics/xorg-xserver
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-evdev.conf
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/98-pitft.conf
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/99-calibration.conf
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
+     meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
+     meta-raspberrypi/recipes-kernel
+     meta-raspberrypi/recipes-kernel/linux-firmware
+     meta-raspberrypi/recipes-kernel/linux-firmware/files
+     meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin
+     meta-raspberrypi/recipes-kernel/linux-firmware/files/brcfmac43430-sdio.txt
+     meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
+     meta-raspberrypi/recipes-kernel/linux
+     meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev.bb
+     meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
+     meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.14.bb
+     meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb
+     meta-raspberrypi/recipes-multimedia
+     meta-raspberrypi/recipes-multimedia/gstreamer
+     meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx
+     meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx/*.patch
+     meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
+     meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
+     meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12
+     meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/*.patch
+     meta-raspberrypi/recipes-multimedia/omxplayer
+     meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer
+     meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/*.patch
+     meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb
+     meta-raspberrypi/recipes-multimedia/x264
+     meta-raspberrypi/recipes-multimedia/x264/x264_git.bbappend
+     meta-raspberrypi/wic
+     meta-raspberrypi/wic/sdimage-raspberrypi.wks
+        </literallayout>
+    </para>
+
+    <para>
+        The following sections describe each part of the proposed
+        BSP format.
+    </para>
+
+    <section id="bsp-filelayout-license">
+        <title>License Files</title>
+
+        <para>
+            You can find these files in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/<replaceable>bsp_license_file</replaceable>
+            </literallayout>
+        </para>
+
+        <para>
+            These optional files satisfy licensing requirements
+            for the BSP.
+            The type or types of files here can vary depending
+            on the licensing requirements.
+            For example, in the Raspberry Pi BSP, all licensing
+            requirements are handled with the
+            <filename>COPYING.MIT</filename> file.
+        </para>
+
+        <para>
+            Licensing files can be MIT, BSD, GPLv*, and so forth.
+            These files are recommended for the BSP but are
+            optional and totally up to the BSP developer.
+            For information on how to maintain license
+            compliance, see the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Product's Lifecycle</ulink>"
+            section in the Yocto Project Development Tasks
+            Manual.
+        </para>
+    </section>
+
+    <section id="bsp-filelayout-readme">
+        <title>README File</title>
+
+        <para>
+            You can find this file in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/README
+            </literallayout>
+        </para>
+
+        <para>
+            This file provides information on how to boot the live
+            images that are optionally included in the
+            <filename>binary/</filename> directory.
+            The <filename>README</filename> file also provides
+            information needed for building the image.
+        </para>
+
+        <para>
+            At a minimum, the <filename>README</filename> file must
+            contain a list of dependencies, such as the names of
+            any other layers on which the BSP depends and the name of
+            the BSP maintainer with his or her contact information.
+        </para>
+    </section>
+
+    <section id="bsp-filelayout-readme-sources">
+        <title>README.sources File</title>
+
+        <para>
+            You can find this file in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/README.sources
+            </literallayout>
+        </para>
+
+        <para>
+            This file provides information on where to locate the BSP
+            source files used to build the images (if any) that
+            reside in
+            <filename>meta-<replaceable>bsp_root_name</replaceable>/binary</filename>.
+            Images in the <filename>binary</filename> would be images
+            released with the BSP.
+            The information in the <filename>README.sources</filename>
+            file also helps you find the
+            <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
+            used to generate the images that ship with the BSP.
+            <note>
+                If the BSP's <filename>binary</filename> directory is
+                missing or the directory has no images, an existing
+                <filename>README.sources</filename> file is
+                meaningless and usually does not exist.
+            </note>
+        </para>
+    </section>
+
+    <section id="bsp-filelayout-binary">
+        <title>Pre-built User Binaries</title>
+
+        <para>
+            You can find these files in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/binary/<replaceable>bootable_images</replaceable>
+            </literallayout>
+        </para>
+
+        <para>
+            This optional area contains useful pre-built kernels
+            and user-space filesystem images released with the
+            BSP that are appropriate to the target system.
+            This directory typically contains graphical (e.g. Sato)
+            and minimal live images when the BSP tarball has been
+            created and made available in the
+            <ulink url='&YOCTO_HOME_URL;'>Yocto Project</ulink>
+            website.
+            You can use these kernels and images to get a system
+            running and quickly get started on development tasks.
+        </para>
+
+        <para>
+            The exact types of binaries present are highly
+            hardware-dependent.
+            The
+            <link linkend='bsp-filelayout-readme'><filename>README</filename></link>
+            file should be present in the BSP Layer and it
+            explains how to use the images with the target hardware.
+            Additionally, the
+            <link linkend='bsp-filelayout-readme-sources'><filename>README.sources</filename></link>
+            file should be present to locate the sources used to
+            build the images and provide information on the
+            Metadata.
+        </para>
+    </section>
+
+    <section id='bsp-filelayout-layer'>
+        <title>Layer Configuration File</title>
+
+        <para>
+            You can find this file in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/conf/layer.conf
+            </literallayout>
+        </para>
+
+        <para>
+            The <filename>conf/layer.conf</filename> file
+            identifies the file structure as a layer,
+            identifies the contents of the layer, and
+            contains information about how the build system should
+            use it.
+            Generally, a standard boilerplate file such as the
+            following works.
+            In the following example, you would replace
+            <replaceable>bsp</replaceable> with the actual
+            name of the BSP (i.e.
+            <replaceable>bsp_root_name</replaceable> from the example
+            template).
+        </para>
+
+        <para>
+            <literallayout class='monospaced'>
+     # We have a conf and classes directory, add to BBPATH
+     BBPATH .= ":${LAYERDIR}"
+
+     # We have a recipes directory, add to BBFILES
+     BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+                 ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+     BBFILE_COLLECTIONS += "<replaceable>bsp</replaceable>"
+     BBFILE_PATTERN_<replaceable>bsp</replaceable> = "^${LAYERDIR}/"
+     BBFILE_PRIORITY_<replaceable>bsp</replaceable> = "6"
+
+     LAYERDEPENDS_<replaceable>bsp</replaceable> = "intel"
+            </literallayout>
+        </para>
+
+        <para>
+            To illustrate the string substitutions, here are
+            the corresponding statements from the Raspberry
+            Pi <filename>conf/layer.conf</filename> file:
+            <literallayout class='monospaced'>
+     # We have a conf and classes directory, append to BBPATH
+     BBPATH .= ":${LAYERDIR}"
+
+     # We have a recipes directory containing .bb and .bbappend files, add to BBFILES
+     BBFILES += "${LAYERDIR}/recipes*/*/*.bb \
+                 ${LAYERDIR}/recipes*/*/*.bbappend"
+
+     BBFILE_COLLECTIONS += "raspberrypi"
+     BBFILE_PATTERN_raspberrypi := "^${LAYERDIR}/"
+     BBFILE_PRIORITY_raspberrypi = "9"
+
+     # Additional license directories.
+     LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
+          .
+          .
+          .
+            </literallayout>
+        </para>
+
+        <para>
+            This file simply makes
+            <ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
+            aware of the recipes and configuration directories.
+            The file must exist so that the OpenEmbedded build system
+            can recognize the BSP.
+        </para>
+    </section>
+
+    <section id="bsp-filelayout-machine">
+        <title>Hardware Configuration Options</title>
+
+        <para>
+            You can find these files in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/conf/machine/*.conf
+            </literallayout>
+        </para>
+
+        <para>
+            The machine files bind together all the information
+            contained elsewhere in the BSP into a format that
+            the build system can understand.
+            Each BSP Layer requires at least one machine file.
+            If the BSP supports multiple machines, multiple
+            machine configuration files can exist.
+            These filenames correspond to the values to which
+            users have set the
+            <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink> variable.
+        </para>
+
+        <para>
+            These files define things such as the kernel package
+            to use
+            (<ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></ulink>
+            of
+            <ulink url='&YOCTO_DOCS_DEV_URL;#metadata-virtual-providers'>virtual/kernel</ulink>),
+            the hardware drivers to include in different types
+            of images, any special software components that are
+            needed, any bootloader information, and also any
+            special image format requirements.
+        </para>
+
+        <para>
+            This configuration file could also include a hardware
+            "tuning" file that is commonly used to define the
+            package architecture and specify optimization flags,
+            which are carefully chosen to give best performance
+            on a given processor.
+        </para>
+
+        <para>
+            Tuning files are found in the
+            <filename>meta/conf/machine/include</filename>
+            directory within the
+            <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
+            For example, many <filename>tune-*</filename> files
+            (e.g. <filename>tune-arm1136jf-s.inc</filename>,
+            <filename>tune-1586-nlp.inc</filename>, and so forth)
+            reside in the
+            <filename>poky/meta/conf/machine/include</filename>
+            directory.
+        </para>
+
+        <para>
+            To use an include file, you simply include them in the
+            machine configuration file.
+            For example, the Raspberry Pi BSP
+            <filename>raspberrypi3.conf</filename> contains the
+            following statement:
+            <literallayout class='monospaced'>
+     include conf/machine/include/rpi-base.inc
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='bsp-filelayout-misc-recipes'>
+        <title>Miscellaneous BSP-Specific Recipe Files</title>
+
+        <para>
+            You can find these files in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/recipes-bsp/*
+            </literallayout>
+        </para>
+
+        <para>
+            This optional directory contains miscellaneous recipe
+            files for the BSP.
+            Most notably would be the formfactor files.
+            For example, in the Raspberry Pi BSP, there is the
+            <filename>formfactor_0.0.bbappend</filename> file,
+            which is an append file used to augment the recipe
+            that starts the build.
+            Furthermore, there are machine-specific settings used
+            during the build that are defined by the
+            <filename>machconfig</filename> file further down in
+            the directory.
+            Here is the <filename>machconfig</filename> file for
+            the Raspberry Pi BSP:
+            <literallayout class='monospaced'>
+     HAVE_TOUCHSCREEN=0
+     HAVE_KEYBOARD=1
+
+     DISPLAY_CAN_ROTATE=0
+     DISPLAY_ORIENTATION=0
+     DISPLAY_DPI=133
+            </literallayout>
+        </para>
+
+        <note><para>
+            If a BSP does not have a formfactor entry, defaults
+            are established according to the formfactor
+            configuration file that is installed by the main
+            formfactor recipe
+            <filename>meta/recipes-bsp/formfactor/formfactor_0.0.bb</filename>,
+            which is found in the
+            <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
+        </para></note>
+    </section>
+
+    <section id='bsp-filelayout-recipes-graphics'>
+        <title>Display Support Files</title>
+
+        <para>
+            You can find these files in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/recipes-graphics/*
+            </literallayout>
+        </para>
+
+        <para>
+            This optional directory contains recipes for the
+            BSP if it has special requirements for graphics
+            support.
+            All files that are needed for the BSP to support
+            a display are kept here.
+        </para>
+    </section>
+
+    <section id='bsp-filelayout-kernel'>
+        <title>Linux Kernel Configuration</title>
+
+        <para>
+            You can find these files in the BSP Layer at:
+            <literallayout class='monospaced'>
+     meta-<replaceable>bsp_root_name</replaceable>/recipes-kernel/linux/linux*.bbappend
+     meta-<replaceable>bsp_root_name</replaceable>/recipes-kernel/linux/*.bb
+            </literallayout>
+        </para>
+
+        <para>
+            Append files (<filename>*.bbappend</filename>) modify
+            the main kernel recipe being used to build the image.
+            The <filename>*.bb</filename> files would be a
+            developer-supplied kernel recipe.
+            This area of the BSP hierarchy can contain both these
+            types of files although, in practice, it is likely that
+            you would have one or the other.
+        </para>
+
+        <para>
+            For your BSP, you typically want to use an existing Yocto
+            Project kernel recipe found in the
+            <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+            at <filename>meta/recipes-kernel/linux</filename>.
+            You can append machine-specific changes to the
+            kernel recipe by using a similarly named append
+            file, which is located in the BSP Layer for your
+            target device (e.g. the
+            <filename>meta-<replaceable>bsp_root_name</replaceable>/recipes-kernel/linux</filename> directory).
+        </para>
+
+        <para>
+            Suppose you are using the
+            <filename>linux-yocto_4.4.bb</filename> recipe to
+            build the kernel.
+            In other words, you have selected the kernel in your
+            <replaceable>bsp_root_name</replaceable><filename>.conf</filename>
+            file by adding
+            <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></ulink>
+            and
+            <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_VERSION'><filename>PREFERRED_VERSION</filename></ulink>
+            statements as follows:
+            <literallayout class='monospaced'>
+     PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+     PREFERRED_VERSION_linux-yocto ?= "4.4%"
+            </literallayout>
+            <note>
+                When the preferred provider is assumed by
+                default, the
+                <filename>PREFERRED_PROVIDER</filename>
+                statement does not appear in the
+                <replaceable>bsp_root_name</replaceable><filename>.conf</filename> file.
+            </note>
+            You would use the
+            <filename>linux-yocto_4.4.bbappend</filename>
+            file to append specific BSP settings to the kernel,
+            thus configuring the kernel for your particular BSP.
+        </para>
+
+        <para>
+            You can find more information on what your append file
+            should contain in the
+            "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#creating-the-append-file'>Creating the Append File</ulink>"
+            section in the Yocto Project Linux Kernel Development
+            Manual.
+        </para>
+
+        <para>
+            An alternate scenario is when you create your own
+            kernel recipe for the BSP.
+            A good example of this is the Raspberry Pi BSP.
+            If you examine the
+            <filename>recipes-kernel/linux</filename> directory
+            you see the following:
+            <literallayout class='monospaced'>
+     linux-raspberrypi-dev.bb
+     linux-raspberrypi.inc
+     linux-raspberrypi_4.14.bb
+     linux-raspberrypi_4.9.bb
+            </literallayout>
+            The directory contains three kernel recipes and a
+            common include file.
+        </para>
+    </section>
+</section>
+
+<section id='developing-a-board-support-package-bsp'>
+    <title>Developing a Board Support Package (BSP)</title>
+
+    <para>
+        This section describes the high-level procedure you can
+        follow to create a BSP.
+        Although not required for BSP creation, the
+        <filename>meta-intel</filename> repository, which
+        contains many BSPs supported by the Yocto Project,
+        is part of the example.
+    </para>
+
+    <para>
+        For an example that shows how to create a new
+        layer using the tools, see the
+        "<link linkend='creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a New BSP Layer Using the <filename>bitbake-layers</filename> Script</link>"
+        section.
+    </para>
+
+    <para>
+        The following illustration and list summarize the BSP
+        creation general workflow.
+    </para>
+
+    <para>
+        <imagedata fileref="figures/bsp-dev-flow.png" width="7in" depth="5in" align="center" scalefit="1" />
+    </para>
+
+    <para>
+        <orderedlist>
+            <listitem><para>
+                <emphasis>Set up Your Host Development System
+                to Support Development Using the Yocto
+                Project</emphasis>:
+                See the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
+                section in the Yocto Project Development Tasks
+                Manual for options on how to get a system ready
+                to use the Yocto Project.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Establish the
+                <filename>meta-intel</filename>
+                Repository on Your System:</emphasis>
+                Having local copies of these supported BSP layers
+                on your system gives you access to layers you
+                might be able to leverage when creating your BSP.
+                For information on how to get these files, see the
+                "<link linkend='preparing-your-build-host-to-work-with-bsp-layers'>Preparing Your Build Host to Work with BSP Layers</link>"
+                section.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Create Your Own BSP Layer Using the
+                <filename>bitbake-layers</filename>
+                Script:</emphasis>
+                Layers are ideal for isolating and storing work
+                for a given piece of hardware.
+                A layer is really just a location or area in which you
+                place the recipes and configurations for your BSP.
+                In fact, a BSP is, in itself, a special type of layer.
+                The simplest way to create a new BSP layer that is
+                compliant with the Yocto Project is to use the
+                <filename>bitbake-layers</filename> script.
+                For information about that script, see the
+                "<link linkend='creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a New BSP Layer Using the <filename>bitbake-layers</filename> Script</link>"
+                section.</para>
+
+                <para>Another example that illustrates a layer
+                is an application.
+                Suppose you are creating an application that has
+                library or other dependencies in order for it to
+                compile and run.
+                The layer, in this case, would be where all the
+                recipes that define those dependencies are kept.
+                The key point for a layer is that it is an
+                isolated area that contains all the relevant
+                information for the project that the
+                OpenEmbedded build system knows about.
+                For more information on layers, see the
+                "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
+                section in the Yocto Project Overview and Concepts
+                Manual.
+                You can also reference the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
+                section in the Yocto Project Development Tasks
+                Manual.
+                For more information on BSP layers, see the
+                "<link linkend='bsp-layers'>BSP Layers</link>"
+                section.
+                <note><title>Notes</title>
+                    <itemizedlist>
+                        <listitem><para>
+                            Five hardware reference BSPs exist
+                            that are part of the Yocto Project release
+                            and are located in the
+                            <filename>poky/meta-yocto-bsp</filename> BSP
+                            layer:
+                            <itemizedlist>
+                                <listitem><para>
+                                    Texas Instruments Beaglebone
+                                    (<filename>beaglebone-yocto</filename>)
+                                    </para></listitem>
+                                <listitem><para>
+                                    Ubiquiti Networks EdgeRouter Lite
+                                   (<filename>edgerouter</filename>)
+                                   </para></listitem>
+                                <listitem><para>
+                                    Two general IA platforms
+                                    (<filename>genericx86</filename> and
+                                    <filename>genericx86-64</filename>)
+                                    </para></listitem>
+                            </itemizedlist>
+                            </para></listitem>
+                        <listitem><para>
+                            Three core Intel BSPs exist as part of
+                            the Yocto Project release in the
+                            <filename>meta-intel</filename> layer:
+                            <itemizedlist>
+                                <listitem><para>
+                                    <filename>intel-core2-32</filename>,
+                                    which is a BSP optimized for the Core2
+                                    family of CPUs as well as all CPUs
+                                    prior to the Silvermont core.
+                                    </para></listitem>
+                                <listitem><para>
+                                    <filename>intel-corei7-64</filename>,
+                                    which is a BSP optimized for Nehalem
+                                    and later Core and Xeon CPUs as well
+                                    as Silvermont and later Atom CPUs,
+                                    such as the Baytrail SoCs.
+                                    </para></listitem>
+                                <listitem><para>
+                                    <filename>intel-quark</filename>,
+                                    which is a BSP optimized for the
+                                    Intel Galileo gen1 &amp; gen2
+                                    development boards.
+                                    </para></listitem>
+                            </itemizedlist>
+                            </para></listitem>
+                    </itemizedlist>
+                </note></para>
+
+                <para>When you set up a layer for a new BSP,
+                you should follow a standard layout.
+                This layout is described in the
+                "<link linkend='bsp-filelayout'>Example Filesystem Layout</link>"
+                section.
+                In the standard layout, notice the suggested
+                structure for recipes and configuration
+                information.
+                You can see the standard layout for a BSP
+                by examining any supported BSP found in the
+                <filename>meta-intel</filename> layer inside
+                the Source Directory.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Make Configuration Changes to Your New
+                BSP Layer:</emphasis>
+                The standard BSP layer structure organizes the
+                files you need to edit in
+                <filename>conf</filename> and several
+                <filename>recipes-*</filename> directories
+                within the BSP layer.
+                Configuration changes identify where your new
+                layer is on the local system and identifies the
+                kernel you are going to use.
+                When you run the
+                <filename>bitbake-layers</filename> script,
+                you are able to interactively configure many
+                things for the BSP (e.g. keyboard, touchscreen,
+                and so forth).
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Make Recipe Changes to Your New BSP
+                Layer:</emphasis>
+                Recipe changes include altering recipes
+                (<filename>*.bb</filename> files), removing
+                recipes you do not use, and adding new recipes
+                or append files (<filename>.bbappend</filename>)
+                that support your hardware.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Prepare for the Build:</emphasis>
+                Once you have made all the changes to your BSP
+                layer, there remains a few things you need to
+                do for the OpenEmbedded build system in order
+                for it to create your image.
+                You need to get the build environment ready by
+                sourcing an environment setup script
+                (i.e. <filename>oe-init-build-env</filename>)
+                and you need to be sure two key configuration
+                files are configured appropriately: the
+                <filename>conf/local.conf</filename> and the
+                <filename>conf/bblayers.conf</filename> file.
+                You must make the OpenEmbedded build system aware
+                of your new layer.
+                See the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-your-layer'>Enabling Your Layer</ulink>"
+                section in the Yocto Project Development Tasks Manual
+                for information on how to let the build system
+                know about your new layer.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Build the Image:</emphasis>
+                The OpenEmbedded build system uses the BitBake tool
+                to build images based on the type of image you want to
+                create.
+                You can find more information about BitBake in the
+                <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
+                </para>
+
+                <para>The build process supports several types of
+                images to satisfy different needs.
+                See the
+                "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
+                chapter in the Yocto Project Reference Manual for
+                information on supported images.
+                </para></listitem>
+        </orderedlist>
+    </para>
+</section>
+
+<section id='requirements-and-recommendations-for-released-bsps'>
+    <title>Requirements and Recommendations for Released BSPs</title>
+
+    <para>
+        Certain requirements exist for a released BSP to be
+        considered compliant with the Yocto Project.
+        Additionally, recommendations also exist.
+        This section describes the requirements and
+        recommendations for released BSPs.
+    </para>
+
+    <section id='released-bsp-requirements'>
+        <title>Released BSP Requirements</title>
+
+        <para>
+            Before looking at BSP requirements, you should consider
+            the following:
+            <itemizedlist>
+                <listitem><para>
+                    The requirements here assume the BSP layer
+                    is a well-formed, "legal" layer that can be
+                    added to the Yocto Project.
+                    For guidelines on creating a layer that meets
+                    these base requirements, see the
+                    "<link linkend='bsp-layers'>BSP Layers</link>"
+                    section in this manual and the
+                    "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers"</ulink>"
+                    section in the Yocto Project Development Tasks
+                    Manual.
+                    </para></listitem>
+                <listitem><para>
+                    The requirements in this section apply
+                    regardless of how you package a BSP.
+                    You should consult the packaging and distribution
+                    guidelines for your specific release process.
+                    For an example of packaging and distribution
+                    requirements, see the
+                    "<ulink url='https://wiki.yoctoproject.org/wiki/Third_Party_BSP_Release_Process'>Third Party BSP Release Process</ulink>"
+                    wiki page.
+                    </para></listitem>
+                <listitem><para>
+                    The requirements for the BSP as it is made
+                    available to a developer are completely
+                    independent of the released form of the BSP.
+                    For example, the BSP Metadata can be contained
+                    within a Git repository and could have a directory
+                    structure completely different from what appears
+                    in the officially released BSP layer.
+                    </para></listitem>
+                <listitem><para>
+                    It is not required that specific packages or
+                    package modifications exist in the BSP layer,
+                    beyond the requirements for general
+                    compliance with the Yocto Project.
+                    For example, no requirement exists dictating
+                    that a specific kernel or kernel version be
+                    used in a given BSP.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+
+        <para>
+            Following are the requirements for a released BSP
+            that conform to the Yocto Project:
+            <itemizedlist>
+                <listitem><para>
+                    <emphasis>Layer Name:</emphasis>
+                    The BSP must have a layer name that follows
+                    the Yocto Project standards.
+                    For information on BSP layer names, see the
+                    "<link linkend='bsp-layers'>BSP Layers</link>" section.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>File System Layout:</emphasis>
+                    When possible, use the same directory names
+                    in your BSP layer as listed in the
+                    <filename>recipes.txt</filename> file, which
+                    is found in <filename>poky/meta</filename>
+                    directory of the
+                    <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+                    or in the OpenEmbedded-Core Layer
+                    (<filename>openembedded-core</filename>) at
+                    <ulink url='http://git.openembedded.org/openembedded-core/tree/meta'></ulink>.
+                    </para>
+
+                    <para>You should place recipes
+                    (<filename>*.bb</filename> files) and recipe
+                    modifications (<filename>*.bbappend</filename>
+                    files) into <filename>recipes-*</filename>
+                    subdirectories by functional area as outlined
+                    in <filename>recipes.txt</filename>.
+                    If you cannot find a category in
+                    <filename>recipes.txt</filename> to fit a
+                    particular recipe, you can make up your own
+                    <filename>recipes-*</filename> subdirectory.
+                    </para>
+
+                    <para>Within any particular
+                    <filename>recipes-*</filename> category, the
+                    layout should match what is found in the
+                    OpenEmbedded-Core Git repository
+                    (<filename>openembedded-core</filename>)
+                    or the Source Directory (<filename>poky</filename>).
+                    In other words, make sure you place related
+                    files in appropriately-related
+                    <filename>recipes-*</filename> subdirectories
+                    specific to the recipe's function, or within
+                    a subdirectory containing a set of closely-related
+                    recipes.
+                    The recipes themselves should follow the general
+                    guidelines for recipes used in the Yocto Project
+                    found in the
+                    "<ulink url='http://openembedded.org/wiki/Styleguide'>OpenEmbedded Style Guide</ulink>".
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>License File:</emphasis>
+                    You must include a license file in the
+                    <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
+                    directory.
+                    This license covers the BSP Metadata as a whole.
+                    You must specify which license to use since no
+                    default license exists when one is not specified.
+                    See the
+                    <ulink url='&YOCTO_GIT_URL;/cgit.cgi/meta-raspberrypi/tree/COPYING.MIT'><filename>COPYING.MIT</filename></ulink>
+                    file for the Raspberry Pi BSP in the
+                    <filename>meta-raspberrypi</filename> BSP layer
+                    as an example.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>README File:</emphasis>
+                    You must include a <filename>README</filename>
+                    file in the
+                    <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
+                    directory.
+                    See the
+                    <ulink url='&YOCTO_GIT_URL;/cgit.cgi/meta-raspberrypi/tree/README.md'><filename>README.md</filename></ulink>
+                    file for the Raspberry Pi BSP in the
+                    <filename>meta-raspberrypi</filename> BSP layer
+                    as an example.</para>
+
+                    <para>At a minimum, the <filename>README</filename>
+                    file should contain the following:
+                    <itemizedlist>
+                        <listitem><para>
+                            A brief description of the target hardware.
+                            </para></listitem>
+                        <listitem><para>
+                            A list of all the dependencies of the BSP.
+                            These dependencies are typically a list
+                            of required layers needed to build the
+                            BSP.
+                            However, the dependencies should also
+                            contain information regarding any other
+                            dependencies the BSP might have.
+                            </para></listitem>
+                        <listitem><para>
+                            Any required special licensing information.
+                            For example, this information includes
+                            information on special variables needed
+                            to satisfy a EULA, or instructions on
+                            information needed to build or distribute
+                            binaries built from the BSP Metadata.
+                            </para></listitem>
+                        <listitem><para>
+                            The name and contact information for the
+                            BSP layer maintainer.
+                            This is the person to whom patches and
+                            questions should be sent.
+                            For information on how to find the right
+                            person, see the
+                            "<ulink url='&YOCTO_DOCS_DEV_URL;#how-to-submit-a-change'>Submitting a Change to the Yocto Project</ulink>"
+                            section in the Yocto Project Development
+                            Tasks Manual.
+                            </para></listitem>
+                        <listitem><para>
+                            Instructions on how to build the BSP using
+                            the BSP layer.
+                            </para></listitem>
+                        <listitem><para>
+                            Instructions on how to boot the BSP build
+                            from the BSP layer.
+                            </para></listitem>
+                        <listitem><para>
+                            Instructions on how to boot the binary
+                            images contained in the
+                            <filename>binary</filename> directory,
+                            if present.
+                            </para></listitem>
+                        <listitem><para>
+                            Information on any known bugs or issues
+                            that users should know about when either
+                            building or booting the BSP binaries.
+                            </para></listitem>
+                    </itemizedlist>
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>README.sources File:</emphasis>
+                    If you BSP contains binary images in the
+                    <filename>binary</filename> directory, you must
+                    include a <filename>README.sources</filename>
+                    file in the
+                    <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
+                    directory.
+                    This file specifies exactly where you can find
+                    the sources used to generate the binary images.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Layer Configuration File:</emphasis>
+                    You must include a
+                    <filename>conf/layer.conf</filename> file in
+                    the
+                    <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
+                    directory.
+                    This file identifies the
+                    <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
+                    BSP layer as a layer to the build system.
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Machine Configuration File:</emphasis>
+                    You must include one or more
+                    <filename>conf/machine/</filename><replaceable>bsp_root_name</replaceable><filename>.conf</filename>
+                    files in the
+                    <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
+                    directory.
+                    These configuration files define machine targets
+                    that can be built using the BSP layer.
+                    Multiple machine configuration files define
+                    variations of machine configurations that the
+                    BSP supports.
+                    If a BSP supports multiple machine variations,
+                    you need to adequately describe each variation
+                    in the BSP <filename>README</filename> file.
+                    Do not use multiple machine configuration files
+                    to describe disparate hardware.
+                    If you do have very different targets, you should
+                    create separate BSP layers for each target.
+                    <note>
+                        It is completely possible for a developer to
+                        structure the working repository as a
+                        conglomeration of unrelated BSP files, and to
+                        possibly generate BSPs targeted for release
+                        from that directory using scripts or some
+                        other mechanism
+                        (e.g. <filename>meta-yocto-bsp</filename> layer).
+                        Such considerations are outside the scope of
+                        this document.
+                    </note>
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+
+    <section id='released-bsp-recommendations'>
+        <title>Released BSP Recommendations</title>
+
+        <para>
+            Following are recommendations for released BSPs that
+            conform to the Yocto Project:
+            <itemizedlist>
+                <listitem><para>
+                    <emphasis>Bootable Images:</emphasis>
+                    Released BSPs can contain one or more bootable
+                    images.
+                    Including bootable images allows users to easily
+                    try out the BSP using their own hardware.</para>
+
+                    <para>In some cases, it might not be convenient
+                    to include a bootable image.
+                    If so, you might want to make two versions of the
+                    BSP available: one that contains binary images, and
+                    one that does not.
+                    The version that does not contain bootable images
+                    avoids unnecessary download times for users not
+                    interested in the images.</para>
+
+                    <para>If you need to distribute a BSP and include
+                    bootable images or build kernel and filesystems
+                    meant to allow users to boot the BSP for evaluation
+                    purposes, you should put the images and artifacts
+                    within a
+                    <filename>binary/</filename> subdirectory located
+                    in the
+                    <filename>meta-</filename><replaceable>bsp_root_name</replaceable>
+                    directory.
+                    <note>
+                        If you do include a bootable image as part
+                        of the BSP and the image was built by software
+                        covered by the GPL or other open source licenses,
+                        it is your responsibility to understand
+                        and meet all licensing requirements, which could
+                        include distribution of source files.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    <emphasis>Use a Yocto Linux Kernel:</emphasis>
+                    Kernel recipes in the BSP should be based on a
+                    Yocto Linux kernel.
+                    Basing your recipes on these kernels reduces
+                    the costs for maintaining the BSP and increases
+                    its scalability.
+                    See the <filename>Yocto Linux Kernel</filename>
+                    category in the
+                    <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>
+                    for these kernels.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+</section>
+
+<section id='customizing-a-recipe-for-a-bsp'>
+    <title>Customizing a Recipe for a BSP</title>
+
+    <para>
+        If you plan on customizing a recipe for a particular BSP,
+        you need to do the following:
+        <itemizedlist>
+            <listitem><para>
+                Create a <filename>*.bbappend</filename> file for
+                the modified recipe.
+                For information on using append files, see the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files in Your Layer</ulink>"
+                section in the Yocto Project Development Tasks
+                Manual.
+                </para></listitem>
+            <listitem><para>
+                Ensure your directory structure in the BSP layer
+                that supports your machine is such that the
+                OpenEmbedded build system can find it.
+                See the example later in this section for more
+                information.
+                </para></listitem>
+            <listitem><para>
+                Put the append file in a directory whose name matches
+                the machine's name and is located in an appropriate
+                sub-directory inside the BSP layer (i.e.
+                <filename>recipes-bsp</filename>,
+                <filename>recipes-graphics</filename>,
+                <filename>recipes-core</filename>, and so forth).
+                </para></listitem>
+            <listitem><para>
+                Place the BSP-specific files in the proper
+                directory inside the BSP layer.
+                How expansive the layer is affects where you must
+                place these files.
+                For example, if your layer supports several
+                different machine types, you need to be sure your
+                layer's directory structure includes hierarchy
+                that separates the files according to machine.
+                If your layer does not support multiple machines,
+                the layer would not have that additional hierarchy
+                and the files would obviously not be able to reside
+                in a machine-specific directory.
+                </para></listitem>
+        </itemizedlist>
+    </para>
+
+    <para>
+        Following is a specific example to help you better understand
+        the process.
+        This example customizes customizes a recipe by adding a
+        BSP-specific configuration file named
+        <filename>interfaces</filename> to the
+        <filename>init-ifupdown_1.0.bb</filename> recipe for machine
+        "xyz" where the BSP layer also supports several other
+        machines:
+        <orderedlist>
+            <listitem><para>
+                Edit the
+                <filename>init-ifupdown_1.0.bbappend</filename> file
+                so that it contains the following:
+                <literallayout class='monospaced'>
+     FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+                </literallayout>
+                The append file needs to be in the
+                <filename>meta-xyz/recipes-core/init-ifupdown</filename>
+                directory.
+                </para></listitem>
+            <listitem><para>
+                Create and place the new
+                <filename>interfaces</filename> configuration file in
+                the BSP's layer here:
+                <literallayout class='monospaced'>
+     meta-xyz/recipes-core/init-ifupdown/files/xyz-machine-one/interfaces
+                </literallayout>
+                <note>
+                    If the <filename>meta-xyz</filename> layer did
+                    not support multiple machines, you would place
+                    the <filename>interfaces</filename> configuration
+                    file in the layer here:
+                    <literallayout class='monospaced'>
+     meta-xyz/recipes-core/init-ifupdown/files/interfaces
+                    </literallayout>
+                </note>
+                The
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></ulink>
+                variable in the append files extends the search path
+                the build system uses to find files during the build.
+                Consequently, for this example you need to have the
+                <filename>files</filename> directory in the same
+                location as your append file.
+                </para></listitem>
+       </orderedlist>
+    </para>
+</section>
+
+<section id='bsp-licensing-considerations'>
+    <title>BSP Licensing Considerations</title>
+
+    <para>
+        In some cases, a BSP contains separately-licensed
+        Intellectual Property (IP) for a component or components.
+        For these cases, you are required to accept the terms
+        of a commercial or other type of license that requires
+        some kind of explicit End User License Agreement (EULA).
+        Once you accept the license, the OpenEmbedded build system
+        can then build and include the corresponding component
+        in the final BSP image.
+        If the BSP is available as a pre-built image, you can
+        download the image after agreeing to the license or EULA.
+    </para>
+
+    <para>
+        You could find that some separately-licensed components
+        that are essential for normal operation of the system might
+        not have an unencumbered (or free) substitute.
+        Without these essential components, the system would be
+        non-functional.
+        Then again, you might find that other licensed components
+        that are simply 'good-to-have' or purely elective do have
+        an unencumbered, free replacement component that you can
+        use rather than agreeing to the separately-licensed
+        component.
+        Even for components essential to the system, you might
+        find an unencumbered component that is not identical but
+        will work as a less-capable version of the licensed version
+        in the BSP recipe.
+    </para>
+
+    <para>
+        For cases where you can substitute a free component and
+        still maintain the system's functionality, the "DOWNLOADS"
+        selection from the "SOFTWARE" tab on the
+        <ulink url='&YOCTO_HOME_URL;'>Yocto Project website</ulink>
+        makes available de-featured BSPs that are completely free
+        of any IP encumbrances.
+        For these cases, you can use the substitution directly and
+        without any further licensing requirements.
+        If present, these fully de-featured BSPs are named
+        appropriately different as compared to the names of their
+        respective encumbered BSPs.
+        If available, these substitutions are your simplest and
+        most preferred options.
+        Obviously, use of these substitutions assumes the resulting
+        functionality meets system requirements.
+        <note>
+            If however, a non-encumbered version is unavailable or
+            it provides unsuitable functionality or quality, you can
+            use an encumbered version.
+        </note>
+    </para>
+
+    <para>
+        A couple different methods exist within the OpenEmbedded
+        build system to satisfy the licensing requirements for an
+        encumbered BSP.
+        The following list describes them in order of preference:
+        <orderedlist>
+            <listitem><para>
+                <emphasis>Use the
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></ulink>
+                Variable to Define the Recipes that Have Commercial
+                or Other Types of Specially-Licensed Packages:</emphasis>
+                For each of those recipes, you can specify a
+                matching license string in a
+                <filename>local.conf</filename> variable named
+                <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></ulink>.
+                Specifying the matching license string signifies
+                that you agree to the license.
+                Thus, the build system can build the corresponding
+                recipe and include the component in the image.
+                See the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
+                section in the Yocto Project Development Tasks
+                Manual for details on how to use these variables.
+                </para>
+
+                <para>If you build as you normally would, without
+	        specifying any recipes in the
+	        <filename>LICENSE_FLAGS_WHITELIST</filename>, the
+                build stops and provides you with the list of recipes
+                that you have tried to include in the image that
+                need entries in the
+                <filename>LICENSE_FLAGS_WHITELIST</filename>.
+                Once you enter the appropriate license flags into
+                the whitelist, restart the build to continue where
+                it left off.
+	        During the build, the prompt will not appear again
+	        since you have satisfied the requirement.</para>
+
+                <para>Once the appropriate license flags are on the
+                white list in the
+                <filename>LICENSE_FLAGS_WHITELIST</filename> variable,
+                you can build the encumbered image with no change
+                at all to the normal build process.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Get a Pre-Built Version of the BSP:</emphasis>
+                You can get this type of BSP by selecting the
+                "DOWNLOADS" item from the "SOFTWARE" tab on the
+                <ulink url='&YOCTO_HOME_URL;'>Yocto Project website</ulink>.
+                You can download BSP tarballs that contain
+                proprietary components after agreeing to the
+                licensing requirements of each of the individually
+                encumbered packages as part of the download process.
+                Obtaining the BSP this way allows you to access an
+                encumbered image immediately after agreeing to the
+                click-through license agreements presented by the
+                website.
+                If you want to build the image yourself using
+                the recipes contained within the BSP tarball,
+                you will still need to create an appropriate
+                <filename>LICENSE_FLAGS_WHITELIST</filename>
+                to match the encumbered recipes in the BSP.
+                </para></listitem>
+        </orderedlist>
+        <note>
+            Pre-compiled images are bundled with a time-limited
+            kernel that runs for a predetermined amount of time
+            (10 days) before it forces the system to reboot.
+            This limitation is meant to discourage direct
+            redistribution of the image.
+            You must eventually rebuild the image if you want
+            to remove this restriction.
+        </note>
+    </para>
+</section>
+
+<section id='creating-a-new-bsp-layer-using-the-bitbake-layers-script'>
+    <title>Creating a new BSP Layer Using the <filename>bitbake-layers</filename> Script</title>
+
+    <para>
+        The <filename>bitbake-layers create-layer</filename> script
+        automates creating a BSP layer.
+        What makes a layer a "BSP layer" is the presence of at least one machine
+        configuration file.
+        Additionally, a BSP layer usually has a kernel recipe
+        or an append file that leverages off an existing kernel recipe.
+        The primary requirement, however, is the machine configuration.
+    </para>
+
+    <para>
+        Use these steps to create a BSP layer:
+        <itemizedlist>
+            <listitem><para>
+                <emphasis>Create a General Layer:</emphasis>
+                Use the <filename>bitbake-layers</filename> script with the
+                <filename>create-layer</filename> subcommand to create a
+                new general layer.
+                For instructions on how to create a general layer using the
+                <filename>bitbake-layers</filename> script, see the
+                "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-general-layer-using-the-bitbake-layers-script'>Creating a General Layer Using the <filename>bitbake-layers</filename> Script</ulink>"
+                section in the Yocto Project Development Tasks Manual.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Create a Layer Configuration File:</emphasis>
+                Every layer needs a layer configuration file.
+                This configuration file establishes locations for the
+                layer's recipes, priorities for the layer, and so forth.
+                You can find examples of <filename>layer.conf</filename>
+                files in the Yocto Project
+                <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>.
+                To get examples of what you need in your configuration
+                file, locate a layer (e.g. "meta-ti") and examine the
+                <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-ti/tree/conf/layer.conf'></ulink>
+                file.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Create a Machine Configuration File:</emphasis>
+                Create a <filename>conf/machine/</filename><replaceable>bsp_root_name</replaceable><filename>.conf</filename>
+                file.
+                See
+                <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp/conf/machine'><filename>meta-yocto-bsp/conf/machine</filename></ulink>
+                for sample
+                <replaceable>bsp_root_name</replaceable><filename>.conf</filename>
+                files.
+                Other samples such as
+                <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-ti/tree/conf/machine'><filename>meta-ti</filename></ulink>
+                and
+                <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-freescale/tree/conf/machine'><filename>meta-freescale</filename></ulink>
+                exist from other vendors that have more specific machine
+                and tuning examples.
+                </para></listitem>
+            <listitem><para>
+                <emphasis>Create a Kernel Recipe:</emphasis>
+                Create a kernel recipe in <filename>recipes-kernel/linux</filename>
+                by either using a kernel append file or a new custom kernel
+                recipe file (e.g. <filename>yocto-linux_4.12.bb</filename>).
+                The BSP layers mentioned in the previous step also contain different
+                kernel examples.
+                See the
+                "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#modifying-an-existing-recipe'>Modifying an Existing Recipe</ulink>"
+                section in the Yocto Project Linux Kernel Development Manual
+                for information on how to create a custom kernel.
+                </para></listitem>
+        </itemizedlist>
+    </para>
+
+    <para>
+        The remainder of this section provides a description of
+        the Yocto Project reference BSP for Beaglebone, which
+        resides in the
+        <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp'><filename>meta-yocto-bsp</filename></ulink>
+        layer.
+    </para>
+
+    <section id='bsp-layer-configuration-example'>
+        <title>BSP Layer Configuration Example</title>
+
+        <para>
+            The layer's <filename>conf</filename> directory
+            contains the <filename>layer.conf</filename>
+            configuration file.
+            In this example, the
+            <filename>conf/layer.conf</filename> is the
+            following:
+            <literallayout class='monospaced'>
+     # We have a conf and classes directory, add to BBPATH
+     BBPATH .= ":${LAYERDIR}"
+
+     # We have recipes-* directories, add to BBFILES
+     BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+                 ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+     BBFILE_COLLECTIONS += "yoctobsp"
+     BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/"
+     BBFILE_PRIORITY_yoctobsp = "5"
+     LAYERVERSION_yoctobsp = "4"
+     LAYERSERIES_COMPAT_yoctobsp = "&DISTRO_NAME_NO_CAP;"
+            </literallayout>
+            The variables used in this file configure the
+            layer.
+            A good way to learn about layer configuration
+            files is to examine various files for BSP from
+            the
+            <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>.
+        </para>
+
+        <para>
+            For a detailed description of this particular
+            layer configuration file, see
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-layer-config-file-description'>step 3</ulink>
+            in the discussion that describes how to create
+            layers in the Yocto Project Development Tasks Manual.
+        </para>
+    </section>
+
+    <section id='bsp-machine-configuration-example'>
+        <title>BSP Machine Configuration Example</title>
+
+        <para>
+            As mentioned earlier in this section, the existence
+            of a machine configuration file is what makes a
+            layer a BSP layer as compared to a general or
+            kernel layer.
+        </para>
+
+        <para>
+            One or more machine configuration files exist in the
+            <replaceable>bsp_layer</replaceable><filename>/conf/machine/</filename>
+            directory of the layer:
+            <literallayout class='monospaced'>
+     <replaceable>bsp_layer</replaceable><filename>/conf/machine/</filename><replaceable>machine1</replaceable><filename>.conf</filename>
+     <replaceable>bsp_layer</replaceable><filename>/conf/machine/</filename><replaceable>machine2</replaceable><filename>.conf</filename>
+     <replaceable>bsp_layer</replaceable><filename>/conf/machine/</filename><replaceable>machine3</replaceable><filename>.conf</filename>
+     ... more ...
+            </literallayout>
+            For example, the machine configuration file for the
+            <ulink url='http://beagleboard.org/bone'>BeagleBone and BeagleBone Black development boards</ulink>
+            is located in the layer
+            <filename>poky/meta-yocto-bsp/conf/machine</filename>
+            and is named <filename>beaglebone-yocto.conf</filename>:
+            <literallayout class='monospaced'>
+     #@TYPE: Machine
+     #@NAME: Beaglebone-yocto machine
+     #@DESCRIPTION: Reference machine configuration for http://beagleboard.org/bone and http://beagleboard.org/black boards
+
+     PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+     XSERVER ?= "xserver-xorg \
+                xf86-video-modesetting \
+                "
+
+     MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree"
+
+     EXTRA_IMAGEDEPENDS += "u-boot"
+
+     DEFAULTTUNE ?= "cortexa8hf-neon"
+     include conf/machine/include/tune-cortexa8.inc
+
+     IMAGE_FSTYPES += "tar.bz2 jffs2 wic wic.bmap"
+     EXTRA_IMAGECMD_jffs2 = "-lnp "
+     WKS_FILE ?= "beaglebone-yocto.wks"
+     IMAGE_INSTALL_append = " kernel-devicetree kernel-image-zimage"
+     do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
+
+     SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0"
+     SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
+
+     PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+     PREFERRED_VERSION_linux-yocto ?= "5.0%"
+
+     KERNEL_IMAGETYPE = "zImage"
+     KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
+     KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}"
+
+     SPL_BINARY = "MLO"
+     UBOOT_SUFFIX = "img"
+     UBOOT_MACHINE = "am335x_evm_defconfig"
+     UBOOT_ENTRYPOINT = "0x80008000"
+     UBOOT_LOADADDRESS = "0x80008000"
+
+     MACHINE_FEATURES = "usbgadget usbhost vfat alsa"
+
+     IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO zImage am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
+            </literallayout>
+            The variables used to configure the machine define
+            machine-specific properties;
+            for example, machine-dependent packages, machine
+            tunings, the type of kernel to build, and
+            U-Boot configurations.
+        </para>
+
+        <para>
+            The following list provides some explanation
+            for the statements found in the example reference
+            machine configuration file for the BeagleBone
+            development boards.
+            Realize that much more can be defined as part of
+            a machine's configuration file.
+            In general, you can learn about related variables
+            that this example does not have by locating the
+            variables in the
+            "<ulink url='&YOCTO_DOCS_REF_URL;#ref-variables-glos'>Yocto Project Variables Glossary</ulink>"
+            in the Yocto Project Reference Manual.
+            <itemizedlist>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER_virtual/xserver</filename></ulink>:
+                    The recipe that provides "virtual/xserver" when
+                    more than one provider is found.
+                    In this case, the recipe that provides
+                    "virtual/xserver" is "xserver-xorg", which
+                    exists in
+                    <filename>poky/meta/recipes-graphics/xorg-xserver</filename>.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-XSERVER'><filename>XSERVER</filename></ulink>:
+                    The packages that should be installed to provide
+                    an X server and drivers for the machine.
+                    In this example, the "xserver-xorg" and
+                    "xf86-video-modesetting" are installed.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_EXTRA_RRECOMMENDS'><filename>MACHINE_EXTRA_RRECOMMENDS</filename></ulink>:
+                    A list of machine-dependent packages
+                    not essential for booting the image.
+                    Thus, the build does not fail if the packages
+                    do not exist.
+                    However, the packages are required for a
+                    fully-featured image.
+                    <note><title>Tip</title>
+                        Many <filename>MACHINE*</filename> variables
+                        exist that help you configure a particular
+                        piece of hardware.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGEDEPENDS'><filename>EXTRA_IMAGEDEPENDS</filename></ulink>:
+                    Recipes to build that do not provide packages
+                    for installing into the root filesystem
+                    but building the image depends on the
+                    recipes.
+                    Sometimes a recipe is required to build
+                    the final image but is not needed in the
+                    root filesystem.
+                    In this case, the U-Boot recipe must be
+                    built for the image.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-DEFAULTTUNE'><filename>DEFAULTTUNE</filename></ulink>:
+                    Machines use tunings to optimize machine,
+                    CPU, and application performance.
+                    These features, which are collectively known
+                    as "tuning features", exist in the
+                    <ulink url='&YOCTO_DOCS_REF_URL;#oe-core'>OpenEmbedded-Core (OE-Core)</ulink>
+                    layer (e.g.
+                    <filename>poky/meta/conf/machine/include</filename>).
+                    In this example, the default tunning file is
+                    "cortexa8hf-neon".
+                    <note>
+                        The <filename>include</filename> statement
+                        that pulls in the
+                        <filename>conf/machine/include/tune-cortexa8.inc</filename>
+                        file provides many tuning possibilities.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></ulink>:
+                    The formats the OpenEmbedded build system
+                    uses during the build when creating the
+                    root filesystem.
+                    In this example, four types of images are
+                    supported.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGECMD'><filename>EXTRA_IMAGECMD</filename></ulink>:
+                    Specifies additional options for image
+                    creation commands.
+                    In this example, the "-lnp " option is used
+                    when creating the
+                    <ulink url='https://en.wikipedia.org/wiki/JFFS2'>JFFS2</ulink>
+                    image.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-WKS_FILE'><filename>WKS_FILE</filename></ulink>:
+                    The location of the
+                    <ulink url='&YOCTO_DOCS_REF_URL;#ref-kickstart'>Wic kickstart</ulink>
+                    file used by the OpenEmbedded build system to
+                    create a partitioned image (image.wic).
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>:
+                    Specifies packages to install into an image
+                    through the
+                    <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-image'><filename>image</filename></ulink>
+                    class.
+                    Recipes use the <filename>IMAGE_INSTALL</filename>
+                    variable.
+                    </para></listitem>
+                <listitem><para>
+                    <filename>do_image_wic[depends]</filename>:
+                    A task that is constructed during the build.
+                    In this example, the task depends on specific tools
+                    in order to create the sysroot when buiding a Wic
+                    image.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></ulink>:
+                    Defines a serial console (TTY) to enable using
+                    getty.
+                    In this case, the baud rate is "115200" and the
+                    device name is "ttyO0".
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER_virtual/kernel</filename></ulink>:
+                    Specifies the recipe that provides
+                    "virtual/kernel" when more than one provider
+                    is found.
+                    In this case, the recipe that provides
+                    "virtual/kernel" is "linux-yocto", which
+                    exists in the layer's
+                    <filename>recipes-kernel/linux</filename> directory.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_VERSION'><filename>PREFERRED_VERSION_linux-yocto</filename></ulink>:
+                    Defines the version of the recipe used
+                    to build the kernel, which is "5.0" in this
+                    case.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></ulink>:
+                    The type of kernel to build for the device.
+                    In this case, the OpenEmbedded build system
+                    creates a "zImage" image type.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_DEVICETREE'><filename>KERNEL_DEVICETREE</filename></ulink>:
+                    The names of the generated Linux kernel device
+                    trees (i.e. the <filename>*.dtb</filename>) files.
+                    All the device trees for the various BeagleBone
+                    devices are included.
+<!--
+                    You have to include some *.inc files according to the definition of KERNEL_DEVICETREE.
+                    I don't see where these are being provided.
+-->
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_EXTRA_ARGS'><filename>KERNEL_EXTRA_ARGS</filename></ulink>:
+                    Additional <filename>make</filename>
+                    command-line arguments the OpenEmbedded build
+                    system passes on when compiling the kernel.
+                    In this example, "LOADADDR=${UBOOT_ENTRYPOINT}"
+                    is passed as a command-line argument.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-SPL_BINARY'><filename>SPL_BINARY</filename></ulink>:
+                    Defines the Secondary Program Loader (SPL) binary
+                    type.
+                    In this case, the SPL binary is set to
+                    "MLO", which stands for Multimedia card LOader.
+                    </para>
+
+                    <para>The BeagleBone development board requires an
+                    SPL to boot and that SPL file type must be MLO.
+                    Consequently, the machine configuration needs to
+                    define <filename>SPL_BINARY</filename> as "MLO".
+                    <note>
+                        For more information on how the SPL variables
+                        are used, see the
+                        <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/recipes-bsp/u-boot/u-boot.inc'><filename>u-boot.inc</filename></ulink>
+                        include file.
+                    </note>
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_ENTRYPOINT'><filename>UBOOT_*</filename></ulink>:
+                    Defines various U-Boot configurations needed
+                    to build a U-Boot image.
+                    In this example, a U-Boot image is required
+                    to boot the BeagleBone device.
+                    See the following variables for more information:
+                    <itemizedlist>
+                        <listitem><para>
+                            <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_SUFFIX'><filename>UBOOT_SUFFIX</filename></ulink>:
+                            Points to the generated U-Boot extension.
+                            </para></listitem>
+                        <listitem><para>
+                            <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_MACHINE'><filename>UBOOT_MACHINE</filename></ulink>:
+                            Specifies the value passed on the make command line when building a U-Boot image.
+                            </para></listitem>
+                        <listitem><para>
+                            <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_ENTRYPOINT'><filename>UBOOT_ENTRYPOINT</filename></ulink>:
+                            Specifies the entry point for the U-Boot image.
+                            </para></listitem>
+                        <listitem><para>
+                            <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_LOADADDRESS'><filename>UBOOT_LOADADDRESS</filename></ulink>:
+                            Specifies the load address for the U-Boot image.
+                            </para></listitem>
+                    </itemizedlist>
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></ulink>:
+                    Specifies the list of hardware features the
+                    BeagleBone device is capable of supporting.
+                    In this case, the device supports
+                    "usbgadget usbhost vfat alsa".
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_BOOT_FILES'><filename>IMAGE_BOOT_FILES</filename></ulink>:
+                    Files installed into the device's boot partition
+                    when preparing the image using the Wic tool
+                    with the <filename>bootimg-partition</filename> or <filename>bootimg-efi</filename>
+                    source plugin.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+
+    <section id='bsp-kernel-recipe-example'>
+        <title>BSP Kernel Recipe Example</title>
+
+        <para>
+            The kernel recipe used to build the kernel image
+            for the BeagleBone device was established in the
+            machine configuration:
+            <literallayout class='monospaced'>
+     PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+     PREFERRED_VERSION_linux-yocto ?= "5.0%"
+            </literallayout>
+            The <filename>meta-yocto-bsp/recipes-kernel/linux</filename>
+            directory in the layer contains metadata used
+            to build the kernel.
+            In this case, a kernel append file (i.e.
+            <filename>linux-yocto_5.0.bbappend</filename>) is used to
+            override an established kernel recipe (i.e.
+            <filename>linux-yocto_5.0.bb</filename>), which is
+            located in
+            <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/recipes-kernel/linux'></ulink>.
+        </para>
+
+        <para>
+            Following is the contents of the append file:
+            <literallayout class='monospaced'>
+     KBRANCH_genericx86  = "v5.0/standard/base"
+     KBRANCH_genericx86-64  = "v5.0/standard/base"
+     KBRANCH_edgerouter = "v5.0/standard/edgerouter"
+     KBRANCH_beaglebone-yocto = "v5.0/standard/beaglebone"
+
+     KMACHINE_genericx86 ?= "common-pc"
+     KMACHINE_genericx86-64 ?= "common-pc-64"
+     KMACHINE_beaglebone-yocto ?= "beaglebone"
+
+     SRCREV_machine_genericx86    ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
+     SRCREV_machine_genericx86-64 ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
+     SRCREV_machine_edgerouter ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
+     SRCREV_machine_beaglebone-yocto ?= "3df4aae6074e94e794e27fe7f17451d9353cdf3d"
+
+     COMPATIBLE_MACHINE_genericx86 = "genericx86"
+     COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
+     COMPATIBLE_MACHINE_edgerouter = "edgerouter"
+     COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
+
+     LINUX_VERSION_genericx86 = "5.0.3"
+     LINUX_VERSION_genericx86-64 = "5.0.3"
+     LINUX_VERSION_edgerouter = "5.0.3"
+     LINUX_VERSION_beaglebone-yocto = "5.0.3"
+            </literallayout>
+            This particular append file works for all the
+            machines that are part of the
+            <filename>meta-yocto-bsp</filename> layer.
+            The relevant statements are appended with
+            the "beaglebone-yocto" string.
+            The OpenEmbedded build system uses these
+            statements to override similar statements
+            in the kernel recipe:
+            <itemizedlist>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-KBRANCH'><filename>KBRANCH</filename></ulink>:
+                    Identifies the kernel branch that is validated,
+                    patched, and configured during the build.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-KMACHINE'><filename>KMACHINE</filename></ulink>:
+                    Identifies the machine name as known by the
+                    kernel, which is sometimes a different name
+                    than what is known by the OpenEmbedded build
+                    system.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>:
+                    Identifies the revision of the source code used
+                    to build the image.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-COMPATIBLE_MACHINE'><filename>COMPATIBLE_MACHINE</filename></ulink>:
+                    A regular expression that resolves to one or
+                    more target machines with which the recipe
+                    is compatible.
+                    </para></listitem>
+                <listitem><para>
+                    <ulink url='&YOCTO_DOCS_REF_URL;#var-LINUX_VERSION'><filename>LINUX_VERSION</filename></ulink>:
+                    The Linux version from kernel.org used by
+                    the OpenEmbedded build system to build the
+                    kernel image.
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+    </section>
+</section>
+</chapter>
