如何在yocto中使用自己的内核配置树莓派?

时间:2017-08-08 16:03:41

标签: linux linux-kernel raspberry-pi yocto

我想删除一些未使用的RPI2 +自定义主板驱动程序。为此我通过以下方式创建自己的配置:

bitbake linux-raspberrypi -c menuconfig

并将新内核预设保存到文件defconfig

在此之后,我为linux-raspberryp配方创建了一个附加文件。

所以我创建了文件

linux-raspberrypi%.bbappend

并填写:

FILESEXTRAPATHS_prepend := "${THISDIR}/linux-raspberrypi:"

SRC_URI += "file://defconfig"

PACKAGE_ARCH = "raspberrypi2"

我把defconfig文件放到:

<meta-mylayer>/recipes-kernel/linux/linux-raspberrypi/raspberrypi2/defconfig

通过以下方式重新编译内核时:

bitbake linux-raspberrypi -c clean
bitbake linux-raspberrypi

采用标准RPI2配置。

知道如何克服这个问题吗? 我正在研究&#34;实际&#34; meta-raspberrypi和yocto的pyro分支。

2 个答案:

答案 0 :(得分:4)

嗯,不幸的是,最简单的方法可能是修补内核源代码......或者将你的defconfig复制到内核树中。

meta-raspberrypi层在他们的内核配方中做了一些不幸的事情,即使这随着时间的推移变得越来越好,但它们仍然不是很好......

如果你看一下recipes-kernel/linux/linux-raspberrypi.inc,以下几行解释了这个问题:

KERNEL_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig"

do_kernel_configme_prepend() {
    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available."
}

因此,他们将树内defconfig复制到${WORKDIR}/defconfig,从而覆盖你自己的defconfig。

你在.bbappend,你可以尝试添加:

do_kernel_configme_prepend() {
    install -m 0644 ${WORKDIR}/defconfig ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available."
}

因此,首先使用您自己的defconfig覆盖内核树。

答案 1 :(得分:1)

请查看如何使用devtool修改jethro的源代码: http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#using-devtool-in-your-workflow

我首先要在它正在使用的git存储库中使用fork; http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/tree/recipes-kernel/linux/linux-raspberrypi_4.9.bb

在Yocto中使用devtool; 在您的构建目录中:创建一个my-linux-raspberry文件夹;

mkdir linux-raspberry-test
devtool modify -x linux-raspberry ./my-linux-raspberry

这会将源代码解压缩到my-linux-raspberry中供您修改;它还在那里创建了git存储库;

然后,修改my-linux-raspberry中的代码;要测试构建,请运行devtool build linux-raspberry;一旦您满意,将此git存储库添加到您的fork;

git add .
git commit -m "my-linux-raspberry"
devtool update-recipe linux-raspberry

可选:运行devtool reset linux-raspberry删除bbappend文件;