1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-03 01:40:07 +00:00

kernel-dev: Minor updates to the "Kernel Maintenance" appendix.

(From yocto-docs rev: eabeff4611d447be12af64f0f44c218c69da3409)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Rifenbark
2017-10-03 08:50:52 -07:00
committed by Richard Purdie
parent 214c692889
commit 398a00a74c
@@ -7,86 +7,137 @@
<section id='tree-construction'> <section id='tree-construction'>
<title>Tree Construction</title> <title>Tree Construction</title>
<para> <para>
This section describes construction of the Yocto Project kernel source repositories This section describes construction of the Yocto Project kernel
as accomplished by the Yocto Project team to create kernel repositories. source repositories as accomplished by the Yocto Project team to
These kernel repositories are found under the heading "Yocto Linux Kernel" at create Yocto Linux kernel repositories.
These kernel repositories are found under the heading "Yocto Linux
Kernel" at
<ulink url='&YOCTO_GIT_URL;/cgit.cgi'>&YOCTO_GIT_URL;/cgit.cgi</ulink> <ulink url='&YOCTO_GIT_URL;/cgit.cgi'>&YOCTO_GIT_URL;/cgit.cgi</ulink>
and can be shipped as part of a Yocto Project release. and are shipped as part of a Yocto Project release.
The team creates these repositories by The team creates these repositories by compiling and executing the
compiling and executing the set of feature descriptions for every BSP set of feature descriptions for every BSP and feature in the
and feature in the product. product.
Those feature descriptions list all necessary patches, Those feature descriptions list all necessary patches,
configuration, branching, tagging and feature divisions found in a kernel. configurations, branches, tags, and feature divisions found in a
Thus, the Yocto Project kernel repository (or tree) is built. Yocto Linux kernel.
Thus, the Yocto Project Linux kernel repository (or tree) is built.
</para> </para>
<para> <para>
The existence of this tree allows you to access and clone a particular The existence of this tree allows you to access and clone a
Yocto Project kernel repository and use it to build images based on their configurations particular Yocto Project Linux kernel repository and use it to
and features. build images based on their configurations and features.
</para> </para>
<para> <para>
You can find the files used to describe all the valid features and BSPs You can find the files used to describe all the valid features and
in the Yocto Project kernel in any clone of the Yocto Project kernel source repository BSPs in the Yocto Project Linux kernel in any clone of the Yocto
Git tree. Project Linux kernel source repository Git tree.
For example, the following command clones the Yocto Project baseline kernel that For example, the following command clones the Yocto Project
branched off of <filename>linux.org</filename> version 3.19: baseline Linux kernel that branches off
<filename>linux.org</filename> version 4.12:
<literallayout class='monospaced'> <literallayout class='monospaced'>
$ git clone git://git.yoctoproject.org/linux-yocto-3.19 $ git clone git://git.yoctoproject.org/linux-yocto-4.12
</literallayout> </literallayout>
For more information on how to set up a local Git repository of For more information on how to set up a local Git repository of
the Yocto Project kernel files, see the the Yocto Project Linux kernel files, see the
"<link linkend='preparing-the-build-host-to-work-on-the-kernel'>Preparing the Build Host to Work on the Kernel</link>" "<link linkend='preparing-the-build-host-to-work-on-the-kernel'>Preparing the Build Host to Work on the Kernel</link>"
section. section.
</para> </para>
<para> <para>
Once you have cloned the kernel Git repository on your local machine, you can Once you have cloned the kernel Git repository on your local
switch to the <filename>meta</filename> branch within the repository. machine, you can discover the branches that are avilable in the
Here is an example that assumes the local Git repository for the kernel is in repository using the following Git command:
a top-level directory named <filename>linux-yocto-3.19</filename>:
<literallayout class='monospaced'> <literallayout class='monospaced'>
$ cd linux-yocto-3.19 $ git branch -a
$ git checkout -b meta origin/meta
</literallayout> </literallayout>
Once you have checked out and switched to the <filename>meta</filename> branch, Checking out a branch allows you to work with a particular
you can see a snapshot of all the kernel configuration and feature descriptions that are Yocto Linux kernel.
used to build that particular kernel repository. For example, the following command checks out the
These descriptions are in the form of <filename>.scc</filename> files. <filename>standard/beagleboard</filename> branch of the
repository:
<literallayout class='monospaced'>
$ cd linux-yocto-4.12
$ git checkout -b my-kernel-4.12 standard/beagleboard
</literallayout>
Once you have checked out and switched to the
<filename>standard/beagleboard</filename> branch,
you can see a snapshot of all the kernel source files used to
used to build that particular Yocto Linux kernel for that
particular board.
</para> </para>
<para> <para>
You should realize, however, that browsing your local kernel repository To see the features and configurations for a particular Yocto
for feature descriptions and patches is not an effective way to determine what is in a Linux kernel, you need to examine the
particular kernel branch. <filename>yocto-kernel-cache</filename> Git repository.
Instead, you should use Git directly to discover the changes in a branch. Branches in the <filename>yocto-kernel-cache</filename> repository
Using Git is an efficient and flexible way to inspect changes to the kernel. correspond to Yocto Linux kernel versions (e.g.
<filename>yocto-4.12</filename>).
Branches contain descriptions in the form of
<filename>.scc</filename> and <filename>.cfg</filename> files.
</para>
<para>
You should realize, however, that browsing your local
<filename>yocto-kernel-cache</filename> repository for feature
descriptions and patches is not an effective way to determine what
is in a particular kernel branch.
Instead, you should use Git directly to discover the changes in
a branch.
Using Git is an efficient and flexible way to inspect changes to
the kernel.
<note> <note>
Ground up reconstruction of the complete kernel tree is an action only taken by the Ground up reconstruction of the complete kernel tree is an
Yocto Project team during an active development cycle. action only taken by the Yocto Project team during an active
When you create a clone of the kernel Git repository, you are simply making it development cycle.
efficiently available for building and development. When you create a clone of the kernel Git repository, you are
simply making it efficiently available for building and
development.
</note> </note>
</para> </para>
<para> <para>
The following steps describe what happens when the Yocto Project Team constructs The following steps describe what happens when the Yocto Project
the Yocto Project kernel source Git repository (or tree) found at Team constructs the Yocto Project kernel source Git repository
(or tree) found at
<ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink> given the <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink> given the
introduction of a new top-level kernel feature or BSP. introduction of a new top-level kernel feature or BSP.
These are the actions that effectively create the tree These are the actions that effectively create the tree
that includes the new feature, patch or BSP: that includes the new feature, patch or BSP:
<orderedlist> <orderedlist>
<listitem><para>A top-level kernel feature is passed to the kernel build subsystem. <listitem><para>
Normally, this feature is a BSP for a particular kernel type.</para></listitem> A top-level kernel feature is passed to the kernel build
<listitem><para>The file that describes the top-level feature is located by searching subsystem.
these system directories: Normally, this feature is a BSP for a particular kernel
type.
</para></listitem>
<listitem><para>
The file that describes the top-level feature is located
by searching these system directories:
<itemizedlist> <itemizedlist>
<listitem><para>The in-tree kernel-cache directories, which are located <listitem><para>
in <filename>meta/cfg/kernel-cache</filename></para></listitem> The in-tree kernel-cache directories, which are
<listitem><para>Areas pointed to by <filename>SRC_URI</filename> statements located in
found in recipes</para></listitem> <filename>yocto-kernel-cache/cfg/kernel-cache</filename>
</para></listitem>
<listitem><para>
Areas pointed to by <filename>SRC_URI</filename>
statements found in recipes
</para></listitem>
</itemizedlist> </itemizedlist>
For a typical build, the target of the search is a For a typical build, the target of the search is a
feature description in an <filename>.scc</filename> file feature description in an <filename>.scc</filename> file
whose name follows this format: whose name follows this format:
I AM HERE
<literallayout class='monospaced'> <literallayout class='monospaced'>
<replaceable>bsp_name</replaceable>-<replaceable>kernel_type</replaceable>.scc <replaceable>bsp_name</replaceable>-<replaceable>kernel_type</replaceable>.scc
</literallayout> </literallayout>