diff options
Diffstat (limited to 'documentation/kernel-dev/kernel-dev-advanced.xml')
-rw-r--r-- | documentation/kernel-dev/kernel-dev-advanced.xml | 87 |
1 files changed, 50 insertions, 37 deletions
diff --git a/documentation/kernel-dev/kernel-dev-advanced.xml b/documentation/kernel-dev/kernel-dev-advanced.xml index 4fdb853f92..9e15f178a6 100644 --- a/documentation/kernel-dev/kernel-dev-advanced.xml +++ b/documentation/kernel-dev/kernel-dev-advanced.xml | |||
@@ -29,8 +29,8 @@ | |||
29 | source Git repositories. | 29 | source Git repositories. |
30 | This Metadata defines Board Support Packages (BSPs) that | 30 | This Metadata defines Board Support Packages (BSPs) that |
31 | correspond to definitions in linux-yocto recipes for the same BSPs. | 31 | correspond to definitions in linux-yocto recipes for the same BSPs. |
32 | A BSP consists of an aggregation of kernel policy and hardware-specific | 32 | A BSP consists of an aggregation of kernel policy and enabled |
33 | feature enablements. | 33 | hardware-specific features. |
34 | The BSP can be influenced from within the linux-yocto recipe. | 34 | The BSP can be influenced from within the linux-yocto recipe. |
35 | <note> | 35 | <note> |
36 | Linux kernel source that contains kernel Metadata is said to be | 36 | Linux kernel source that contains kernel Metadata is said to be |
@@ -171,8 +171,8 @@ | |||
171 | <title>Kernel Metadata Location</title> | 171 | <title>Kernel Metadata Location</title> |
172 | 172 | ||
173 | <para> | 173 | <para> |
174 | Kernel Metadata can be defined in either the kernel recipe | 174 | Kernel Metadata always exists outside of the kernel tree either |
175 | (recipe-space) or in the kernel tree (in-tree). | 175 | defined in a kernel recipe (recipe-space) or outside of the recipe. |
176 | Where you choose to define the Metadata depends on what you want | 176 | Where you choose to define the Metadata depends on what you want |
177 | to do and how you intend to work. | 177 | to do and how you intend to work. |
178 | Regardless of where you define the kernel Metadata, the syntax used | 178 | Regardless of where you define the kernel Metadata, the syntax used |
@@ -195,10 +195,10 @@ | |||
195 | <para> | 195 | <para> |
196 | Conversely, if you are actively developing a kernel and are already | 196 | Conversely, if you are actively developing a kernel and are already |
197 | maintaining a Linux kernel Git repository of your own, you might find | 197 | maintaining a Linux kernel Git repository of your own, you might find |
198 | it more convenient to work with the kernel Metadata in the same | 198 | it more convenient to work with kernel Metadata kept outside the |
199 | repository as the Linux kernel sources. | 199 | recipe-space. |
200 | This method can make iterative development of the Linux kernel | 200 | Working with Metadata in this area can make iterative development of |
201 | more efficient outside of the BitBake environment. | 201 | the Linux kernel more efficient outside of the BitBake environment. |
202 | </para> | 202 | </para> |
203 | 203 | ||
204 | <section id='recipe-space-metadata'> | 204 | <section id='recipe-space-metadata'> |
@@ -249,38 +249,52 @@ | |||
249 | </para> | 249 | </para> |
250 | </section> | 250 | </section> |
251 | 251 | ||
252 | <section id='in-tree-metadata'> | 252 | <section id='metadata-outside-the-recipe-space'> |
253 | <title>In-Tree Metadata</title> | 253 | <title>Metadata Outside the Recipe-Space</title> |
254 | 254 | ||
255 | <para> | 255 | <para> |
256 | When stored in-tree, the kernel Metadata files reside in the | 256 | When stored outside of the recipe-space, the kernel Metadata |
257 | <filename>meta</filename> directory of the Linux kernel sources. | 257 | files reside in a separate repository. |
258 | The <filename>meta</filename> directory can be present in the | 258 | The OpenEmbedded build system adds the Metadata to the build as |
259 | same repository branch as the sources, | 259 | a "ktype=meta" repository through the |
260 | such as "master", or <filename>meta</filename> can be its own | 260 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink> |
261 | orphan branch. | 261 | variable. |
262 | <note> | 262 | As an example, consider the following <filename>SRC_URI</filename> |
263 | An orphan branch in Git is a branch with unique history and | 263 | statement from the <filename>linux-yocto_4.4.bb</filename> |
264 | content to the other branches in the repository. | 264 | kernel recipe: |
265 | Orphan branches are useful to track Metadata changes | 265 | <literallayout class='monospaced'> |
266 | independently from the sources of the Linux kernel, while | 266 | SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.4.git;name=machine;branch=${KBRANCH}; \ |
267 | still keeping them together in the same repository. | 267 | git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.4;destsuffix=${KMETA}" |
268 | </note> | 268 | </literallayout> |
269 | For the purposes of this document, we will discuss all | 269 | <filename>${KMETA}</filename>, in this context, is simply used to |
270 | in-tree Metadata as residing below the | 270 | name the directory into which the Git fetcher places the Metadata. |
271 | <filename>meta/cfg/kernel-cache</filename> directory. | 271 | This behavior is no different than any multi-repository |
272 | <filename>SRC_URI</filename> statement used in a recipe. | ||
272 | </para> | 273 | </para> |
273 | 274 | ||
274 | <para> | 275 | <para> |
276 | You can keep kernel Metadata in a "kernel-cache", which is a | ||
277 | directory containing configuration fragments. | ||
278 | As with any Metadata kept outside the recipe-space, you simply | ||
279 | need to use the <filename>SRC_URI</filename> statement with the | ||
280 | "type=kmeta" attribute. | ||
281 | Doing so makes the kernel Metadata available during the | ||
282 | configuration phase. | ||
283 | </para> | ||
284 | |||
285 | <!-- | ||
286 | |||
287 | |||
288 | <para> | ||
275 | Following is an example that shows how a trivial tree of Metadata | 289 | Following is an example that shows how a trivial tree of Metadata |
276 | is stored in a custom Linux kernel Git repository: | 290 | is stored in a custom Linux kernel Git repository: |
277 | <literallayout class='monospaced'> | 291 | <literallayout class='monospaced'> |
278 | meta/ | 292 | meta/ |
279 | `-- cfg | 293 | `‐‐ cfg |
280 | `-- kernel-cache | 294 | `‐‐ kernel-cache |
281 | |-- bsp-standard.scc | 295 | |‐‐ bsp-standard.scc |
282 | |-- bsp.cfg | 296 | |‐‐ bsp.cfg |
283 | `-- standard.cfg | 297 | `‐‐ standard.cfg |
284 | </literallayout> | 298 | </literallayout> |
285 | </para> | 299 | </para> |
286 | 300 | ||
@@ -301,16 +315,15 @@ | |||
301 | orphan <filename>meta</filename> branch, use these commands | 315 | orphan <filename>meta</filename> branch, use these commands |
302 | from within your Linux kernel Git repository: | 316 | from within your Linux kernel Git repository: |
303 | <literallayout class='monospaced'> | 317 | <literallayout class='monospaced'> |
304 | $ git checkout --orphan meta | 318 | $ git checkout ‐‐orphan meta |
305 | $ git rm -rf . | 319 | $ git rm -rf . |
306 | $ git commit --allow-empty -m "Create orphan meta branch" | 320 | $ git commit ‐‐allow-empty -m "Create orphan meta branch" |
307 | </literallayout> | 321 | </literallayout> |
308 | </para> | 322 | </para> |
323 | --> | ||
309 | 324 | ||
310 | <para> | 325 | <para> |
311 | If you modify the Metadata in the linux-yocto | 326 | If you modify the Metadata, you must not forget to update the |
312 | <filename>meta</filename> branch, you must not forget to update | ||
313 | the | ||
314 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink> | 327 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink> |
315 | statements in the kernel's recipe. | 328 | statements in the kernel's recipe. |
316 | In particular, you need to update the | 329 | In particular, you need to update the |
@@ -437,7 +450,7 @@ | |||
437 | if you are creating Metadata in | 450 | if you are creating Metadata in |
438 | <link linkend='recipe-space-metadata'>recipe-space</link>, | 451 | <link linkend='recipe-space-metadata'>recipe-space</link>, |
439 | or <filename>meta/cfg/kernel-cache/</filename> if you are creating | 452 | or <filename>meta/cfg/kernel-cache/</filename> if you are creating |
440 | Metadata <link linkend='in-tree-metadata'>in-tree</link>. | 453 | <link linkend='metadata-outside-the-recipe-space'>Metadata outside of the recipe-space</link>. |
441 | </para> | 454 | </para> |
442 | 455 | ||
443 | <section id='configuration'> | 456 | <section id='configuration'> |