<!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; ] >

<chapter id='kernel-dev-faq'>
<title>Kernel Development FAQ</title>
<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='generating-configuration-files'>Generating Configuration Files</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</ulink>"
                section in the Yocto Project Development 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>
</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
