| <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | 
 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | 
 | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | 
 |  | 
 | <chapter id='kernel-dev-intro'> | 
 | <title>Introduction</title> | 
 |  | 
 | <!-- | 
 | <para> | 
 |     <emphasis>AR - Darren Hart:</emphasis>  See if the concepts in these | 
 |     three bullets are adequately covered in somewhere in this manual: | 
 |     <itemizedlist> | 
 |         <listitem><para>Do we convey that our kernel Git repositories | 
 |             have a clear and continuous history, similar to the way the | 
 |             kernel Git repositories for <filename>kernel.org</filename> | 
 |             do. | 
 |             </para></listitem> | 
 |         <listitem><para>Does the manual note that Yocto Project delivers | 
 |             a key set of supported kernel types, where | 
 |             each type is tailored to meet a specific use (e.g. networking, | 
 |             consumer, devices, and so forth).</para></listitem> | 
 |         <listitem><para>Do we convey that the Yocto Project uses a | 
 |             Git branching strategy that, from a | 
 |             developer's point of view, results in a linear path from the | 
 |             baseline kernel.org, through a select group of features and | 
 |             ends with their BSP-specific commits.</para></listitem> | 
 |     </itemizedlist> | 
 | </para> | 
 | --> | 
 |  | 
 |     <section id='kernel-dev-overview'> | 
 |         <title>Overview</title> | 
 |  | 
 |         <para> | 
 |             Regardless of how you intend to make use of the Yocto Project, | 
 |             chances are you will work with the Linux kernel. | 
 |             This manual provides background information on the Yocto Linux kernel | 
 |             <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>, | 
 |             describes common tasks you can perform using the kernel tools, | 
 |             and shows you how to use the kernel Metadata needed to work with | 
 |             the kernel inside the Yocto Project. | 
 |        </para> | 
 |  | 
 |        <para> | 
 |             Each Yocto Project release has a set of linux-yocto recipes, whose | 
 |             Git repositories you can view in the Yocto | 
 |             <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink> under | 
 |             the "Yocto Linux Kernel" heading. | 
 |             New recipes for the release track the latest upstream developments | 
 |             and introduce newly-supported platforms. | 
 |             Previous recipes in the release are refreshed and supported for at | 
 |             least one additional release. | 
 |             As they align, these previous releases are updated to include the | 
 |             latest from the | 
 |             <ulink url='&YOCTO_HOME_URL;/organization/long-term-support-initiative-ltsi'>Long Term Support Initiative</ulink> | 
 |             (LTSI) project. | 
 |             Also included is a linux-yocto development recipe | 
 |             (<filename>linux-yocto-dev.bb</filename>) should you want to work | 
 |             with the very latest in upstream Linux kernel development and | 
 |             kernel Metadata development. | 
 |         </para> | 
 |  | 
 |         <para> | 
 |             The Yocto Project also provides a powerful set of kernel | 
 |             tools for managing Linux kernel sources and configuration data. | 
 |             You can use these tools to make a single configuration change, | 
 |             apply multiple patches, or work with your own kernel sources. | 
 |         </para> | 
 |  | 
 |         <para> | 
 |             In particular, the kernel tools allow you to generate configuration | 
 |             fragments that specify only what you must, and nothing more. | 
 |             Configuration fragments only need to contain the highest level | 
 |             visible <filename>CONFIG</filename> options as presented by the Linux | 
 |             kernel <filename>menuconfig</filename> system. | 
 |             Contrast this against a complete Linux kernel | 
 |             <filename>.config</filename>, which includes all the automatically | 
 |             selected <filename>CONFIG</filename> options. | 
 |             This efficiency reduces your maintenance effort and allows you | 
 |             to further separate your configuration in ways that make sense for | 
 |             your project. | 
 |             A common split separates policy and hardware. | 
 |             For example, all your kernels might support | 
 |             the <filename>proc</filename> and <filename>sys</filename> filesystems, | 
 |             but only specific boards require sound, USB, or specific drivers. | 
 |             Specifying these configurations individually allows you to aggregate | 
 |             them together as needed, but maintains them in only one place. | 
 |             Similar logic applies to separating source changes. | 
 |         </para> | 
 |  | 
 |         <para> | 
 |             If you do not maintain your own kernel sources and need to make | 
 |             only minimal changes to the sources, the released recipes provide a | 
 |             vetted base upon which to layer your changes. | 
 |             Doing so allows you to benefit from the continual kernel | 
 |             integration and testing performed during development of the | 
 |             Yocto Project. | 
 |         </para> | 
 |  | 
 |         <para> | 
 |             If, instead, you have a very specific Linux kernel source tree | 
 |             and are unable to align with one of the official linux-yocto | 
 |             recipes, an alternative exists by which you can use the Yocto | 
 |             Project Linux kernel tools with your own kernel sources. | 
 |         </para> | 
 |     </section> | 
 |  | 
 |     <section id='kernel-dev-other-resources'> | 
 |         <title>Other Resources</title> | 
 |  | 
 |         <para> | 
 |             The sections that follow provide instructions for completing | 
 |             specific Linux kernel development tasks. | 
 |             These instructions assume you are comfortable working with | 
 |             <ulink url='http://openembedded.org/wiki/Bitbake'>BitBake</ulink> | 
 |             recipes and basic open-source development tools. | 
 |             Understanding these concepts will facilitate the process of working | 
 |             with the kernel recipes. | 
 |             If you find you need some additional background, please be sure to | 
 |             review and understand the following documentation: | 
 |             <itemizedlist> | 
 |                 <listitem><para><ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink> | 
 |                     </para></listitem> | 
 |                 <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-modifying-source-code'>Modifying Source Code</ulink>" | 
 |                     section in the Yocto Project Development Manual | 
 |                     </para></listitem> | 
 |                 <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>" section | 
 |                     in the Yocto Project Development Manual</para></listitem> | 
 |                 <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#modifying-the-kernel'>Modifying the Kernel</ulink>" section | 
 |                     in the Yocto Project Development Manual.</para></listitem> | 
 |             </itemizedlist> | 
 |         </para> | 
 |  | 
 |         <para> | 
 |             Finally, while this document focuses on the manual creation of | 
 |             recipes, patches, and configuration files, the Yocto Project | 
 |             Board Support Package (BSP) tools are available to automate | 
 |             this process with existing content and work well to create the | 
 |             initial framework and boilerplate code. | 
 |             For details on these tools, see the | 
 |             "<ulink url='&YOCTO_DOCS_BSP_URL;#using-the-yocto-projects-bsp-tools'>Using the Yocto Project's BSP Tools</ulink>" | 
 |             section in the Yocto Project Board Support Package (BSP) Developer's | 
 |             Guide. | 
 |         </para> | 
 |     </section> | 
 | </chapter> | 
 | <!-- | 
 | vim: expandtab tw=80 ts=4 | 
 | --> |