diff options
Diffstat (limited to 'documentation/kernel-dev')
| -rw-r--r-- | documentation/kernel-dev/kernel-dev-common.xml | 109 |
1 files changed, 108 insertions, 1 deletions
diff --git a/documentation/kernel-dev/kernel-dev-common.xml b/documentation/kernel-dev/kernel-dev-common.xml index 0de39d5686..506a45ee11 100644 --- a/documentation/kernel-dev/kernel-dev-common.xml +++ b/documentation/kernel-dev/kernel-dev-common.xml | |||
| @@ -608,7 +608,113 @@ to the Yocto Project Development Manual, section 5.7.3 Creating the Patch. | |||
| 608 | <title>Working With Your Own Sources</title> | 608 | <title>Working With Your Own Sources</title> |
| 609 | 609 | ||
| 610 | <para> | 610 | <para> |
| 611 | If you find yourself unable to work with one of the Linux kernel versions | 611 | If you find yourself unable to work with one of the Linux kernel |
| 612 | versions supported by existing linux-yocto recipes, you can | ||
| 613 | still make use of the Yocto Project Linux kernel tooling by | ||
| 614 | working with your own sources. | ||
| 615 | You will not be able to leverage the existing | ||
| 616 | <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink> and | ||
| 617 | stabilization work of the linux-yocto sources, but you will be | ||
| 618 | able to manage your own Metadata in the same format as the | ||
| 619 | linux-yocto sources. | ||
| 620 | Format compatibility facilitates converging with | ||
| 621 | linux-yocto on a future, mutually-supported kernel version. | ||
| 622 | </para> | ||
| 623 | |||
| 624 | <para> | ||
| 625 | The linux-yocto custom recipe is located in the | ||
| 626 | <filename>poky</filename> Git repository of the | ||
| 627 | Yocto Project <ulink url='&YOCTO_GIT_URL;'>Source Repository</ulink> | ||
| 628 | at: | ||
| 629 | <literallayout class="monospaced"> | ||
| 630 | poky/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb | ||
| 631 | </literallayout> | ||
| 632 | </para> | ||
| 633 | |||
| 634 | <para> | ||
| 635 | The example recipe uses <filename>kernel.org</filename> sources | ||
| 636 | and the Yocto Project Linux kernel tools for managing Metadata. | ||
| 637 | </para> | ||
| 638 | |||
| 639 | <para> | ||
| 640 | Here are some basic steps you can use to work with your own sources: | ||
| 641 | <orderedlist> | ||
| 642 | <listitem><para>Copy the <filename>linux-yocto-custom.bb</filename> | ||
| 643 | recipe to your layer and give it a meaningful name. | ||
| 644 | The name should include the version of the Linux kernel you | ||
| 645 | are using (e.g. <filename>linux-yocto-myproject_3.5.bb</filename>, | ||
| 646 | where "3.5" is the base version of the Linux kernel | ||
| 647 | with which you would be working.</para></listitem> | ||
| 648 | <listitem><para>In the same directory inside your layer, | ||
| 649 | create a matching directory | ||
| 650 | to store your patches and configuration files (e.g. | ||
| 651 | <filename>linux-yocto-myproject</filename>). | ||
| 652 | </para></listitem> | ||
| 653 | <listitem><para>Edit the following variables in your recipe | ||
| 654 | as appropriate for your project: | ||
| 655 | <itemizedlist> | ||
| 656 | <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>: | ||
| 657 | The <filename>SRC_URI</filename> should be a Git | ||
| 658 | repository that uses one of the supported Git fetcher | ||
| 659 | protocols (i.e. <filename>file</filename>, | ||
| 660 | <filename>git</filename>, <filename>http</filename>, | ||
| 661 | and so forth). | ||
| 662 | The skeleton recipe provides an example | ||
| 663 | <filename>SRC_URI</filename> as a syntax reference. | ||
| 664 | </para></listitem> | ||
| 665 | <listitem><para><filename>LINUX_VERSION</filename>: | ||
| 666 | The Linux kernel version you are using (e.g. | ||
| 667 | "3.6.3").</para></listitem> | ||
| 668 | <listitem><para><filename>LINUX_VERSION_EXTENSION</filename>: | ||
| 669 | The Linux kernel <filename>CONFIG_LOCALVERSION</filename> | ||
| 670 | that is compiled into the resulting kernel and visible | ||
| 671 | through the <filename>uname</filename> command. | ||
| 672 | </para></listitem> | ||
| 673 | <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>: | ||
| 674 | The commit ID from which you want to build. | ||
| 675 | </para></listitem> | ||
| 676 | <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-PR'><filename>PR</filename></ulink>: | ||
| 677 | Treat this variable the same as you would in any other | ||
| 678 | recipe. | ||
| 679 | Increment the variable to indicate to the OpenEmbedded | ||
| 680 | build system that the recipe has changed. | ||
| 681 | </para></listitem> | ||
| 682 | <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-PV'><filename>PV</filename></ulink>: | ||
| 683 | The default <filename>PV</filename> assignment is | ||
| 684 | typically adequate. | ||
| 685 | It combines the <filename>LINUX_VERSION</filename> | ||
| 686 | with the SCM revision (from the SRCPV variable) | ||
| 687 | and results in a string using the following form: | ||
| 688 | <literallayout class='monospaced'> | ||
| 689 | 3.4.11+git1+68a635bf8dfb64b02263c1ac80c948647cc76d5f_1+218bd8d2022b9852c60d32f0d770931e3cf343e2 | ||
| 690 | </literallayout> | ||
| 691 | While lengthy, the extra verbosity in <filename>PV</filename> | ||
| 692 | helps ensure you are using the exact | ||
| 693 | sources from which you intend to build. | ||
| 694 | </para></listitem> | ||
| 695 | <listitem><para><ulink url='&YOCTO_DOCS_REF_URL;#var-COMPATIBLE_MACHINE'><filename>COMPATIBLE_MACHINE</filename></ulink>: | ||
| 696 | A list of the machines supported by your new recipe. | ||
| 697 | This variable in the example recipe is set | ||
| 698 | by default to a regular expression that matches | ||
| 699 | only the empty string, "(^$)". | ||
| 700 | This default setting triggers an explicit build failure. | ||
| 701 | You must change it to match a list of the machines | ||
| 702 | that your new recipe supports (e.g. "qemux86|qemux86-64"). | ||
| 703 | </para></listitem> | ||
| 704 | </itemizedlist></para></listitem> | ||
| 705 | <listitem><para>Provide further customizations to your recipe | ||
| 706 | as needed just as you would customize an existing | ||
| 707 | linux-yocto recipe. | ||
| 708 | See the "<link linkend='modifying-an-existing-recipe'>Modifying | ||
| 709 | an Existing Recipe</link>" section for information. | ||
| 710 | </para></listitem> | ||
| 711 | </orderedlist> | ||
| 712 | </para> | ||
| 713 | |||
| 714 | <para> | ||
| 715 | Original Text: | ||
| 716 | <literallayout class='monospaced'> | ||
| 717 | If you find yourself unable to work with one of the Linux kernel versions | ||
| 612 | supported by existing linux-yocto recipes, you can still make use of the Yocto | 718 | supported by existing linux-yocto recipes, you can still make use of the Yocto |
| 613 | Project Linux kernel tooling while working with your own sources. You will not | 719 | Project Linux kernel tooling while working with your own sources. You will not |
| 614 | be able to leverage the existing meta-data and stabilization work of the | 720 | be able to leverage the existing meta-data and stabilization work of the |
| @@ -669,6 +775,7 @@ machines supported by your new recipe, such as "(qemux86|qemux86-64)" | |||
| 669 | With that in place, you can continue to customize this recipe as you would the | 775 | With that in place, you can continue to customize this recipe as you would the |
| 670 | existing linux-yocto recipes. See Section 2.2 Modifying an Existing Recipe for | 776 | existing linux-yocto recipes. See Section 2.2 Modifying an Existing Recipe for |
| 671 | details. | 777 | details. |
| 778 | </literallayout> | ||
| 672 | </para> | 779 | </para> |
| 673 | </section> | 780 | </section> |
| 674 | 781 | ||
