diff options
| author | Tom Zanussi <tom.zanussi@intel.com> | 2011-03-14 00:36:28 -0500 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-03-14 21:08:38 +0000 |
| commit | 4f5b57c67eec42f52a282f3d0dcafc0eff72cc3b (patch) | |
| tree | bd0ef51c6d4f7f35f286bddee0cd3266f636a969 | |
| parent | 5ef65bd11265d5eeb6f676624efb6bca18f3e46f (diff) | |
| download | poky-4f5b57c67eec42f52a282f3d0dcafc0eff72cc3b.tar.gz | |
documentation: Kernel Manual fixes
Upgraded to reflect 1.0 usage rather than 0.90 usage, and some other
clarifications and minor changes.
[RP - added tweaks suggested by Darren Hart]
(From OE-Core rev: c6f06f478ac229c4619f815b8b313711d47b1551)
Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | documentation/kernel-manual/kernel-how-to.xml | 124 |
1 files changed, 65 insertions, 59 deletions
diff --git a/documentation/kernel-manual/kernel-how-to.xml b/documentation/kernel-manual/kernel-how-to.xml index abb19f285c..3ca17465c4 100644 --- a/documentation/kernel-manual/kernel-how-to.xml +++ b/documentation/kernel-manual/kernel-how-to.xml | |||
| @@ -425,18 +425,18 @@ repository. | |||
| 425 | 425 | ||
| 426 | <literallayout class='monospaced'> | 426 | <literallayout class='monospaced'> |
| 427 | # full description of the changes | 427 | # full description of the changes |
| 428 | > git whatchanged <kernel type>..<bsp>-<kernel type> | 428 | > git whatchanged <kernel type>..<kernel type>/<bsp> |
| 429 | > eg: git whatchanged standard..common_pc-standard | 429 | > eg: git whatchanged yocto/standard/base..yocto/standard/common-pc/base |
| 430 | 430 | ||
| 431 | # summary of the changes | 431 | # summary of the changes |
| 432 | > git log --pretty=oneline --abbrev-commit <kernel type>..<bsp>-<kernel type> | 432 | > git log --pretty=oneline --abbrev-commit <kernel type>..<kernel type>/<bsp> |
| 433 | 433 | ||
| 434 | # source code changes (one combined diff) | 434 | # source code changes (one combined diff) |
| 435 | > git diff <kernel type>..<bsp>-<kernel type> | 435 | > git diff <kernel type>..<kernel type>/<bsp> |
| 436 | > git show <kernel type>..<bsp>-<kernel type> | 436 | > git show <kernel type>..<kernel type>/<bsp> |
| 437 | 437 | ||
| 438 | # dump individual patches per commit | 438 | # dump individual patches per commit |
| 439 | > git format-patch -o <dir> <kernel type>..<bsp>-<kernel type> | 439 | > git format-patch -o <dir> <kernel type>..<kernel type>/<bsp> |
| 440 | 440 | ||
| 441 | # determine the change history of a particular file | 441 | # determine the change history of a particular file |
| 442 | > git whatchanged <path to file> | 442 | > git whatchanged <path to file> |
| @@ -467,9 +467,9 @@ repository. | |||
| 467 | # determine which branches contain a feature | 467 | # determine which branches contain a feature |
| 468 | > git branch --contains <tag> | 468 | > git branch --contains <tag> |
| 469 | 469 | ||
| 470 | # show the changes in a kernel type - (0.9 examples) | 470 | # show the changes in a kernel type |
| 471 | > git whatchanged wrs_base..<kernel type> | 471 | > git whatchanged yocto/base..<kernel type> |
| 472 | > eg: git whatchanged wrs_base..standard | 472 | > eg: git whatchanged yocto/base..yocto/standard/base |
| 473 | </literallayout> | 473 | </literallayout> |
| 474 | 474 | ||
| 475 | <para> | 475 | <para> |
| @@ -733,10 +733,10 @@ repository. | |||
| 733 | 733 | ||
| 734 | <para> | 734 | <para> |
| 735 | For example, the following command pushes the changes from your local branch | 735 | For example, the following command pushes the changes from your local branch |
| 736 | <filename>common_pc-standard</filename> to the remote branch with the same name | 736 | <filename>yocto/standard/common-pc/base</filename> to the remote branch with the same name |
| 737 | in the master repository <filename>//git.mycompany.com/pub/git/kernel-2.6.27</filename>. | 737 | in the master repository <filename>//git.mycompany.com/pub/git/kernel-2.6.37</filename>. |
| 738 | <literallayout class='monospaced'> | 738 | <literallayout class='monospaced'> |
| 739 | > push ssh://git.mycompany.com/pub/git/kernel-2.6.27 common_pc-standard:common_pc-standard | 739 | > push ssh://git.mycompany.com/pub/git/kernel-2.6.37 yocto/standard/common-pc/base:yocto/standard/common-pc/base |
| 740 | </literallayout> | 740 | </literallayout> |
| 741 | </para> | 741 | </para> |
| 742 | 742 | ||
| @@ -866,9 +866,9 @@ repository. | |||
| 866 | 866 | ||
| 867 | <para> | 867 | <para> |
| 868 | The following commands illustrate some of the steps you could use to | 868 | The following commands illustrate some of the steps you could use to |
| 869 | import the common_pc-standard kernel into a secondary SCM: | 869 | import the yocto/standard/common-pc/base kernel into a secondary SCM: |
| 870 | <literallayout class='monospaced'> | 870 | <literallayout class='monospaced'> |
| 871 | > git checkout common_pc-standard | 871 | > git checkout yocto/standard/common-pc/base |
| 872 | > cd .. ; echo linux/.git > .cvsignore | 872 | > cd .. ; echo linux/.git > .cvsignore |
| 873 | > cvs import -m "initial import" linux MY_COMPANY start | 873 | > cvs import -m "initial import" linux MY_COMPANY start |
| 874 | </literallayout> | 874 | </literallayout> |
| @@ -881,8 +881,8 @@ repository. | |||
| 881 | <para> | 881 | <para> |
| 882 | The following commands illustrate how you can condense and merge two BSPs into a second SCM: | 882 | The following commands illustrate how you can condense and merge two BSPs into a second SCM: |
| 883 | <literallayout class='monospaced'> | 883 | <literallayout class='monospaced'> |
| 884 | > git checkout common_pc-standard | 884 | > git checkout yocto/standard/common-pc/base |
| 885 | > git merge common_pc_64-standard | 885 | > git merge yocto/standard/common-pc-64/base |
| 886 | # resolve any conflicts and commit them | 886 | # resolve any conflicts and commit them |
| 887 | > cd .. ; echo linux/.git > .cvsignore | 887 | > cd .. ; echo linux/.git > .cvsignore |
| 888 | > cvs import -m "initial import" linux MY_COMPANY start | 888 | > cvs import -m "initial import" linux MY_COMPANY start |
| @@ -1006,9 +1006,12 @@ That's it. Configure and build. | |||
| 1006 | <title>Creating a BSP Based on an Existing Similar BSP</title> | 1006 | <title>Creating a BSP Based on an Existing Similar BSP</title> |
| 1007 | 1007 | ||
| 1008 | <para> | 1008 | <para> |
| 1009 | This section provides an example for creating a BSP that is based on an existing, and hopefully, | 1009 | This section provides an example for creating a BSP |
| 1010 | similar one. | 1010 | that is based on an existing, and hopefully, similar |
| 1011 | Follow these steps and keep in mind your particular situation and differences: | 1011 | one. It assumes you will be using a local kernel |
| 1012 | repository and will be pointing the kernel recipe at | ||
| 1013 | that. Follow these steps and keep in mind your | ||
| 1014 | particular situation and differences: | ||
| 1012 | 1015 | ||
| 1013 | <orderedlist> | 1016 | <orderedlist> |
| 1014 | <listitem><para> | 1017 | <listitem><para> |
| @@ -1016,16 +1019,14 @@ That's it. Configure and build. | |||
| 1016 | </para> | 1019 | </para> |
| 1017 | 1020 | ||
| 1018 | <para> | 1021 | <para> |
| 1019 | You can start with something in <filename>meta/conf/machine</filename>. | 1022 | You can start with something in <filename>meta/conf/machine</filename> - <filename> |
| 1020 | Or, <filename>meta-emenlow/conf/machine</filename> has an example in its own layer. | 1023 | meta/conf/machine/atom-pc.conf</filename> for example. Or, you can start with a machine |
| 1024 | configuration from any of the BSP layers in the meta-intel repository at | ||
| 1025 | <ulink url='http://git.pokylinux.org/cgit/cgit.cgi/meta-intel/'></ulink>, such as | ||
| 1026 | <filename>meta-intel/meta-emenlow/conf/machine/emenlow.conf</filename>. | ||
| 1021 | </para> | 1027 | </para> |
| 1022 | 1028 | ||
| 1023 | <para> | 1029 | <para> |
| 1024 | The most up-to-date machines that are probably most similar to yours and that you might want | ||
| 1025 | to look at are <filename>meta/conf/machine/atom-pc.conf</filename> and | ||
| 1026 | <filename>meta-emenlow/conf/machine/emenlow.conf</filename>. | ||
| 1027 | Both of these files were either just added or upgraded to use the Yocto Project kernel | ||
| 1028 | at <ulink url='http://git.pokylinux.org/cgit/cgit.cgi/linux-2.6-windriver/'></ulink>. | ||
| 1029 | The main difference between the two is that "emenlow" is in its own layer. | 1030 | The main difference between the two is that "emenlow" is in its own layer. |
| 1030 | It is in its own layer because it needs extra machine-specific packages such as its | 1031 | It is in its own layer because it needs extra machine-specific packages such as its |
| 1031 | own video driver and other supporting packages. | 1032 | own video driver and other supporting packages. |
| @@ -1049,19 +1050,21 @@ That's it. Configure and build. | |||
| 1049 | <para> | 1050 | <para> |
| 1050 | As an example consider this: | 1051 | As an example consider this: |
| 1051 | <itemizedlist> | 1052 | <itemizedlist> |
| 1052 | <listitem><para>Copy meta-emenlow</para></listitem> | 1053 | <listitem><para>Copy meta-emenlow to meta-mymachine</para></listitem> |
| 1053 | <listitem><para>Fix or remove anything you do not need. | 1054 | <listitem><para>Fix or remove anything you do not need. |
| 1054 | For this example the only thing left was the kernel directory with a | 1055 | For this example the only thing left was the kernel directory with a |
| 1055 | <filename>linux-yocto-stable_git.bbappend</filename> file | 1056 | <filename>linux-yocto_git.bbappend</filename> |
| 1056 | (linux-yocto-stable is the kernel listed in | 1057 | file |
| 1057 | <filename>meta-crownbay/conf/machine/crownbay.conf</filename></para></listitem>. | 1058 | and <filename>meta-mymachine/conf/machine/mymachine.conf</filename> |
| 1059 | (linux-yocto is the kernel listed in | ||
| 1060 | <filename>meta-emenlow/conf/machine/emenlow.conf</filename>)</para></listitem>. | ||
| 1058 | <listitem><para>Add a new entry in the <filename>build/conf/bblayers.conf</filename> | 1061 | <listitem><para>Add a new entry in the <filename>build/conf/bblayers.conf</filename> |
| 1059 | so the new layer can be found by Bitbake.</para></listitem> | 1062 | so the new layer can be found by Bitbake.</para></listitem> |
| 1060 | </itemizedlist> | 1063 | </itemizedlist> |
| 1061 | </para></listitem> | 1064 | </para></listitem> |
| 1062 | 1065 | ||
| 1063 | <listitem><para> | 1066 | <listitem><para> |
| 1064 | Get an image with a working kernel built. | 1067 | Create a machine branch for your machine. |
| 1065 | </para> | 1068 | </para> |
| 1066 | 1069 | ||
| 1067 | <para> | 1070 | <para> |
| @@ -1070,58 +1073,52 @@ That's it. Configure and build. | |||
| 1070 | To create this branch first create a bare clone of the Yocto Project git repository. | 1073 | To create this branch first create a bare clone of the Yocto Project git repository. |
| 1071 | Next, create a local clone of that: | 1074 | Next, create a local clone of that: |
| 1072 | <literallayout class='monospaced'> | 1075 | <literallayout class='monospaced'> |
| 1073 | $ git clone --bare git://git.pokylinux.org/linux-2.6-windriver.git | 1076 | $ git clone --bare git://git.pokylinux.org/linux-yocto-2.6.37.git |
| 1074 | linux-2.6-windriver.git | 1077 | linux-yocto-2.6.37.git |
| 1075 | $ git clone linux-2.6-windriver.git linux-2.6-windriver | 1078 | $ git clone linux-yocto-2.6.37.git linux-yocto-2.6.37 |
| 1076 | </literallayout> | 1079 | </literallayout> |
| 1077 | </para> | 1080 | </para> |
| 1078 | 1081 | ||
| 1079 | <para> | 1082 | <para> |
| 1080 | Now create a branch in the local clone and push it to the bare clone: | 1083 | Now create a branch in the local clone and push it to the bare clone: |
| 1081 | <literallayout class='monospaced'> | 1084 | <literallayout class='monospaced'> |
| 1082 | $ git checkout -b crownbay-standard origin/standard | 1085 | $ git checkout -b yocto/standard/mymachine origin/yocto/standard/base |
| 1083 | $ git push origin crownbay-standard:crownbay-standard | 1086 | $ git push origin yocto/standard/mymachine:yocto/standard/mymachine |
| 1084 | </literallayout> | 1087 | </literallayout> |
| 1085 | </para> | ||
| 1086 | |||
| 1087 | <para> | ||
| 1088 | At this point, your git tree should compile. | ||
| 1089 | </para></listitem> | 1088 | </para></listitem> |
| 1090 | 1089 | ||
| 1091 | <listitem><para> | 1090 | <listitem><para> |
| 1092 | In a layer, create a <filename>linux-yocto-stable_git.bbappend</filename> | 1091 | In a layer, create a <filename>linux-yocto_git.bbappend</filename> |
| 1093 | file with the following: | 1092 | file with the following: |
| 1094 | </para> | 1093 | </para> |
| 1095 | 1094 | ||
| 1096 | <para> | 1095 | <para> |
| 1097 | <literallayout class='monospaced'> | 1096 | <literallayout class='monospaced'> |
| 1098 | COMPATIBLE_MACHINE = ${MACHINE} | 1097 | FILESEXTRAPATHS := "${THISDIR}/${PN}" |
| 1098 | COMPATIBLE_MACHINE_mymachine = "mymachine" | ||
| 1099 | 1099 | ||
| 1100 | # It is often nice to have a local clone of the kernel repository, to | 1100 | # It is often nice to have a local clone of the kernel repository, to |
| 1101 | # allow patches to be staged, branches created, and so forth. Modify | 1101 | # allow patches to be staged, branches created, and so forth. Modify |
| 1102 | # KSRC to point to your local clone as appropriate. | 1102 | # KSRC to point to your local clone as appropriate. |
| 1103 | 1103 | ||
| 1104 | # KSRC ?= /path/to/your/bare/clone/yocto-kernel | 1104 | KSRC ?= /path/to/your/bare/clone/for/example/linux-yocto-2.6.37.git |
| 1105 | 1105 | ||
| 1106 | # KMACHINE is the branch to be built, or alternateively | 1106 | # KMACHINE is the branch to be built, or alternatively |
| 1107 | # KBRANCH can be directly set. | 1107 | # KBRANCH can be directly set. |
| 1108 | # KBRANCH is set to KMACHINE in the main linux-yocto_git.bb | ||
| 1109 | # KBRANCH ?= "${LINUX_KERNEL_TYPE}/${KMACHINE}" | ||
| 1108 | 1110 | ||
| 1109 | # KBRANCH ?= "${KMACHINE}-${LINUX_KERNEL_TYPE}" | 1111 | KMACHINE_mymachine = "yocto/standard/mymachine" |
| 1110 | 1112 | ||
| 1111 | # SRC_URI = "git://${KSRC};nocheckout=1;branch=${KBRANCH},meta;name=machine,meta" | 1113 | SRC_URI = "git://${KSRC};nocheckout=1;branch=${KBRANCH},meta;name=machine,meta" |
| 1112 | </literallayout> | 1114 | </literallayout> |
| 1113 | </para> | 1115 | </para> |
| 1114 | 1116 | ||
| 1115 | <para> | 1117 | <para> |
| 1116 | In the previous sample file you need to update and remove the comment from | ||
| 1117 | the KSRC assignment and also remove the comment from the SRC_URI line. | ||
| 1118 | </para> | ||
| 1119 | |||
| 1120 | <para> | ||
| 1121 | After doing that, select the machine in <filename>build/conf/local.conf</filename>: | 1118 | After doing that, select the machine in <filename>build/conf/local.conf</filename>: |
| 1122 | <literallayout class='monospaced'> | 1119 | <literallayout class='monospaced'> |
| 1123 | # | 1120 | # |
| 1124 | MACHINE ?= "crownbay" | 1121 | MACHINE ?= "mymachine" |
| 1125 | # | 1122 | # |
| 1126 | </literallayout> | 1123 | </literallayout> |
| 1127 | </para> | 1124 | </para> |
| @@ -1131,6 +1128,10 @@ That's it. Configure and build. | |||
| 1131 | <literallayout class='monospaced'> | 1128 | <literallayout class='monospaced'> |
| 1132 | $ bitbake poky-image-sato-live | 1129 | $ bitbake poky-image-sato-live |
| 1133 | </literallayout> | 1130 | </literallayout> |
| 1131 | </para></listitem> | ||
| 1132 | |||
| 1133 | <listitem><para> | ||
| 1134 | Modify the kernel configuration for your machine. | ||
| 1134 | </para> | 1135 | </para> |
| 1135 | 1136 | ||
| 1136 | <para> | 1137 | <para> |
| @@ -1149,17 +1150,22 @@ That's it. Configure and build. | |||
| 1149 | And, another <filename>.cfg</filename> file would contain: | 1150 | And, another <filename>.cfg</filename> file would contain: |
| 1150 | <literallayout class='monospaced'> | 1151 | <literallayout class='monospaced'> |
| 1151 | CONFIG_LOG_BUF_SHIFT=18 | 1152 | CONFIG_LOG_BUF_SHIFT=18 |
| 1153 | </literallayout> | ||
| 1152 | 1154 | ||
| 1153 | http://git.pokylinux.org/cgit/cgit.cgi/linux-2.6-windriver/ | 1155 | <para> |
| 1156 | These config fragments could then be picked up and | ||
| 1157 | applied to the kernel .config by appending them to the kernel SRC_URI: | ||
| 1158 | </para> | ||
| 1154 | 1159 | ||
| 1155 | SRC_URI_append_crownbay = " file://some.cfg \ | 1160 | <literallayout class='monospaced'> |
| 1161 | SRC_URI_append_mymachine = " file://some.cfg \ | ||
| 1156 | file://other.cfg \ | 1162 | file://other.cfg \ |
| 1157 | " | 1163 | " |
| 1158 | </literallayout> | 1164 | </literallayout> |
| 1159 | </para> | 1165 | </para> |
| 1160 | 1166 | ||
| 1161 | <para> | 1167 | <para> |
| 1162 | You could also add these directly to the git repository <filename>wrs_meta</filename> | 1168 | You could also add these directly to the git repository <filename>meta</filename> |
| 1163 | branch as well. | 1169 | branch as well. |
| 1164 | However, the former method is a simple starting point. | 1170 | However, the former method is a simple starting point. |
| 1165 | </para></listitem> | 1171 | </para></listitem> |
| @@ -1173,7 +1179,7 @@ That's it. Configure and build. | |||
| 1173 | <para> | 1179 | <para> |
| 1174 | Practically speaking, to generate the patches, you'd go to the source in the build tree: | 1180 | Practically speaking, to generate the patches, you'd go to the source in the build tree: |
| 1175 | <literallayout class='monospaced'> | 1181 | <literallayout class='monospaced'> |
| 1176 | build/tmp/work/crownbay-poky-linux/linux-yocto-2.6.34+git0+d1cd5c80ee97e81e130be8c3de3965b770f320d6_0+ | 1182 | build/tmp/work/mymachine-poky-linux/linux-yocto-2.6.37+git0+d1cd5c80ee97e81e130be8c3de3965b770f320d6_0+ |
| 1177 | 0431115c9d720fee5bb105f6a7411efb4f851d26-r13/linux | 1183 | 0431115c9d720fee5bb105f6a7411efb4f851d26-r13/linux |
| 1178 | </literallayout> | 1184 | </literallayout> |
| 1179 | </para> | 1185 | </para> |
| @@ -1182,7 +1188,7 @@ That's it. Configure and build. | |||
| 1182 | Then, modify the code there, using quilt to save the changes, and recompile until | 1188 | Then, modify the code there, using quilt to save the changes, and recompile until |
| 1183 | it works: | 1189 | it works: |
| 1184 | <literallayout class='monospaced'> | 1190 | <literallayout class='monospaced'> |
| 1185 | $ bitbake -c compile -f linux-yocto-stable | 1191 | $ bitbake -c compile -f linux-yocto |
| 1186 | </literallayout> | 1192 | </literallayout> |
| 1187 | </para></listitem> | 1193 | </para></listitem> |
| 1188 | 1194 | ||
| @@ -1191,7 +1197,7 @@ That's it. Configure and build. | |||
| 1191 | SRC_URI location. | 1197 | SRC_URI location. |
| 1192 | The patch is applied the next time you do a clean build. | 1198 | The patch is applied the next time you do a clean build. |
| 1193 | Of course, since you have a branch for the BSP in git, it would be better to put it there instead. | 1199 | Of course, since you have a branch for the BSP in git, it would be better to put it there instead. |
| 1194 | For example, in this case, commit the patch to the "crownbay-standard" branch, and during the | 1200 | For example, in this case, commit the patch to the "yocto/standard/mymachine" branch, and during the |
| 1195 | next build it is applied from there. | 1201 | next build it is applied from there. |
| 1196 | </para></listitem> | 1202 | </para></listitem> |
| 1197 | </orderedlist> | 1203 | </orderedlist> |
