kernel-dev-intro.xml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
  2. "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
  3. [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
  4. <chapter id='kernel-dev-intro'>
  5. <title>Introduction</title>
  6. <!--
  7. <para>
  8. <emphasis>AR - Darrren Hart:</emphasis> See if the concepts in these
  9. three bullets are adequately covered in somewhere in this manual:
  10. <itemizedlist>
  11. <listitem><para>Do we convey that our kernel Git repositories
  12. have a clear and continuous history, similar to the way the
  13. kernel Git repositories for <filename>kernel.org</filename>
  14. do.
  15. </para></listitem>
  16. <listitem><para>Does the manual note that Yocto Project delivers
  17. a key set of supported kernel types, where
  18. each type is tailored to meet a specific use (e.g. networking,
  19. consumer, devices, and so forth).</para></listitem>
  20. <listitem><para>Do we convey that the Yocto Project uses a
  21. Git branching strategy that, from a
  22. developer's point of view, results in a linear path from the
  23. baseline kernel.org, through a select group of features and
  24. ends with their BSP-specific commits.</para></listitem>
  25. </itemizedlist>
  26. </para>
  27. -->
  28. <section id='kernel-dev-overview'>
  29. <title>Overview</title>
  30. <para>
  31. Regardless of how you intend to make use of the Yocto Project,
  32. chances are you will work with the Linux kernel.
  33. This manual provides background information on the Yocto Linux kernel
  34. <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>,
  35. describes common tasks you can perform using the kernel tools,
  36. and shows you how to use the kernel Metadata needed to work with
  37. the kernel inside the Yocto Project.
  38. </para>
  39. <para>
  40. Each Yocto Project release has a set of linux-yocto recipes, whose
  41. Git repositories you can view in the Yocto
  42. <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink> under
  43. the "Yocto Linux Kernel" heading.
  44. New recipes for the release track the latest upstream developments
  45. and introduce newly supported platforms.
  46. Previous recipes in the release are refreshed and supported for at
  47. least one additional release.
  48. As they align, these previous releases are updated to include the
  49. latest from the Long Term Support Initiative (LTSI) project.
  50. Also included is a linux-yocto development recipe
  51. (<filename>linux-yocto-dev.bb</filename>) should you want to work
  52. with the very latest in upstream Linux kernel development and
  53. kernel Metadata development.
  54. </para>
  55. <para>
  56. The Yocto Project also provides a powerful set of kernel
  57. tools for managing Linux kernel sources and configuration data.
  58. You can use these tools to make a single configuration change,
  59. apply multiple patches, or work with your own kernel sources.
  60. </para>
  61. <para>
  62. In particular, the kernel tools allow you to generate configuration
  63. fragments that specify only what you must, and nothing more.
  64. Configuration fragments only need to contain the highest level
  65. visible <filename>CONFIG</filename> options as presented by the Linux
  66. kernel <filename>menuconfig</filename> system.
  67. Contrast this against a complete Linux kernel
  68. <filename>.config</filename>, which includes all the automatically
  69. selected <filename>CONFIG</filename> options.
  70. This efficiency reduces your maintenance effort and allows you
  71. to further separate your configuration in ways that make sense for
  72. your project.
  73. A common split separates policy and hardware.
  74. For example, all your kernels might support
  75. the <filename>proc</filename> and <filename>sys</filename> filesystems,
  76. but only specific boards require sound, USB, or specific drivers.
  77. Specifying these configurations individually allows you to aggregate
  78. them together as needed, but maintains them in only one place.
  79. Similar logic applies to separating source changes.
  80. </para>
  81. <para>
  82. If you do not maintain your own kernel sources and need to make
  83. only minimal changes to the sources, the released recipes provide a
  84. vetted base upon which to layer your changes.
  85. Doing so allows you to benefit from the continual kernel
  86. integration and testing performed during development of the
  87. Yocto Project.
  88. </para>
  89. <para>
  90. If, instead, you have a very specific Linux kernel source tree
  91. and are unable to align with one of the official linux-yocto
  92. recipes, an alternative exists by which you can use the Yocto
  93. Project Linux kernel tools with your own kernel sources.
  94. </para>
  95. </section>
  96. <section id='kernel-dev-other-resources'>
  97. <title>Other Resources</title>
  98. <para>
  99. The sections that follow provide instructions for completing
  100. specific Linux kernel development tasks.
  101. These instructions assume you are comfortable working with
  102. <ulink url='http://developer.berlios.de/projects/bitbake/'>BitBake</ulink>
  103. recipes and basic open-source development tools.
  104. Understanding these concepts will facilitate the process of working
  105. with the kernel recipes.
  106. If you find you need some additional background, please be sure to
  107. review and understand the following documentation:
  108. <itemizedlist>
  109. <listitem><para><ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>
  110. </para></listitem>
  111. <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#modifying-temporary-source-code'>Modifying Temporary Source Code</ulink>"
  112. section in the Yocto Project Development Manual
  113. </para></listitem>
  114. <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>" section
  115. in the Yocto Project Development Manual</para></listitem>
  116. <listitem><para>The "<ulink url='&YOCTO_DOCS_DEV_URL;#modifying-the-kernel'>Modifying the Kernel</ulink>" section
  117. in the Yocto Project Development Manual.</para></listitem>
  118. </itemizedlist>
  119. </para>
  120. <para>
  121. Finally, while this document focuses on the manual creation of
  122. recipes, patches, and configuration files, the Yocto Project
  123. Board Support Package (BSP) tools are available to automate
  124. this process with existing content and work well to create the
  125. initial framework and boilerplate code.
  126. For details on these tools, see the
  127. "<ulink url='&YOCTO_DOCS_BSP_URL;#using-the-yocto-projects-bsp-tools'>Using the Yocto Project's BSP Tools</ulink>"
  128. section in the Yocto Project Board Support Package (BSP) Developer's
  129. Guide.
  130. </para>
  131. </section>
  132. </chapter>
  133. <!--
  134. vim: expandtab tw=80 ts=4
  135. -->