diff options
author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2011-08-10 16:27:45 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-08-15 15:27:02 +0100 |
commit | fe76c380ccafcdf95bc5f859cc26bd5b5788445f (patch) | |
tree | 15922e05f19cfd3df213ce505fc77ee7c577a0b3 /documentation | |
parent | 53a901e92e39af43686919e8566f789a4502d220 (diff) | |
download | poky-fe76c380ccafcdf95bc5f859cc26bd5b5788445f.tar.gz |
documentation/dev-manual/dev-manual-model.xml: re-write of the kernel dev overview
After getting the example in kenerl example appendix working I discovered
much that was wrong in this overview. The overview attempts to generalize
all the situations for kernel modification. These include code changes,
configuration changes, and the addition of new recipes. It also includes
the situation where a developer wants to gather all the changes into a
separate layer for distribution and for when they want to push them up
the tree.
(From yocto-docs rev: 5498d7b38d3a2f14befa82b66af9919a449e0f04)
Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation')
-rw-r--r-- | documentation/dev-manual/dev-manual-model.xml | 85 |
1 files changed, 48 insertions, 37 deletions
diff --git a/documentation/dev-manual/dev-manual-model.xml b/documentation/dev-manual/dev-manual-model.xml index fbdc2f0321..9607ab870b 100644 --- a/documentation/dev-manual/dev-manual-model.xml +++ b/documentation/dev-manual/dev-manual-model.xml | |||
@@ -299,50 +299,57 @@ | |||
299 | <link linkend='local-yp-release'>Yocto Project Release</link> in | 299 | <link linkend='local-yp-release'>Yocto Project Release</link> in |
300 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual. | 300 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual. |
301 | </para></listitem> | 301 | </para></listitem> |
302 | <listitem><para><emphasis>Establish a local copy of the Linux Yocto kernel files on your | 302 | <listitem><para><emphasis>Setting up the <filename>poky-extras</filename> Git |
303 | system</emphasis>: In order to make modifications to the kernel you need a base | 303 | repository</emphasis>: This repository is the area for your configuration |
304 | kernel with which to work. | 304 | fragments, new kernel recipes, and the kernel <filename>.bbappend</filename> |
305 | You can set up a local Git repository of the kernel on which you are basing your | 305 | file used during the build. |
306 | modifications. | 306 | It is good practice to set this repository up inside the local Yocto |
307 | Project files Git repository. | ||
307 | For information on how to get these files, see the bulleted item | 308 | For information on how to get these files, see the bulleted item |
309 | <link linkend='poky-extras-repo'>The | ||
310 | <filename>poky-extras</filename> Git Repository</link> in | ||
311 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual. | ||
312 | </para></listitem> | ||
313 | <listitem><para><emphasis>Establish a local copy of the Linux Yocto kernel files on your | ||
314 | system</emphasis>: In order to make modifications to the kernel you need two things: | ||
315 | a bare clone of the Linux Yocto kernel you are modifying and a copy of that | ||
316 | bare clone. | ||
317 | The bare clone is required by the build process and is the area to which you | ||
318 | push your kernel source changes. | ||
319 | The copy of the bare clone is a local Git repository that contains all the kernel's | ||
320 | source files. | ||
321 | You make your changes to the files in this copy of the bare clone. | ||
322 | For information on how to set these two items up, see the bulleted item | ||
308 | <link linkend='local-kernel-files'>Linux Yocto Kernel</link> in | 323 | <link linkend='local-kernel-files'>Linux Yocto Kernel</link> in |
309 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual. | 324 | <xref linkend='getting-setup'>Getting Setup</xref> earlier in this manual. |
310 | </para></listitem> | 325 | </para></listitem> |
311 | <listitem><para><emphasis>Establish a local kernel layer by copying the | 326 | <listitem><para><emphasis>Make changes to the kernel source code if |
312 | <filename>meta-skeleton</filename> layer</emphasis>: When you set up a kernel layer | 327 | applicable</emphasis>: Modifying the kernel does not always mean directly |
313 | for your changes you should follow a standard layout. | 328 | changing source files. |
314 | For kernel layers you can start with <filename>meta-skeleton</filename>, which | 329 | However, if you have to do this then you make the changes in the local |
315 | is a minimal, base kernel layer in the local Yocto Project files. | 330 | Git repository you set up to hold the source files (i.e. the copy of the |
316 | You can examine <filename>meta-skeleton</filename> | 331 | bare clone). |
317 | in the <filename>poky</filename> Git repository.</para> | 332 | Once the changes are made you need to use Git commands to commit the changes |
318 | <para>A layer is really just a location or area in which you place configuration | 333 | and then push them to the bare clone.</para></listitem> |
319 | fragments and recipes that modify your kernel. | ||
320 | The layer, in this case, would be where all the recipes that define those dependencies | ||
321 | are kept. | ||
322 | The key point for a layer is that it is an isolated area that contains | ||
323 | all the relevant information for the project that the Yocto Project build | ||
324 | system knows about.</para> | ||
325 | <para></para></listitem> | ||
326 | <listitem><para><emphasis>Prepare to use the <filename>menuconfig</filename> tool</emphasis>: | ||
327 | The tool <filename>menuconfig</filename> used within Bitbake provides an | ||
328 | interactive method with which you can configure the kernel. | ||
329 | In order to use <filename>menuconfig</filename> you need to first source an environment | ||
330 | setup script found in the local <filename>poky</filename> Git repository. | ||
331 | The script is named <filename>oe-init-build-env</filename>.</para></listitem> | ||
332 | <listitem><para><emphasis>Make kernel configuration changes | 334 | <listitem><para><emphasis>Make kernel configuration changes |
333 | to your local kernel layer</emphasis>: Use <filename>menuconfig</filename> | 335 | to your local kernel layer if applicable</emphasis>: |
334 | to enable and disable the configurations to the Linux Yocto kernel. | 336 | If your situation calls for changing the kernel's configuration you can |
337 | use <filename>menuconfig</filename> | ||
338 | to enable and disable kernel configurations. | ||
335 | Using <filename>menuconfig</filename> allows you to develop and test the | 339 | Using <filename>menuconfig</filename> allows you to develop and test the |
336 | configuration changes you are making to the kernel.</para></listitem> | 340 | configuration changes you are making to the kernel.</para></listitem> |
337 | <listitem><para><emphasis>Make kernel recipe changes to your new kernel | 341 | <listitem><para><emphasis>Add new kernel recipes</emphasis>: The standard |
338 | layer</emphasis>: The standard layer structure organizes recipe files you | 342 | layer structure organizes recipe files inside the |
339 | need to edit in several <filename>recipes-*</filename> directories within the | 343 | <filename>meta-kernel-dev</filename> layer that is within the |
340 | kernel layer. | 344 | <filename>poky-extras</filename> Git repository. |
341 | Recipe changes include altering recipes (<filename>.bb</filename> files), removing | 345 | If you need to add new kernel recipes you add them within this layer. |
342 | recipes you don't use, and adding new recipes that you need to support your hardware. | 346 | Also within this area you will find the <filename>.bbappend</filename> |
347 | file that appends information to the kernel's recipe file used during the | ||
348 | build. | ||
343 | </para></listitem> | 349 | </para></listitem> |
344 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the | 350 | <listitem><para><emphasis>Prepare for the build</emphasis>: Once you have made all the |
345 | changes to your kernel layer there remains a few things | 351 | changes to your kernel (configurations, source code changes, recipe additions, |
352 | or recipe changes) there remains a few things | ||
346 | you need to do for the Yocto Project build system in order for it to create your image. | 353 | you need to do for the Yocto Project build system in order for it to create your image. |
347 | If you have not done so you need to get the build environment ready by sourcing | 354 | If you have not done so you need to get the build environment ready by sourcing |
348 | the environment setup script described earlier. | 355 | the environment setup script described earlier. |
@@ -350,7 +357,9 @@ | |||
350 | <para>The entire process for building an image is overviewed in the | 357 | <para>The entire process for building an image is overviewed in the |
351 | <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#building-image'> | 358 | <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#building-image'> |
352 | Building an Image</ulink> section of the Yocto Project Quick Start. | 359 | Building an Image</ulink> section of the Yocto Project Quick Start. |
353 | You might want to reference this information.</para></listitem> | 360 | You might want to reference this information. |
361 | Also, you should look at the detailed examples found in the appendices at | ||
362 | end of this manual.</para></listitem> | ||
354 | <listitem><para><emphasis>Build the image</emphasis>: The Yocto Project uses the BitBake | 363 | <listitem><para><emphasis>Build the image</emphasis>: The Yocto Project uses the BitBake |
355 | tool to build images based on the type of image you want to create. | 364 | tool to build images based on the type of image you want to create. |
356 | You can find more information on BitBake | 365 | You can find more information on BitBake |
@@ -366,7 +375,9 @@ | |||
366 | in the kernel layer</emphasis>: Up to this point all the configuration changes to the | 375 | in the kernel layer</emphasis>: Up to this point all the configuration changes to the |
367 | kernel have been done and tested iteratively. | 376 | kernel have been done and tested iteratively. |
368 | Once they are tested and ready to go you can move them into the kernel layer, | 377 | Once they are tested and ready to go you can move them into the kernel layer, |
369 | which allows you to distribute the layer.</para></listitem> | 378 | which allows you to distribute the layer. |
379 | [WRITER'S NOTE: Not sure if the layer is meta-kernel-dev or if it would be | ||
380 | a new layer copied from the work done there.]</para></listitem> | ||
370 | <listitem><para><emphasis>Push your configuration and recipe changes upstream to the | 381 | <listitem><para><emphasis>Push your configuration and recipe changes upstream to the |
371 | linux Yocto Git repository (in-tree changes)</emphasis>: If the changes you made | 382 | linux Yocto Git repository (in-tree changes)</emphasis>: If the changes you made |
372 | are suited for all Linux Yocto users you might want to push the changes up into | 383 | are suited for all Linux Yocto users you might want to push the changes up into |