如何在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 然后将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之后,我得到以下错误如何在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
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提交更改的情况下创建修补程序,并有助于本地应用修补程序。非常好-这正是我(在大量文档中)想要的。非常感谢。