当前位置:  开发笔记 > 运维 > 正文

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

如何解决《如何在yocto中本地安装内核补丁?》经验,为你挑选了1个好方法。

我想如何在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 -uar创建了一个补丁文件〜/ 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'

john madieu.. 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  -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"

就这些



1> john madieu..:

首先,更新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  -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"

就这些

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有