我正在使用buildroot作为构建内核和根文件系统的工具的嵌入式系统。我想在此内核源代码树上应用一些补丁,有人可以告诉我buildroot如何应用补丁吗?

有帮助吗?

解决方案 2

研究了buildroot架构后,我知道buildroot使用quilt工具来应用补丁。quilt跟踪“修补程序”目录中存在的名为“ series”的文件中的所有修补程序。您必须将补丁保存在此目录中。并按希望应用补丁的顺序在系列文件中添加补丁的条目,同时使补丁首先位于顶部。

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

其他提示

在@ pradeepchhentri的答案上进行扩展。被子将查找位于与* .mk文件相同文件夹中的文件。构建适当的文件:

  1. 将源包从原始包扩展到名为的文件中

    packageName - number - 描述 .patch

    packagename - 必须与包名称相同

    number - 是如果您有多个补丁申请,则应应用修补程序的顺序(否则将按字母顺序应用)

    描述 - 可以是任何免费文本

  2. 将此文件放入与[packageName] .mk文件和包/ config.in文件相同级别的包。

    别忘了吹走你的构建文件,或者如果你这样做,请做一个[包] -rebuild。如果完成,您应该看到“修补...”消息。

BR2_GLOBAL_PATCH_DIR树外补丁

目录结构:

  • .git/ https://stackoverflow.com/a/23635403/895245 所述的
  • buildroot/ Buildroot子模块>
  • global_patch_dir/packagename/0001-my-test.patch

    添加到配置: 通用标签

    然后使用: 通用标签

    在构建之前,应将补丁应用于output/build/packagename-1.0.0/

    使用*_OVERRIDE_SRCDIR生成补丁

    如果您只是直接破解了output/build/下的软件包,那么您将没有任何区别。

    请改为使用*_OVERRIDE_SRCDIR机制,该机制可让您指向您选择的git repo:如何修改Buildroot软件包的源以进行软件包开发?,然后应将其作为git子模块进行跟踪。

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

  1. 您必须

    diff -u "old_file" "new_file" > file.patch
    

    正好位于包裹 tar.gz 中定义的提取位置的上方 通用标签

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

    1. 以防您怀疑“ old_file” 路径是否与原始路径不同-不用担心,重要的是“ new_file” 路径和名称-它应与您提取的软件包相匹配。

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

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

        示例: 通用标签

        1. 将补丁文件存放在 buildroot / package /“您的软件包名称” / 文件夹中。

          无需修改配置文件,所有修补程序将自动尝试用于应用程序。

          1. 如果发生故障,拒绝补丁文件(名称与您尝试打补丁的文件类似,但扩展名为 .rej )将存储在软件包提取的文件夹中。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top