summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2012-02-14 10:12:32 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-03-08 12:07:56 -0800
commitea70ac509bd898171d85ca6f3b2e7b033e528a68 (patch)
tree7b559601f24a87767bc730583804679215e107ff
parentd8b27b6662139911ca917a86f04f798c6eab69c9 (diff)
downloadast2050-yocto-poky-ea70ac509bd898171d85ca6f3b2e7b033e528a68.zip
ast2050-yocto-poky-ea70ac509bd898171d85ca6f3b2e7b033e528a68.tar.gz
documentation/dev-manual/dev-manual-common-tasks.xml: new section
Created a new section called "Configuring the Kernel." This is the how-to counterpart for the concepts part created in the kernel manual. The section consists of three sub-sections: "Using menuconfig", "Creating Config Fragments", and "Fine-tuning the Kernel Configuration File." Primary source for information on this section was Bruce Ashfield. He has this section for review. (From yocto-docs rev: 3ac718bc69b4914c41a0bb94134c085964ee71a7) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--documentation/dev-manual/dev-manual-common-tasks.xml165
1 files changed, 165 insertions, 0 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml
index d37f94e..db6c29f 100644
--- a/documentation/dev-manual/dev-manual-common-tasks.xml
+++ b/documentation/dev-manual/dev-manual-common-tasks.xml
@@ -1036,6 +1036,171 @@ so that there are some definite steps on how to do this. I need more detail her
</section>
</section>
+ <section id='configuring-the-kernel'>
+ <title>Configuring the Kernel</title>
+
+ <para>
+ Configuring the Linux Yocto kernel consists of making sure the <filename>.config</filename>
+ file has all the right information in it for the image you are building.
+ You can use the <filename>menuconfig</filename> tool and configuration fragments to
+ make sure your <filename>.config</filename> file is just how you need it.
+ This section describes how to use <filename>menuconfig</filename>, create and use
+ configuration fragments, and how to interatively tweak your <filename>.config</filename>
+ file to create the leanest kernel configuration file possible.
+ </para>
+
+ <para>
+ For concepts on kernel configuration, see the
+ "<ulink url='http://www.yoctoproject.org/docs/latest/kernel-manual/kernel-manual.html#kernel-configuration'>Kernel Configuration</ulink>"
+ section in the Yocto Project Kernel Architecture and Use Manual.
+ </para>
+
+ <section id='using-menuconfig'>
+ <title>Using&nbsp;&nbsp;<filename>menuconfig</filename></title>
+
+ <para>
+ The easiest way to define kernel configurations is to set them through the
+ <filename>menuconfig</filename> tool.
+ For general information on <filename>menuconfig</filename>, see
+ <ulink url='http://en.wikipedia.org/wiki/Menuconfig'></ulink>.
+ </para>
+
+ <para>
+ To use the <filename>menuconfig</filename> tool in the Yocto Project development
+ environment, you must build the tool using BitBake.
+ The following commands build and invoke <filename>menuconfig</filename> assuming the
+ Yocto Project files top-level directory is <filename>~/poky</filename>:
+ <literallayout class='monospaced'>
+ $ cd ~/poky
+ $ source oe-init-build-env
+ $ bitbake linux-yocto -c menuconfig
+ </literallayout>
+ Once <filename>menuconfig</filename> comes up, its standard interface allows you to
+ examine and configure all the kernel configuration parameters.
+ Once you have made your changes, simply exit the tool and save your changes to
+ create an updated version of the <filename>.config</filename> configuration file.
+ </para>
+
+ <para>
+ For an example that shows how to change the <filename>SMP_CONFIG</filename> parameter
+ using <filename>menuconfig</filename>, see the
+ "<link linkend='changing-the-config-smp-configuration-using-menuconfig'>Changing
+ the <filename>CONFIG_SMP</filename> Configuration Using <filename>menuconfig</filename></link>"
+ section.
+ </para>
+ </section>
+
+ <section id='creating-config-fragments'>
+ <title>Creating Config Fragments</title>
+
+ <para>
+ Configuration fragments are simply kernel options that appear in a file.
+ Syntactically, the configuration statement is identical to what would appear
+ in the <filename>.config</filename>.
+ For example, issuing the following from the shell would create a config fragment
+ file named <filename>my_smp.cfg</filename> that enables multi-processor support
+ within the kernel:
+ <literallayout class='monospaced'>
+ $ echo "CONFIG_SMP=y" >> my_smp.cfg
+ </literallayout>
+ </para>
+
+ <para>
+ Where do you put your configuration files?
+ You can place these configuration files in the same area to which the
+ <filename>SRC_URI</filename> points.
+ The Yocto Project build process will pick up the configuration and add it to the
+ kernel's configuration.
+ For example, assume you add the following to your
+ <filename>linux-yocto_3.0.bbappend</filename> file:
+ <literallayout class='monospaced'>
+ file://my_smp.cfg
+ </literallayout>
+ You would put the config fragment file <filename>my_smp.cfg</filename> in your
+ layer right beneath the directory containing the
+ <filename>linux-yocto_3.0.bbappend</filename> file and the build system
+ will pick up and apply the fragment.
+ </para>
+ </section>
+
+ <section id='fine-tuning-the-kernel-configuration-file'>
+ <title>Fine-tuning the Kernel Configuration File</title>
+
+ <para>
+ You can make sure the <filename>.config</filename> is as lean or efficient as
+ possible by reading the output of the kernel configuration fragment audit,
+ noting any issues, making changes to correct the issues, and then repeating.
+ </para>
+
+ <para>
+ As part of the Linux Yocto kernel build process, the
+ <filename>kernel_configcheck</filename> task runs.
+ This task validates the kernel configuration by checking the final
+ <filename>.config</filename> file against the input files.
+ During the check, the task produces warning messages for the following
+ issues:
+ <itemizedlist>
+ <listitem><para>Requested options that did not make the final
+ <filename>.config</filename> file.</para></listitem>
+ <listitem><para>Configuration items that appear twice in the same
+ configuration fragment.</para></listitem>
+ <listitem><para>Configuration items tagged as 'required' were overridden.
+ </para></listitem>
+ <listitem><para>A board overrides a non-board specific option.</para></listitem>
+ <listitem><para>Listed options not valid for the kernel being processed.
+ In other words, the option does not appear anywhere.</para></listitem>
+ </itemizedlist>
+ <note>
+ The <filename>kernel_configcheck</filename> task can also optionally report
+ if an option is overridden during processing.
+ </note>
+ </para>
+
+ <para>
+ For each output warning, a message points to the file
+ that contains a list of the options and a pointer to the config
+ fragment that defines them.
+ Collectively, the files are the key to streamlining the configiguration.
+ </para>
+
+ <para>
+ To streamline the configuration, do the following:
+ <orderedlist>
+ <listitem><para>Start with a full configuration that you know
+ works - it builds and boots successfully.
+ This configuration file will be your baseline.</para></listitem>
+ <listitem><para>Separately run the <filename>configme</filename> and
+ <filename>kernel_configcheck</filename> tasks.</para></listitem>
+ <listitem><para>Take the resulting list of files from the
+ <filename>kernel_configcheck</filename> task warnings and do the following:
+ <itemizedlist>
+ <listitem><para>Drop values that are redefined in the fragment but do not
+ change the final <filename>.config</filename> file.</para></listitem>
+ <listitem><para>Analyze and potentially drop values from the
+ <filename>.config</filename> file that override required
+ configurations.</para></listitem>
+ <listitem><para>Analyze and potentially remove non-board specific options.
+ </para></listitem>
+ <listitem><para>Remove repeated and invalid options.</para></listitem>
+ </itemizedlist></para></listitem>
+ <listitem><para>After you have worked through the output of the kernel configuration
+ audit, you can re-run the <filename>configme</filename>
+ and <filename>kernel_configcheck</filename> tasks to see the results of your
+ changes.
+ If you have more issues, you can deal with them as described in the
+ previous step.</para></listitem>
+ </orderedlist>
+ </para>
+
+ <para>
+ Iteratively working through steps two through four eventually yields
+ a minimal, streamlined configuration file.
+ Once you have the best <filename>.config</filename>, you can build the Linux
+ Yocto kernel.
+ </para>
+ </section>
+ </section>
+
<section id="usingpoky-configuring-DISTRO_PN_ALIAS">
<title>Handling a Package Name Alias</title>
<para>
OpenPOWER on IntegriCloud