summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--documentation/kernel-dev/kernel-dev-advanced.xml70
-rw-r--r--documentation/kernel-dev/kernel-dev-intro.xml87
2 files changed, 91 insertions, 66 deletions
diff --git a/documentation/kernel-dev/kernel-dev-advanced.xml b/documentation/kernel-dev/kernel-dev-advanced.xml
index b754cb9791..8b626e5ec9 100644
--- a/documentation/kernel-dev/kernel-dev-advanced.xml
+++ b/documentation/kernel-dev/kernel-dev-advanced.xml
@@ -7,14 +7,14 @@
7<title>Working with Advanced Metadata</title> 7<title>Working with Advanced Metadata</title>
8 8
9 <para> 9 <para>
10 In addition to configuration fragments and patches, the 10 In addition to supporting configuration fragments and patches, the
11 Yocto Project kernel tools support rich metadata that you can 11 Yocto Project kernel tools also support rich
12 use to define complex policies and BSP support. 12 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink> that you can
13 The purpose of the metadata and the tools to manage it, known as 13 use to define complex policies and Board Support Package (BSP) support.
14 The purpose of the Metadata and the tools that manage it, known as
14 the kern-tools (<filename>kern-tools-native_git.bb</filename>), is 15 the kern-tools (<filename>kern-tools-native_git.bb</filename>), is
15 to assist in managing the complexity of the configuration and sources 16 to help you manage the complexity of the configuration and sources
16 in support of multiple Board Support Packages (BSPs) and Linux kernel 17 used to support multiple BSPs and Linux kernel types.
17 types.
18 </para> 18 </para>
19 19
20 <para> 20 <para>
@@ -602,7 +602,7 @@ git repository:
602 or <filename>meta/cfg/kernel-cache/</filename> if you are creating 602 or <filename>meta/cfg/kernel-cache/</filename> if you are creating
603 metadata in-tree as described in 603 metadata in-tree as described in
604 the "<link linkend='in-tree-metadata'>In-Tree Metadata</link>" section. 604 the "<link linkend='in-tree-metadata'>In-Tree Metadata</link>" section.
605 </para> 605 </para>
606 606
607 <para> 607 <para>
608 Original text: 608 Original text:
@@ -920,12 +920,12 @@ will want to specify in the KERNEL_FEATURES variable of the Linux kernel recipe
920 <literallayout class='monospaced'> 920 <literallayout class='monospaced'>
921 # Include this kernel type fragment to get the standard features and 921 # Include this kernel type fragment to get the standard features and
922 # configuration values. 922 # configuration values.
923 923
924 # Include all standard features 924 # Include all standard features
925 include standard-nocfg.scc 925 include standard-nocfg.scc
926 926
927 kconf non-hardware standard.cfg 927 kconf non-hardware standard.cfg
928 928
929 # individual cfg block section 929 # individual cfg block section
930 include cfg/fs/devtmpfs.scc 930 include cfg/fs/devtmpfs.scc
931 include cfg/fs/debugfs.scc 931 include cfg/fs/debugfs.scc
@@ -933,7 +933,7 @@ will want to specify in the KERNEL_FEATURES variable of the Linux kernel recipe
933 include cfg/fs/ext2.scc 933 include cfg/fs/ext2.scc
934 include cfg/fs/ext3.scc 934 include cfg/fs/ext3.scc
935 include cfg/fs/ext4.scc 935 include cfg/fs/ext4.scc
936 936
937 include cfg/net/ipv6.scc 937 include cfg/net/ipv6.scc
938 include cfg/net/ip_nf.scc 938 include cfg/net/ip_nf.scc
939 include cfg/net/ip6_nf.scc 939 include cfg/net/ip6_nf.scc
@@ -967,7 +967,7 @@ fragments together with any patches you want to use for all Linux kernel builds
967of the specified ktype. In short, ktypes are where you define a high-level 967of the specified ktype. In short, ktypes are where you define a high-level
968kernel policy. Syntactically, however, they are no different than features (see 968kernel policy. Syntactically, however, they are no different than features (see
9693.3.3). preempt-rt, and tiny. The ktype is selected by the LINUX_KERNEL_TYPE 9693.3.3). preempt-rt, and tiny. The ktype is selected by the LINUX_KERNEL_TYPE
970variable in the recipe (see 3.1). 970variable in the recipe (see 3.1).
971 971
972By way of example, the linux-yocto-3.4 tree defines three ktypes: standard, 972By way of example, the linux-yocto-3.4 tree defines three ktypes: standard,
973tiny, and preempt-rt. The standard kernel type includes the generic Linux kernel 973tiny, and preempt-rt. The standard kernel type includes the generic Linux kernel
@@ -983,12 +983,12 @@ not currently include any source changes, but it may in the future.
983The standard ktype is defined by standard.scc: 983The standard ktype is defined by standard.scc:
984 # Include this kernel type fragment to get the standard features and 984 # Include this kernel type fragment to get the standard features and
985 # configuration values. 985 # configuration values.
986 986
987 # Include all standard features 987 # Include all standard features
988 include standard-nocfg.scc 988 include standard-nocfg.scc
989 989
990 kconf non-hardware standard.cfg 990 kconf non-hardware standard.cfg
991 991
992 # individual cfg block section 992 # individual cfg block section
993 include cfg/fs/devtmpfs.scc 993 include cfg/fs/devtmpfs.scc
994 include cfg/fs/debugfs.scc 994 include cfg/fs/debugfs.scc
@@ -996,7 +996,7 @@ The standard ktype is defined by standard.scc:
996 include cfg/fs/ext2.scc 996 include cfg/fs/ext2.scc
997 include cfg/fs/ext3.scc 997 include cfg/fs/ext3.scc
998 include cfg/fs/ext4.scc 998 include cfg/fs/ext4.scc
999 999
1000 include cfg/net/ipv6.scc 1000 include cfg/net/ipv6.scc
1001 include cfg/net/ip_nf.scc 1001 include cfg/net/ip_nf.scc
1002 include cfg/net/ip6_nf.scc 1002 include cfg/net/ip6_nf.scc
@@ -1092,7 +1092,7 @@ Note: It is not strictly necessary to create a ktype scc file. The BSP file can
1092 <literallayout class='monospaced'> 1092 <literallayout class='monospaced'>
1093 fri2.scc: 1093 fri2.scc:
1094 kconf hardware fri2.cfg 1094 kconf hardware fri2.cfg
1095 1095
1096 include cfg/x86.scc 1096 include cfg/x86.scc
1097 include features/eg20t/eg20t.scc 1097 include features/eg20t/eg20t.scc
1098 include cfg/dmaengine.scc 1098 include cfg/dmaengine.scc
@@ -1119,19 +1119,19 @@ Note: It is not strictly necessary to create a ktype scc file. The BSP file can
1119 define KMACHINE fri2 1119 define KMACHINE fri2
1120 define KTYPE standard 1120 define KTYPE standard
1121 define KARCH i386 1121 define KARCH i386
1122 1122
1123 include ktypes/standard/standard.scc 1123 include ktypes/standard/standard.scc
1124 branch fri2 1124 branch fri2
1125 1125
1126 git merge emgd-1.14 1126 git merge emgd-1.14
1127 1127
1128 include fri2.scc 1128 include fri2.scc
1129 1129
1130 # Extra fri2 configs above the minimal defined in fri2.scc 1130 # Extra fri2 configs above the minimal defined in fri2.scc
1131 include cfg/efi-ext.scc 1131 include cfg/efi-ext.scc
1132 include features/drm-emgd/drm-emgd.scc 1132 include features/drm-emgd/drm-emgd.scc
1133 include cfg/vesafb.scc 1133 include cfg/vesafb.scc
1134 1134
1135 # default policy for standard kernels 1135 # default policy for standard kernels
1136 include cfg/usb-mass-storage.scc 1136 include cfg/usb-mass-storage.scc
1137 </literallayout> 1137 </literallayout>
@@ -1162,10 +1162,10 @@ Note: It is not strictly necessary to create a ktype scc file. The BSP file can
1162 define KMACHINE fri2 1162 define KMACHINE fri2
1163 define KTYPE tiny 1163 define KTYPE tiny
1164 define KARCH i386 1164 define KARCH i386
1165 1165
1166 include ktypes/tiny/tiny.scc 1166 include ktypes/tiny/tiny.scc
1167 branch fri2 1167 branch fri2
1168 1168
1169 include fri2.scc 1169 include fri2.scc
1170 </literallayout> 1170 </literallayout>
1171 As you might expect, the tiny description includes quite a bit less. 1171 As you might expect, the tiny description includes quite a bit less.
@@ -1236,7 +1236,7 @@ BSP definitions from the linux-yocto-3.4 repository:
1236 1236
1237fri2.scc: 1237fri2.scc:
1238 kconf hardware fri2.cfg 1238 kconf hardware fri2.cfg
1239 1239
1240 include cfg/x86.scc 1240 include cfg/x86.scc
1241 include features/eg20t/eg20t.scc 1241 include features/eg20t/eg20t.scc
1242 include cfg/dmaengine.scc 1242 include cfg/dmaengine.scc
@@ -1257,19 +1257,19 @@ fri2-standard.scc:
1257 define KMACHINE fri2 1257 define KMACHINE fri2
1258 define KTYPE standard 1258 define KTYPE standard
1259 define KARCH i386 1259 define KARCH i386
1260 1260
1261 include ktypes/standard/standard.scc 1261 include ktypes/standard/standard.scc
1262 branch fri2 1262 branch fri2
1263 1263
1264 git merge emgd-1.14 1264 git merge emgd-1.14
1265 1265
1266 include fri2.scc 1266 include fri2.scc
1267 1267
1268 # Extra fri2 configs above the minimal defined in fri2.scc 1268 # Extra fri2 configs above the minimal defined in fri2.scc
1269 include cfg/efi-ext.scc 1269 include cfg/efi-ext.scc
1270 include features/drm-emgd/drm-emgd.scc 1270 include features/drm-emgd/drm-emgd.scc
1271 include cfg/vesafb.scc 1271 include cfg/vesafb.scc
1272 1272
1273 # default policy for standard kernels 1273 # default policy for standard kernels
1274 include cfg/usb-mass-storage.scc 1274 include cfg/usb-mass-storage.scc
1275 1275
@@ -1291,10 +1291,10 @@ fri2-tiny.scc:
1291 define KMACHINE fri2 1291 define KMACHINE fri2
1292 define KTYPE tiny 1292 define KTYPE tiny
1293 define KARCH i386 1293 define KARCH i386
1294 1294
1295 include ktypes/tiny/tiny.scc 1295 include ktypes/tiny/tiny.scc
1296 branch fri2 1296 branch fri2
1297 1297
1298 include fri2.scc 1298 include fri2.scc
1299 1299
1300As you might expect, the tiny description includes quite a bit less. In fact, 1300As you might expect, the tiny description includes quite a bit less. In fact,
@@ -1435,9 +1435,9 @@ include them in the BSP description for the board(s) that require them (see
1435Alternatively, you can create a branch in your Linux kernel sources and apply 1435Alternatively, you can create a branch in your Linux kernel sources and apply
1436the patches there. You can then specify this new branch as the KBRANCH to use 1436the patches there. You can then specify this new branch as the KBRANCH to use
1437for this board. You can do this in the recipe with the KBRANCH variable: 1437for this board. You can do this in the recipe with the KBRANCH variable:
1438 1438
1439 KBRANCH = "mynewbranch" 1439 KBRANCH = "mynewbranch"
1440 1440
1441or in the BSP description using the "branch" command: 1441or in the BSP description using the "branch" command:
1442 1442
1443mybsp.scc: 1443mybsp.scc:
diff --git a/documentation/kernel-dev/kernel-dev-intro.xml b/documentation/kernel-dev/kernel-dev-intro.xml
index 67d8d93f08..32a4040e4b 100644
--- a/documentation/kernel-dev/kernel-dev-intro.xml
+++ b/documentation/kernel-dev/kernel-dev-intro.xml
@@ -3,44 +3,69 @@
3[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > 3[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
4 4
5<chapter id='kernel-dev-intro'> 5<chapter id='kernel-dev-intro'>
6
7<title>Introduction</title> 6<title>Introduction</title>
8 7
9 <para> 8 <section id='kernel-dev-overview'>
10 Regardless of how you intend to make use of the Yocto Project, 9 <title>Overview</title>
11 chances are you are going to need to work with the Linux kernel.
12 The Yocto Project provides a powerful set of tools for managing
13 Linux kernel sources and configuration data.
14 You can use this tooling to help you make a single configuration change,
15 apply a couple of patches, or work with your own sources.
16 </para>
17
18 <para>
19 The Yocto Project Kernel Development Manual describes common tasks
20 you can perform using the kernel tooling as well as provides information
21 about the metadata needed to work with the kernel inside the
22 Yocto Project.
23 </para>
24
25 <section id='kernel-dev-background'>
26 <title>Background</title>
27 10
28 <para> 11 <para>
29 Each Yocto Project release introduces a new set of linux-yocto 12 Regardless of how you intend to make use of the Yocto Project,
30 kernel recipes that tracks the latest upstream developments and 13 chances are you will work with the Linux kernel.
31 introduces newly supported platforms. 14 This manual provides background information on the Yocto Linux kernel
32 In addition to the new kernel recipes, the previous recipes are 15 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>,
33 refreshed and supported for at least one additional release. 16 describes common tasks you can perform using the kernel tools,
17 and shows you how to use the Metadata needed to work with
18 the kernel inside the Yocto Project.
19 </para>
20
21 <para>
22 Each Yocto Project release has a set of linux-yocto recipes, whose
23 Git repositories you can view in the Yocto
24 <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink> under
25 the "Yocto Linux Kernel" heading.
26 New recipes for the release track the latest upstream developments
27 and introduce newly supported platforms.
28 Previous recipes in the release are refreshed and supported for at
29 least one additional release.
34 As they align, these previous releases are updated to include the 30 As they align, these previous releases are updated to include the
35 latest from the Long Term Support Initiative (LTSI) project. 31 latest from the Long Term Support Initiative (LTSI) project.
36 Besides these recipes, a <filename>linux-yocto-dev.bb</filename> 32 Also included is a linux-yocto development recipe
37 recipe is available for working with the very latest in upstream 33 (<filename>linux-yocto-dev.bb</filename>) should you want to work
38 Linux kernel development as well as metadata development. 34 with the very latest in upstream Linux kernel development and
35 Metadata development.
36 </para>
37
38 <para>
39 The Yocto Project also provides a powerful set of kernel
40 tools for managing Linux kernel sources and configuration data.
41 You can use these tools to make a single configuration change,
42 apply multiple patches, or work with your own kernel sources.
43 </para>
44
45 <para>
46 In particular, the kernel tools allow you to generate configuration
47 fragments that specify only what you must, and nothing more.
48 Configuration fragments only need to contain the highest level
49 visible <filename>CONFIG</filename> options as presented by the Linux
50 kernel <filename>menuconfig</filename> system.
51 Contrast this against a complete Linux kernel
52 <filename>.config</filename>, which includes all the automatically
53 selected <filename>CONFIG</filename> options.
54 This efficiency reduces your maintenance effort and allows you
55 to further separate your configuration in ways that make sense for
56 your project.
57 A common split separates policy and hardware.
58 For example, all your kernels might support
59 the <filename>proc</filename> and <filename>sys</filename> filesystems,
60 but only specific boards require sound, USB, or specific drivers.
61 Specifying these configurations individually allows you to aggregate
62 them together as needed, but maintains them in only one place.
63 Similar logic applies to separating source changes.
39 </para> 64 </para>
40 65
41 <para> 66 <para>
42 If you do not maintain your own kernel sources and need to make 67 If you do not maintain your own kernel sources and need to make
43 only minimal changes to the sources, these recipes provide a 68 only minimal changes to the sources, the released recipes provide a
44 vetted base upon which to layer your changes. 69 vetted base upon which to layer your changes.
45 Doing so allows you to benefit from the continual kernel 70 Doing so allows you to benefit from the continual kernel
46 integration and testing performed during development of the 71 integration and testing performed during development of the
@@ -50,8 +75,8 @@
50 <para> 75 <para>
51 If, instead, you have a very specific Linux kernel source tree 76 If, instead, you have a very specific Linux kernel source tree
52 and are unable to align with one of the many official linux-yocto 77 and are unable to align with one of the many official linux-yocto
53 releases, an alternative exists by which you can use the Yocto 78 recipes, an alternative exists by which you can use the Yocto
54 Project Linux kernel tools with your own sources. 79 Project Linux kernel tools with your own kernel sources.
55 </para> 80 </para>
56 </section> 81 </section>
57 82
@@ -61,7 +86,7 @@
61 <para> 86 <para>
62 The sections that follow provide instructions for completing 87 The sections that follow provide instructions for completing
63 specific Linux kernel development tasks. 88 specific Linux kernel development tasks.
64 These instructions assume you are familiar with working with 89 These instructions assume you are comfortable working with
65 <ulink url='http://developer.berlios.de/projects/bitbake/'>BitBake</ulink> 90 <ulink url='http://developer.berlios.de/projects/bitbake/'>BitBake</ulink>
66 recipes and basic open-source development tools. 91 recipes and basic open-source development tools.
67 Understanding these concepts will facilitate the process of working 92 Understanding these concepts will facilitate the process of working