diff options
-rw-r--r-- | documentation/kernel-manual/kernel-how-to.xml | 100 |
1 files changed, 60 insertions, 40 deletions
diff --git a/documentation/kernel-manual/kernel-how-to.xml b/documentation/kernel-manual/kernel-how-to.xml index c4f6474ac8..7afbb1cb25 100644 --- a/documentation/kernel-manual/kernel-how-to.xml +++ b/documentation/kernel-manual/kernel-how-to.xml | |||
@@ -1021,62 +1021,76 @@ That's it. Configure and build. | |||
1021 | </para> | 1021 | </para> |
1022 | 1022 | ||
1023 | <para> | 1023 | <para> |
1024 | You can start with something in <filename>meta/conf/machine</filename> - <filename> | 1024 | You can start with a machine configuration file in the Yocto Project source tree |
1025 | meta/conf/machine/atom-pc.conf</filename> for example. Or, you can start with a machine | 1025 | such as the <filename>atom-pc.conf</filename> in <filename>meta-yocto/conf/machine</filename>. |
1026 | configuration from any of the BSP layers in the meta-intel repository at | 1026 | Or, you can start with a machine configuration file from a BSP layer |
1027 | <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/'></ulink>, such as | 1027 | such as <filename>emenlow.conf</filename> in <filename>meta-emenlow/conf/machine</filename>. |
1028 | <filename>meta-intel/meta-emenlow/conf/machine/emenlow.conf</filename>. | ||
1029 | </para> | 1028 | </para> |
1030 | 1029 | ||
1031 | <para> | 1030 | <para> |
1032 | The main difference between the two is that "emenlow" is in its own layer. | 1031 | The main difference between these two BSP machine configuration files is that "emenlow" is |
1033 | It is in its own layer because it needs extra machine-specific packages such as its | 1032 | in its own isolated BSP layer, while "atom-pc" is in a more encompassing layer |
1034 | own video driver and other supporting packages. | 1033 | named <filename>meta-yocto</filename> that is part of the Yocto Project source tree. |
1035 | The "atom-pc" is simpler and does not need any special packages - everything it needs can | 1034 | The "emenlow" configuration is in its own BSP layer because the target hardware |
1036 | be specified in the configuration file. | 1035 | needs extra machine-specific packages to support graphics and other features. |
1036 | The "atom-pc" configuration file supports more basic hardware that does not need any | ||
1037 | special packages - everything the hardware needs can be specified in the configuration file. | ||
1037 | The "atom-pc" machine also supports all of Asus eee901, Acer Aspire One, Toshiba NB305, | 1038 | The "atom-pc" machine also supports all of Asus eee901, Acer Aspire One, Toshiba NB305, |
1038 | and the Intel® Embedded Development Board 1-N450 with no changes. | 1039 | and the Intel® Embedded Development Board 1-N450 with no changes. |
1039 | </para> | 1040 | </para> |
1040 | 1041 | ||
1041 | <para> | 1042 | <para> |
1042 | If you want to make minor changes to support a slightly different machine, you can | 1043 | If you want to make minor changes to support a slightly different machine, you can |
1043 | create a new configuration file for it and add it alongside the others. | 1044 | create a new configuration file for the new machine and add it alongside the |
1044 | You might consider keeping the common information separate and including it. | 1045 | configuration files. |
1046 | You might consider keeping common configurations for several machines in a separate file | ||
1047 | and then including the other configuration files that have more specific configurations. | ||
1045 | </para> | 1048 | </para> |
1046 | 1049 | ||
1047 | <para> | 1050 | <para> |
1048 | Similarly, you can also use multiple configuration files for different machines even | 1051 | Similarly, you can also use multiple configuration files for different machines even |
1049 | if you do it as a separate layer like meta-emenlow. | 1052 | when the configuration files come from a separate and different layer. |
1050 | </para> | 1053 | </para> |
1051 | 1054 | ||
1052 | <para> | 1055 | <para> |
1053 | As an example consider this: | 1056 | As an example consider this: |
1054 | <itemizedlist> | 1057 | <orderedlist> |
1055 | <listitem><para>Copy meta-emenlow to meta-mymachine</para></listitem> | 1058 | <listitem><para>Copy the "emenlow" BSP layer to a new BSP layer named |
1056 | <listitem><para>Fix or remove anything you do not need. | 1059 | <filename>meta-mymachine</filename>. |
1057 | For this example the only thing left was the kernel directory with a | 1060 | Now you have two identical BSP layers ‐ but with different names.</para></listitem> |
1058 | <filename>linux-yocto_git.bbappend</filename> | 1061 | <listitem><para>This example assumes you only need to change some machine |
1059 | file | 1062 | configurations and inform the Yocto Project build process of the new layer. |
1060 | and <filename>meta-mymachine/conf/machine/mymachine.conf</filename> | 1063 | Consequently, modify the new layer's structure so that all it contains |
1061 | (linux-yocto is the kernel listed in | 1064 | is the <filename>linux-yocto_git.bbappend</filename> file in the |
1062 | <filename>meta-emenlow/conf/machine/emenlow.conf</filename>)</para></listitem>. | 1065 | <filename>meta-mymachine/recipes-kernel/linux</filename> directory |
1063 | <listitem><para>Add a new entry in the <filename>build/conf/bblayers.conf</filename> | 1066 | and the <filename>emenlow.conf</filename> configuration file in the |
1064 | so the new layer can be found by BitBake.</para></listitem> | 1067 | <filename>meta-mymachine/conf/machine</filename> directory. |
1065 | </itemizedlist> | 1068 | Note that "linux-yocto" is the kernel specified in the <filename>mymachine.conf</filename> |
1069 | configuration file.</para></listitem>. | ||
1070 | <listitem><para>Rename the <filename>emenlow.conf</filename> file to <filename>mymachine.conf</filename> | ||
1071 | and fix or remove any configurations.</para></listitem> | ||
1072 | <listitem><para>Make sure the Yocto Project build process knows about the new BSP | ||
1073 | layer by adding the layer to the <filename>bblayers.conf</filename> configuration | ||
1074 | file located in the Yocto Project build tree at <filename>build/conf/bblayers.conf</filename>. | ||
1075 | Adding the layer allows Bitbake to find the new layer. | ||
1076 | You also need to edit the <filename>layer.conf</filename> file located in the | ||
1077 | <filename>meta-mymachine/conf</filename> directory such that "mymachine" replaces | ||
1078 | "emenlow".</para></listitem> | ||
1079 | </orderedlist> | ||
1066 | </para></listitem> | 1080 | </para></listitem> |
1067 | 1081 | ||
1068 | <listitem><para> | 1082 | <listitem><para> |
1069 | Create a machine branch for your machine. | 1083 | Create a machine branch for your machine in a the Yocto Project git repository. |
1070 | </para> | 1084 | </para> |
1071 | 1085 | ||
1072 | <para> | 1086 | <para> |
1073 | For the kernel to compile successfully, you need to create a branch in the git repository | 1087 | For the kernel to compile successfully, you need to create a branch in the |
1074 | specifically named for your machine. | 1088 | Yocto Project git repository that is specifically named for your machine. |
1075 | To create this branch first create a bare clone of the Yocto Project git repository. | 1089 | To create this branch, first create a bare clone of the Yocto Project git repository. |
1076 | Next, create a local clone of that: | 1090 | Then, create a local clone of that bare clone. |
1091 | Here are the commands: | ||
1077 | <literallayout class='monospaced'> | 1092 | <literallayout class='monospaced'> |
1078 | $ git clone --bare git://git.yoctoproject.org/linux-yocto-2.6.37.git | 1093 | $ git clone --bare git://git.yoctoproject.org/linux-yocto-2.6.37.git linux-yocto-2.6.37.git |
1079 | linux-yocto-2.6.37.git | ||
1080 | $ git clone linux-yocto-2.6.37.git linux-yocto-2.6.37 | 1094 | $ git clone linux-yocto-2.6.37.git linux-yocto-2.6.37 |
1081 | </literallayout> | 1095 | </literallayout> |
1082 | </para> | 1096 | </para> |
@@ -1090,8 +1104,12 @@ That's it. Configure and build. | |||
1090 | </para></listitem> | 1104 | </para></listitem> |
1091 | 1105 | ||
1092 | <listitem><para> | 1106 | <listitem><para> |
1093 | In a layer, create a <filename>linux-yocto_git.bbappend</filename> | 1107 | In your new layer you need to edit the <filename>linux-yocto_git.bbappend</filename> |
1094 | file with the following: | 1108 | file so that the compatible machine is "mymachine". |
1109 | It is also convenient point to a cloned Yocto Project git repository that is local | ||
1110 | to your system for development purposes. | ||
1111 | Thus, change the <filename>linux-yocto_git.bbappend</filename> file in your | ||
1112 | <filename>meta-mymachine</filename> layer to the following: | ||
1095 | </para> | 1113 | </para> |
1096 | 1114 | ||
1097 | <para> | 1115 | <para> |
@@ -1099,11 +1117,11 @@ That's it. Configure and build. | |||
1099 | FILESEXTRAPATHS := "${THISDIR}/${PN}" | 1117 | FILESEXTRAPATHS := "${THISDIR}/${PN}" |
1100 | COMPATIBLE_MACHINE_mymachine = "mymachine" | 1118 | COMPATIBLE_MACHINE_mymachine = "mymachine" |
1101 | 1119 | ||
1102 | # It is often nice to have a local clone of the kernel repository, to | 1120 | # It is often nice to have a clone of the kernel repository, to |
1103 | # allow patches to be staged, branches created, and so forth. Modify | 1121 | # allow patches to be staged, branches created, and so forth. Modify |
1104 | # KSRC to point to your local clone as appropriate. | 1122 | # KSRC to point to your bare clone as appropriate. |
1105 | 1123 | ||
1106 | KSRC ?= /path/to/your/bare/clone/for/example/linux-yocto-2.6.37.git | 1124 | KSRC ?= $MYWORK/linux-yocto-2.6.37.git |
1107 | 1125 | ||
1108 | # KMACHINE is the branch to be built, or alternatively | 1126 | # KMACHINE is the branch to be built, or alternatively |
1109 | # KBRANCH can be directly set. | 1127 | # KBRANCH can be directly set. |
@@ -1117,7 +1135,9 @@ That's it. Configure and build. | |||
1117 | </para> | 1135 | </para> |
1118 | 1136 | ||
1119 | <para> | 1137 | <para> |
1120 | After doing that, select the machine in <filename>build/conf/local.conf</filename>: | 1138 | After updating the <filename>linux-yocto_git.bbappend</filename> file, |
1139 | edit the <filename>build/conf/local.conf</filename> found | ||
1140 | in the Yocto Project build tree so that it selects your machine: | ||
1121 | <literallayout class='monospaced'> | 1141 | <literallayout class='monospaced'> |
1122 | # | 1142 | # |
1123 | MACHINE ?= "mymachine" | 1143 | MACHINE ?= "mymachine" |
@@ -1137,7 +1157,7 @@ That's it. Configure and build. | |||
1137 | </para> | 1157 | </para> |
1138 | 1158 | ||
1139 | <para> | 1159 | <para> |
1140 | Of course, that will give you a kernel with the default configuration file, which is probably | 1160 | At this point you will build a kernel with the default configuration file, which is probably |
1141 | not what you want. | 1161 | not what you want. |
1142 | If you just want to set some kernel configuration options, you can do that by | 1162 | If you just want to set some kernel configuration options, you can do that by |
1143 | putting them in a file. | 1163 | putting them in a file. |
@@ -1155,7 +1175,7 @@ That's it. Configure and build. | |||
1155 | </literallayout> | 1175 | </literallayout> |
1156 | 1176 | ||
1157 | <para> | 1177 | <para> |
1158 | These config fragments could then be picked up and | 1178 | These configuration fragments could then be picked up and |
1159 | applied to the kernel .config by appending them to the kernel SRC_URI: | 1179 | applied to the kernel .config by appending them to the kernel SRC_URI: |
1160 | </para> | 1180 | </para> |
1161 | 1181 | ||