| 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 | --> |