diff options
| author | Scott Rifenbark <srifenbark@gmail.com> | 2017-10-03 08:50:52 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-10-06 12:06:33 +0100 |
| commit | 398a00a74c3dda82b7cb9fdf95718df0bf2dd0b9 (patch) | |
| tree | 806474b80cbaf5b4af4250832e6bee100b3e5aac /documentation/kernel-dev | |
| parent | 214c6928897ce191360f13929990932aa22fcb34 (diff) | |
| download | poky-398a00a74c3dda82b7cb9fdf95718df0bf2dd0b9.tar.gz | |
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>
Diffstat (limited to 'documentation/kernel-dev')
| -rw-r--r-- | documentation/kernel-dev/kernel-dev-maint-appx.xml | 147 |
1 files changed, 99 insertions, 48 deletions
diff --git a/documentation/kernel-dev/kernel-dev-maint-appx.xml b/documentation/kernel-dev/kernel-dev-maint-appx.xml index 49ac9179b2..9e6fa99998 100644 --- a/documentation/kernel-dev/kernel-dev-maint-appx.xml +++ b/documentation/kernel-dev/kernel-dev-maint-appx.xml | |||
| @@ -7,86 +7,137 @@ | |||
| 7 | 7 | ||
| 8 | <section id='tree-construction'> | 8 | <section id='tree-construction'> |
| 9 | <title>Tree Construction</title> | 9 | <title>Tree Construction</title> |
| 10 | |||
| 10 | <para> | 11 | <para> |
| 11 | This section describes construction of the Yocto Project kernel source repositories | 12 | This section describes construction of the Yocto Project kernel |
| 12 | as accomplished by the Yocto Project team to create kernel repositories. | 13 | source repositories as accomplished by the Yocto Project team to |
| 13 | These kernel repositories are found under the heading "Yocto Linux Kernel" at | 14 | create Yocto Linux kernel repositories. |
| 15 | These kernel repositories are found under the heading "Yocto Linux | ||
| 16 | Kernel" at | ||
| 14 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'>&YOCTO_GIT_URL;/cgit.cgi</ulink> | 17 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'>&YOCTO_GIT_URL;/cgit.cgi</ulink> |
| 15 | and can be shipped as part of a Yocto Project release. | 18 | and are shipped as part of a Yocto Project release. |
| 16 | The team creates these repositories by | 19 | The team creates these repositories by compiling and executing the |
| 17 | compiling and executing the set of feature descriptions for every BSP | 20 | set of feature descriptions for every BSP and feature in the |
| 18 | and feature in the product. | 21 | product. |
| 19 | Those feature descriptions list all necessary patches, | 22 | Those feature descriptions list all necessary patches, |
| 20 | configuration, branching, tagging and feature divisions found in a kernel. | 23 | configurations, branches, tags, and feature divisions found in a |
| 21 | Thus, the Yocto Project kernel repository (or tree) is built. | 24 | Yocto Linux kernel. |
| 25 | Thus, the Yocto Project Linux kernel repository (or tree) is built. | ||
| 22 | </para> | 26 | </para> |
| 27 | |||
| 23 | <para> | 28 | <para> |
| 24 | The existence of this tree allows you to access and clone a particular | 29 | The existence of this tree allows you to access and clone a |
| 25 | Yocto Project kernel repository and use it to build images based on their configurations | 30 | particular Yocto Project Linux kernel repository and use it to |
| 26 | and features. | 31 | build images based on their configurations and features. |
| 27 | </para> | 32 | </para> |
| 33 | |||
| 28 | <para> | 34 | <para> |
| 29 | You can find the files used to describe all the valid features and BSPs | 35 | You can find the files used to describe all the valid features and |
| 30 | in the Yocto Project kernel in any clone of the Yocto Project kernel source repository | 36 | BSPs in the Yocto Project Linux kernel in any clone of the Yocto |
| 31 | Git tree. | 37 | Project Linux kernel source repository Git tree. |
| 32 | For example, the following command clones the Yocto Project baseline kernel that | 38 | For example, the following command clones the Yocto Project |
| 33 | branched off of <filename>linux.org</filename> version 3.19: | 39 | baseline Linux kernel that branches off |
| 40 | <filename>linux.org</filename> version 4.12: | ||
| 34 | <literallayout class='monospaced'> | 41 | <literallayout class='monospaced'> |
| 35 | $ git clone git://git.yoctoproject.org/linux-yocto-3.19 | 42 | $ git clone git://git.yoctoproject.org/linux-yocto-4.12 |
| 36 | </literallayout> | 43 | </literallayout> |
| 37 | For more information on how to set up a local Git repository of | 44 | For more information on how to set up a local Git repository of |
| 38 | the Yocto Project kernel files, see the | 45 | the Yocto Project Linux kernel files, see the |
| 39 | "<link linkend='preparing-the-build-host-to-work-on-the-kernel'>Preparing the Build Host to Work on the Kernel</link>" | 46 | "<link linkend='preparing-the-build-host-to-work-on-the-kernel'>Preparing the Build Host to Work on the Kernel</link>" |
| 40 | section. | 47 | section. |
| 41 | </para> | 48 | </para> |
| 49 | |||
| 42 | <para> | 50 | <para> |
| 43 | Once you have cloned the kernel Git repository on your local machine, you can | 51 | Once you have cloned the kernel Git repository on your local |
| 44 | switch to the <filename>meta</filename> branch within the repository. | 52 | machine, you can discover the branches that are avilable in the |
| 45 | Here is an example that assumes the local Git repository for the kernel is in | 53 | repository using the following Git command: |
| 46 | a top-level directory named <filename>linux-yocto-3.19</filename>: | ||
| 47 | <literallayout class='monospaced'> | 54 | <literallayout class='monospaced'> |
| 48 | $ cd linux-yocto-3.19 | 55 | $ git branch -a |
| 49 | $ git checkout -b meta origin/meta | ||
| 50 | </literallayout> | 56 | </literallayout> |
| 51 | Once you have checked out and switched to the <filename>meta</filename> branch, | 57 | Checking out a branch allows you to work with a particular |
| 52 | you can see a snapshot of all the kernel configuration and feature descriptions that are | 58 | Yocto Linux kernel. |
| 53 | used to build that particular kernel repository. | 59 | For example, the following command checks out the |
| 54 | These descriptions are in the form of <filename>.scc</filename> files. | 60 | <filename>standard/beagleboard</filename> branch of the |
| 61 | repository: | ||
| 62 | <literallayout class='monospaced'> | ||
| 63 | $ cd linux-yocto-4.12 | ||
| 64 | $ git checkout -b my-kernel-4.12 standard/beagleboard | ||
| 65 | </literallayout> | ||
| 66 | Once you have checked out and switched to the | ||
| 67 | <filename>standard/beagleboard</filename> branch, | ||
| 68 | you can see a snapshot of all the kernel source files used to | ||
| 69 | used to build that particular Yocto Linux kernel for that | ||
| 70 | particular board. | ||
| 71 | </para> | ||
| 72 | |||
| 73 | <para> | ||
| 74 | To see the features and configurations for a particular Yocto | ||
| 75 | Linux kernel, you need to examine the | ||
| 76 | <filename>yocto-kernel-cache</filename> Git repository. | ||
| 77 | Branches in the <filename>yocto-kernel-cache</filename> repository | ||
| 78 | correspond to Yocto Linux kernel versions (e.g. | ||
| 79 | <filename>yocto-4.12</filename>). | ||
| 80 | Branches contain descriptions in the form of | ||
| 81 | <filename>.scc</filename> and <filename>.cfg</filename> files. | ||
| 55 | </para> | 82 | </para> |
| 83 | |||
| 56 | <para> | 84 | <para> |
| 57 | You should realize, however, that browsing your local kernel repository | 85 | You should realize, however, that browsing your local |
| 58 | for feature descriptions and patches is not an effective way to determine what is in a | 86 | <filename>yocto-kernel-cache</filename> repository for feature |
| 59 | particular kernel branch. | 87 | descriptions and patches is not an effective way to determine what |
| 60 | Instead, you should use Git directly to discover the changes in a branch. | 88 | is in a particular kernel branch. |
| 61 | Using Git is an efficient and flexible way to inspect changes to the kernel. | 89 | Instead, you should use Git directly to discover the changes in |
| 90 | a branch. | ||
| 91 | Using Git is an efficient and flexible way to inspect changes to | ||
| 92 | the kernel. | ||
| 62 | <note> | 93 | <note> |
| 63 | Ground up reconstruction of the complete kernel tree is an action only taken by the | 94 | Ground up reconstruction of the complete kernel tree is an |
| 64 | Yocto Project team during an active development cycle. | 95 | action only taken by the Yocto Project team during an active |
| 65 | When you create a clone of the kernel Git repository, you are simply making it | 96 | development cycle. |
| 66 | efficiently available for building and development. | 97 | When you create a clone of the kernel Git repository, you are |
| 98 | simply making it efficiently available for building and | ||
| 99 | development. | ||
| 67 | </note> | 100 | </note> |
| 68 | </para> | 101 | </para> |
| 102 | |||
| 69 | <para> | 103 | <para> |
| 70 | The following steps describe what happens when the Yocto Project Team constructs | 104 | The following steps describe what happens when the Yocto Project |
| 71 | the Yocto Project kernel source Git repository (or tree) found at | 105 | Team constructs the Yocto Project kernel source Git repository |
| 106 | (or tree) found at | ||
| 72 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink> given the | 107 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink> given the |
| 73 | introduction of a new top-level kernel feature or BSP. | 108 | introduction of a new top-level kernel feature or BSP. |
| 74 | These are the actions that effectively create the tree | 109 | These are the actions that effectively create the tree |
| 75 | that includes the new feature, patch or BSP: | 110 | that includes the new feature, patch or BSP: |
| 76 | <orderedlist> | 111 | <orderedlist> |
| 77 | <listitem><para>A top-level kernel feature is passed to the kernel build subsystem. | 112 | <listitem><para> |
| 78 | Normally, this feature is a BSP for a particular kernel type.</para></listitem> | 113 | A top-level kernel feature is passed to the kernel build |
| 79 | <listitem><para>The file that describes the top-level feature is located by searching | 114 | subsystem. |
| 80 | these system directories: | 115 | Normally, this feature is a BSP for a particular kernel |
| 116 | type. | ||
| 117 | </para></listitem> | ||
| 118 | <listitem><para> | ||
| 119 | The file that describes the top-level feature is located | ||
| 120 | by searching these system directories: | ||
| 81 | <itemizedlist> | 121 | <itemizedlist> |
| 82 | <listitem><para>The in-tree kernel-cache directories, which are located | 122 | <listitem><para> |
| 83 | in <filename>meta/cfg/kernel-cache</filename></para></listitem> | 123 | The in-tree kernel-cache directories, which are |
| 84 | <listitem><para>Areas pointed to by <filename>SRC_URI</filename> statements | 124 | located in |
| 85 | found in recipes</para></listitem> | 125 | <filename>yocto-kernel-cache/cfg/kernel-cache</filename> |
| 126 | </para></listitem> | ||
| 127 | <listitem><para> | ||
| 128 | Areas pointed to by <filename>SRC_URI</filename> | ||
| 129 | statements found in recipes | ||
| 130 | </para></listitem> | ||
| 86 | </itemizedlist> | 131 | </itemizedlist> |
| 87 | For a typical build, the target of the search is a | 132 | For a typical build, the target of the search is a |
| 88 | feature description in an <filename>.scc</filename> file | 133 | feature description in an <filename>.scc</filename> file |
| 89 | whose name follows this format: | 134 | whose name follows this format: |
| 135 | |||
| 136 | |||
| 137 | I AM HERE | ||
| 138 | |||
| 139 | |||
| 140 | |||
| 90 | <literallayout class='monospaced'> | 141 | <literallayout class='monospaced'> |
| 91 | <replaceable>bsp_name</replaceable>-<replaceable>kernel_type</replaceable>.scc | 142 | <replaceable>bsp_name</replaceable>-<replaceable>kernel_type</replaceable>.scc |
| 92 | </literallayout> | 143 | </literallayout> |
