summaryrefslogtreecommitdiffstats
path: root/documentation
diff options
context:
space:
mode:
authorScott Rifenbark <srifenbark@gmail.com>2017-09-22 12:18:18 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-09-26 11:18:59 +0100
commitde671802c8de9311cc292456d69cafb7be128b0b (patch)
tree99272375914e3bf041f044803d0a24d83b6d7624 /documentation
parentc1d3dbb5bdbea42c3f4b4706872bd2444e850c7c (diff)
downloadpoky-de671802c8de9311cc292456d69cafb7be128b0b.tar.gz
dev-manual: Compatibility program and moving kernel configuration
Should have been two commits but I forgot to do them separately. 1. I updated the YP Compatible Program section. 2. I moved the "Configuring the Kernel" section from the dev-manual to the kernel-dev manual. (From yocto-docs rev: cdb5bbc917db55a2ca987ce9b9ed371f9fca6524) Signed-off-by: Scott Rifenbark <srifenbark@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation')
-rw-r--r--documentation/dev-manual/dev-manual-common-tasks.xml591
-rw-r--r--documentation/kernel-dev/kernel-dev-advanced.xml6
-rw-r--r--documentation/kernel-dev/kernel-dev-common.xml528
-rw-r--r--documentation/kernel-dev/kernel-dev-intro.xml2
-rw-r--r--documentation/ref-manual/ref-tasks.xml8
5 files changed, 592 insertions, 543 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml
index 0c2e60f006..f82d37e1dc 100644
--- a/documentation/dev-manual/dev-manual-common-tasks.xml
+++ b/documentation/dev-manual/dev-manual-common-tasks.xml
@@ -442,54 +442,65 @@
442 existing Yocto Project layers (i.e. the layer is compatible 442 existing Yocto Project layers (i.e. the layer is compatible
443 with the Yocto Project). 443 with the Yocto Project).
444 Ensuring compatibility makes the layer easy to be consumed 444 Ensuring compatibility makes the layer easy to be consumed
445 by others in the Yocto Project community and allows you 445 by others in the Yocto Project community and could allow you
446 permission to use the Yocto Project Compatibility logo. 446 permission to use the Yocto Project Compatibility Logo.
447 </para> 447 <note>
448 448 Only Yocto Project member organizations are permitted to
449 <para> 449 use the Yocto Project Compatibility Logo.
450 Version 1.0 of the Yocto Project Compatibility Program has 450 The logo is not available for general use.
451 been in existence for a number of releases. 451 For information on how to become a Yocto Project member
452 This version of the program consists of the layer application 452 organization, see the
453 process that requests permission to use the Yocto Project 453 <ulink url='&YOCTO_HOME_URL;/ecosystem/member-organizations'>Member Organizations</ulink>
454 Compatibility logo for your layer and application. 454 page of the Yocto Project website.
455 You can find version 1.0 of the form at 455 </note>
456 <ulink url='https://www.yoctoproject.org/webform/yocto-project-compatible-registration'></ulink>.
457 To be granted permission to use the logo, you need to be able
458 to answer "Yes" to the questions or have an acceptable
459 explanation for any questions answered "No".
460 </para> 456 </para>
461 457
462 <para> 458 <para>
463 A second version (2.0) of the Yocto Project Compatibility 459 The Yocto Project Compatibility Program consists of a layer
464 Program is currently under development. 460 application process that requests permission to use the Yocto
465 Included as part of version 2.0 (and currently available) is 461 Project Compatibility Logo for your layer and application.
466 the <filename>yocto-compat-layer.py</filename> script. 462 The process consists of two parts:
467 When run against a layer, this script tests the layer against 463 <orderedlist>
468 tighter constraints based on experiences of how layers have 464 <listitem><para>
469 worked in the real world and where pitfalls have been found. 465 Successfully passing a script
466 (<filename>yocto-compat-layer.py</filename>) that
467 when run against your layer, tests it against
468 constraints based on experiences of how layers have
469 worked in the real world and where pitfalls have been
470 found.
471 Getting a "PASS" result from the script is required for
472 successful compatibility registration.
473 </para></listitem>
474 <listitem><para>
475 Completion of an application acceptance form, which
476 you can find at
477 <ulink url='https://www.yoctoproject.org/webform/yocto-project-compatible-registration'></ulink>.
478 </para></listitem>
479 </orderedlist>
470 </para> 480 </para>
471 481
472 <para> 482 <para>
473 Part of the 2.0 version of the program that is not currently 483 To be granted permission to use the logo, you need to satisfy
474 available but is in development is an updated compatibility 484 the following:
475 application form. 485 <itemizedlist>
476 This updated form, among other questions, specifically 486 <listitem><para>
477 asks if your layer has passed the test using the 487 Be able to check the box indicating that you
478 <filename>yocto-compat-layer.py</filename> script. 488 got a "PASS" when running the script against your
479 <note><title>Tip</title> 489 layer.
480 Even though the updated application form is currently 490 </para></listitem>
481 unavailable for version 2.0 of the Yocto Project 491 <listitem><para>
482 Compatibility Program, the 492 Answer "Yes" to the questions on the form or have an
483 <filename>yocto-compat-layer.py</filename> script is 493 acceptable explanation for any questions answered "No".
484 available in OE-Core. 494 </para></listitem>
485 You can use the script to assess the status of your 495 <listitem><para>
486 layers in advance of the 2.0 release of the program. 496 You need to be a Yocto Project Member Organization.
487 </note> 497 </para></listitem>
498 </itemizedlist>
488 </para> 499 </para>
489 500
490 <para> 501 <para>
491 The remainder of this section presents information on the 502 The remainder of this section presents information on the
492 version 1.0 registration form and on the 503 registration form and on the
493 <filename>yocto-compat-layer.py</filename> script. 504 <filename>yocto-compat-layer.py</filename> script.
494 </para> 505 </para>
495 506
@@ -497,10 +508,10 @@
497 <title>Yocto Project Compatibility Program Application</title> 508 <title>Yocto Project Compatibility Program Application</title>
498 509
499 <para> 510 <para>
500 Use the 1.0 version of the form to apply for your 511 Use the form to apply for your layer's compatibility
501 layer's compatibility approval. 512 approval.
502 Upon successful application, you can use the Yocto 513 Upon successful application, you can use the Yocto
503 Project Compatibility logo with your layer and the 514 Project Compatibility Logo with your layer and the
504 application that uses your layer. 515 application that uses your layer.
505 </para> 516 </para>
506 517
@@ -542,22 +553,14 @@
542 <title><filename>yocto-compat-layer.py</filename> Script</title> 553 <title><filename>yocto-compat-layer.py</filename> Script</title>
543 554
544 <para> 555 <para>
545 The <filename>yocto-compat-layer.py</filename> script, 556 The <filename>yocto-compat-layer.py</filename> script
546 which is currently available, provides you a way to 557 provides you a way to assess how compatible your layer is
547 assess how compatible your layer is with the Yocto 558 with the Yocto Project.
548 Project.
549 You should run this script prior to using the form to 559 You should run this script prior to using the form to
550 apply for compatibility as described in the previous 560 apply for compatibility as described in the previous
551 section. 561 section.
552 <note> 562 You need to achieve a "PASS" result in order to have
553 Because the script is part of the 2.0 release of the 563 your application form successfully processed.
554 Yocto Project Compatibility Program, you are not
555 required to successfully run your layer against it
556 in order to be granted compatibility status.
557 However, it is a good idea as it promotes
558 well-behaved layers and gives you an idea of where your
559 layer stands regarding compatibility.
560 </note>
561 </para> 564 </para>
562 565
563 <para> 566 <para>
@@ -6142,479 +6145,6 @@ Some notes from Cal:
6142 </para> 6145 </para>
6143 </section> 6146 </section>
6144 6147
6145 <section id='configuring-the-kernel'>
6146 <title>Configuring the Kernel</title>
6147
6148 <para>
6149 Configuring the Yocto Project kernel consists of making sure the
6150 <filename>.config</filename> file has all the right information
6151 in it for the image you are building.
6152 You can use the <filename>menuconfig</filename> tool and
6153 configuration fragments to make sure your
6154 <filename>.config</filename> file is just how you need it.
6155 You can also save known configurations in a
6156 <filename>defconfig</filename> file that the build system can use
6157 for kernel configuration.
6158 </para>
6159
6160 <para>
6161 This section describes how to use <filename>menuconfig</filename>,
6162 create and use configuration fragments, and how to interactively
6163 modify your <filename>.config</filename> file to create the
6164 leanest kernel configuration file possible.
6165 </para>
6166
6167 <para>
6168 For more information on kernel configuration, see the
6169 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#changing-the-configuration'>Changing the Configuration</ulink>"
6170 section in the Yocto Project Linux Kernel Development Manual.
6171 </para>
6172
6173 <section id='using-menuconfig'>
6174 <title>Using&nbsp;&nbsp;<filename>menuconfig</filename></title>
6175
6176 <para>
6177 The easiest way to define kernel configurations is to set them through the
6178 <filename>menuconfig</filename> tool.
6179 This tool provides an interactive method with which
6180 to set kernel configurations.
6181 For general information on <filename>menuconfig</filename>, see
6182 <ulink url='http://en.wikipedia.org/wiki/Menuconfig'></ulink>.
6183 </para>
6184
6185 <para>
6186 To use the <filename>menuconfig</filename> tool in the Yocto Project development
6187 environment, you must launch it using BitBake.
6188 Thus, the environment must be set up using the
6189 <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
6190 script found in the
6191 <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
6192 You must also be sure of the state of your build in the
6193 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
6194 The following commands run <filename>menuconfig</filename>
6195 assuming the Source Directory's top-level folder is
6196 <filename>~/poky</filename>:
6197 <literallayout class='monospaced'>
6198 $ cd poky
6199 $ source oe-init-build-env
6200 $ bitbake linux-yocto -c kernel_configme -f
6201 $ bitbake linux-yocto -c menuconfig
6202 </literallayout>
6203 Once <filename>menuconfig</filename> comes up, its standard
6204 interface allows you to interactively examine and configure
6205 all the kernel configuration parameters.
6206 After making your changes, simply exit the tool and save your
6207 changes to create an updated version of the
6208 <filename>.config</filename> configuration file.
6209 </para>
6210
6211 <para>
6212 Consider an example that configures the <filename>linux-yocto-3.14</filename>
6213 kernel.
6214 The OpenEmbedded build system recognizes this kernel as
6215 <filename>linux-yocto</filename>.
6216 Thus, the following commands from the shell in which you previously sourced the
6217 environment initialization script cleans the shared state cache and the
6218 <ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>
6219 directory and then runs <filename>menuconfig</filename>:
6220 <literallayout class='monospaced'>
6221 $ bitbake linux-yocto -c menuconfig
6222 </literallayout>
6223 </para>
6224
6225 <para>
6226 Once <filename>menuconfig</filename> launches, use the interface
6227 to navigate through the selections to find the configuration settings in
6228 which you are interested.
6229 For example, consider the <filename>CONFIG_SMP</filename> configuration setting.
6230 You can find it at <filename>Processor Type and Features</filename> under
6231 the configuration selection <filename>Symmetric Multi-processing Support</filename>.
6232 After highlighting the selection, use the arrow keys to select or deselect
6233 the setting.
6234 When you are finished with all your selections, exit out and save them.
6235 </para>
6236
6237 <para>
6238 Saving the selections updates the <filename>.config</filename> configuration file.
6239 This is the file that the OpenEmbedded build system uses to configure the
6240 kernel during the build.
6241 You can find and examine this file in the Build Directory in
6242 <filename>tmp/work/</filename>.
6243 The actual <filename>.config</filename> is located in the area where the
6244 specific kernel is built.
6245 For example, if you were building a Linux Yocto kernel based on the
6246 Linux 3.14 kernel and you were building a QEMU image targeted for
6247 <filename>x86</filename> architecture, the
6248 <filename>.config</filename> file would be located here:
6249 <literallayout class='monospaced'>
6250 poky/build/tmp/work/qemux86-poky-linux/linux-yocto-3.14.11+git1+84f...
6251 ...656ed30-r1/linux-qemux86-standard-build
6252 </literallayout>
6253 <note>
6254 The previous example directory is artificially split and many of the characters
6255 in the actual filename are omitted in order to make it more readable.
6256 Also, depending on the kernel you are using, the exact pathname
6257 for <filename>linux-yocto-3.14...</filename> might differ.
6258 </note>
6259 </para>
6260
6261 <para>
6262 Within the <filename>.config</filename> file, you can see the kernel settings.
6263 For example, the following entry shows that symmetric multi-processor support
6264 is not set:
6265 <literallayout class='monospaced'>
6266 # CONFIG_SMP is not set
6267 </literallayout>
6268 </para>
6269
6270 <para>
6271 A good method to isolate changed configurations is to use a combination of the
6272 <filename>menuconfig</filename> tool and simple shell commands.
6273 Before changing configurations with <filename>menuconfig</filename>, copy the
6274 existing <filename>.config</filename> and rename it to something else,
6275 use <filename>menuconfig</filename> to make
6276 as many changes as you want and save them, then compare the renamed configuration
6277 file against the newly created file.
6278 You can use the resulting differences as your base to create configuration fragments
6279 to permanently save in your kernel layer.
6280 <note>
6281 Be sure to make a copy of the <filename>.config</filename> and don't just
6282 rename it.
6283 The build system needs an existing <filename>.config</filename>
6284 from which to work.
6285 </note>
6286 </para>
6287 </section>
6288
6289 <section id='creating-a-defconfig-file'>
6290 <title>Creating a&nbsp;&nbsp;<filename>defconfig</filename> File</title>
6291
6292 <para>
6293 A <filename>defconfig</filename> file is simply a
6294 <filename>.config</filename> renamed to "defconfig".
6295 You can use a <filename>defconfig</filename> file
6296 to retain a known set of kernel configurations from which the
6297 OpenEmbedded build system can draw to create the final
6298 <filename>.config</filename> file.
6299 <note>
6300 Out-of-the-box, the Yocto Project never ships a
6301 <filename>defconfig</filename> or
6302 <filename>.config</filename> file.
6303 The OpenEmbedded build system creates the final
6304 <filename>.config</filename> file used to configure the
6305 kernel.
6306 </note>
6307 </para>
6308
6309 <para>
6310 To create a <filename>defconfig</filename>, start with a
6311 complete, working Linux kernel <filename>.config</filename>
6312 file.
6313 Copy that file to the appropriate
6314 <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink><filename>}</filename>
6315 directory in your layer's
6316 <filename>recipes-kernel/linux</filename> directory, and rename
6317 the copied file to "defconfig".
6318 Then, add the following lines to the linux-yocto
6319 <filename>.bbappend</filename> file in your layer:
6320 <literallayout class='monospaced'>
6321 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
6322 SRC_URI += "file://defconfig"
6323 </literallayout>
6324 The
6325 <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
6326 tells the build system how to search for the file, while the
6327 <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></ulink>
6328 extends the
6329 <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESPATH'><filename>FILESPATH</filename></ulink>
6330 variable (search directories) to include the
6331 <filename>${PN}</filename> directory you created to hold the
6332 configuration changes.
6333 <note>
6334 The build system applies the configurations from the
6335 <filename>defconfig</filename> file before applying any
6336 subsequent configuration fragments.
6337 The final kernel configuration is a combination of the
6338 configurations in the <filename>defconfig</filename>
6339 file and any configuration fragments you provide.
6340 You need to realize that if you have any configuration
6341 fragments, the build system applies these on top of and
6342 after applying the existing defconfig file configurations.
6343 </note>
6344 For more information on configuring the kernel, see the
6345 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#changing-the-configuration'>Changing the Configuration</ulink>"
6346 and
6347 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#generating-configuration-files'>Generating Configuration Files</ulink>"
6348 sections, both in the Yocto Project Linux Kernel Development
6349 Manual.
6350 </para>
6351 </section>
6352
6353 <section id='creating-config-fragments'>
6354 <title>Creating Configuration Fragments</title>
6355
6356 <para>
6357 Configuration fragments are simply kernel options that appear in a file
6358 placed where the OpenEmbedded build system can find and apply them.
6359 Syntactically, the configuration statement is identical to what would appear
6360 in the <filename>.config</filename> file, which is in the
6361 <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>:
6362 <literallayout class='monospaced'>
6363 tmp/work/<replaceable>arch</replaceable>-poky-linux/linux-yocto-<replaceable>release_specific_string</replaceable>/linux-<replaceable>arch</replaceable>-<replaceable>build_type</replaceable>
6364 </literallayout>
6365 </para>
6366
6367 <para>
6368 It is simple to create a configuration fragment.
6369 For example, issuing the following from the shell creates a configuration fragment
6370 file named <filename>my_smp.cfg</filename> that enables multi-processor support
6371 within the kernel:
6372 <literallayout class='monospaced'>
6373 $ echo "CONFIG_SMP=y" >> my_smp.cfg
6374 </literallayout>
6375 <note>
6376 All configuration fragment files must use the
6377 <filename>.cfg</filename> extension in order for the
6378 OpenEmbedded build system to recognize them as a
6379 configuration fragment.
6380 </note>
6381 </para>
6382
6383 <para>
6384 Where do you put your configuration fragment files?
6385 You can place these files in the same area pointed to by
6386 <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>.
6387 The OpenEmbedded build system picks up the configuration and
6388 adds it to the kernel's configuration.
6389 For example, suppose you had a set of configuration options
6390 in a file called <filename>myconfig.cfg</filename>.
6391 If you put that file inside a directory named
6392 <filename>linux-yocto</filename> that resides in the same
6393 directory as the kernel's append file and then add a
6394 <filename>SRC_URI</filename> statement such as the following
6395 to the kernel's append file, those configuration options
6396 will be picked up and applied when the kernel is built.
6397 <literallayout class='monospaced'>
6398 SRC_URI += "file://myconfig.cfg"
6399 </literallayout>
6400 </para>
6401
6402 <para>
6403 As mentioned earlier, you can group related configurations into multiple files and
6404 name them all in the <filename>SRC_URI</filename> statement as well.
6405 For example, you could group separate configurations specifically for Ethernet and graphics
6406 into their own files and add those by using a <filename>SRC_URI</filename> statement like the
6407 following in your append file:
6408 <literallayout class='monospaced'>
6409 SRC_URI += "file://myconfig.cfg \
6410 file://eth.cfg \
6411 file://gfx.cfg"
6412 </literallayout>
6413 </para>
6414 </section>
6415
6416 <section id='fine-tuning-the-kernel-configuration-file'>
6417 <title>Fine-Tuning the Kernel Configuration File</title>
6418
6419 <para>
6420 You can make sure the <filename>.config</filename> file is as lean or efficient as
6421 possible by reading the output of the kernel configuration fragment audit,
6422 noting any issues, making changes to correct the issues, and then repeating.
6423 </para>
6424
6425 <para>
6426 As part of the kernel build process, the
6427 <filename>do_kernel_configcheck</filename> task runs.
6428 This task validates the kernel configuration by checking the final
6429 <filename>.config</filename> file against the input files.
6430 During the check, the task produces warning messages for the following
6431 issues:
6432 <itemizedlist>
6433 <listitem><para>Requested options that did not make the final
6434 <filename>.config</filename> file.</para></listitem>
6435 <listitem><para>Configuration items that appear twice in the same
6436 configuration fragment.</para></listitem>
6437 <listitem><para>Configuration items tagged as "required" that were overridden.
6438 </para></listitem>
6439 <listitem><para>A board overrides a non-board specific option.</para></listitem>
6440 <listitem><para>Listed options not valid for the kernel being processed.
6441 In other words, the option does not appear anywhere.</para></listitem>
6442 </itemizedlist>
6443 <note>
6444 The <filename>do_kernel_configcheck</filename> task can
6445 also optionally report if an option is overridden during
6446 processing.
6447 </note>
6448 </para>
6449
6450 <para>
6451 For each output warning, a message points to the file
6452 that contains a list of the options and a pointer to the
6453 configuration fragment that defines them.
6454 Collectively, the files are the key to streamlining the
6455 configuration.
6456 </para>
6457
6458 <para>
6459 To streamline the configuration, do the following:
6460 <orderedlist>
6461 <listitem><para>Start with a full configuration that you
6462 know works - it builds and boots successfully.
6463 This configuration file will be your baseline.
6464 </para></listitem>
6465 <listitem><para>Separately run the
6466 <filename>do_kernel_configme</filename> and
6467 <filename>do_kernel_configcheck</filename> tasks.
6468 </para></listitem>
6469 <listitem><para>Take the resulting list of files from the
6470 <filename>do_kernel_configcheck</filename> task
6471 warnings and do the following:
6472 <itemizedlist>
6473 <listitem><para>
6474 Drop values that are redefined in the fragment
6475 but do not change the final
6476 <filename>.config</filename> file.
6477 </para></listitem>
6478 <listitem><para>
6479 Analyze and potentially drop values from the
6480 <filename>.config</filename> file that override
6481 required configurations.
6482 </para></listitem>
6483 <listitem><para>
6484 Analyze and potentially remove non-board
6485 specific options.
6486 </para></listitem>
6487 <listitem><para>
6488 Remove repeated and invalid options.
6489 </para></listitem>
6490 </itemizedlist></para></listitem>
6491 <listitem><para>
6492 After you have worked through the output of the kernel
6493 configuration audit, you can re-run the
6494 <filename>do_kernel_configme</filename> and
6495 <filename>do_kernel_configcheck</filename> tasks to
6496 see the results of your changes.
6497 If you have more issues, you can deal with them as
6498 described in the previous step.
6499 </para></listitem>
6500 </orderedlist>
6501 </para>
6502
6503 <para>
6504 Iteratively working through steps two through four eventually yields
6505 a minimal, streamlined configuration file.
6506 Once you have the best <filename>.config</filename>, you can build the Linux
6507 Yocto kernel.
6508 </para>
6509 </section>
6510
6511 <section id='determining-hardware-and-non-hardware-features-for-the-kernel-configuration-audit-phase'>
6512 <title>Determining Hardware and Non-Hardware Features for the Kernel Configuration Audit Phase</title>
6513
6514 <para>
6515 This section describes part of the kernel configuration audit
6516 phase that most developers can ignore.
6517 During this part of the audit phase, the contents of the final
6518 <filename>.config</filename> file are compared against the
6519 fragments specified by the system.
6520 These fragments can be system fragments, distro fragments,
6521 or user specified configuration elements.
6522 Regardless of their origin, the OpenEmbedded build system
6523 warns the user if a specific option is not included in the
6524 final kernel configuration.
6525 </para>
6526
6527 <para>
6528 In order to not overwhelm the user with configuration warnings,
6529 by default the system only reports on missing "hardware"
6530 options because a missing hardware option could mean a boot
6531 failure or that important hardware is not available.
6532 </para>
6533
6534 <para>
6535 To determine whether or not a given option is "hardware" or
6536 "non-hardware", the kernel Metadata contains files that
6537 classify individual or groups of options as either hardware
6538 or non-hardware.
6539 To better show this, consider a situation where the
6540 Yocto Project kernel cache contains the following files:
6541 <literallayout class='monospaced'>
6542 kernel-cache/features/drm-psb/hardware.cfg
6543 kernel-cache/features/kgdb/hardware.cfg
6544 kernel-cache/ktypes/base/hardware.cfg
6545 kernel-cache/bsp/mti-malta32/hardware.cfg
6546 kernel-cache/bsp/fsl-mpc8315e-rdb/hardware.cfg
6547 kernel-cache/bsp/qemu-ppc32/hardware.cfg
6548 kernel-cache/bsp/qemuarma9/hardware.cfg
6549 kernel-cache/bsp/mti-malta64/hardware.cfg
6550 kernel-cache/bsp/arm-versatile-926ejs/hardware.cfg
6551 kernel-cache/bsp/common-pc/hardware.cfg
6552 kernel-cache/bsp/common-pc-64/hardware.cfg
6553 kernel-cache/features/rfkill/non-hardware.cfg
6554 kernel-cache/ktypes/base/non-hardware.cfg
6555 kernel-cache/features/aufs/non-hardware.kcf
6556 kernel-cache/features/ocf/non-hardware.kcf
6557 kernel-cache/ktypes/base/non-hardware.kcf
6558 kernel-cache/ktypes/base/hardware.kcf
6559 kernel-cache/bsp/qemu-ppc32/hardware.kcf
6560 </literallayout>
6561 The following list provides explanations for the various
6562 files:
6563 <itemizedlist>
6564 <listitem><para><filename>hardware.kcf</filename>:
6565 Specifies a list of kernel Kconfig files that contain
6566 hardware options only.
6567 </para></listitem>
6568 <listitem><para><filename>non-hardware.kcf</filename>:
6569 Specifies a list of kernel Kconfig files that contain
6570 non-hardware options only.
6571 </para></listitem>
6572 <listitem><para><filename>hardware.cfg</filename>:
6573 Specifies a list of kernel
6574 <filename>CONFIG_</filename> options that are hardware,
6575 regardless of whether or not they are within a Kconfig
6576 file specified by a hardware or non-hardware
6577 Kconfig file (i.e. <filename>hardware.kcf</filename> or
6578 <filename>non-hardware.kcf</filename>).
6579 </para></listitem>
6580 <listitem><para><filename>non-hardware.cfg</filename>:
6581 Specifies a list of kernel
6582 <filename>CONFIG_</filename> options that are
6583 not hardware, regardless of whether or not they are
6584 within a Kconfig file specified by a hardware or
6585 non-hardware Kconfig file (i.e.
6586 <filename>hardware.kcf</filename> or
6587 <filename>non-hardware.kcf</filename>).
6588 </para></listitem>
6589 </itemizedlist>
6590 Here is a specific example using the
6591 <filename>kernel-cache/bsp/mti-malta32/hardware.cfg</filename>:
6592 <literallayout class='monospaced'>
6593 CONFIG_SERIAL_8250
6594 CONFIG_SERIAL_8250_CONSOLE
6595 CONFIG_SERIAL_8250_NR_UARTS
6596 CONFIG_SERIAL_8250_PCI
6597 CONFIG_SERIAL_CORE
6598 CONFIG_SERIAL_CORE_CONSOLE
6599 CONFIG_VGA_ARB
6600 </literallayout>
6601 The kernel configuration audit automatically detects these
6602 files (hence the names must be exactly the ones discussed here),
6603 and uses them as inputs when generating warnings about the
6604 final <filename>.config</filename> file.
6605 </para>
6606
6607 <para>
6608 A user-specified kernel Metadata repository, or recipe space
6609 feature, can use these same files to classify options that are
6610 found within its <filename>.cfg</filename> files as hardware
6611 or non-hardware, to prevent the OpenEmbedded build system from
6612 producing an error or warning when an option is not in the
6613 final <filename>.config</filename> file.
6614 </para>
6615 </section>
6616 </section>
6617
6618 <section id='making-images-more-secure'> 6148 <section id='making-images-more-secure'>
6619 <title>Making Images More Secure</title> 6149 <title>Making Images More Secure</title>
6620 6150
@@ -7243,8 +6773,11 @@ Some notes from Cal:
7243 see the 6773 see the
7244 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#generating-configuration-files'>Generating Configuration Files</ulink>" 6774 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#generating-configuration-files'>Generating Configuration Files</ulink>"
7245 section of the Yocto Project Linux Kernel Development 6775 section of the Yocto Project Linux Kernel Development
7246 Manual and the "<link linkend='creating-config-fragments'>Creating Configuration Fragments</link>" 6776 Manual and the
7247 section, which is in this manual.</para></listitem> 6777 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#creating-config-fragments'>Creating Configuration Fragments</ulink>"
6778 section in the Yocto Project Linux Kernel Development
6779 Manual.
6780 </para></listitem>
7248 <listitem><para><filename>bitbake -u taskexp -g <replaceable>bitbake_target</replaceable></filename>: 6781 <listitem><para><filename>bitbake -u taskexp -g <replaceable>bitbake_target</replaceable></filename>:
7249 Using the BitBake command with these options brings up 6782 Using the BitBake command with these options brings up
7250 a Dependency Explorer from which you can view file 6783 a Dependency Explorer from which you can view file
diff --git a/documentation/kernel-dev/kernel-dev-advanced.xml b/documentation/kernel-dev/kernel-dev-advanced.xml
index 0394e08444..a6f01a8e2a 100644
--- a/documentation/kernel-dev/kernel-dev-advanced.xml
+++ b/documentation/kernel-dev/kernel-dev-advanced.xml
@@ -318,10 +318,10 @@
318 CONFIG_NR_CPUS=64 318 CONFIG_NR_CPUS=64
319 </literallayout> 319 </literallayout>
320 You can find information on configuration fragment files in the 320 You can find information on configuration fragment files in the
321 "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-config-fragments'>Creating Configuration Fragments</ulink>" 321 "<link linkend='creating-config-fragments'>Creating Configuration Fragments</link>"
322 section of the Yocto Project Development Manual and in 322 section and in
323 the "<link linkend='generating-configuration-files'>Generating Configuration Files</link>" 323 the "<link linkend='generating-configuration-files'>Generating Configuration Files</link>"
324 section earlier in this manual. 324 section.
325 </para> 325 </para>
326 326
327 <para> 327 <para>
diff --git a/documentation/kernel-dev/kernel-dev-common.xml b/documentation/kernel-dev/kernel-dev-common.xml
index 28bedd1785..7f61b434cd 100644
--- a/documentation/kernel-dev/kernel-dev-common.xml
+++ b/documentation/kernel-dev/kernel-dev-common.xml
@@ -900,8 +900,8 @@
900 <para> 900 <para>
901 For a detailed example showing how to configure the kernel, 901 For a detailed example showing how to configure the kernel,
902 see the 902 see the
903 "<ulink url='&YOCTO_DOCS_DEV_URL;#configuring-the-kernel'>Configuring the Kernel</ulink>" 903 "<link linkend='configuring-the-kernel'>Configuring the Kernel</link>"
904 section in the Yocto Project Development Manual. 904 section.
905 </para> 905 </para>
906 </section> 906 </section>
907 907
@@ -1445,6 +1445,522 @@
1445 </para> 1445 </para>
1446 </section> 1446 </section>
1447 1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476 <section id='configuring-the-kernel'>
1477 <title>Configuring the Kernel</title>
1478
1479 <para>
1480 Configuring the Yocto Project kernel consists of making sure the
1481 <filename>.config</filename> file has all the right information
1482 in it for the image you are building.
1483 You can use the <filename>menuconfig</filename> tool and
1484 configuration fragments to make sure your
1485 <filename>.config</filename> file is just how you need it.
1486 You can also save known configurations in a
1487 <filename>defconfig</filename> file that the build system can use
1488 for kernel configuration.
1489 </para>
1490
1491 <para>
1492 This section describes how to use <filename>menuconfig</filename>,
1493 create and use configuration fragments, and how to interactively
1494 modify your <filename>.config</filename> file to create the
1495 leanest kernel configuration file possible.
1496 </para>
1497
1498 <para>
1499 For more information on kernel configuration, see the
1500 "<link linkend='changing-the-configuration'>Changing the Configuration</link>"
1501 section.
1502 </para>
1503
1504 <section id='using-menuconfig'>
1505 <title>Using&nbsp;&nbsp;<filename>menuconfig</filename></title>
1506
1507 <para>
1508 The easiest way to define kernel configurations is to set them through the
1509 <filename>menuconfig</filename> tool.
1510 This tool provides an interactive method with which
1511 to set kernel configurations.
1512 For general information on <filename>menuconfig</filename>, see
1513 <ulink url='http://en.wikipedia.org/wiki/Menuconfig'></ulink>.
1514 </para>
1515
1516 <para>
1517 To use the <filename>menuconfig</filename> tool in the Yocto Project development
1518 environment, you must launch it using BitBake.
1519 Thus, the environment must be set up using the
1520 <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
1521 script found in the
1522 <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
1523 You must also be sure of the state of your build in the
1524 <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
1525 The following commands run <filename>menuconfig</filename>
1526 assuming the Source Directory's top-level folder is
1527 <filename>~/poky</filename>:
1528 <literallayout class='monospaced'>
1529 $ cd poky
1530 $ source oe-init-build-env
1531 $ bitbake linux-yocto -c kernel_configme -f
1532 $ bitbake linux-yocto -c menuconfig
1533 </literallayout>
1534 Once <filename>menuconfig</filename> comes up, its standard
1535 interface allows you to interactively examine and configure
1536 all the kernel configuration parameters.
1537 After making your changes, simply exit the tool and save your
1538 changes to create an updated version of the
1539 <filename>.config</filename> configuration file.
1540 </para>
1541
1542 <para>
1543 Consider an example that configures the <filename>linux-yocto-3.14</filename>
1544 kernel.
1545 The OpenEmbedded build system recognizes this kernel as
1546 <filename>linux-yocto</filename>.
1547 Thus, the following commands from the shell in which you previously sourced the
1548 environment initialization script cleans the shared state cache and the
1549 <ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>
1550 directory and then runs <filename>menuconfig</filename>:
1551 <literallayout class='monospaced'>
1552 $ bitbake linux-yocto -c menuconfig
1553 </literallayout>
1554 </para>
1555
1556 <para>
1557 Once <filename>menuconfig</filename> launches, use the interface
1558 to navigate through the selections to find the configuration settings in
1559 which you are interested.
1560 For example, consider the <filename>CONFIG_SMP</filename> configuration setting.
1561 You can find it at <filename>Processor Type and Features</filename> under
1562 the configuration selection <filename>Symmetric Multi-processing Support</filename>.
1563 After highlighting the selection, use the arrow keys to select or deselect
1564 the setting.
1565 When you are finished with all your selections, exit out and save them.
1566 </para>
1567
1568 <para>
1569 Saving the selections updates the <filename>.config</filename> configuration file.
1570 This is the file that the OpenEmbedded build system uses to configure the
1571 kernel during the build.
1572 You can find and examine this file in the Build Directory in
1573 <filename>tmp/work/</filename>.
1574 The actual <filename>.config</filename> is located in the area where the
1575 specific kernel is built.
1576 For example, if you were building a Linux Yocto kernel based on the
1577 Linux 3.14 kernel and you were building a QEMU image targeted for
1578 <filename>x86</filename> architecture, the
1579 <filename>.config</filename> file would be located here:
1580 <literallayout class='monospaced'>
1581 poky/build/tmp/work/qemux86-poky-linux/linux-yocto-3.14.11+git1+84f...
1582 ...656ed30-r1/linux-qemux86-standard-build
1583 </literallayout>
1584 <note>
1585 The previous example directory is artificially split and many of the characters
1586 in the actual filename are omitted in order to make it more readable.
1587 Also, depending on the kernel you are using, the exact pathname
1588 for <filename>linux-yocto-3.14...</filename> might differ.
1589 </note>
1590 </para>
1591
1592 <para>
1593 Within the <filename>.config</filename> file, you can see the kernel settings.
1594 For example, the following entry shows that symmetric multi-processor support
1595 is not set:
1596 <literallayout class='monospaced'>
1597 # CONFIG_SMP is not set
1598 </literallayout>
1599 </para>
1600
1601 <para>
1602 A good method to isolate changed configurations is to use a combination of the
1603 <filename>menuconfig</filename> tool and simple shell commands.
1604 Before changing configurations with <filename>menuconfig</filename>, copy the
1605 existing <filename>.config</filename> and rename it to something else,
1606 use <filename>menuconfig</filename> to make
1607 as many changes as you want and save them, then compare the renamed configuration
1608 file against the newly created file.
1609 You can use the resulting differences as your base to create configuration fragments
1610 to permanently save in your kernel layer.
1611 <note>
1612 Be sure to make a copy of the <filename>.config</filename> and don't just
1613 rename it.
1614 The build system needs an existing <filename>.config</filename>
1615 from which to work.
1616 </note>
1617 </para>
1618 </section>
1619
1620 <section id='creating-a-defconfig-file'>
1621 <title>Creating a&nbsp;&nbsp;<filename>defconfig</filename> File</title>
1622
1623 <para>
1624 A <filename>defconfig</filename> file is simply a
1625 <filename>.config</filename> renamed to "defconfig".
1626 You can use a <filename>defconfig</filename> file
1627 to retain a known set of kernel configurations from which the
1628 OpenEmbedded build system can draw to create the final
1629 <filename>.config</filename> file.
1630 <note>
1631 Out-of-the-box, the Yocto Project never ships a
1632 <filename>defconfig</filename> or
1633 <filename>.config</filename> file.
1634 The OpenEmbedded build system creates the final
1635 <filename>.config</filename> file used to configure the
1636 kernel.
1637 </note>
1638 </para>
1639
1640 <para>
1641 To create a <filename>defconfig</filename>, start with a
1642 complete, working Linux kernel <filename>.config</filename>
1643 file.
1644 Copy that file to the appropriate
1645 <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink><filename>}</filename>
1646 directory in your layer's
1647 <filename>recipes-kernel/linux</filename> directory, and rename
1648 the copied file to "defconfig".
1649 Then, add the following lines to the linux-yocto
1650 <filename>.bbappend</filename> file in your layer:
1651 <literallayout class='monospaced'>
1652 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
1653 SRC_URI += "file://defconfig"
1654 </literallayout>
1655 The
1656 <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
1657 tells the build system how to search for the file, while the
1658 <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></ulink>
1659 extends the
1660 <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESPATH'><filename>FILESPATH</filename></ulink>
1661 variable (search directories) to include the
1662 <filename>${PN}</filename> directory you created to hold the
1663 configuration changes.
1664 <note>
1665 The build system applies the configurations from the
1666 <filename>defconfig</filename> file before applying any
1667 subsequent configuration fragments.
1668 The final kernel configuration is a combination of the
1669 configurations in the <filename>defconfig</filename>
1670 file and any configuration fragments you provide.
1671 You need to realize that if you have any configuration
1672 fragments, the build system applies these on top of and
1673 after applying the existing defconfig file configurations.
1674 </note>
1675 For more information on configuring the kernel, see the
1676 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#changing-the-configuration'>Changing the Configuration</ulink>"
1677 and
1678 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#generating-configuration-files'>Generating Configuration Files</ulink>"
1679 sections, both in the Yocto Project Linux Kernel Development
1680 Manual.
1681 </para>
1682 </section>
1683
1684 <section id='creating-config-fragments'>
1685 <title>Creating Configuration Fragments</title>
1686
1687 <para>
1688 Configuration fragments are simply kernel options that appear in a file
1689 placed where the OpenEmbedded build system can find and apply them.
1690 Syntactically, the configuration statement is identical to what would appear
1691 in the <filename>.config</filename> file, which is in the
1692 <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>:
1693 <literallayout class='monospaced'>
1694 tmp/work/<replaceable>arch</replaceable>-poky-linux/linux-yocto-<replaceable>release_specific_string</replaceable>/linux-<replaceable>arch</replaceable>-<replaceable>build_type</replaceable>
1695 </literallayout>
1696 </para>
1697
1698 <para>
1699 It is simple to create a configuration fragment.
1700 For example, issuing the following from the shell creates a configuration fragment
1701 file named <filename>my_smp.cfg</filename> that enables multi-processor support
1702 within the kernel:
1703 <literallayout class='monospaced'>
1704 $ echo "CONFIG_SMP=y" >> my_smp.cfg
1705 </literallayout>
1706 <note>
1707 All configuration fragment files must use the
1708 <filename>.cfg</filename> extension in order for the
1709 OpenEmbedded build system to recognize them as a
1710 configuration fragment.
1711 </note>
1712 </para>
1713
1714 <para>
1715 Where do you put your configuration fragment files?
1716 You can place these files in the same area pointed to by
1717 <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>.
1718 The OpenEmbedded build system picks up the configuration and
1719 adds it to the kernel's configuration.
1720 For example, suppose you had a set of configuration options
1721 in a file called <filename>myconfig.cfg</filename>.
1722 If you put that file inside a directory named
1723 <filename>linux-yocto</filename> that resides in the same
1724 directory as the kernel's append file and then add a
1725 <filename>SRC_URI</filename> statement such as the following
1726 to the kernel's append file, those configuration options
1727 will be picked up and applied when the kernel is built.
1728 <literallayout class='monospaced'>
1729 SRC_URI += "file://myconfig.cfg"
1730 </literallayout>
1731 </para>
1732
1733 <para>
1734 As mentioned earlier, you can group related configurations into multiple files and
1735 name them all in the <filename>SRC_URI</filename> statement as well.
1736 For example, you could group separate configurations specifically for Ethernet and graphics
1737 into their own files and add those by using a <filename>SRC_URI</filename> statement like the
1738 following in your append file:
1739 <literallayout class='monospaced'>
1740 SRC_URI += "file://myconfig.cfg \
1741 file://eth.cfg \
1742 file://gfx.cfg"
1743 </literallayout>
1744 </para>
1745 </section>
1746
1747 <section id='fine-tuning-the-kernel-configuration-file'>
1748 <title>Fine-Tuning the Kernel Configuration File</title>
1749
1750 <para>
1751 You can make sure the <filename>.config</filename> file is as lean or efficient as
1752 possible by reading the output of the kernel configuration fragment audit,
1753 noting any issues, making changes to correct the issues, and then repeating.
1754 </para>
1755
1756 <para>
1757 As part of the kernel build process, the
1758 <filename>do_kernel_configcheck</filename> task runs.
1759 This task validates the kernel configuration by checking the final
1760 <filename>.config</filename> file against the input files.
1761 During the check, the task produces warning messages for the following
1762 issues:
1763 <itemizedlist>
1764 <listitem><para>Requested options that did not make the final
1765 <filename>.config</filename> file.</para></listitem>
1766 <listitem><para>Configuration items that appear twice in the same
1767 configuration fragment.</para></listitem>
1768 <listitem><para>Configuration items tagged as "required" that were overridden.
1769 </para></listitem>
1770 <listitem><para>A board overrides a non-board specific option.</para></listitem>
1771 <listitem><para>Listed options not valid for the kernel being processed.
1772 In other words, the option does not appear anywhere.</para></listitem>
1773 </itemizedlist>
1774 <note>
1775 The <filename>do_kernel_configcheck</filename> task can
1776 also optionally report if an option is overridden during
1777 processing.
1778 </note>
1779 </para>
1780
1781 <para>
1782 For each output warning, a message points to the file
1783 that contains a list of the options and a pointer to the
1784 configuration fragment that defines them.
1785 Collectively, the files are the key to streamlining the
1786 configuration.
1787 </para>
1788
1789 <para>
1790 To streamline the configuration, do the following:
1791 <orderedlist>
1792 <listitem><para>Start with a full configuration that you
1793 know works - it builds and boots successfully.
1794 This configuration file will be your baseline.
1795 </para></listitem>
1796 <listitem><para>Separately run the
1797 <filename>do_kernel_configme</filename> and
1798 <filename>do_kernel_configcheck</filename> tasks.
1799 </para></listitem>
1800 <listitem><para>Take the resulting list of files from the
1801 <filename>do_kernel_configcheck</filename> task
1802 warnings and do the following:
1803 <itemizedlist>
1804 <listitem><para>
1805 Drop values that are redefined in the fragment
1806 but do not change the final
1807 <filename>.config</filename> file.
1808 </para></listitem>
1809 <listitem><para>
1810 Analyze and potentially drop values from the
1811 <filename>.config</filename> file that override
1812 required configurations.
1813 </para></listitem>
1814 <listitem><para>
1815 Analyze and potentially remove non-board
1816 specific options.
1817 </para></listitem>
1818 <listitem><para>
1819 Remove repeated and invalid options.
1820 </para></listitem>
1821 </itemizedlist></para></listitem>
1822 <listitem><para>
1823 After you have worked through the output of the kernel
1824 configuration audit, you can re-run the
1825 <filename>do_kernel_configme</filename> and
1826 <filename>do_kernel_configcheck</filename> tasks to
1827 see the results of your changes.
1828 If you have more issues, you can deal with them as
1829 described in the previous step.
1830 </para></listitem>
1831 </orderedlist>
1832 </para>
1833
1834 <para>
1835 Iteratively working through steps two through four eventually yields
1836 a minimal, streamlined configuration file.
1837 Once you have the best <filename>.config</filename>, you can build the Linux
1838 Yocto kernel.
1839 </para>
1840 </section>
1841
1842 <section id='determining-hardware-and-non-hardware-features-for-the-kernel-configuration-audit-phase'>
1843 <title>Determining Hardware and Non-Hardware Features for the Kernel Configuration Audit Phase</title>
1844
1845 <para>
1846 This section describes part of the kernel configuration audit
1847 phase that most developers can ignore.
1848 During this part of the audit phase, the contents of the final
1849 <filename>.config</filename> file are compared against the
1850 fragments specified by the system.
1851 These fragments can be system fragments, distro fragments,
1852 or user specified configuration elements.
1853 Regardless of their origin, the OpenEmbedded build system
1854 warns the user if a specific option is not included in the
1855 final kernel configuration.
1856 </para>
1857
1858 <para>
1859 In order to not overwhelm the user with configuration warnings,
1860 by default the system only reports on missing "hardware"
1861 options because a missing hardware option could mean a boot
1862 failure or that important hardware is not available.
1863 </para>
1864
1865 <para>
1866 To determine whether or not a given option is "hardware" or
1867 "non-hardware", the kernel Metadata contains files that
1868 classify individual or groups of options as either hardware
1869 or non-hardware.
1870 To better show this, consider a situation where the
1871 Yocto Project kernel cache contains the following files:
1872 <literallayout class='monospaced'>
1873 kernel-cache/features/drm-psb/hardware.cfg
1874 kernel-cache/features/kgdb/hardware.cfg
1875 kernel-cache/ktypes/base/hardware.cfg
1876 kernel-cache/bsp/mti-malta32/hardware.cfg
1877 kernel-cache/bsp/fsl-mpc8315e-rdb/hardware.cfg
1878 kernel-cache/bsp/qemu-ppc32/hardware.cfg
1879 kernel-cache/bsp/qemuarma9/hardware.cfg
1880 kernel-cache/bsp/mti-malta64/hardware.cfg
1881 kernel-cache/bsp/arm-versatile-926ejs/hardware.cfg
1882 kernel-cache/bsp/common-pc/hardware.cfg
1883 kernel-cache/bsp/common-pc-64/hardware.cfg
1884 kernel-cache/features/rfkill/non-hardware.cfg
1885 kernel-cache/ktypes/base/non-hardware.cfg
1886 kernel-cache/features/aufs/non-hardware.kcf
1887 kernel-cache/features/ocf/non-hardware.kcf
1888 kernel-cache/ktypes/base/non-hardware.kcf
1889 kernel-cache/ktypes/base/hardware.kcf
1890 kernel-cache/bsp/qemu-ppc32/hardware.kcf
1891 </literallayout>
1892 The following list provides explanations for the various
1893 files:
1894 <itemizedlist>
1895 <listitem><para><filename>hardware.kcf</filename>:
1896 Specifies a list of kernel Kconfig files that contain
1897 hardware options only.
1898 </para></listitem>
1899 <listitem><para><filename>non-hardware.kcf</filename>:
1900 Specifies a list of kernel Kconfig files that contain
1901 non-hardware options only.
1902 </para></listitem>
1903 <listitem><para><filename>hardware.cfg</filename>:
1904 Specifies a list of kernel
1905 <filename>CONFIG_</filename> options that are hardware,
1906 regardless of whether or not they are within a Kconfig
1907 file specified by a hardware or non-hardware
1908 Kconfig file (i.e. <filename>hardware.kcf</filename> or
1909 <filename>non-hardware.kcf</filename>).
1910 </para></listitem>
1911 <listitem><para><filename>non-hardware.cfg</filename>:
1912 Specifies a list of kernel
1913 <filename>CONFIG_</filename> options that are
1914 not hardware, regardless of whether or not they are
1915 within a Kconfig file specified by a hardware or
1916 non-hardware Kconfig file (i.e.
1917 <filename>hardware.kcf</filename> or
1918 <filename>non-hardware.kcf</filename>).
1919 </para></listitem>
1920 </itemizedlist>
1921 Here is a specific example using the
1922 <filename>kernel-cache/bsp/mti-malta32/hardware.cfg</filename>:
1923 <literallayout class='monospaced'>
1924 CONFIG_SERIAL_8250
1925 CONFIG_SERIAL_8250_CONSOLE
1926 CONFIG_SERIAL_8250_NR_UARTS
1927 CONFIG_SERIAL_8250_PCI
1928 CONFIG_SERIAL_CORE
1929 CONFIG_SERIAL_CORE_CONSOLE
1930 CONFIG_VGA_ARB
1931 </literallayout>
1932 The kernel configuration audit automatically detects these
1933 files (hence the names must be exactly the ones discussed here),
1934 and uses them as inputs when generating warnings about the
1935 final <filename>.config</filename> file.
1936 </para>
1937
1938 <para>
1939 A user-specified kernel Metadata repository, or recipe space
1940 feature, can use these same files to classify options that are
1941 found within its <filename>.cfg</filename> files as hardware
1942 or non-hardware, to prevent the OpenEmbedded build system from
1943 producing an error or warning when an option is not in the
1944 final <filename>.config</filename> file.
1945 </para>
1946 </section>
1947 </section>
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1448 <section id='using-an-iterative-development-process'> 1964 <section id='using-an-iterative-development-process'>
1449 <title>Using an Iterative Development Process</title> 1965 <title>Using an Iterative Development Process</title>
1450 1966
@@ -1538,8 +2054,8 @@
1538 "<link linkend='changing-the-configuration'>Changing the Configuration</link>" section. 2054 "<link linkend='changing-the-configuration'>Changing the Configuration</link>" section.
1539 For more information on the <filename>.config</filename> file, 2055 For more information on the <filename>.config</filename> file,
1540 see the 2056 see the
1541 "<ulink url='&YOCTO_DOCS_DEV_URL;#using-menuconfig'>Using <filename>menuconfig</filename></ulink>" 2057 "<link linkend='using-menuconfig'>Using <filename>menuconfig</filename></link>"
1542 section in the Yocto Project Development Manual. 2058 section.
1543 <note> 2059 <note>
1544 You can determine what a variable expands to by looking 2060 You can determine what a variable expands to by looking
1545 at the output of the <filename>bitbake -e</filename> 2061 at the output of the <filename>bitbake -e</filename>
@@ -1650,8 +2166,8 @@
1650 <para> 2166 <para>
1651 For more information on how to use the 2167 For more information on how to use the
1652 <filename>menuconfig</filename> tool, see the 2168 <filename>menuconfig</filename> tool, see the
1653 "<ulink url='&YOCTO_DOCS_DEV_URL;#using-menuconfig'>Using <filename>menuconfig</filename></ulink>" 2169 "<link linkend='using-menuconfig'>Using <filename>menuconfig</filename></link>"
1654 section in the Yocto Project Development Manual. 2170 section.
1655 </para> 2171 </para>
1656 </section> 2172 </section>
1657 2173
diff --git a/documentation/kernel-dev/kernel-dev-intro.xml b/documentation/kernel-dev/kernel-dev-intro.xml
index b2fe19c175..174ab93ab0 100644
--- a/documentation/kernel-dev/kernel-dev-intro.xml
+++ b/documentation/kernel-dev/kernel-dev-intro.xml
@@ -231,7 +231,7 @@
231 and you have saved them, you can directly compare the 231 and you have saved them, you can directly compare the
232 resulting <filename>.config</filename> file against an 232 resulting <filename>.config</filename> file against an
233 existing original and gather those changes into a 233 existing original and gather those changes into a
234 <ulink url='&YOCTO_DOCS_DEV_URL;#creating-config-fragments'>configuration fragment file</ulink> 234 <link linkend='creating-config-fragments'>configuration fragment file</link>
235 to be referenced from within the kernel's 235 to be referenced from within the kernel's
236 <filename>.bbappend</filename> file.</para> 236 <filename>.bbappend</filename> file.</para>
237 237
diff --git a/documentation/ref-manual/ref-tasks.xml b/documentation/ref-manual/ref-tasks.xml
index 2d23bbaabf..e145518989 100644
--- a/documentation/ref-manual/ref-tasks.xml
+++ b/documentation/ref-manual/ref-tasks.xml
@@ -960,8 +960,8 @@
960 section in the Yocto Project Linux Kernel Development Manual 960 section in the Yocto Project Linux Kernel Development Manual
961 for more information on this configuration tool. 961 for more information on this configuration tool.
962 You can also reference the 962 You can also reference the
963 "<ulink url='&YOCTO_DOCS_DEV_URL;#using-menuconfig'>Using <filename>menuconfig</filename></ulink>" 963 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-menuconfig'>Using <filename>menuconfig</filename></ulink>"
964 section in the Yocto Project Development Manual. 964 section in the Yocto Project Linux Kernel Development Manual.
965 </para> 965 </para>
966 </section> 966 </section>
967 967
@@ -988,8 +988,8 @@
988 <para> 988 <para>
989 Runs <filename>make menuconfig</filename> for the kernel. 989 Runs <filename>make menuconfig</filename> for the kernel.
990 For information on <filename>menuconfig</filename>, see the 990 For information on <filename>menuconfig</filename>, see the
991 "<ulink url='&YOCTO_DOCS_DEV_URL;#using-menuconfig'>Using&nbsp;&nbsp;<filename>menuconfig</filename></ulink>" 991 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-menuconfig'>Using&nbsp;&nbsp;<filename>menuconfig</filename></ulink>"
992 section in the Yocto Project Development Manual. 992 section in the Yocto Project Linux Kernel Development Manual.
993 </para> 993 </para>
994 </section> 994 </section>
995 995