blob: 263e50098fe822720847dd1df3e9a80ac2cde77b [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001<!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<!--
148vim: expandtab tw=80 ts=4
149-->