summaryrefslogtreecommitdiffstats
path: root/documentation/dev-manual/dev-manual-kernel-appendix.xml
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/dev-manual/dev-manual-kernel-appendix.xml')
-rw-r--r--documentation/dev-manual/dev-manual-kernel-appendix.xml92
1 files changed, 37 insertions, 55 deletions
diff --git a/documentation/dev-manual/dev-manual-kernel-appendix.xml b/documentation/dev-manual/dev-manual-kernel-appendix.xml
index 0f69ef1067..04db02a7a6 100644
--- a/documentation/dev-manual/dev-manual-kernel-appendix.xml
+++ b/documentation/dev-manual/dev-manual-kernel-appendix.xml
@@ -12,17 +12,6 @@
12 or even altering the source code itself. 12 or even altering the source code itself.
13 This appendix presents simple examples that modify the kernel source code, 13 This appendix presents simple examples that modify the kernel source code,
14 change the kernel configuration, and add a kernel source recipe. 14 change the kernel configuration, and add a kernel source recipe.
15<!-- [WRITER'S NOTE: I might want to work in information about applying a local
16 change to a kernel layer and also pushing a change upstream into the tree]
17 <orderedlist>
18 <listitem><para>Iteratively determine and set kernel configurations and make
19 kernel recipe changes.</para></listitem>
20 <listitem><para>Apply your configuration changes to your local kernel layer.
21 </para></listitem>
22 <listitem><para>Push your configuration and recipe changes upstream into the
23 Yocto Project source repositories to make them available to the community.
24 </para></listitem>
25 </orderedlist> -->
26 </para> 15 </para>
27 16
28 <section id='modifying-the-kernel-source-code'> 17 <section id='modifying-the-kernel-source-code'>
@@ -45,18 +34,17 @@
45 Briefly, you need the following: 34 Briefly, you need the following:
46 <itemizedlist> 35 <itemizedlist>
47 <listitem><para>A local 36 <listitem><para>A local
48 <link linkend='yocto-project-files'>Yocto Project Files</link> 37 <link linkend='source-directory'>source directory</link> for the
49 Git repository</para></listitem> 38 poky Git repository</para></listitem>
50 <listitem><para>The 39 <listitem><para>Local copies of the
51 <link linkend='poky-extras-repo'><filename>poky-extras</filename></link> 40 <link linkend='poky-extras-repo'><filename>poky-extras</filename></link>
52 Git repository placed within the local Yocto Project files Git 41 Git repository placed within the source directory.</para></listitem>
53 repository</para></listitem>
54 <listitem><para>A bare clone of the 42 <listitem><para>A bare clone of the
55 <link linkend='local-kernel-files'>Linux Yocto Kernel</link> upstream Git 43 <link linkend='local-kernel-files'>Linux Yocto Kernel</link> upstream Git
56 repository to which you want to push your modifications. 44 repository to which you want to push your modifications.
57 </para></listitem> 45 </para></listitem>
58 <listitem><para>A copy of that bare clone in which you make your source 46 <listitem><para>A copy of that bare clone in which you make your source
59 modifcations</para></listitem> 47 modifications</para></listitem>
60 </itemizedlist> 48 </itemizedlist>
61 </para> 49 </para>
62 50
@@ -78,18 +66,19 @@
78 <para> 66 <para>
79 Here is a brief description of the four areas: 67 Here is a brief description of the four areas:
80 <itemizedlist> 68 <itemizedlist>
81 <listitem><para><emphasis>Local Yocto Project Files Git Repository:</emphasis> 69 <listitem><para><emphasis>Local Source Directory:</emphasis>
82 This area contains all the metadata that supports building images in the 70 This area contains all the metadata that supports building images
83 Yocto Project build environment - the local Yocto Project files. 71 using the OpenEmbedded build system.
84 In this example, the local Yocto Project files Git repository also 72 In this example, the source directory also
85 contains the build directory, which contains the configuration directory 73 contains the build directory, which contains the configuration directory
86 that lets you control the build. 74 that lets you control the build.
87 In this example, the repository also contains the 75 Also in this example, the source directory contains local copies of the
88 <filename>poky-extras</filename> Git repository.</para> 76 <filename>poky-extras</filename> Git repository.</para>
89 <para>See the bulleted item 77 <para>See the bulleted item
90 "<link linkend='local-yp-release'>Yocto Project Release</link>" 78 "<link linkend='local-yp-release'>Yocto Project Release</link>"
91 for information on how to get these files.</para></listitem> 79 for information on how to get these files on your local system.</para></listitem>
92 <listitem><para><emphasis><filename>poky-extras</filename> Git Repository:</emphasis> 80 <listitem><para><emphasis>Local copies of the<filename>poky-extras</filename>
81 Git Repository:</emphasis>
93 This area contains the <filename>meta-kernel-dev</filename> layer, 82 This area contains the <filename>meta-kernel-dev</filename> layer,
94 which is where you make changes that append the kernel build recipes. 83 which is where you make changes that append the kernel build recipes.
95 You edit <filename>.bbappend</filename> files to locate your 84 You edit <filename>.bbappend</filename> files to locate your
@@ -133,23 +122,23 @@
133 </section> 122 </section>
134 123
135 <section id='setting-up-the-local-yocto-project-files-git-repository'> 124 <section id='setting-up-the-local-yocto-project-files-git-repository'>
136 <title>Setting Up the Local Yocto Project Files Git Repository</title> 125 <title>Setting Up the Local Source Directory</title>
137 126
138 <para> 127 <para>
139 You can get the local Yocto Project files through tarball extraction or by 128 You can set up the source directory through tarball extraction or by
140 cloning the <filename>poky</filename> Git repository. 129 cloning the <filename>poky</filename> Git repository.
141 This example uses <filename>poky</filename> as the root directory of the 130 This example uses <filename>poky</filename> as the root directory of the
142 local Yocto Project files Git repository. 131 local source directory.
143 See the bulleted item 132 See the bulleted item
144 "<link linkend='local-yp-release'>Yocto Project Release</link>" 133 "<link linkend='local-yp-release'>Yocto Project Release</link>"
145 for information on how to get these files. 134 for information on how to get these files.
146 </para> 135 </para>
147 136
148 <para> 137 <para>
149 Once you have the repository set up, 138 Once you have source directory set up,
150 you have many development branches from which you can work. 139 you have many development branches from which you can work.
151 From inside the repository you can see the branch names and the tag names used 140 From inside the local repository you can see the branch names and the tag names used
152 in the Git repository using either of the following two commands: 141 in the upstream Git repository by using either of the following commands:
153 <literallayout class='monospaced'> 142 <literallayout class='monospaced'>
154 $ cd poky 143 $ cd poky
155 $ git branch -a 144 $ git branch -a
@@ -168,15 +157,15 @@
168 </section> 157 </section>
169 158
170 <section id='setting-up-the-poky-extras-git-repository'> 159 <section id='setting-up-the-poky-extras-git-repository'>
171 <title>Setting Up the poky-extras Git Repository</title> 160 <title>Setting Up the Local poky-extras Git Repository</title>
172 161
173 <para> 162 <para>
174 This example places the <filename>poky-extras</filename> Git repository inside 163 This example creates a local copy of the <filename>poky-extras</filename> Git
175 of <filename>poky</filename>. 164 repository inside the <filename>poky</filename> source directory.
176 See the bulleted item 165 See the bulleted item "<link linkend='poky-extras-repo'>The
177 "<link linkend='poky-extras-repo'>The
178 <filename>poky-extras</filename> Git Repository</link>" 166 <filename>poky-extras</filename> Git Repository</link>"
179 for information on how to get the <filename>poky-extras</filename> repository. 167 for information on how to set up a local copy of the
168 <filename>poky-extras</filename> repository.
180 </para> 169 </para>
181 170
182 <para> 171 <para>
@@ -369,7 +358,7 @@
369 <para> 358 <para>
370 Once the source code has been modified, you need to use Git to push the changes to 359 Once the source code has been modified, you need to use Git to push the changes to
371 the bare clone. 360 the bare clone.
372 If you do not push the changes, then the Yocto Project build system will not pick 361 If you do not push the changes, then the OpenEmbedded build system will not pick
373 up the changed source files. 362 up the changed source files.
374 </para> 363 </para>
375 364
@@ -386,7 +375,7 @@
386 375
387 <para> 376 <para>
388 At this point, the source has been changed and pushed. 377 At this point, the source has been changed and pushed.
389 The example now defines some variables used by the Yocto Project build system 378 The example now defines some variables used by the OpenEmbedded build system
390 to locate your kernel source. 379 to locate your kernel source.
391 You essentially need to identify where to find the kernel recipe and the changed source code. 380 You essentially need to identify where to find the kernel recipe and the changed source code.
392 You also need to be sure some basic configurations are in place that identify the 381 You also need to be sure some basic configurations are in place that identify the
@@ -447,12 +436,6 @@
447 <literallayout class='monospaced'> 436 <literallayout class='monospaced'>
448 KSRC_linux_yocto_3_2 ?= "/home/scottrif/linux-yocto-3.2.git" 437 KSRC_linux_yocto_3_2 ?= "/home/scottrif/linux-yocto-3.2.git"
449 </literallayout></para></listitem> 438 </literallayout></para></listitem>
450<!-- <listitem><para><emphasis>Specify the Kernel Machine:</emphasis> Also in the
451 <filename>linux-yocto_3.2.bbappend</filename> file, you need to specify
452 the kernel machine with the following statement:
453 <literallayout class='monospaced'>
454 KMACHINE_qemux86 = "standard/default/common-pc/base"
455 </literallayout></para></listitem> -->
456 </itemizedlist> 439 </itemizedlist>
457 </para> 440 </para>
458 441
@@ -494,7 +477,7 @@
494 $ bitbake -c cleanall linux-yocto 477 $ bitbake -c cleanall linux-yocto
495 </literallayout></para> 478 </literallayout></para>
496 <para><note>Never remove any files by hand from the <filename>tmp/deploy</filename> 479 <para><note>Never remove any files by hand from the <filename>tmp/deploy</filename>
497 directory insided the local Yocto Project files build directory. 480 directory insided the build directory.
498 Always use the BitBake <filename>cleanall</filename> task to clear 481 Always use the BitBake <filename>cleanall</filename> task to clear
499 out previous builds.</note></para></listitem> 482 out previous builds.</note></para></listitem>
500 <listitem><para>Next, build the kernel image using this command: 483 <listitem><para>Next, build the kernel image using this command:
@@ -539,7 +522,7 @@
539 <para> 522 <para>
540 If you took the time to work through the example that modifies the kernel source code 523 If you took the time to work through the example that modifies the kernel source code
541 in "<link linkend='modifying-the-kernel-source-code'>Modifying the Kernel Source 524 in "<link linkend='modifying-the-kernel-source-code'>Modifying the Kernel Source
542 Code</link>" you should already have the Yocto Project files set up on your 525 Code</link>" you should already have the source directory set up on your
543 host machine. 526 host machine.
544 If this is the case, go to the next section, which is titled 527 If this is the case, go to the next section, which is titled
545 "<link linkend='examining-the-default-config-smp-behavior'>Examining the Default 528 "<link linkend='examining-the-default-config-smp-behavior'>Examining the Default
@@ -548,21 +531,21 @@
548 </para> 531 </para>
549 532
550 <para> 533 <para>
551 If you don't have the Yocto Project files established on your system, 534 If you don't have the source directory established on your system,
552 you can get them through tarball extraction or by 535 you can get them through tarball extraction or by
553 cloning the <filename>poky</filename> Git repository. 536 cloning the <filename>poky</filename> Git repository.
554 This example uses <filename>poky</filename> as the root directory of the 537 This example uses <filename>poky</filename> as the root directory of the
555 local <link linkend='yocto-project-files'>Yocto Project Files</link> Git repository. 538 <link linkend='source-directory'>source directory</link>.
556 See the bulleted item 539 See the bulleted item
557 "<link linkend='local-yp-release'>Yocto Project Release</link>" 540 "<link linkend='local-yp-release'>Yocto Project Release</link>"
558 for information on how to get these files. 541 for information on how to get these files.
559 </para> 542 </para>
560 543
561 <para> 544 <para>
562 Once you have the repository set up, 545 Once you have the local copy of the repository set up,
563 you have many development branches from which you can work. 546 you have many development branches from which you can work.
564 From inside the repository you can see the branch names and the tag names used 547 From inside the repository you can see the branch names and the tag names used
565 in the Git repository using either of the following two commands: 548 in the upstream Git repository using either of the following commands:
566 <literallayout class='monospaced'> 549 <literallayout class='monospaced'>
567 $ cd poky 550 $ cd poky
568 $ git branch -a 551 $ git branch -a
@@ -680,7 +663,7 @@
680 to set kernel configurations. 663 to set kernel configurations.
681 You need to run <filename>menuconfig</filename> inside the Yocto BitBake environment. 664 You need to run <filename>menuconfig</filename> inside the Yocto BitBake environment.
682 Thus, the environment must be set up using the <filename>oe-init-build-env</filename> 665 Thus, the environment must be set up using the <filename>oe-init-build-env</filename>
683 script found in the Yocto Project files Git repository build directory. 666 script found in the build directory.
684 If you have not sourced this script do so with the following commands: 667 If you have not sourced this script do so with the following commands:
685 <literallayout class='monospaced'> 668 <literallayout class='monospaced'>
686 $ cd ~/poky 669 $ cd ~/poky
@@ -693,7 +676,7 @@
693 to use the tool to interactively change the kernel configuration. 676 to use the tool to interactively change the kernel configuration.
694 In this example, we are basing our changes on the <filename>linux-yocto-3.2</filename> 677 In this example, we are basing our changes on the <filename>linux-yocto-3.2</filename>
695 kernel. 678 kernel.
696 The Yocto Project build environment recognizes this kernel as 679 The OpenEmbedded build system recognizes this kernel as
697 <filename>linux-yocto</filename>. 680 <filename>linux-yocto</filename>.
698 Thus, the following commands from the shell in which you previously sourced the 681 Thus, the following commands from the shell in which you previously sourced the
699 environment initialization script cleans the shared state memory and the 682 environment initialization script cleans the shared state memory and the
@@ -727,8 +710,7 @@
727 is updated. 710 is updated.
728 This is the file that the build system uses to configure the Linux Yocto kernel 711 This is the file that the build system uses to configure the Linux Yocto kernel
729 when it is built. 712 when it is built.
730 You can find and examine this file in the Yocto Project Files Git repository in 713 You can find and examine this file in the build directory.
731 the build directory.
732 This example uses the following: 714 This example uses the following:
733 <literallayout class='monospaced'> 715 <literallayout class='monospaced'>
734 ~/poky/build/tmp/work/qemux86-poky-linux/linux-yocto-3.2.11+git1+84f... 716 ~/poky/build/tmp/work/qemux86-poky-linux/linux-yocto-3.2.11+git1+84f...
@@ -762,7 +744,7 @@
762 <note> 744 <note>
763 Be sure to make a copy of the <filename>.config</filename> and don't just 745 Be sure to make a copy of the <filename>.config</filename> and don't just
764 rename it. 746 rename it.
765 The Yocto Project build system needs an existing <filename>.config</filename> 747 The build system needs an existing <filename>.config</filename>
766 from which to work. 748 from which to work.
767 </note> 749 </note>
768 </para> 750 </para>