diff options
Diffstat (limited to 'documentation')
| -rw-r--r-- | documentation/dev-manual/dev-manual-kernel-appendix.xml | 210 | 
1 files changed, 169 insertions, 41 deletions
diff --git a/documentation/dev-manual/dev-manual-kernel-appendix.xml b/documentation/dev-manual/dev-manual-kernel-appendix.xml index 4000a0b943..ffe3230126 100644 --- a/documentation/dev-manual/dev-manual-kernel-appendix.xml +++ b/documentation/dev-manual/dev-manual-kernel-appendix.xml  | |||
| @@ -495,14 +495,176 @@ | |||
| 495 | <title>Changing the Kernel Configuration</title> | 495 | <title>Changing the Kernel Configuration</title> | 
| 496 | 496 | ||
| 497 | <para> | 497 | <para> | 
| 498 | This section presents an example that changes the kernel configuration. | 498 | This example changes the default behavior (off) of the Symmetric Multi-processing Support | 
| 499 | The example shows how to use <filename>menuconfig</filename> to quickly see | 499 | (<filename>CONFIG_SMP</filename>) to on. | 
| 500 | and set configurations used by the kernel. | 500 | It is a simple example that demonstrates how to reconfigure the kernel. | 
| 501 | </para> | 501 | </para> | 
| 502 | 502 | ||
| 503 | <para> | 503 | <section id='getting-set-up-to-run-this-example'> | 
| 504 | [Example to be supplied] | 504 | <title>Getting Set Up to Run this Example</title> | 
| 505 | </para> | 505 | |
| 506 | <para> | ||
| 507 | If you took the time to work through the example that modifies the kernel source code | ||
| 508 | in <xref linkend='modifying-the-kernel-source-code'>Modifying the Kernel Source | ||
| 509 | Code</xref> you are set up to quickly work through this example. | ||
| 510 | If not, then work through the following list to prepare: | ||
| 511 | <itemizedlist> | ||
| 512 | <listitem><para><emphasis>Understand the development environment:</emphasis> | ||
| 513 | See <xref linkend='understanding-the-files-you-need'> | ||
| 514 | Understanding the Files You Need</xref> for information.</para></listitem> | ||
| 515 | <listitem><para><emphasis>Set up the local Yocto Project files Git | ||
| 516 | repository:</emphasis> | ||
| 517 | See <xref linkend='setting-up-the-local-yocto-project-files-git-repository'> | ||
| 518 | Setting Up the Local Yocto Project Files Git Repository</xref> for | ||
| 519 | information.</para></listitem> | ||
| 520 | <listitem><para><emphasis>Set up the <filename>poky-extras</filename> Git | ||
| 521 | repository:</emphasis> | ||
| 522 | See <xref linkend='setting-up-the-poky-extras-git-repository'> | ||
| 523 | Setting Up <filename>poky-extras</filename> Git repository</xref> for | ||
| 524 | information.</para></listitem> | ||
| 525 | <listitem><para><emphasis>Set up the the bare clone and its copy:</emphasis> | ||
| 526 | See <xref linkend='setting-up-the-bare-clone-and-its-copy'> | ||
| 527 | Setting Up the Bare Clone and its Copy</xref> for information. | ||
| 528 | </para></listitem> | ||
| 529 | <listitem><para><emphasis>Build the default QEMU kernel image:</emphasis> | ||
| 530 | See <xref linkend='building-and-booting-the-default-qemu-kernel-image'> | ||
| 531 | Building and Booting the Default QEMU Kernel image</xref> | ||
| 532 | for information. | ||
| 533 | Do not boot the image in the QEMU emulator at this point.</para></listitem> | ||
| 534 | </itemizedlist> | ||
| 535 | </para> | ||
| 536 | </section> | ||
| 537 | |||
| 538 | <section id='examining-the-default-config-smp-behavior'> | ||
| 539 | <title>Examining the Default <filename>CONFIG_SMP</filename> Behavior</title> | ||
| 540 | |||
| 541 | <para> | ||
| 542 | By default, <filename>CONFIG_SMP</filename> supports single processor machines. | ||
| 543 | To see this default setting from within the QEMU emulator boot your image using | ||
| 544 | the emulator as follows: | ||
| 545 | <literallayout class='monospaced'> | ||
| 546 | $ runqemu qemux86 | ||
| 547 | </literallayout> | ||
| 548 | </para> | ||
| 549 | |||
| 550 | <para> | ||
| 551 | Login to the machine using <filename>root</filename> with no password. | ||
| 552 | After logging in, enter the following command to see how many processors are | ||
| 553 | being supported in the emulator. | ||
| 554 | The emulator reports support for a single processor: | ||
| 555 | <literallayout class='monospaced'> | ||
| 556 | # cat /proc/cpuinfo | grep processor | ||
| 557 | processor : 0 | ||
| 558 | # | ||
| 559 | </literallayout> | ||
| 560 | </para> | ||
| 561 | </section> | ||
| 562 | |||
| 563 | <section id='changing-the-config-smp-configuration-using-menuconfig'> | ||
| 564 | <title>Changing the <filename>CONFIG_SMP</filename> Configuration Using <filename>menuconfig</filename></title> | ||
| 565 | |||
| 566 | <para> | ||
| 567 | The <filename>menuconfig</filename> tool provides an interactive method with which | ||
| 568 | to set kernel configurations. | ||
| 569 | You need to run <filename>menuconfig</filename> inside the BitBake environment. | ||
| 570 | Thus, the environment must be set up using the <filename>oe-init-build-env</filename> | ||
| 571 | script found in the Yocto Project files Git repository build directory. | ||
| 572 | If you have not sourced this script do so with the following commands: | ||
| 573 | <literallayout class='monospaced'> | ||
| 574 | $ cd ~/poky | ||
| 575 | $ source oe-init-build-env | ||
| 576 | </literallayout> | ||
| 577 | </para> | ||
| 578 | |||
| 579 | <para> | ||
| 580 | After setting up the environment to run <filename>menuconfig</filename>, you are ready | ||
| 581 | to use the tool to interactively change the kernel configuration. | ||
| 582 | In this example we are basing our changes on the <filename>linux-yocto-3.0</filename> | ||
| 583 | kernel. | ||
| 584 | The Yocto Project build environment recognizes this kernel as | ||
| 585 | <filename>linux-yocto</filename>. | ||
| 586 | Thus, the following command from the shell in which you previously sourced the | ||
| 587 | environment initialization script launches <filename>menuconfig</filename>: | ||
| 588 | <literallayout class='monospaced'> | ||
| 589 | $ bitbake linux-yocto -c menuconfig | ||
| 590 | </literallayout> | ||
| 591 | </para> | ||
| 592 | |||
| 593 | <para> | ||
| 594 | Once <filename>menuconfig</filename> launches, navigate through the user interface | ||
| 595 | to find the <filename>CONFIG_SMP</filename> configuration setting. | ||
| 596 | You can find it at <filename>Processor Type and Features</filename>. | ||
| 597 | The configuration selection is | ||
| 598 | <filename>Symmetric Multi-processing Support</filename>. | ||
| 599 | </para> | ||
| 600 | |||
| 601 | <para> | ||
| 602 | Once you save the selection the <filename>.config</filename> configuration file | ||
| 603 | is updated. | ||
| 604 | This is the file that the build system uses to configure the Linux Yocto kernel | ||
| 605 | when it is built. | ||
| 606 | You can find and examine this file in the Yocto Project files Git repository in | ||
| 607 | the build directory. | ||
| 608 | This example uses the following: | ||
| 609 | <literallayout class='monospaced'> | ||
| 610 | ~/poky/build/tmp/work/qemux86-poky-linux/linux-yocto-2.6.37+git1+84f...r20/linux-qemux86-standard-build | ||
| 611 | </literallayout> | ||
| 612 | </para> | ||
| 613 | |||
| 614 | <para> | ||
| 615 | Within the <filename>.config</filename> you can see the following setting: | ||
| 616 | <literallayout class='monospaced'> | ||
| 617 | CONFIG_SMP=y | ||
| 618 | </literallayout> | ||
| 619 | </para> | ||
| 620 | |||
| 621 | <para> | ||
| 622 | A good method to isolate changed configurations is to use a combination of the | ||
| 623 | <filename>menuconfig</filename> tool and simple shell commands. | ||
| 624 | Before changing configurations with <filename>menuconfig</filename> simply rename | ||
| 625 | the default <filename>.config</filename>, use <filename>menuconfig</filename> to make | ||
| 626 | as many changes an you want and save them, then compare the renamed configuration | ||
| 627 | file against the newly created file. | ||
| 628 | You can use the resulting differences as your base to create configuration fragments | ||
| 629 | to permanently save in your kernel layer. | ||
| 630 | For an example of this procedure, see [WRITER'S NOTE: need forwarding link to section]. | ||
| 631 | </para> | ||
| 632 | </section> | ||
| 633 | |||
| 634 | <section id='recompiling-the-kernel-and-testing-the-new-configuration'> | ||
| 635 | <title>Recompiling the Kernel and Testing the New Configuration</title> | ||
| 636 | |||
| 637 | <para> | ||
| 638 | At this point you are ready to recompile your kernel image with | ||
| 639 | the new setting in effect using the BitBake commands below: | ||
| 640 | <literallayout class='monospaced'> | ||
| 641 | $ bitbake linux-yocto -c compile -f | ||
| 642 | $ bitbake linux-yocto | ||
| 643 | </literallayout> | ||
| 644 | </para> | ||
| 645 | |||
| 646 | <para> | ||
| 647 | Now run the QEMU emulator: | ||
| 648 | <literallayout class='monospaced'> | ||
| 649 | $ runqemu qemux86 | ||
| 650 | </literallayout> | ||
| 651 | </para> | ||
| 652 | |||
| 653 | <para> | ||
| 654 | Login to the machine using <filename>root</filename> with no password | ||
| 655 | and test for the number of processors the kernel supports: | ||
| 656 | <literallayout class='monospaced'> | ||
| 657 | # cat /proc/cpuinfo | grep processor | ||
| 658 | processor : 0 | ||
| 659 | processor : 1 | ||
| 660 | # | ||
| 661 | </literallayout> | ||
| 662 | </para> | ||
| 663 | |||
| 664 | <para> | ||
| 665 | From the output you can see that you have successfully reconfigured the kernel. | ||
| 666 | </para> | ||
| 667 | </section> | ||
| 506 | </section> | 668 | </section> | 
| 507 | 669 | ||
| 508 | <section id='adding-kernel-recipes'> | 670 | <section id='adding-kernel-recipes'> | 
| @@ -516,7 +678,7 @@ | |||
| 516 | <para> | 678 | <para> | 
| 517 | [Example to be supplied] | 679 | [Example to be supplied] | 
| 518 | </para> | 680 | </para> | 
| 519 | </section> | 681 | </section> | 
| 520 | 682 | ||
| 521 | 683 | ||
| 522 | 684 | ||
| @@ -584,40 +746,6 @@ It should just build whatever is necessary and not go through an entire build ag | |||
| 584 | <section id='prepare-to-use-menuconfig'> | 746 | <section id='prepare-to-use-menuconfig'> | 
| 585 | <title>Prepare to use <filename>menuconfig</filename></title> | 747 | <title>Prepare to use <filename>menuconfig</filename></title> | 
| 586 | 748 | ||
| 587 | <para> | ||
| 588 | The <filename>menuconfig</filename> tool provides an interactive method with which | ||
| 589 | to set kernel configurations. | ||
| 590 | In order to use <filename>menuconfig</filename> from within the BitBake environment | ||
| 591 | you need to source an environment setup script. | ||
| 592 | This script is located in the local Yocto Project file structure and is called | ||
| 593 | <filename>oe-init-build-env</filename>. | ||
| 594 | </para> | ||
| 595 | |||
| 596 | <para> | ||
| 597 | The following command sets up the environment: | ||
| 598 | <literallayout class='monospaced'> | ||
| 599 | $ cd ~/poky | ||
| 600 | $ source oe-init-build-env | ||
| 601 | </literallayout> | ||
| 602 | </para> | ||
| 603 | </section> | ||
| 604 | |||
| 605 | <section id='make-configuration-changes-to-the-kernel'> | ||
| 606 | <title>Make Configuration Changes to the Kernel</title> | ||
| 607 | |||
| 608 | <para> | ||
| 609 | After setting up the environment to run <filename>menuconfig</filename> you are ready | ||
| 610 | to use the tool to interactively change the kernel configuration. | ||
| 611 | In this example we are basing our changes on the <filename>linux-yocto-2.6.37</filename> | ||
| 612 | kernel. | ||
| 613 | The Yocto Project build environment recognizes this kernel as | ||
| 614 | <filename>linux-yocto</filename>. | ||
| 615 | Thus, the following command from the shell in which you previously sourced the | ||
| 616 | environment initialization script launches <filename>menuconfig</filename>: | ||
| 617 | <literallayout class='monospaced'> | ||
| 618 | $ bitbake linux-yocto -c menuconfig | ||
| 619 | </literallayout> | ||
| 620 | </para> | ||
| 621 | 749 | ||
| 622 | <para> | 750 | <para> | 
| 623 | [WRITER'S NOTE: Stuff from here down are crib notes] | 751 | [WRITER'S NOTE: Stuff from here down are crib notes] | 
