我想如何在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'
Run Code Online (Sandbox Code Playgroud)
首先,更新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
Run Code Online (Sandbox Code Playgroud)
在你的情况下,它会
bitbake linux-libc-headers -c devshell
Run Code Online (Sandbox Code Playgroud)
然后你会打开一个新的shell,你将自动切换到该食谱的workdir.在你的情况下,/ home/host/poky/build/tmp/work/armv7-vfp-neon-poky-linux -gnueabi/linux-libs-header/3.8-r0 /或类似的东西.
如果你没有从git repo获得包,那么
git init
Run Code Online (Sandbox Code Playgroud)
并进行虚拟提交,以便进行所有未跟踪或未分级的更改
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"
Run Code Online (Sandbox Code Playgroud)
就这些
| 归档时间: |
|
| 查看次数: |
7024 次 |
| 最近记录: |