我想如何在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'
答案 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"
全部是