| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | 
 | 2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | 
 | 3 | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | 
 | 4 |  | 
 | 5 | <chapter id='kernel-dev-intro'> | 
 | 6 | <title>Introduction</title> | 
 | 7 |  | 
 | 8 | <!-- | 
 | 9 | <para> | 
 | 10 |     <emphasis>AR - Darren Hart:</emphasis>  See if the concepts in these | 
 | 11 |     three bullets are adequately covered in somewhere in this manual: | 
 | 12 |     <itemizedlist> | 
 | 13 |         <listitem><para>Do we convey that our kernel Git repositories | 
 | 14 |             have a clear and continuous history, similar to the way the | 
 | 15 |             kernel Git repositories for <filename>kernel.org</filename> | 
 | 16 |             do. | 
 | 17 |             </para></listitem> | 
 | 18 |         <listitem><para>Does the manual note that Yocto Project delivers | 
 | 19 |             a key set of supported kernel types, where | 
 | 20 |             each type is tailored to meet a specific use (e.g. networking, | 
 | 21 |             consumer, devices, and so forth).</para></listitem> | 
 | 22 |         <listitem><para>Do we convey that the Yocto Project uses a | 
 | 23 |             Git branching strategy that, from a | 
 | 24 |             developer's point of view, results in a linear path from the | 
 | 25 |             baseline kernel.org, through a select group of features and | 
 | 26 |             ends with their BSP-specific commits.</para></listitem> | 
 | 27 |     </itemizedlist> | 
 | 28 | </para> | 
 | 29 | --> | 
 | 30 |  | 
 | 31 |     <section id='kernel-dev-overview'> | 
 | 32 |         <title>Overview</title> | 
 | 33 |  | 
 | 34 |         <para> | 
 | 35 |             Regardless of how you intend to make use of the Yocto Project, | 
 | 36 |             chances are you will work with the Linux kernel. | 
 | 37 |             This manual provides background information on the Yocto Linux kernel | 
 | 38 |             <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>, | 
 | 39 |             describes common tasks you can perform using the kernel tools, | 
 | 40 |             and shows you how to use the kernel Metadata needed to work with | 
 | 41 |             the kernel inside the Yocto Project. | 
 | 42 |        </para> | 
 | 43 |  | 
 | 44 |        <para> | 
 | 45 |             Each Yocto Project release has a set of linux-yocto recipes, whose | 
 | 46 |             Git repositories you can view in the Yocto | 
 | 47 |             <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink> under | 
 | 48 |             the "Yocto Linux Kernel" heading. | 
 | 49 |             New recipes for the release track the latest upstream developments | 
 | 50 |             and introduce newly-supported platforms. | 
 | 51 |             Previous recipes in the release are refreshed and supported for at | 
 | 52 |             least one additional release. | 
 | 53 |             As they align, these previous releases are updated to include the | 
 | 54 |             latest from the | 
 | 55 |             <ulink url='&YOCTO_HOME_URL;/organization/long-term-support-initiative-ltsi'>Long Term Support Initiative</ulink> | 
 | 56 |             (LTSI) project. | 
 | 57 |             Also included is a linux-yocto development recipe | 
 | 58 |             (<filename>linux-yocto-dev.bb</filename>) should you want to work | 
 | 59 |             with the very latest in upstream Linux kernel development and | 
 | 60 |             kernel Metadata development. | 
 | 61 |         </para> | 
 | 62 |  | 
 | 63 |         <para> | 
 | 64 |             The Yocto Project also provides a powerful set of kernel | 
 | 65 |             tools for managing Linux kernel sources and configuration data. | 
 | 66 |             You can use these tools to make a single configuration change, | 
 | 67 |             apply multiple patches, or work with your own kernel sources. | 
 | 68 |         </para> | 
 | 69 |  | 
 | 70 |         <para> | 
 | 71 |             In particular, the kernel tools allow you to generate configuration | 
 | 72 |             fragments that specify only what you must, and nothing more. | 
 | 73 |             Configuration fragments only need to contain the highest level | 
 | 74 |             visible <filename>CONFIG</filename> options as presented by the Linux | 
 | 75 |             kernel <filename>menuconfig</filename> system. | 
 | 76 |             Contrast this against a complete Linux kernel | 
 | 77 |             <filename>.config</filename>, which includes all the automatically | 
 | 78 |             selected <filename>CONFIG</filename> options. | 
 | 79 |             This efficiency reduces your maintenance effort and allows you | 
 | 80 |             to further separate your configuration in ways that make sense for | 
 | 81 |             your project. | 
 | 82 |             A common split separates policy and hardware. | 
 | 83 |             For example, all your kernels might support | 
 | 84 |             the <filename>proc</filename> and <filename>sys</filename> filesystems, | 
 | 85 |             but only specific boards require sound, USB, or specific drivers. | 
 | 86 |             Specifying these configurations individually allows you to aggregate | 
 | 87 |             them together as needed, but maintains them in only one place. | 
 | 88 |             Similar logic applies to separating source changes. | 
 | 89 |         </para> | 
 | 90 |  | 
 | 91 |         <para> | 
 | 92 |             If you do not maintain your own kernel sources and need to make | 
 | 93 |             only minimal changes to the sources, the released recipes provide a | 
 | 94 |             vetted base upon which to layer your changes. | 
 | 95 |             Doing so allows you to benefit from the continual kernel | 
 | 96 |             integration and testing performed during development of the | 
 | 97 |             Yocto Project. | 
 | 98 |         </para> | 
 | 99 |  | 
 | 100 |         <para> | 
 | 101 |             If, instead, you have a very specific Linux kernel source tree | 
 | 102 |             and are unable to align with one of the official linux-yocto | 
 | 103 |             recipes, an alternative exists by which you can use the Yocto | 
 | 104 |             Project Linux kernel tools with your own kernel sources. | 
 | 105 |         </para> | 
 | 106 |     </section> | 
 | 107 |  | 
 | 108 |     <section id='kernel-dev-other-resources'> | 
 | 109 |         <title>Other Resources</title> | 
 | 110 |  | 
 | 111 |         <para> | 
 | 112 |             The sections that follow provide instructions for completing | 
 | 113 |             specific Linux kernel development tasks. | 
 | 114 |             These instructions assume you are comfortable working with | 
 | 115 |             <ulink url='http://openembedded.org/wiki/Bitbake'>BitBake</ulink> | 
 | 116 |             recipes and basic open-source development tools. | 
 | 117 |             Understanding these concepts will facilitate the process of working | 
 | 118 |             with the kernel recipes. | 
 | 119 |             If you find you need some additional background, please be sure to | 
 | 120 |             review and understand the following documentation: | 
 | 121 |             <itemizedlist> | 
 | 122 |                 <listitem><para><ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink> | 
 | 123 |                     </para></listitem> | 
 | 124 |                 <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-modifying-source-code'>Modifying Source Code</ulink>" | 
 | 125 |                     section in the Yocto Project Development Manual | 
 | 126 |                     </para></listitem> | 
 | 127 |                 <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>" section | 
 | 128 |                     in the Yocto Project Development Manual</para></listitem> | 
 | 129 |                 <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#modifying-the-kernel'>Modifying the Kernel</ulink>" section | 
 | 130 |                     in the Yocto Project Development Manual.</para></listitem> | 
 | 131 |             </itemizedlist> | 
 | 132 |         </para> | 
 | 133 |  | 
 | 134 |         <para> | 
 | 135 |             Finally, while this document focuses on the manual creation of | 
 | 136 |             recipes, patches, and configuration files, the Yocto Project | 
 | 137 |             Board Support Package (BSP) tools are available to automate | 
 | 138 |             this process with existing content and work well to create the | 
 | 139 |             initial framework and boilerplate code. | 
 | 140 |             For details on these tools, see the | 
 | 141 |             "<ulink url='&YOCTO_DOCS_BSP_URL;#using-the-yocto-projects-bsp-tools'>Using the Yocto Project's BSP Tools</ulink>" | 
 | 142 |             section in the Yocto Project Board Support Package (BSP) Developer's | 
 | 143 |             Guide. | 
 | 144 |         </para> | 
 | 145 |     </section> | 
 | 146 | </chapter> | 
 | 147 | <!-- | 
 | 148 | vim: expandtab tw=80 ts=4 | 
 | 149 | --> |