<!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; ] >
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->

<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
-->
