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

如何在yocto中本地安装内核补丁?,yocto,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/a

我想知道如何在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

然后将calib.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'

首先,在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 然后,您将打开一个新的shell,并将自动更改为该配方的workdir。 在您的例子中,/home/host/poky/build/tmp/work/armv7a vfp neon poky-linux-gnueabi/linux-libc-headers/3.8-r0/或类似的东西

若你们并没有从git回购中得到这个包,那个么

git init
并进行虚拟提交,该提交将暂存所有未跟踪或未老化的更改

git add * git commit -m "dummy" 您的
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"

以上就是全部内容。首先,在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 然后,您将打开一个新的shell,并将自动更改为该配方的workdir。 在您的例子中,/home/host/poky/build/tmp/work/armv7a vfp neon poky-linux-gnueabi/linux-libc-headers/3.8-r0/或类似的东西

若你们并没有从git回购中得到这个包,那个么

git init
并进行虚拟提交,该提交将暂存所有未跟踪或未老化的更改

git add * git commit -m "dummy" 您的
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"

这就是全部

嗨,john,不使用git就可以应用补丁吗。我正试图在本地应用补丁,也就是说,我将把.patch文件保存在我自己的层中的一个目录下,如您所说,并在bbappend文件中添加SRC_URI,从那里bitbake必须获取补丁文件并应用补丁。而不是使用diff命令创建补丁,使用git diff可以在不向git提交更改的情况下创建修补程序,并有助于本地应用修补程序。非常好-这正是我(在大量文档中)想要的。谢谢。嗨,john,不使用git就可以应用补丁吗。我正试图在本地应用补丁,也就是说,我将把.patch文件保存在我自己的层中的一个目录下,如您所说,并在bbappend文件中添加SRC_URI,从那里bitbake必须获取补丁文件并应用补丁。而不是使用diff命令创建补丁,使用git diff可以在不向git提交更改的情况下创建修补程序,并有助于本地应用修补程序。非常好-这正是我(在大量文档中)想要的。非常感谢。