我想如何在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"
就这些
首先,更新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"
就这些