summaryrefslogtreecommitdiffstats
path: root/documentation/kernel-dev/kernel-dev-faq.xml
blob: c3a20465a097f339b954ba602d491e28f894eedb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >

<appendix id='kernel-dev-faq'>
<title>Kernel Development FAQ</title>

<section id='kernel-dev-faq-section'>
    <title>Common Questions and Solutions</title>

    <para>
        The following lists some solutions for common questions.


        <qandaset>
            <qandaentry>
                <question>
                    <para>
                        How do I use my own Linux kernel <filename>.config</filename>
                        file?
                    </para>
                </question>
                <answer>
            <para>
                        Refer to the "<link linkend='changing-the-configuration'>Changing the Configuration</link>"
                        section for information.
                    </para>
                </answer>
            </qandaentry>

            <qandaentry>
                <question>
                    <para>
                        How do I create configuration fragments?
                    </para>
                </question>
                <answer>
                    <para>
                        Refer to the
                        "<link linkend='creating-config-fragments'>Creating Configuration Fragments</link>"
                        section for information.
                    </para>
                </answer>
            </qandaentry>

            <qandaentry>
                <question>
                    <para>
                        How do I use my own Linux kernel sources?
                    </para>
                </question>
                <answer>
                    <para>
                        Refer to the "<link linkend='working-with-your-own-sources'>Working With Your Own Sources</link>"
                        section for information.
                    </para>
                </answer>
            </qandaentry>

            <qandaentry>
                <question>
                    <para>
                        How do I install/not-install the kernel image on the rootfs?
                    </para>
                </question>
                <answer>
                    <para>
                        The kernel image (e.g. <filename>vmlinuz</filename>) is provided
                        by the <filename>kernel-image</filename> package.
                        Image recipes depend on <filename>kernel-base</filename>.
                        To specify whether or not the kernel
                        image is installed in the generated root filesystem, override
                        <filename>RDEPENDS_kernel-base</filename> to include or not
                        include "kernel-image".</para>
                        <para>See the
                        "<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files in Your Layer</ulink>"
                        section in the Yocto Project Development Tasks Manual
                        for information on how to use an append file to
                        override metadata.
                    </para>
                </answer>
            </qandaentry>

            <qandaentry>
                <question>
                    <para>
                        How do I install a specific kernel module?
                    </para>
                </question>
                <answer>
                    <para>
                        Linux kernel modules are packaged individually.
                        To ensure a specific kernel module is included in an image,
                        include it in the appropriate machine
                        <ulink url='&YOCTO_DOCS_REF_URL;#var-RRECOMMENDS'><filename>RRECOMMENDS</filename></ulink>
                        variable.</para>
                        <para>These other variables are useful for installing specific
                        modules:
                        <literallayout class='monospaced'>
     <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'><filename>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</filename></ulink>
     <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS'><filename>MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS</filename></ulink>
     <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_EXTRA_RDEPENDS'><filename>MACHINE_EXTRA_RDEPENDS</filename></ulink>
     <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_EXTRA_RRECOMMENDS'><filename>MACHINE_EXTRA_RRECOMMENDS</filename></ulink>
                        </literallayout>
                        For example, set the following in the <filename>qemux86.conf</filename>
                        file to include the <filename>ab123</filename> kernel modules
                        with images built for the <filename>qemux86</filename> machine:
                        <literallayout class='monospaced'>
     MACHINE_EXTRA_RRECOMMENDS += "kernel-module-ab123"
                        </literallayout>
                        For more information, see the
                        "<link linkend='incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</link>"
                        section.
                    </para>
                </answer>
            </qandaentry>

            <qandaentry>
                <question>
                    <para>
                        How do I change the Linux kernel command line?
                   </para>
                </question>
                <answer>
                    <para>
                        The Linux kernel command line is typically specified in
                        the machine config using the <filename>APPEND</filename> variable.
                For example, you can add some helpful debug information doing
                        the following:
                        <literallayout class='monospaced'>
     APPEND += "printk.time=y initcall_debug debug"
                        </literallayout>
                    </para>
                </answer>
            </qandaentry>
        </qandaset>
    </para>
</section>
</appendix>
<!--
vim: expandtab tw=80 ts=4
-->