diff --git a/poky/documentation/adt-manual/adt-prepare.rst b/poky/documentation/adt-manual/adt-prepare.rst
new file mode 100644
index 0000000..9b6bd05
--- /dev/null
+++ b/poky/documentation/adt-manual/adt-prepare.rst
@@ -0,0 +1,752 @@
+.. SPDX-License-Identifier: CC-BY-2.0-UK
+
+*************************************
+Preparing for Application Development
+*************************************
+
+In order to develop applications, you need set up your host development
+system. Several ways exist that allow you to install cross-development
+tools, QEMU, the Eclipse Yocto Plug-in, and other tools. This chapter
+describes how to prepare for application development.
+
+.. _installing-the-adt:
+
+Installing the ADT and Toolchains
+=================================
+
+The following list describes installation methods that set up varying
+degrees of tool availability on your system. Regardless of the
+installation method you choose, you must ``source`` the cross-toolchain
+environment setup script, which establishes several key environment
+variables, before you use a toolchain. See the "`Setting Up the
+Cross-Development
+Environment <#setting-up-the-cross-development-environment>`__" section
+for more information.
+
+.. note::
+
+   Avoid mixing installation methods when installing toolchains for
+   different architectures. For example, avoid using the ADT Installer
+   to install some toolchains and then hand-installing cross-development
+   toolchains by running the toolchain installer for different
+   architectures. Mixing installation methods can result in situations
+   where the ADT Installer becomes unreliable and might not install the
+   toolchain.
+
+   If you must mix installation methods, you might avoid problems by
+   deleting ``/var/lib/opkg``, thus purging the ``opkg`` package
+   metadata.
+
+-  *Use the ADT installer script:* This method is the recommended way to
+   install the ADT because it automates much of the process for you. For
+   example, you can configure the installation to install the QEMU
+   emulator and the user-space NFS, specify which root filesystem
+   profiles to download, and define the target sysroot location.
+
+-  *Use an existing toolchain:* Using this method, you select and
+   download an architecture-specific toolchain installer and then run
+   the script to hand-install the toolchain. If you use this method, you
+   just get the cross-toolchain and QEMU - you do not get any of the
+   other mentioned benefits had you run the ADT Installer script.
+
+-  *Use the toolchain from within the Build Directory:* If you already
+   have a :term:`Build Directory`,
+   you can build the cross-toolchain within the directory. However, like
+   the previous method mentioned, you only get the cross-toolchain and
+   QEMU - you do not get any of the other benefits without taking
+   separate steps.
+
+Using the ADT Installer
+-----------------------
+
+To run the ADT Installer, you need to get the ADT Installer tarball, be
+sure you have the necessary host development packages that support the
+ADT Installer, and then run the ADT Installer Script.
+
+For a list of the host packages needed to support ADT installation and
+use, see the "ADT Installer Extras" lists in the "`Required Packages for
+the Host Development
+System <&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system>`__"
+section of the Yocto Project Reference Manual.
+
+Getting the ADT Installer Tarball
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The ADT Installer is contained in the ADT Installer tarball. You can get
+the tarball using either of these methods:
+
+-  *Download the Tarball:* You can download the tarball from
+   ` <&YOCTO_ADTINSTALLER_DL_URL;>`__ into any directory.
+
+-  *Build the Tarball:* You can use
+   :term:`BitBake` to generate the
+   tarball inside an existing :term:`Build Directory`.
+
+   If you use BitBake to generate the ADT Installer tarball, you must
+   ``source`` the environment setup script
+   (````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or
+   ```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__)
+   located in the Source Directory before running the ``bitbake``
+   command that creates the tarball.
+
+   The following example commands establish the
+   :term:`Source Directory`, check out the
+   current release branch, set up the build environment while also
+   creating the default Build Directory, and run the ``bitbake`` command
+   that results in the tarball
+   ``poky/build/tmp/deploy/sdk/adt_installer.tar.bz2``:
+
+   .. note::
+
+      Before using BitBake to build the ADT tarball, be sure to make
+      sure your
+      local.conf
+      file is properly configured. See the "
+      User Configuration
+      " section in the Yocto Project Reference Manual for general
+      configuration information.
+
+   $ cd ~ $ git clone git://git.yoctoproject.org/poky $ cd poky $ git
+   checkout -b DISTRO_NAME origin/DISTRO_NAME $ source OE_INIT_FILE $
+   bitbake adt-installer
+
+Configuring and Running the ADT Installer Script
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Before running the ADT Installer script, you need to unpack the tarball.
+You can unpack the tarball in any directory you wish. For example, this
+command copies the ADT Installer tarball from where it was built into
+the home directory and then unpacks the tarball into a top-level
+directory named ``adt-installer``: $ cd ~ $ cp
+poky/build/tmp/deploy/sdk/adt_installer.tar.bz2 $HOME $ tar -xjf
+adt_installer.tar.bz2 Unpacking it creates the directory
+``adt-installer``, which contains the ADT Installer script
+(``adt_installer``) and its configuration file (``adt_installer.conf``).
+
+Before you run the script, however, you should examine the ADT Installer
+configuration file and be sure you are going to get what you want. Your
+configurations determine which kernel and filesystem image are
+downloaded.
+
+The following list describes the configurations you can define for the
+ADT Installer. For configuration values and restrictions, see the
+comments in the ``adt-installer.conf`` file:
+
+-  ``YOCTOADT_REPO``: This area includes the IPKG-based packages and the
+   root filesystem upon which the installation is based. If you want to
+   set up your own IPKG repository pointed to by ``YOCTOADT_REPO``, you
+   need to be sure that the directory structure follows the same layout
+   as the reference directory set up at
+   http://adtrepo.yoctoproject.org. Also, your repository needs
+   to be accessible through HTTP.
+
+-  ``YOCTOADT_TARGETS``: The machine target architectures for which you
+   want to set up cross-development environments.
+
+-  ``YOCTOADT_QEMU``: Indicates whether or not to install the emulator
+   QEMU.
+
+-  ``YOCTOADT_NFS_UTIL``: Indicates whether or not to install user-mode
+   NFS. If you plan to use the Eclipse IDE Yocto plug-in against QEMU,
+   you should install NFS.
+
+   .. note::
+
+      To boot QEMU images using our userspace NFS server, you need to be
+      running
+      portmap
+      or
+      rpcbind
+      . If you are running
+      rpcbind
+      , you will also need to add the
+      -i
+      option when
+      rpcbind
+      starts up. Please make sure you understand the security
+      implications of doing this. You might also have to modify your
+      firewall settings to allow NFS booting to work.
+
+-  ``YOCTOADT_ROOTFS_``\ arch: The root filesystem images you want to
+   download from the ``YOCTOADT_IPKG_REPO`` repository.
+
+-  ``YOCTOADT_TARGET_SYSROOT_IMAGE_``\ arch: The particular root
+   filesystem used to extract and create the target sysroot. The value
+   of this variable must have been specified with
+   ``YOCTOADT_ROOTFS_``\ arch. For example, if you downloaded both
+   ``minimal`` and ``sato-sdk`` images by setting
+   ``YOCTOADT_ROOTFS_``\ arch to "minimal sato-sdk", then
+   ``YOCTOADT_ROOTFS_``\ arch must be set to either "minimal" or
+   "sato-sdk".
+
+-  ``YOCTOADT_TARGET_SYSROOT_LOC_``\ arch: The location on the
+   development host where the target sysroot is created.
+
+After you have configured the ``adt_installer.conf`` file, run the
+installer using the following command: $ cd adt-installer $
+./adt_installer Once the installer begins to run, you are asked to enter
+the location for cross-toolchain installation. The default location is
+``/opt/poky/``\ release. After either accepting the default location or
+selecting your own location, you are prompted to run the installation
+script interactively or in silent mode. If you want to closely monitor
+the installation, choose "I" for interactive mode rather than "S" for
+silent mode. Follow the prompts from the script to complete the
+installation.
+
+Once the installation completes, the ADT, which includes the
+cross-toolchain, is installed in the selected installation directory.
+You will notice environment setup files for the cross-toolchain in the
+installation directory, and image tarballs in the ``adt-installer``
+directory according to your installer configurations, and the target
+sysroot located according to the ``YOCTOADT_TARGET_SYSROOT_LOC_``\ arch
+variable also in your configuration file.
+
+.. _using-an-existing-toolchain-tarball:
+
+Using a Cross-Toolchain Tarball
+-------------------------------
+
+If you want to simply install a cross-toolchain by hand, you can do so
+by running the toolchain installer. The installer includes the pre-built
+cross-toolchain, the ``runqemu`` script, and support files. If you use
+this method to install the cross-toolchain, you might still need to
+install the target sysroot by installing and extracting it separately.
+For information on how to install the sysroot, see the "`Extracting the
+Root Filesystem <#extracting-the-root-filesystem>`__" section.
+
+Follow these steps:
+
+1. *Get your toolchain installer using one of the following methods:*
+
+   -  Go to ` <&YOCTO_TOOLCHAIN_DL_URL;>`__ and find the folder that
+      matches your host development system (i.e. ``i686`` for 32-bit
+      machines or ``x86_64`` for 64-bit machines).
+
+      Go into that folder and download the toolchain installer whose
+      name includes the appropriate target architecture. The toolchains
+      provided by the Yocto Project are based off of the
+      ``core-image-sato`` image and contain libraries appropriate for
+      developing against that image. For example, if your host
+      development system is a 64-bit x86 system and you are going to use
+      your cross-toolchain for a 32-bit x86 target, go into the
+      ``x86_64`` folder and download the following installer:
+      poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
+
+   -  Build your own toolchain installer. For cases where you cannot use
+      an installer from the download area, you can build your own as
+      described in the "`Optionally Building a Toolchain
+      Installer <#optionally-building-a-toolchain-installer>`__"
+      section.
+
+2. *Once you have the installer, run it to install the toolchain:*
+
+   .. note::
+
+      You must change the permissions on the toolchain installer script
+      so that it is executable.
+
+   The following command shows how to run the installer given a
+   toolchain tarball for a 64-bit x86 development host system and a
+   32-bit x86 target architecture. The example assumes the toolchain
+   installer is located in ``~/Downloads/``. $
+   ~/Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
+   The first thing the installer prompts you for is the directory into
+   which you want to install the toolchain. The default directory used
+   is ``/opt/poky/DISTRO``. If you do not have write permissions for the
+   directory into which you are installing the toolchain, the toolchain
+   installer notifies you and exits. Be sure you have write permissions
+   in the directory and run the installer again.
+
+   When the script finishes, the cross-toolchain is installed. You will
+   notice environment setup files for the cross-toolchain in the
+   installation directory.
+
+.. _using-the-toolchain-from-within-the-build-tree:
+
+Using BitBake and the Build Directory
+-------------------------------------
+
+A final way of making the cross-toolchain available is to use BitBake to
+generate the toolchain within an existing :term:`Build Directory`.
+This method does
+not install the toolchain into the default ``/opt`` directory. As with
+the previous method, if you need to install the target sysroot, you must
+do that separately as well.
+
+Follow these steps to generate the toolchain into the Build Directory:
+
+1. *Set up the Build Environment:* Source the OpenEmbedded build
+   environment setup script (i.e.
+   ````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or
+   ```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__)
+   located in the :term:`Source Directory`.
+
+2. *Check your Local Configuration File:* At this point, you should be
+   sure that the :term:`MACHINE`
+   variable in the ``local.conf`` file found in the ``conf`` directory
+   of the Build Directory is set for the target architecture. Comments
+   within the ``local.conf`` file list the values you can use for the
+   ``MACHINE`` variable. If you do not change the ``MACHINE`` variable,
+   the OpenEmbedded build system uses ``qemux86`` as the default target
+   machine when building the cross-toolchain.
+
+   .. note::
+
+      You can populate the Build Directory with the cross-toolchains for
+      more than a single architecture. You just need to edit the
+      MACHINE
+      variable in the
+      local.conf
+      file and re-run the
+      bitbake
+      command.
+
+3. *Make Sure Your Layers are Enabled:* Examine the
+   ``conf/bblayers.conf`` file and make sure that you have enabled all
+   the compatible layers for your target machine. The OpenEmbedded build
+   system needs to be aware of each layer you want included when
+   building images and cross-toolchains. For information on how to
+   enable a layer, see the "`Enabling Your
+   Layer <&YOCTO_DOCS_DEV_URL;#enabling-your-layer>`__" section in the
+   Yocto Project Development Manual.
+
+4. *Generate the Cross-Toolchain:* Run ``bitbake meta-ide-support`` to
+   complete the cross-toolchain generation. Once the ``bitbake`` command
+   finishes, the cross-toolchain is generated and populated within the
+   Build Directory. You will notice environment setup files for the
+   cross-toolchain that contain the string "``environment-setup``" in
+   the Build Directory's ``tmp`` folder.
+
+   Be aware that when you use this method to install the toolchain, you
+   still need to separately extract and install the sysroot filesystem.
+   For information on how to do this, see the "`Extracting the Root
+   Filesystem <#extracting-the-root-filesystem>`__" section.
+
+Setting Up the Cross-Development Environment
+============================================
+
+Before you can develop using the cross-toolchain, you need to set up the
+cross-development environment by sourcing the toolchain's environment
+setup script. If you used the ADT Installer or hand-installed
+cross-toolchain, then you can find this script in the directory you
+chose for installation. For this release, the default installation
+directory is ````. If you installed the toolchain in the
+:term:`Build Directory`, you can find the
+environment setup script for the toolchain in the Build Directory's
+``tmp`` directory.
+
+Be sure to run the environment setup script that matches the
+architecture for which you are developing. Environment setup scripts
+begin with the string "``environment-setup``" and include as part of
+their name the architecture. For example, the toolchain environment
+setup script for a 64-bit IA-based architecture installed in the default
+installation directory would be the following:
+YOCTO_ADTPATH_DIR/environment-setup-x86_64-poky-linux When you run the
+setup script, many environment variables are defined:
+:term:`SDKTARGETSYSROOT` -
+The path to the sysroot used for cross-compilation
+:term:`PKG_CONFIG_PATH` - The
+path to the target pkg-config files
+:term:`CONFIG_SITE` - A GNU
+autoconf site file preconfigured for the target
+:term:`CC` - The minimal command and
+arguments to run the C compiler
+:term:`CXX` - The minimal command and
+arguments to run the C++ compiler
+:term:`CPP` - The minimal command and
+arguments to run the C preprocessor
+:term:`AS` - The minimal command and
+arguments to run the assembler :term:`LD`
+- The minimal command and arguments to run the linker
+:term:`GDB` - The minimal command and
+arguments to run the GNU Debugger
+:term:`STRIP` - The minimal command and
+arguments to run 'strip', which strips symbols
+:term:`RANLIB` - The minimal command
+and arguments to run 'ranlib'
+:term:`OBJCOPY` - The minimal command
+and arguments to run 'objcopy'
+:term:`OBJDUMP` - The minimal command
+and arguments to run 'objdump' :term:`AR`
+- The minimal command and arguments to run 'ar'
+:term:`NM` - The minimal command and
+arguments to run 'nm'
+:term:`TARGET_PREFIX` - The
+toolchain binary prefix for the target tools
+:term:`CROSS_COMPILE` - The
+toolchain binary prefix for the target tools
+:term:`CONFIGURE_FLAGS` - The
+minimal arguments for GNU configure
+:term:`CFLAGS` - Suggested C flags
+:term:`CXXFLAGS` - Suggested C++
+flags :term:`LDFLAGS` - Suggested
+linker flags when you use CC to link
+:term:`CPPFLAGS` - Suggested
+preprocessor flags
+
+Securing Kernel and Filesystem Images
+=====================================
+
+You will need to have a kernel and filesystem image to boot using your
+hardware or the QEMU emulator. Furthermore, if you plan on booting your
+image using NFS or you want to use the root filesystem as the target
+sysroot, you need to extract the root filesystem.
+
+Getting the Images
+------------------
+
+To get the kernel and filesystem images, you either have to build them
+or download pre-built versions. For an example of how to build these
+images, see the "`Buiding
+Images <&YOCTO_DOCS_QS_URL;#qs-buiding-images>`__" section of the Yocto
+Project Quick Start. For an example of downloading pre-build versions,
+see the "`Example Using Pre-Built Binaries and
+QEMU <#using-pre-built>`__" section.
+
+The Yocto Project ships basic kernel and filesystem images for several
+architectures (``x86``, ``x86-64``, ``mips``, ``powerpc``, and ``arm``)
+that you can use unaltered in the QEMU emulator. These kernel images
+reside in the release area - ` <&YOCTO_MACHINES_DL_URL;>`__ and are
+ideal for experimentation using Yocto Project. For information on the
+image types you can build using the OpenEmbedded build system, see the
+":ref:`ref-manual/ref-images:Images`" chapter in the Yocto
+Project Reference Manual.
+
+If you are planning on developing against your image and you are not
+building or using one of the Yocto Project development images (e.g.
+``core-image-*-dev``), you must be sure to include the development
+packages as part of your image recipe.
+
+If you plan on remotely deploying and debugging your application from
+within the Eclipse IDE, you must have an image that contains the Yocto
+Target Communication Framework (TCF) agent (``tcf-agent``). You can do
+this by including the ``eclipse-debug`` image feature.
+
+.. note::
+
+   See the "
+   Image Features
+   " section in the Yocto Project Reference Manual for information on
+   image features.
+
+To include the ``eclipse-debug`` image feature, modify your
+``local.conf`` file in the :term:`Build Directory`
+so that the
+:term:`EXTRA_IMAGE_FEATURES`
+variable includes the "eclipse-debug" feature. After modifying the
+configuration file, you can rebuild the image. Once the image is
+rebuilt, the ``tcf-agent`` will be included in the image and is launched
+automatically after the boot.
+
+Extracting the Root Filesystem
+------------------------------
+
+If you install your toolchain by hand or build it using BitBake and you
+need a root filesystem, you need to extract it separately. If you use
+the ADT Installer to install the ADT, the root filesystem is
+automatically extracted and installed.
+
+Here are some cases where you need to extract the root filesystem:
+
+-  You want to boot the image using NFS.
+
+-  You want to use the root filesystem as the target sysroot. For
+   example, the Eclipse IDE environment with the Eclipse Yocto Plug-in
+   installed allows you to use QEMU to boot under NFS.
+
+-  You want to develop your target application using the root filesystem
+   as the target sysroot.
+
+To extract the root filesystem, first ``source`` the cross-development
+environment setup script to establish necessary environment variables.
+If you built the toolchain in the Build Directory, you will find the
+toolchain environment script in the ``tmp`` directory. If you installed
+the toolchain by hand, the environment setup script is located in
+``/opt/poky/DISTRO``.
+
+After sourcing the environment script, use the ``runqemu-extract-sdk``
+command and provide the filesystem image.
+
+Following is an example. The second command sets up the environment. In
+this case, the setup script is located in the ``/opt/poky/DISTRO``
+directory. The third command extracts the root filesystem from a
+previously built filesystem that is located in the ``~/Downloads``
+directory. Furthermore, this command extracts the root filesystem into
+the ``qemux86-sato`` directory: $ cd ~ $ source
+/opt/poky/DISTRO/environment-setup-i586-poky-linux $ runqemu-extract-sdk
+\\ ~/Downloads/core-image-sato-sdk-qemux86-2011091411831.rootfs.tar.bz2
+\\ $HOME/qemux86-sato You could now point to the target sysroot at
+``qemux86-sato``.
+
+Optionally Building a Toolchain Installer
+=========================================
+
+As an alternative to locating and downloading a toolchain installer, you
+can build the toolchain installer if you have a :term:`Build Directory`.
+
+.. note::
+
+   Although not the preferred method, it is also possible to use
+   bitbake meta-toolchain
+   to build the toolchain installer. If you do use this method, you must
+   separately install and extract the target sysroot. For information on
+   how to install the sysroot, see the "
+   Extracting the Root Filesystem
+   " section.
+
+To build the toolchain installer and populate the SDK image, use the
+following command: $ bitbake image -c populate_sdk The command results
+in a toolchain installer that contains the sysroot that matches your
+target root filesystem.
+
+Another powerful feature is that the toolchain is completely
+self-contained. The binaries are linked against their own copy of
+``libc``, which results in no dependencies on the target system. To
+achieve this, the pointer to the dynamic loader is configured at install
+time since that path cannot be dynamically altered. This is the reason
+for a wrapper around the ``populate_sdk`` archive.
+
+Another feature is that only one set of cross-canadian toolchain
+binaries are produced per architecture. This feature takes advantage of
+the fact that the target hardware can be passed to ``gcc`` as a set of
+compiler options. Those options are set up by the environment script and
+contained in variables such as :term:`CC`
+and :term:`LD`. This reduces the space
+needed for the tools. Understand, however, that a sysroot is still
+needed for every target since those binaries are target-specific.
+
+Remember, before using any BitBake command, you must source the build
+environment setup script (i.e.
+````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or
+```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__)
+located in the Source Directory and you must make sure your
+``conf/local.conf`` variables are correct. In particular, you need to be
+sure the :term:`MACHINE` variable
+matches the architecture for which you are building and that the
+:term:`SDKMACHINE` variable is
+correctly set if you are building a toolchain designed to run on an
+architecture that differs from your current development host machine
+(i.e. the build machine).
+
+When the ``bitbake`` command completes, the toolchain installer will be
+in ``tmp/deploy/sdk`` in the Build Directory.
+
+.. note::
+
+   By default, this toolchain does not build static binaries. If you
+   want to use the toolchain to build these types of libraries, you need
+   to be sure your image has the appropriate static development
+   libraries. Use the
+   IMAGE_INSTALL
+   variable inside your
+   local.conf
+   file to install the appropriate library packages. Following is an
+   example using
+   glibc
+   static development libraries:
+   ::
+
+           IMAGE_INSTALL_append = " glibc-staticdev"
+                  
+
+Optionally Using an External Toolchain
+======================================
+
+You might want to use an external toolchain as part of your development.
+If this is the case, the fundamental steps you need to accomplish are as
+follows:
+
+-  Understand where the installed toolchain resides. For cases where you
+   need to build the external toolchain, you would need to take separate
+   steps to build and install the toolchain.
+
+-  Make sure you add the layer that contains the toolchain to your
+   ``bblayers.conf`` file through the
+   :term:`BBLAYERS` variable.
+
+-  Set the
+   :term:`EXTERNAL_TOOLCHAIN`
+   variable in your ``local.conf`` file to the location in which you
+   installed the toolchain.
+
+A good example of an external toolchain used with the Yocto Project is
+Mentor Graphics Sourcery G++ Toolchain. You can see information on how
+to use that particular layer in the ``README`` file at
+http://github.com/MentorEmbedded/meta-sourcery/. You can find
+further information by reading about the
+:term:`TCMODE` variable in the Yocto
+Project Reference Manual's variable glossary.
+
+.. _using-pre-built:
+
+Example Using Pre-Built Binaries and QEMU
+=========================================
+
+If hardware, libraries and services are stable, you can get started by
+using a pre-built binary of the filesystem image, kernel, and toolchain
+and run it using the QEMU emulator. This scenario is useful for
+developing application software.
+
+|Using a Pre-Built Image|
+
+For this scenario, you need to do several things:
+
+-  Install the appropriate stand-alone toolchain tarball.
+
+-  Download the pre-built image that will boot with QEMU. You need to be
+   sure to get the QEMU image that matches your target machine's
+   architecture (e.g. x86, ARM, etc.).
+
+-  Download the filesystem image for your target machine's architecture.
+
+-  Set up the environment to emulate the hardware and then start the
+   QEMU emulator.
+
+Installing the Toolchain
+------------------------
+
+You can download a tarball installer, which includes the pre-built
+toolchain, the ``runqemu`` script, and support files from the
+appropriate directory under ` <&YOCTO_TOOLCHAIN_DL_URL;>`__. Toolchains
+are available for 32-bit and 64-bit x86 development systems from the
+``i686`` and ``x86_64`` directories, respectively. The toolchains the
+Yocto Project provides are based off the ``core-image-sato`` image and
+contain libraries appropriate for developing against that image. Each
+type of development system supports five or more target architectures.
+
+The names of the tarball installer scripts are such that a string
+representing the host system appears first in the filename and then is
+immediately followed by a string representing the target architecture.
+
+::
+
+        poky-glibc-host_system-image_type-arch-toolchain-release_version.sh
+
+        Where:
+            host_system is a string representing your development system:
+
+                       i686 or x86_64.
+
+            image_type is a string representing the image you wish to
+                   develop a Software Development Toolkit (SDK) for use against.
+                   The Yocto Project builds toolchain installers using the
+                   following BitBake command:
+
+                       bitbake core-image-sato -c populate_sdk
+
+            arch is a string representing the tuned target architecture:
+
+                       i586, x86_64, powerpc, mips, armv7a or armv5te
+
+            release_version is a string representing the release number of the
+                   Yocto Project:
+
+                       DISTRO, DISTRO+snapshot
+               
+
+For example, the following toolchain installer is for a 64-bit
+development host system and a i586-tuned target architecture based off
+the SDK for ``core-image-sato``:
+poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
+
+Toolchains are self-contained and by default are installed into
+``/opt/poky``. However, when you run the toolchain installer, you can
+choose an installation directory.
+
+The following command shows how to run the installer given a toolchain
+tarball for a 64-bit x86 development host system and a 32-bit x86 target
+architecture. You must change the permissions on the toolchain installer
+script so that it is executable.
+
+The example assumes the toolchain installer is located in
+``~/Downloads/``.
+
+.. note::
+
+   If you do not have write permissions for the directory into which you
+   are installing the toolchain, the toolchain installer notifies you
+   and exits. Be sure you have write permissions in the directory and
+   run the installer again.
+
+$ ~/Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
+
+For more information on how to install tarballs, see the "`Using a
+Cross-Toolchain
+Tarball <&YOCTO_DOCS_ADT_URL;#using-an-existing-toolchain-tarball>`__"
+and "`Using BitBake and the Build
+Directory <&YOCTO_DOCS_ADT_URL;#using-the-toolchain-from-within-the-build-tree>`__"
+sections in the Yocto Project Application Developer's Guide.
+
+Downloading the Pre-Built Linux Kernel
+--------------------------------------
+
+You can download the pre-built Linux kernel suitable for running in the
+QEMU emulator from ` <&YOCTO_QEMU_DL_URL;>`__. Be sure to use the kernel
+that matches the architecture you want to simulate. Download areas exist
+for the five supported machine architectures: ``qemuarm``, ``qemumips``,
+``qemuppc``, ``qemux86``, and ``qemux86-64``.
+
+Most kernel files have one of the following forms: \*zImage-qemuarch.bin
+vmlinux-qemuarch.bin Where: arch is a string representing the target
+architecture: x86, x86-64, ppc, mips, or arm.
+
+You can learn more about downloading a Yocto Project kernel in the
+"`Yocto Project Kernel <&YOCTO_DOCS_DEV_URL;#local-kernel-files>`__"
+bulleted item in the Yocto Project Development Manual.
+
+Downloading the Filesystem
+--------------------------
+
+You can also download the filesystem image suitable for your target
+architecture from ` <&YOCTO_QEMU_DL_URL;>`__. Again, be sure to use the
+filesystem that matches the architecture you want to simulate.
+
+The filesystem image has two tarball forms: ``ext3`` and ``tar``. You
+must use the ``ext3`` form when booting an image using the QEMU
+emulator. The ``tar`` form can be flattened out in your host development
+system and used for build purposes with the Yocto Project.
+core-image-profile-qemuarch.ext3 core-image-profile-qemuarch.tar.bz2
+Where: profile is the filesystem image's profile: lsb, lsb-dev, lsb-sdk,
+lsb-qt3, minimal, minimal-dev, sato, sato-dev, or sato-sdk. For
+information on these types of image profiles, see the
+":ref:`ref-manual/ref-images:Images`" chapter in the Yocto
+Project Reference Manual. arch is a string representing the target
+architecture: x86, x86-64, ppc, mips, or arm.
+
+Setting Up the Environment and Starting the QEMU Emulator
+---------------------------------------------------------
+
+Before you start the QEMU emulator, you need to set up the emulation
+environment. The following command form sets up the emulation
+environment. $ source
+YOCTO_ADTPATH_DIR/environment-setup-arch-poky-linux-if Where: arch is a
+string representing the target architecture: i586, x86_64, ppc603e,
+mips, or armv5te. if is a string representing an embedded application
+binary interface. Not all setup scripts include this string.
+
+Finally, this command form invokes the QEMU emulator $ runqemu qemuarch
+kernel-image filesystem-image Where: qemuarch is a string representing
+the target architecture: qemux86, qemux86-64, qemuppc, qemumips, or
+qemuarm. kernel-image is the architecture-specific kernel image.
+filesystem-image is the .ext3 filesystem image.
+
+Continuing with the example, the following two commands setup the
+emulation environment and launch QEMU. This example assumes the root
+filesystem (``.ext3`` file) and the pre-built kernel image file both
+reside in your home directory. The kernel and filesystem are for a
+32-bit target architecture. $ cd $HOME $ source
+YOCTO_ADTPATH_DIR/environment-setup-i586-poky-linux $ runqemu qemux86
+bzImage-qemux86.bin \\ core-image-sato-qemux86.ext3
+
+The environment in which QEMU launches varies depending on the
+filesystem image and on the target architecture. For example, if you
+source the environment for the ARM target architecture and then boot the
+minimal QEMU image, the emulator comes up in a new shell in command-line
+mode. However, if you boot the SDK image, QEMU comes up with a GUI.
+
+.. note::
+
+   Booting the PPC image results in QEMU launching in the same shell in
+   command-line mode.
+
+.. |Using a Pre-Built Image| image:: figures/using-a-pre-built-image.png
