You can make wholesale or incremental changes to the final
.config
file used for the eventual
Linux kernel configuration by including a
defconfig
file and by specifying
configuration fragments in the
SRC_URI
to be applied to that file.
If you have a complete, working Linux kernel
.config
file you want to use for the configuration, as before, copy
that file to the appropriate ${PN}
directory in your layer's
recipes-kernel/linux
directory,
and rename the copied file to "defconfig".
Then, add the following lines to the linux-yocto
.bbappend
file in your layer:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += "file://defconfig"
The SRC_URI
tells the build system how to
search for the file, while the
FILESEXTRAPATHS
extends the
FILESPATH
variable (search directories) to include the
${PN}
directory you created to hold the
configuration changes.
defconfig
file before applying any
subsequent configuration fragments.
The final kernel configuration is a combination of the
configurations in the defconfig
file and
any configuration fragments you provide.
You need to realize that if you have any configuration
fragments, the build system applies these on top of and
after applying the existing defconfig
file configurations.
Generally speaking, the preferred approach is to determine the
incremental change you want to make and add that as a
configuration fragment.
For example, if you want to add support for a basic serial
console, create a file named 8250.cfg
in
the ${PN}
directory with the following
content (without indentation):
CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y
Next, include this configuration fragment and extend the
FILESPATH
variable in your
.bbappend
file:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += "file://8250.cfg"
The next time you run BitBake to build the Linux kernel, BitBake detects the change in the recipe and fetches and applies the new configuration before building the kernel.
For a detailed example showing how to configure the kernel, see the "Configuring the Kernel" section.