如何在Buildroot中将补丁应用到包中?

pra*_*tri 8 embedded linux-kernel buildroot

我正在开发一个嵌入式系统,它使用buildroot作为构建内核和根文件系统的工具.我想对这个内核源代码树应用一些补丁,有人能告诉我buildroot如何应用补丁吗?

tu-*_*duh 6

扩展@ pradeepchhentri的答案.Quilt将查找与*.mk文件位于同一文件夹中的文件.要构造适当的文件:

  1. 将您的源包从原始文件扩散到一个名为的文件中

    packagename - number - description .patch

    哪里

    packagename - 必须与包名相同

    number - 如果要应用多个补丁,则应该应用补丁的顺序(否则将按字母顺序应用)

    说明 - 可以是任何自由文本

  2. 将此文件放在与[packagename] .mk文件和package/Config.in文件相同级别的包中.

如果你这样做,不要忘记吹掉你的构建文件或做一个[package] -rebuild.如果正确完成,您应该看到"修补..."消息.


Ole*_*rin 5

有关buildroot项目中补丁文件的一些详细信息:

  1. 你必须

    diff -u "old_file" "new_file" > file.patch
    
    Run Code Online (Sandbox Code Playgroud)

当站在您的包tar.gz的提取位置正上方时,定义在

PACKAGE_NAME_SOURCE
Run Code Online (Sandbox Code Playgroud)

这意味着,您的文件路径必须包含提取的包文件夹名称。

  1. 如果您想知道“old_file”路径是否与原始路径不同 - 别担心,重要的是“new_file”路径和名称 - 它应该与您提取的包相匹配。

  2. 已在 buildroot 中使用/定义的补丁的命名约定(所有部分均用“-”号分隔):

    • 4位补丁优先级(从0001开始)
    • 目标文件名
    • 打补丁的原因
    • .patch扩展

例子:

0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch
Run Code Online (Sandbox Code Playgroud)
  1. 将补丁文件存放在buildroot/package/"your package name"/文件夹中。

无需修改配置文件,所有补丁都会自动尝试应用。

  1. 如果出现故障,拒绝补丁文件(名称与您尝试修补的文件类似,但扩展名为.rej)将存放在包提取的文件夹中。


pra*_*tri 3

在研究了 buildroot 架构之后,我了解到 buildroot 使用 quilt 工具来应用补丁。quilt 跟踪“patches”目录中名为“series”的文件中的所有补丁。您必须将补丁保存在该目录中。并按照您希望应用补丁的顺序将补丁条目添加到系列文件中,使首先应用的补丁保持在顶部。

这样,当您运行 buildroot makefile 时,它​​将自动应用系列文件中列出的补丁。