# The Yocto Project Development Manual

## Introduction

Welcome to the Yocto Project Development Manual! This manual provides information on how to use the Yocto Project to develop embedded Linux images and user-space applications that run on targeted devices. The manual provides an overview of image, kernel, and user-space application development using the Yocto Project. Because much of the information in this manual is general, it contains many references to other sources where you can find more detail. For example, you can find detailed information on Git, repositories, and open source in general in many places on the Internet. Another example specific to the Yocto Project is how to quickly set up your host development system and build an image, which you find in the Yocto Project Quick Start.

The Yocto Project Development Manual does, however, provide guidance and examples on how to change the kernel source code, reconfigure the kernel, and develop an application using `devtool`.

By default, using the Yocto Project creates a Poky distribution. However, you can create your own distribution by providing key Metadata. A good example is Angstrom, which has had a distribution based on the Yocto Project since its inception. Other examples include commercial distributions like Wind River Linux, Mentor Embedded Linux, ENEA Linux and others. See the "Creating Your Own Distribution" section for more information.

## What This Manual Provides

The following list describes what you can get from this manual:

- Information that lets you get set up to develop using the Yocto Project.

- Information to help developers who are new to the open source environment and to the distributed revision control system Git, which the Yocto Project uses.

- An understanding of common end-to-end development models and tasks.

- Information about common development tasks generally used during image development for embedded devices.

- Information on using the Yocto Project integration of the QuickEMUlator (QEMU), which lets you simulate running on hardware an image you have built using the OpenEmbedded build system.

- Many references to other sources of related information.

## What this Manual Does Not Provide

This manual will not give you the following:

- Step-by-step instructions when those instructions exist in other Yocto Project documentation: For example, the Yocto Project Software Development Kit (SDK) Developer's Guide manual contains detailed instructions on how to install an SDK, which is used to develop applications for target hardware.

- Reference material: This type of material resides in an appropriate reference manual. For example, system variables are documented in the Yocto Project Reference Manual.

- Detailed public information that is not specific to the Yocto Project: For example, exhaustive information on how to use Git is covered better through the Internet than in this manual.

## Other Information

Because this manual presents overview information for many different topics, supplemental information is recommended for full comprehension. The following list presents other sources of information you might find helpful:

- Yocto Project Website: The home page for the Yocto Project provides lots of information on the project as well as links to software and documentation.

- Yocto Project Quick Start: This short document lets you get started with the Yocto Project and quickly begin building an image.

- Yocto Project Reference Manual: This manual is a reference guide to the OpenEmbedded build system, which is based on BitBake. The build system is sometimes referred to as "Poky".

- Yocto Project Software Development Kit (SDK) Developer's Guide: This guide provides information that lets you get going with the standard or extensible SDK. An SDK, with its cross-development toolchains, allows you to develop projects inside or outside of the Yocto Project environment.

- Yocto Project Board Support Package (BSP) Developer's Guide: This guide defines the structure for BSP components. Having a commonly understood structure encourages standardization.

- Yocto Project Linux Kernel Development Manual: This manual describes how to work with Linux Yocto kernels as well as provides a bit of conceptual information on the construction of the Yocto Linux kernel tree.

- Yocto Project Profiling and Tracing Manual: This manual presents a set of common and generally useful tracing and profiling schemes along with their applications (as appropriate) to each tool.

- Toaster User Manual: This manual introduces and describes how to set up and use Toaster, which is a web interface to the Yocto Project's OpenEmbedded Build System.

- Eclipse IDE Yocto Plug-in: A step-by-step instructional video that demonstrates how an application developer uses Yocto Plug-in features within the Eclipse IDE.

- FAQ: A list of commonly asked questions and their answers.

- Release Notes: Features, updates and known issues for the current release of the Yocto Project.

- Toaster: An Application Programming Interface (API) and web-based interface to the OpenEmbedded build system, which uses BitBake, that reports build information.

- Build Appliance: A virtual machine that enables you to build and boot a custom embedded Linux image with the Yocto Project using a non-Linux development system.

- Bugzilla: The bug tracking application the Yocto Project uses. If you find problems with the Yocto Project, you should report them using this application.

- Yocto Project Mailing Lists: To subscribe to the Yocto Project mailing lists, click on the following URLs and follow the instructions:

  - for a Yocto Project Discussions mailing list.

  - for a Yocto Project Discussions mailing list about the OpenEmbedded build system (Poky).

  - for a mailing list to receive official Yocto Project announcements as well as Yocto Project milestones.

  - for a listing of all public mailing lists on `lists.yoctoproject.org`.

- Internet Relay Chat (IRC): Two IRC channels on freenode are available for Yocto Project and Poky discussions: `#yocto` and `#poky`, respectively.

- OpenEmbedded: The build system used by the Yocto Project. This project is the upstream, generic, embedded distribution from which the Yocto Project derives its build system (Poky) and to which it contributes.

- BitBake: The tool used by the OpenEmbedded build system to process project metadata.

- BitBake User Manual: A comprehensive guide to the BitBake tool. If you want information on BitBake, see this manual.

- Quick EMUlator (QEMU): An open-source machine emulator and virtualizer.