Synopsis ======== Start using Yocto kernel configuration fragments[0] and the "in-tree defconfig" solution provided in poky[1].
To specify an "in-tree" defconfig file, you may edit the recipe that builds your kernel so that it has the following command form: KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file You need to append the variable with KMACHINE and then supply the path to your "in-tree" defconfig file. In order to achieve this meta-raspberrypi needs to: - start using KBUILD_DEFCONFIG_KMACHINE - remove placeholder defconfig and custom copying logic. - avoid replacing all Yocto project configured settings in do_configure_prepend. In many cases it should not be necessary to change the defconfig file used. Instead Yocto supports use of kernel configuration fragment files to override the in-tree defconfig defaults[0]. For more background regarding this migration read the bugzilla bug info[2]. [0] - http://www.yoctoproject.org/docs/1.8/kernel-dev/kernel-dev.html#changing-the-configuration [1] - http://www.yoctoproject.org/docs/1.8/kernel-dev/kernel-dev.html#using-an-in-tree-defconfig-file [2] - https://bugzilla.yoctoproject.org/show_bug.cgi?id=7474 Testing ======= Poky master (#6d8ace03) core-image-sato with MACHINE=raspberrypi2 Kernels 3.18.16 / 4.1.10 (1) with no fragment files defined, using in-tree defconfig, kernels/images build and boot without error. - build host kernel .config file contains CONFIG_SND_BCM2835=m. - post boot, target aplay -l reports no sound devices until module is loaded. - post modprobe, target aplay -l reports sound device. (2) adding a test configuration fragment to build sound driver into the kernel. - build host kernel .config file contains CONFIG_SND_BCM2835=y. - post boot, target aplay -l reports sound device with no modprobe step. Note: It may be necessary to clean sstate for the kernel after adding a new configuration fragment to the SRC_URI, e.g. bitbake -c cleansstate virtual/kernel Sample Fragment Implementation ============================== linux-raspberrypi.inc: +SRC_URI += " \ + file://build-in-audio.cfg \ + " linux-raspberrypi/build-in-audio.cfg: +CONFIG_SND=y +CONFIG_SND_BCM2835=y Signed-off-by: Alex J Lennon <ajlen...@dynamicdevices.co.uk> --- recipes-kernel/linux/linux-raspberrypi.inc | 12 ++++-------- recipes-kernel/linux/linux-raspberrypi/defconfig | 1 - recipes-kernel/linux/linux.inc | 7 +++---- 3 files changed, 7 insertions(+), 13 deletions(-) delete mode 100644 recipes-kernel/linux/linux-raspberrypi/defconfig diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index 70e8bfe..d3766c4 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -6,10 +6,6 @@ SECTION = "kernel" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" -SRC_URI += " \ - file://defconfig \ - " - COMPATIBLE_MACHINE = "raspberrypi" PE = "1" @@ -18,6 +14,10 @@ PV = "${LINUX_VERSION}+git${SRCPV}" # NOTE: For now we pull in the default config from the RPi kernel GIT tree. KERNEL_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig" KERNEL_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" +KMACHINE ?= "${MACHINE}" +KCONFIG_MODE = "--alldefconfig" +KBUILD_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig" +KBUILD_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" # CMDLINE for raspberrypi CMDLINE = "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" @@ -42,10 +42,6 @@ python __anonymous () { d.setVar("DEPENDS", depends) } -do_kernel_configme_prepend() { - install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." -} - do_install_prepend() { install -d ${D}/lib/firmware } diff --git a/recipes-kernel/linux/linux-raspberrypi/defconfig b/recipes-kernel/linux/linux-raspberrypi/defconfig deleted file mode 100644 index ecbf32c..0000000 --- a/recipes-kernel/linux/linux-raspberrypi/defconfig +++ /dev/null @@ -1 +0,0 @@ -# Dummy file to get through do_kernel_configme. diff --git a/recipes-kernel/linux/linux.inc b/recipes-kernel/linux/linux.inc index fae78b7..7ed80af 100644 --- a/recipes-kernel/linux/linux.inc +++ b/recipes-kernel/linux/linux.inc @@ -33,8 +33,7 @@ kernel_configure_variable() { } do_configure_prepend() { - # Clean .config - echo "" > ${B}/.config + mv -f ${B}/.config ${B}/.config.patched CONF_SED_SCRIPT="" # oabi / eabi support @@ -109,8 +108,8 @@ do_configure_prepend() { # Keep this the last line # Remove all modified configs and add the rest to .config - sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${B}/.config' - + sed -e "${CONF_SED_SCRIPT}" < '${B}/.config.patched' >> '${B}/.config' + rm -f ${B}/.config.patched yes '' | oe_runmake oldconfig } -- 1.9.1 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto