diff options
-rw-r--r-- | documentation/dev-manual/dev-manual-model.xml | 69 | ||||
-rw-r--r-- | documentation/kernel-dev/kernel-dev-concepts-appx.xml | 207 |
2 files changed, 150 insertions, 126 deletions
diff --git a/documentation/dev-manual/dev-manual-model.xml b/documentation/dev-manual/dev-manual-model.xml index 30428b22f3..bd6a85b987 100644 --- a/documentation/dev-manual/dev-manual-model.xml +++ b/documentation/dev-manual/dev-manual-model.xml | |||
@@ -86,71 +86,6 @@ | |||
86 | <title>Kernel Overview</title> | 86 | <title>Kernel Overview</title> |
87 | 87 | ||
88 | <para> | 88 | <para> |
89 | Traditionally, when one thinks of a patched kernel, they think of a base kernel | ||
90 | source tree and a fixed structure that contains kernel patches. | ||
91 | The Yocto Project, however, employs mechanisms that, in a sense, result in a kernel source | ||
92 | generator. | ||
93 | By the end of this section, this analogy will become clearer. | ||
94 | </para> | ||
95 | |||
96 | <para> | ||
97 | You can find a web interface to the Yocto Project kernel source repositories at | ||
98 | <ulink url='&YOCTO_GIT_URL;'></ulink>. | ||
99 | If you look at the interface, you will see to the left a grouping of | ||
100 | Git repositories titled "Yocto Linux Kernel." | ||
101 | Within this group, you will find several kernels supported by | ||
102 | the Yocto Project: | ||
103 | <itemizedlist> | ||
104 | <listitem><para><emphasis> | ||
105 | <filename>linux-yocto-4.1</filename></emphasis> - The | ||
106 | stable Yocto Project kernel to use with the Yocto | ||
107 | Project Release 2.0. | ||
108 | This kernel is based on the Linux 4.1 released kernel. | ||
109 | </para></listitem> | ||
110 | <listitem><para><emphasis> | ||
111 | <filename>linux-yocto-4.4</filename></emphasis> - The | ||
112 | stable Yocto Project kernel to use with the Yocto | ||
113 | Project Release 2.1. | ||
114 | This kernel is based on the Linux 4.4 released kernel. | ||
115 | </para></listitem> | ||
116 | <listitem><para><emphasis> | ||
117 | <filename>linux-yocto-4.9</filename></emphasis> - The | ||
118 | stable Yocto Project kernel to use with the Yocto | ||
119 | Project Release 2.3. | ||
120 | This kernel is based on the Linux 4.9 released kernel. | ||
121 | </para></listitem> | ||
122 | <listitem><para><emphasis> | ||
123 | <filename>linux-yocto-4.10</filename></emphasis> - The | ||
124 | default stable Yocto Project kernel to use with the | ||
125 | Yocto Project Release 2.3. | ||
126 | This kernel is based on the Linux 4.10 released kernel. | ||
127 | </para></listitem> | ||
128 | <listitem><para><emphasis> | ||
129 | <filename>linux-yocto-dev</filename></emphasis> - A | ||
130 | development kernel based on the latest upstream release | ||
131 | candidate available. | ||
132 | </para></listitem> | ||
133 | </itemizedlist> | ||
134 | <note> | ||
135 | Long Term Support Initiative (LTSI) for Yocto Project kernels | ||
136 | is as follows: | ||
137 | <itemizedlist> | ||
138 | <listitem><para>For Yocto Project releases 1.7, 1.8, and 2.0, | ||
139 | the LTSI kernel is <filename>linux-yocto-3.14</filename>. | ||
140 | </para></listitem> | ||
141 | <listitem><para>For Yocto Project releases 2.1, 2.2, and 2.3, | ||
142 | the LTSI kernel is <filename>linux-yocto-4.1</filename>. | ||
143 | </para></listitem> | ||
144 | <listitem><para><filename>linux-yocto-4.1</filename>, | ||
145 | <filename>linux-yocto-4.4</filename>, and | ||
146 | <filename>linux-yocto-4.9</filename> are all LTS | ||
147 | kernels. | ||
148 | </para></listitem> | ||
149 | </itemizedlist> | ||
150 | </note> | ||
151 | </para> | ||
152 | |||
153 | <para> | ||
154 | The kernels are maintained using the Git revision control system | 89 | The kernels are maintained using the Git revision control system |
155 | that structures them using the familiar "tree", "branch", and "leaf" scheme. | 90 | that structures them using the familiar "tree", "branch", and "leaf" scheme. |
156 | Branches represent diversions from general code to more specific code, while leaves | 91 | Branches represent diversions from general code to more specific code, while leaves |
@@ -215,8 +150,8 @@ | |||
215 | We will just talk about working with the temporary source code. | 150 | We will just talk about working with the temporary source code. |
216 | For more information on how to get kernel source code onto your | 151 | For more information on how to get kernel source code onto your |
217 | host system, see the | 152 | host system, see the |
218 | "<link linkend='local-kernel-files'>Yocto Project Kernel</link>" | 153 | "<link linkend='local-kernel-files'>Setting Up to Work On a Kernel</link>" |
219 | bulleted item earlier in the manual. | 154 | section. |
220 | </para> | 155 | </para> |
221 | 156 | ||
222 | <para> | 157 | <para> |
diff --git a/documentation/kernel-dev/kernel-dev-concepts-appx.xml b/documentation/kernel-dev/kernel-dev-concepts-appx.xml index 8ecd04d32c..3606301cc7 100644 --- a/documentation/kernel-dev/kernel-dev-concepts-appx.xml +++ b/documentation/kernel-dev/kernel-dev-concepts-appx.xml | |||
@@ -7,80 +7,169 @@ | |||
7 | 7 | ||
8 | <section id='kernel-big-picture'> | 8 | <section id='kernel-big-picture'> |
9 | <title>Yocto Project Kernel Development and Maintenance</title> | 9 | <title>Yocto Project Kernel Development and Maintenance</title> |
10 | |||
10 | <para> | 11 | <para> |
11 | Kernels available through the Yocto Project, like other kernels, are based off the Linux | 12 | Kernels available through the Yocto Project (Linux Yocto kernels), |
12 | kernel releases from <ulink url='http://www.kernel.org'></ulink>. | 13 | like other kernels, are based off the Linux kernel releases from |
13 | At the beginning of a major development cycle, the Yocto Project team | 14 | <ulink url='http://www.kernel.org'></ulink>. |
14 | chooses its kernel based on factors such as release timing, the anticipated release | 15 | At the beginning of a major Linux kernel development cycle, the |
15 | timing of final upstream <filename>kernel.org</filename> versions, and Yocto Project | 16 | Yocto Project team chooses a Linux kernel based on factors such as |
17 | release timing, the anticipated release timing of final upstream | ||
18 | <filename>kernel.org</filename> versions, and Yocto Project | ||
16 | feature requirements. | 19 | feature requirements. |
17 | Typically, the kernel chosen is in the | 20 | Typically, the Linux kernel chosen is in the final stages of |
18 | final stages of development by the community. | 21 | development by the Linux community. |
19 | In other words, the kernel is in the release | 22 | In other words, the Linux kernel is in the release candidate |
20 | candidate or "rc" phase and not yet a final release. | 23 | or "rc" phase and has yet to reach final release. |
21 | But, by being in the final stages of external development, the team knows that the | 24 | But, by being in the final stages of external development, the |
22 | <filename>kernel.org</filename> final release will clearly be within the early stages of | 25 | team knows that the <filename>kernel.org</filename> final release |
23 | the Yocto Project development window. | 26 | will clearly be within the early stages of the Yocto Project |
27 | development window. | ||
24 | </para> | 28 | </para> |
29 | |||
30 | <para> | ||
31 | This balance allows the Yocto Project team to deliver the most | ||
32 | up-to-date Linux Yocto kernel possible, while still ensuring that | ||
33 | the team has a stable official release for the baseline Linux | ||
34 | kernel version. | ||
35 | </para> | ||
36 | |||
25 | <para> | 37 | <para> |
26 | This balance allows the team to deliver the most up-to-date kernel | 38 | As implied earlier, the ultimate source for Linux Yocto kernels |
27 | possible, while still ensuring that the team has a stable official release for | 39 | are released kernels from <filename>kernel.org</filename>. |
28 | the baseline Linux kernel version. | 40 | In addition to a foundational kernel from |
41 | <filename>kernel.org</filename>, the available Yocto Linux kernels | ||
42 | contain a mix of important new mainline developments, non-mainline | ||
43 | developments (when there is no alternative), Board Support Package | ||
44 | (BSP) developments, and custom features. | ||
45 | These additions result in a commercially released Yocto | ||
46 | Project Linux kernel that caters to specific embedded designer | ||
47 | needs for targeted hardware. | ||
29 | </para> | 48 | </para> |
49 | |||
30 | <para> | 50 | <para> |
31 | The ultimate source for kernels available through the Yocto Project are released kernels | 51 | You can find a web interface to the Yocto Linux kernels in the |
32 | from <filename>kernel.org</filename>. | 52 | <ulink url='&YOCTO_DOCS_REF_URL;#source-repositories'>Source Repositories</ulink> |
33 | In addition to a foundational kernel from <filename>kernel.org</filename>, the | 53 | at |
34 | kernels available contain a mix of important new mainline | 54 | <ulink url='&YOCTO_GIT_URL;'></ulink>. |
35 | developments, non-mainline developments (when there is no alternative), | 55 | If you look at the interface, you will see to the left a |
36 | Board Support Package (BSP) developments, | 56 | grouping of Git repositories titled "Yocto Linux Kernel". |
37 | and custom features. | 57 | Within this group, you will find several Linux Yocto kernels |
38 | These additions result in a commercially released Yocto Project Linux kernel that caters | 58 | developed and included with Yocto Project releases: |
39 | to specific embedded designer needs for targeted hardware. | 59 | <itemizedlist> |
60 | <listitem><para> | ||
61 | <emphasis><filename>linux-yocto-4.1</filename>:</emphasis> | ||
62 | The stable Yocto Project kernel to use with the Yocto | ||
63 | Project Release 2.0. | ||
64 | This kernel is based on the Linux 4.1 released kernel. | ||
65 | </para></listitem> | ||
66 | <listitem><para> | ||
67 | <emphasis><filename>linux-yocto-4.4</filename>:</emphasis> | ||
68 | The stable Yocto Project kernel to use with the Yocto | ||
69 | Project Release 2.1. | ||
70 | This kernel is based on the Linux 4.4 released kernel. | ||
71 | </para></listitem> | ||
72 | <listitem><para> | ||
73 | <emphasis><filename>linux-yocto-4.9</filename>:</emphasis> | ||
74 | The stable Yocto Project kernel to use with the Yocto | ||
75 | Project Release 2.3. | ||
76 | This kernel is based on the Linux 4.9 released kernel. | ||
77 | </para></listitem> | ||
78 | <listitem><para> | ||
79 | <emphasis><filename>linux-yocto-4.10</filename>:</emphasis> | ||
80 | The default stable Yocto Project kernel to use with the | ||
81 | Yocto Project Release 2.3. | ||
82 | This kernel is based on the Linux 4.10 released kernel. | ||
83 | </para></listitem> | ||
84 | <listitem><para> | ||
85 | <emphasis><filename>linux-yocto-dev</filename>:</emphasis> | ||
86 | A development kernel based on the latest upstream release | ||
87 | candidate available. | ||
88 | </para></listitem> | ||
89 | </itemizedlist> | ||
90 | <note><title>Notes</title> | ||
91 | Long Term Support Initiative (LTSI) for Yocto Linux | ||
92 | kernels is as follows: | ||
93 | <itemizedlist> | ||
94 | <listitem><para> | ||
95 | For Yocto Project releases 1.7, 1.8, and 2.0, | ||
96 | the LTSI kernel is | ||
97 | <filename>linux-yocto-3.14</filename>. | ||
98 | </para></listitem> | ||
99 | <listitem><para> | ||
100 | For Yocto Project releases 2.1, 2.2, and 2.3, | ||
101 | the LTSI kernel is <filename>linux-yocto-4.1</filename>. | ||
102 | </para></listitem> | ||
103 | <listitem><para> | ||
104 | <filename>linux-yocto-4.1</filename>, | ||
105 | <filename>linux-yocto-4.4</filename>, and | ||
106 | <filename>linux-yocto-4.9</filename> are all LTS | ||
107 | kernels. | ||
108 | </para></listitem> | ||
109 | </itemizedlist> | ||
110 | </note> | ||
40 | </para> | 111 | </para> |
112 | |||
41 | <para> | 113 | <para> |
42 | Once a kernel is officially released, the Yocto Project team goes into | 114 | Once a Yocto Linux kernel is officially released, the Yocto |
43 | their next development cycle, or upward revision (uprev) cycle, while still | 115 | Project team goes into their next development cycle, or upward |
44 | continuing maintenance on the released kernel. | 116 | revision (uprev) cycle, while still continuing maintenance on the |
117 | released kernel. | ||
45 | It is important to note that the most sustainable and stable way | 118 | It is important to note that the most sustainable and stable way |
46 | to include feature development upstream is through a kernel uprev process. | 119 | to include feature development upstream is through a kernel uprev |
47 | Back-porting hundreds of individual fixes and minor features from various | 120 | process. |
48 | kernel versions is not sustainable and can easily compromise quality. | 121 | Back-porting hundreds of individual fixes and minor features from |
122 | various kernel versions is not sustainable and can easily | ||
123 | compromise quality. | ||
49 | </para> | 124 | </para> |
125 | |||
50 | <para> | 126 | <para> |
51 | During the uprev cycle, the Yocto Project team uses an ongoing analysis of | 127 | During the uprev cycle, the Yocto Project team uses an ongoing |
52 | kernel development, BSP support, and release timing to select the best | 128 | analysis of Linux kernel development, BSP support, and release |
53 | possible <filename>kernel.org</filename> version. | 129 | timing to select the best possible <filename>kernel.org</filename> |
54 | The team continually monitors community kernel | 130 | Linux kernel version on which to base subsequent Yocto Linux |
55 | development to look for significant features of interest. | 131 | kernel development. |
56 | The team does consider back-porting large features if they have a significant advantage. | 132 | The team continually monitors Linux community kernel development |
57 | User or community demand can also trigger a back-port or creation of new | 133 | to look for significant features of interest. |
58 | functionality in the Yocto Project baseline kernel during the uprev cycle. | 134 | The team does consider back-porting large features if they have a |
135 | significant advantage. | ||
136 | User or community demand can also trigger a back-port or creation | ||
137 | of new functionality in the Yocto Project baseline kernel during | ||
138 | the uprev cycle. | ||
59 | </para> | 139 | </para> |
140 | |||
60 | <para> | 141 | <para> |
61 | Generally speaking, every new kernel both adds features and introduces new bugs. | 142 | Generally speaking, every new Linux kernel both adds features and |
62 | These consequences are the basic properties of upstream kernel development and are | 143 | introduces new bugs. |
63 | managed by the Yocto Project team's kernel strategy. | 144 | These consequences are the basic properties of upstream |
64 | It is the Yocto Project team's policy to not back-port minor features to the released kernel. | 145 | Linux kernel development and are managed by the Yocto Project |
65 | They only consider back-porting significant technological jumps - and, that is done | 146 | team's Linux Yocto kernel development strategy. |
66 | after a complete gap analysis. | 147 | It is the Yocto Project team's policy to not back-port minor |
67 | The reason for this policy is that back-porting any small to medium sized change | 148 | features to the released Linux Yocto kernel. |
68 | from an evolving kernel can easily create mismatches, incompatibilities and very | 149 | They only consider back-porting significant technological |
69 | subtle errors. | 150 | jumps ‐ and, that is done after a complete gap analysis. |
151 | The reason for this policy is that back-porting any small to | ||
152 | medium sized change from an evolving Linux kernel can easily | ||
153 | create mismatches, incompatibilities and very subtle errors. | ||
70 | </para> | 154 | </para> |
155 | |||
71 | <para> | 156 | <para> |
72 | These policies result in both a stable and a cutting | 157 | The policies described in this section result in both a stable |
73 | edge kernel that mixes forward ports of existing features and significant and critical | 158 | and a cutting edge Linux Yocto kernel that mixes forward ports of |
74 | new functionality. | 159 | existing Linux kernel features and significant and critical new |
75 | Forward porting functionality in the kernels available through the Yocto Project kernel | 160 | functionality. |
76 | can be thought of as a "micro uprev." | 161 | Forward porting Linux kernel functionality into the Linux Yocto |
77 | The many “micro uprevs” produce a kernel version with a mix of | 162 | kernels available through the Yocto Project can be thought of as |
78 | important new mainline, non-mainline, BSP developments and feature integrations. | 163 | a "micro uprev." |
79 | This kernel gives insight into new features and allows focused | 164 | The many “micro uprevs” produce a Linux Yocto kernel version with |
80 | amounts of testing to be done on the kernel, which prevents | 165 | a mix of important new mainline, non-mainline, BSP developments |
81 | surprises when selecting the next major uprev. | 166 | and feature integrations. |
82 | The quality of these cutting edge kernels is evolving and the kernels are used in leading edge | 167 | This Yocto Linux kernel gives insight into new features and |
83 | feature and BSP development. | 168 | allows focused amounts of testing to be done on the kernel, |
169 | which prevents surprises when selecting the next major uprev. | ||
170 | The quality of these cutting edge Linux Yocto kernels is evolving | ||
171 | and the kernels are used in leading edge feature and BSP | ||
172 | development. | ||
84 | </para> | 173 | </para> |
85 | </section> | 174 | </section> |
86 | 175 | ||