如何在yocto中本地安装内核补丁?

时间:2015-12-09 09:58:16

标签: yocto

我想如何在yocto中安装内核补丁。请指导我

我在 calibrate.c 文件中包含了几个printk语句,该文件位于/ home / host / poky / build / tmp / work / armv7a-vfp-neon-poky-linux-gnueabi /linux-libc-headers/3.8-r0/linux-3.8/init/calibrate.c

然后我创建了一个补丁文件 diff -Nuar~ / calibrate.c /home/host/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/linux-libc-headers/3.8-r0/linux-3.8/init/calibrate .c>的 calibrate.patch

然后将calibrat.patch文件放在 poky / meta / recipies-kernel / linux-libc-headers / linux-libc-headers / 目录中

然后我编辑了位于/ poky / meta / recipies-kernel / linux-libc-headers /中的linux-libc-headers_3.8.bb文件,其中包含以下 SCR_URI = file://calibrate.patch

然后执行bitbake -k core-image-minimal后,我收到以下错误。

ERROR: Command Error: exit status: 1  Output: Applying patch calibrate.patch can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was:
-------------------------- |--- calibrate.c 2015-12-09 15:00:11.547924616 +0530 |+++ a/calibrate.c  2015-12-09 14:59:31.387923200 +0530
-------------------------- No file to patch.  Skipping patch. 1 out of 1 hunk ignored

Patch calibrate.patch does not apply (enforce with -f)

ERROR: Function failed: patch_do_patch

ERROR: Logfile of failure stored in: /home/host/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/linux-libc-headers/3.8-r0/temp/log.do_patch.14062

ERROR: Task 434 (/home/host/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_3.8.bb, do_patch) failed with exit code '1'

1 个答案:

答案 0 :(得分:5)

首先,在yocto中更新配方的最佳方法是创建自己的配方,将附加到原始配方。这是bbappend文件的目的。 请参阅yocto手册以了解如何附加食谱。您的图层应该近似如此。

"your layer's directory"/recipes-kernel/
    => linux-libc-headers/
        => files/
            -> file1.patch
            -> another_file.patch
            -> third_file.patch
        -> linux-libc-headers_3.8.bbappend 

其次,yocto提供" devshell",这是一个新的shell,已经导出了所有yocto的env变量。 以下是你应该如何使用yocto:

bitbake <recipe> -c devshell

在你的情况下,它将是

bitbake linux-libc-headers -c devshell
然后,您将打开一个新的shell,然后您将自动切换到该配方的workdir。 在你的情况下,/ home / host / poky / build / tmp / work / armv7-vfp-neon-poky-linux -gnueabi / linux-libs-header / 3.8-r0 /或类似的东西。

如果你没有从git repo获得包,那么

git init

并进行虚拟提交,以便进行所有未跟踪或未分级的更改

git add *
git commit -m "dummy"

现在你可以改变你想要的一切。别忘了承诺。 现在让我们假设你做了3次提交。 您可以使用以下命令创建相应的修补程序:

git format-patch -3 -o /path/to/anny/directory

这些补丁应该(必须)放在位于食谱目录中的files目录中(您创建的目录,而不是原始目录)

git format-patch -3 -o /path/to/linux-libc-headers/files/

您的linux-libc-headers_3.8.bbappend应该包含类似的内容

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://0001-Frist-commit.patch"
SRC_URI += "file://0002-Second-commit.patch"
SRC_URI += "file://0003-last-commit.patch"

全部是