summaryrefslogtreecommitdiffstats
path: root/documentation/kernel-dev/kernel-dev-intro.xml
blob: 5d6d9309aa47d77bbbe75190136c34b8f7085a04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<!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>

    <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 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 Long Term Support Initiative (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
            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://developer.berlios.de/projects/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;#modifying-temporary-source-code'>Modifying Temporary 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>

        <para>
            Original Text:
            <literallayout class='monospaced'>
Each Yocto Project release introduces a new set of linux-yocto kernel recipes,
tracking the latest upstream developments and introducing newly supported
platforms. In addition to the new kernel recipes, the previous recipes are
refreshed and supported for at least one additional release. As they align,
these previous releases are updated to include the latest from the LTSI project.
Besides these recipes, a linux-yocto-dev recipe is available for working with
the very latest in upstream Linux kernel development as well as meta-data
development.

If you do not maintain your own kernel sources and need to make only minimal
changes to the sources, these 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.

If, instead, you have a very specific Linux kernel source tree and are unable to
align with one of the many official linux-yocto releases, an alternative
exists by which you can use the Yocto Project Linux kernel tools with your own
sources.

The sections that follow provide instructions for completing specific Linux
kernel development tasks. They assume familiarity with working with bitbake
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:

o Yocto Project Getting Started Guide
o Yocto Project Development Manual
  - 4.3 Modifying Temporary Source Code
  - 5.1 Understanding and Creating Layers
  - 4.1.2 Modifying the Kernel
    (This section should be retired, as well as 5.6, 5.7 - with this document
     providing the necessary information)

Finally, while this document focuses on the manual creation of recipes, patches,
and configuration files, the Yocto Project BSP tools are available to automate
this process with existing content and work well to create the initial framework
and boilerplate code. For details, refer to the Yocto Project BSP Developer's
Guide.
            </literallayout>
        </para>
    </section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->