summaryrefslogtreecommitdiffstats
path: root/documentation/kernel-dev/kernel-dev-common.xml
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/kernel-dev/kernel-dev-common.xml')
-rw-r--r--documentation/kernel-dev/kernel-dev-common.xml149
1 files changed, 109 insertions, 40 deletions
diff --git a/documentation/kernel-dev/kernel-dev-common.xml b/documentation/kernel-dev/kernel-dev-common.xml
index eaf0146153..c6d1bdaac1 100644
--- a/documentation/kernel-dev/kernel-dev-common.xml
+++ b/documentation/kernel-dev/kernel-dev-common.xml
@@ -37,7 +37,8 @@
37 Source Directory. 37 Source Directory.
38 <note> 38 <note>
39 Be sure you check out the appropriate development branch or 39 Be sure you check out the appropriate development branch or
40 by tag to get the version of Yocto Project you want. 40 you create your local branch by checking out a specific tag
41 to get the desired version of Yocto Project.
41 See the 42 See the
42 "<ulink url='&YOCTO_DOCS_DEV_URL;#checking-out-by-branch-in-poky'>Checking Out by Branch in Poky</ulink>" 43 "<ulink url='&YOCTO_DOCS_DEV_URL;#checking-out-by-branch-in-poky'>Checking Out by Branch in Poky</ulink>"
43 and 44 and
@@ -120,14 +121,14 @@
120 as follows: 121 as follows:
121 <literallayout class='monospaced'> 122 <literallayout class='monospaced'>
122 $ cd ~/poky 123 $ cd ~/poky
123 $ yocto-layer create my-kernel -o ../meta-my-kernel 124 $ yocto-layer create mylayer -o ../meta-mylayer
124 Please enter the layer priority you'd like to use for the layer: [default: 6] 125 Please enter the layer priority you'd like to use for the layer: [default: 6]
125 Would you like to have an example recipe created? (y/n) [default: n] 126 Would you like to have an example recipe created? (y/n) [default: n]
126 Would you like to have an example bbappend file created? (y/n) [default: n] 127 Would you like to have an example bbappend file created? (y/n) [default: n]
127 128
128 New layer created in ../meta-my-kernel. 129 New layer created in ../meta-mylayer.
129 130
130 Don't forget to add it to your BBLAYERS (for details see ../meta-my-kernel/README). 131 Don't forget to add it to your BBLAYERS (for details see ../meta-mylayer/README).
131 </literallayout> 132 </literallayout>
132 </para></listitem> 133 </para></listitem>
133 <listitem><para> 134 <listitem><para>
@@ -140,7 +141,7 @@
140 as follows: 141 as follows:
141 <literallayout class='monospaced'> 142 <literallayout class='monospaced'>
142 $ cd ~/poky/build 143 $ cd ~/poky/build
143 $ bitbake-layers add-layer ../../meta-my-kernel 144 $ bitbake-layers add-layer ../../meta-mylayer
144 </literallayout> 145 </literallayout>
145 </para></listitem> 146 </para></listitem>
146 <listitem><para> 147 <listitem><para>
@@ -274,9 +275,15 @@
274 build environment script 275 build environment script
275 (i.e. <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>oe-init-build-env</filename></ulink> 276 (i.e. <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>oe-init-build-env</filename></ulink>
276 or 277 or
277 <ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>): 278 <ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>).
279 Also, for this example, be sure that the local branch
280 you have checked out for <filename>poky</filename> is
281 the Yocto Project &DISTRO_NAME; branch:
278 <literallayout class='monospaced'> 282 <literallayout class='monospaced'>
279 $ cd ~/poky 283 $ cd ~/poky
284 $ git branch
285 master
286 * &DISTRO_NAME;
280 $ source oe-init-build-env 287 $ source oe-init-build-env
281 </literallayout> 288 </literallayout>
282 <note> 289 <note>
@@ -322,14 +329,14 @@
322 as follows: 329 as follows:
323 <literallayout class='monospaced'> 330 <literallayout class='monospaced'>
324 $ cd ~/poky 331 $ cd ~/poky
325 $ yocto-layer create my-kernel -o ../meta-my-kernel 332 $ yocto-layer create mylayer -o ../meta-mylayer
326 Please enter the layer priority you'd like to use for the layer: [default: 6] 333 Please enter the layer priority you'd like to use for the layer: [default: 6]
327 Would you like to have an example recipe created? (y/n) [default: n] 334 Would you like to have an example recipe created? (y/n) [default: n]
328 Would you like to have an example bbappend file created? (y/n) [default: n] 335 Would you like to have an example bbappend file created? (y/n) [default: n]
329 336
330 New layer created in ../meta-my-kernel. 337 New layer created in ../meta-mylayer.
331 338
332 Don't forget to add it to your BBLAYERS (for details see ../meta-my-kernel/README). 339 Don't forget to add it to your BBLAYERS (for details see ../meta-mylayer/README).
333 </literallayout> 340 </literallayout>
334 </para></listitem> 341 </para></listitem>
335 <listitem><para> 342 <listitem><para>
@@ -342,7 +349,7 @@
342 as follows: 349 as follows:
343 <literallayout class='monospaced'> 350 <literallayout class='monospaced'>
344 $ cd ~/poky/build 351 $ cd ~/poky/build
345 $ bitbake-layers add-layer ../../meta-my-kernel 352 $ bitbake-layers add-layer ../../meta-mylayer
346 </literallayout> 353 </literallayout>
347 </para></listitem> 354 </para></listitem>
348 <listitem><para> 355 <listitem><para>
@@ -359,14 +366,25 @@
359 copy of the kernel Git repository outside of the 366 copy of the kernel Git repository outside of the
360 <ulink url='&YOCTO_DOCS_REF_URL;source-directory'>Source Directory</ulink>, 367 <ulink url='&YOCTO_DOCS_REF_URL;source-directory'>Source Directory</ulink>,
361 which is usually named <filename>poky</filename>. 368 which is usually named <filename>poky</filename>.
369 Also, be sure you are in the
370 <filename>standard/base</filename> branch.
362 </para> 371 </para>
363 372
364 <para> 373 <para>
365 The following commands show how to create a local copy 374 The following commands show how to create a local copy
366 of the <filename>linux-yocto-4.12</filename> kernel: 375 of the <filename>linux-yocto-4.12</filename> kernel and
376 be in the <filename>standard/base</filename> branch.
377 <note>
378 The <filename>linux-yocto-4.12</filename> kernel
379 can be used with the Yocto Project 2.4 release
380 and forward.
381 You cannot use the
382 <filename>linux-yocto-4.12</filename> kernel with
383 releases prior to Yocto Project 2.4:
384 </note>
367 <literallayout class='monospaced'> 385 <literallayout class='monospaced'>
368 $ cd ~ 386 $ cd ~
369 $ git clone git://git.yoctoproject.org/linux-yocto-4.12 linux-yocto-4.12 387 $ git clone git://git.yoctoproject.org/linux-yocto-4.12 --branch standard/base
370 Cloning into 'linux-yocto-4.12'... 388 Cloning into 'linux-yocto-4.12'...
371 remote: Counting objects: 6097195, done. 389 remote: Counting objects: 6097195, done.
372 remote: Compressing objects: 100% (901026/901026), done. 390 remote: Compressing objects: 100% (901026/901026), done.
@@ -377,6 +395,33 @@
377 Checking out files: 100% (59846/59846), done. 395 Checking out files: 100% (59846/59846), done.
378 </literallayout> 396 </literallayout>
379 </para></listitem> 397 </para></listitem>
398 <listitem><para>
399 <emphasis>Create a Local Copy of the Kernel Cache Git
400 Repository:</emphasis>
401 For simplicity, it is recommended that you create your
402 copy of the kernel cache Git repository outside of the
403 <ulink url='&YOCTO_DOCS_REF_URL;source-directory'>Source Directory</ulink>,
404 which is usually named <filename>poky</filename>.
405 Also, for this example, be sure you are in the
406 <filename>yocto-4.12</filename> branch.
407 </para>
408
409 <para>
410 The following commands show how to create a local copy
411 of the <filename>yocto-kernel-cache</filename> and
412 be in the <filename>yocto-4.12</filename> branch:
413 <literallayout class='monospaced'>
414 $ cd ~
415 $ git clone git://git.yoctoproject.org/yocto-kernel-cache --branch yocto-4.12
416 Cloning into 'yocto-kernel-cache'...
417 remote: Counting objects: 22639, done.
418 remote: Compressing objects: 100% (9761/9761), done.
419 remote: Total 22639 (delta 12400), reused 22586 (delta 12347)
420 Receiving objects: 100% (22639/22639), 22.34 MiB | 6.27 MiB/s, done.
421 Resolving deltas: 100% (12400/12400), done.
422 Checking connectivity... done.
423 </literallayout>
424 </para></listitem>
380 </orderedlist> 425 </orderedlist>
381 </para> 426 </para>
382 427
@@ -1076,18 +1121,18 @@
1076 command in the terminal used to work with the extensible 1121 command in the terminal used to work with the extensible
1077 SDK. 1122 SDK.
1078 This example uses the previously established layer named 1123 This example uses the previously established layer named
1079 <filename>meta-my-kernel</filename>. 1124 <filename>meta-mylayer</filename>.
1080 <note> 1125 <note>
1081 See Step 3 of the 1126 See Step 3 of the
1082 "<link linkend='getting-ready-to-develop-using-devtool'>Getting Ready to Develop using devtool</link>" 1127 "<link linkend='getting-ready-to-develop-using-devtool'>Getting Ready to Develop using devtool</link>"
1083 section for information on setting up this layer. 1128 section for information on setting up this layer.
1084 </note> 1129 </note>
1085 <literallayout class='monospaced'> 1130 <literallayout class='monospaced'>
1086 $ devtool finish linux-yocto /path/to/meta-my-kernel 1131 $ devtool finish linux-yocto /path/to/meta-mylayer
1087 </literallayout> 1132 </literallayout>
1088 Once the command finishes, the patches and the 1133 Once the command finishes, the patches and the
1089 <filename>.bbappend</filename> file are located in the 1134 <filename>.bbappend</filename> file are located in the
1090 <filename>~/meta-my-kernel/recipes-kernel/linux</filename> 1135 <filename>~/meta-mylayer/recipes-kernel/linux</filename>
1091 directory. 1136 directory.
1092 </para></listitem> 1137 </para></listitem>
1093 <listitem><para> 1138 <listitem><para>
@@ -1162,24 +1207,13 @@
1162 section. 1207 section.
1163 <orderedlist> 1208 <orderedlist>
1164 <listitem><para> 1209 <listitem><para>
1165 <emphasis>Know What Branch is Checked Out In Your Local 1210 <emphasis>Edit the Source Files</emphasis>
1166 Kernel Git Repository:</emphasis>
1167 Prior to this step, you should have used Git to create a 1211 Prior to this step, you should have used Git to create a
1168 local copy of the repository for your kernel. 1212 local copy of the repository for your kernel.
1169 Assuming you created the repository as directed in the 1213 Assuming you created the repository as directed in the
1170 "<link linkend='getting-ready-for-traditional-kernel-development'>Getting Ready for Traditional Kernel Development</link>" 1214 "<link linkend='getting-ready-for-traditional-kernel-development'>Getting Ready for Traditional Kernel Development</link>"
1171 section, use the following commands to check out the 1215 section, use the following commands to edit the
1172 <filename>standard/base</filename> branch of the 1216 <filename>calibrate.c</filename> file:
1173 Linux Yocto 4.12 kernel:
1174 <literallayout class='monospaced'>
1175 $ cd ~/linux-yocto-4.12
1176 $ git checkout -b standard/base origin/standard/base
1177 </literallayout>
1178 </para></listitem>
1179 <listitem><para>
1180 <emphasis>Edit the Source Files</emphasis>
1181 Follow these steps to make some simple changes to the source
1182 files:
1183 <orderedlist> 1217 <orderedlist>
1184 <listitem><para> 1218 <listitem><para>
1185 <emphasis>Change the working directory</emphasis>: 1219 <emphasis>Change the working directory</emphasis>:
@@ -1228,27 +1262,38 @@
1228 Build System will not pick up the changes. 1262 Build System will not pick up the changes.
1229 </para></listitem> 1263 </para></listitem>
1230 <listitem><para> 1264 <listitem><para>
1231 <emphasis>Update Your <filename>local.conf</filename> File to Point to Your Source Files:</emphasis> 1265 <emphasis>Update Your <filename>local.conf</filename> File
1266 to Point to Your Source Files:</emphasis>
1232 In addition to your <filename>local.conf</filename> file 1267 In addition to your <filename>local.conf</filename> file
1233 specifying to use "kernel-modules" and the "qemux86" machine, 1268 specifying to use "kernel-modules" and the "qemux86"
1234 it must also point to the updated kernel source files. 1269 machine, it must also point to the updated kernel source
1235 Add the following commands to your 1270 files.
1271 Add
1272 <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
1273 and
1274 <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>
1275 statements similar to the following to your
1236 <filename>local.conf</filename>: 1276 <filename>local.conf</filename>:
1237 <literallayout class='monospaced'> 1277 <literallayout class='monospaced'>
1238 $ cd ~/poky/build/conf 1278 $ cd ~/poky/build/conf
1239 </literallayout> 1279 </literallayout>
1240 Add the following to the <filename>local.conf</filename>: 1280 Add the following to the <filename>local.conf</filename>:
1241 <literallayout class='monospaced'> 1281 <literallayout class='monospaced'>
1242 SRC_URI_pn-linux-yocto = "git:///$HOME/linux-yocto-4.12;protocol=file;name=machine;branch=standard/base; \ 1282 SRC_URI_pn-linux-yocto = "git:///<replaceable>path-to</replaceable>/linux-yocto-4.12;protocol=file;name=machine;branch=standard/base; \
1243 git:///home/scottrif/yocto-kernel-cache;protocol=file;type=kmeta;name=meta;branch=yocto-4.12;destsuffix=${KMETA}" 1283 git:///<replaceable>path-to</replaceable>/yocto-kernel-cache;protocol=file;type=kmeta;name=meta;branch=yocto-4.12;destsuffix=${KMETA}"
1244 SRCREV_meta_qemux86 = "${AUTOREV}" 1284 SRCREV_meta_qemux86 = "${AUTOREV}"
1245 SRCREV_machine_qemux86 = "${AUTOREV}" 1285 SRCREV_machine_qemux86 = "${AUTOREV}"
1246 </literallayout> 1286 </literallayout>
1247 You must be sure to specify the correct branch and machine 1287 <note>
1248 types. 1288 Be sure to replace
1249 For this example, the branch is 1289 <replaceable>path-to</replaceable> with the pathname
1250 <filename>standard/base</filename> and the machine is 1290 to your local Git repositories.
1251 "qemux86". 1291 Also, you must be sure to specify the correct branch
1292 and machine types.
1293 For this example, the branch is
1294 <filename>standard/base</filename> and the machine is
1295 "qemux86".
1296 </note>
1252 </para></listitem> 1297 </para></listitem>
1253 <listitem><para> 1298 <listitem><para>
1254 <emphasis>Build the Image:</emphasis> 1299 <emphasis>Build the Image:</emphasis>
@@ -1268,6 +1313,7 @@
1268 When prompted to login to the QEMU console, use "root" 1313 When prompted to login to the QEMU console, use "root"
1269 with no password: 1314 with no password:
1270 <literallayout class='monospaced'> 1315 <literallayout class='monospaced'>
1316 $ cd ~/poky/build
1271 $ runqemu qemux86 1317 $ runqemu qemux86
1272 </literallayout> 1318 </literallayout>
1273 </para></listitem> 1319 </para></listitem>
@@ -1284,6 +1330,29 @@
1284 as part of the output when you scroll down the 1330 as part of the output when you scroll down the
1285 console window. 1331 console window.
1286 </para></listitem> 1332 </para></listitem>
1333 <listitem><para>
1334 <emphasis>Generate the Patch File:</emphasis>
1335 Once you are sure that your patch works correctly, you
1336 can generate a <filename>*.patch</filename> file in the
1337 kernel source repository:
1338 <literallayout class='monospaced'>
1339 $ cd ~/linux-yocto-4.12/init
1340 $ git format-patch -1
1341 0001-calibrate.c-Added-some-printk-statements.patch
1342 </literallayout>
1343 </para></listitem>
1344 <listitem><para>
1345 <emphasis>Prepare Your Layer for Subsequent Builds:</emphasis>
1346 In order for subsequent builds to pick up patches, the
1347 patches need to be stored in a layer.
1348 This example created the layer
1349 <filename>meta-mylayer</filename> earlier but left it
1350 pretty much empty.
1351 To get it ready for subsequent builds that automatically
1352 apply patches, follow the steps in the
1353 "<link linkend='creating-and-preparing-a-layer'>Creating and Preparing a Layer</link>"
1354 section.
1355 </para></listitem>
1287 </orderedlist> 1356 </orderedlist>
1288 </para> 1357 </para>
1289 </section> 1358 </section>