如何将 buildroot 与包中的自定义更改一起使用

How to use buildroot with custom changes in packages

我有一个包含我所有配置的 buildroot 目录 我正在使用一个包,对于某个用例,我想检查包在运行时失败的地方。

我正在尝试稍微修改一下包,但我不知道如何构建包含调试打印的包。

我试着喜欢这个

  1. 转到 buildroot/dl/package/ 文件夹
  2. 解压包
  3. 来源发生变化
  4. gzip 包
  5. 删除buildroot/output/build/package
  6. 中的中间值
  7. 建设make

现在构建 root 使用某种哈希值并拒绝包含我的更改的包。它重新下载包并替换了我的更改。

ERROR: imx-kobs-a0e9adce2fb7fcd57e794d7f9a5deba0f94f521b.tar.gz has wrong sha256 hash:
ERROR: expected: 5855c8964f908ad30e5d4500180ee57c51af68186289ef1bdf8553ee60d3b1f5
ERROR: got     : b5c22a971d9c9130b1b0f5ddd5b60b2eabd60607421c0f746ef0543b42960977
ERROR: Incomplete download, or man-in-the-middle (MITM) attack
dl-wrapper: Re-downloading 'imx-kobs-a0e9adce2fb7fcd57e794d7f9a5deba0f94f521b.tar.gz'...

如何使用具有更多控制权的 buildroot?

两个选项:

  • 为了快速测试,修改 output/build/<pkg>-<version>/ 中的源代码,运行 make <pkg>-rebuild 以强制重建该包。请注意,在 Buildroot 中执行 make clean 时,output/build/<pkg>-<version>/ 文件夹会丢失,因此这仅适用于一些快速 debugging/investigation.

  • 对于源代码的实际开发,我建议使用<pkg>_OVERRIDE_SRCDIR机制。在 Buildroot 树的根目录下创建一个 local.mk 文件。在此文件中,放入 FOO_OVERRIDE_SRCDIR = $(HOME)/foo。从现在开始,Buildroot 将不再 download/extract/patch foo 包,而是将源代码从 $(HOME)/foo rsync 到包构建目录中。 运行 make foo-rebuild 将重新 运行 rsync 并重新启动此包的构建。这意味着您可以更改 $(HOME)/foo 中的源代码并使用这些更改快速重建包。另请参阅幻灯片 269 和 https://bootlin.com/doc/training/buildroot/buildroot-slides.pdf 中的后续内容。