6

我继承的一个项目使用了一个非常旧的 buildroot 版本,但我想将其更改为使用仅在以后的 buildroot 版本中添加的功能。

是否有更新 buildroot 设置以使用更高版本的直接方法?

例如,如果我保存了一个 defconfig 文件并在以后的 buildroot 版本中导入它,那会起作用吗,还是有实际原因为什么不这样做?我需要携带其他配置文件(例如内核、busybox 等)吗?谢谢!

4

1 回答 1

5

不。

事实上,情况更糟。

您可以从使用较新的 Buildroot 版本和旧的默认配置文件开始,但您需要仔细检查生成的配置,以查找已弃用的软件包以及其版本与您可能添加到 Buildroot 文件系统的任何应用程序软件不兼容的软件包。一些包的名称(例如 opencv)会随着时间而改变,因此您需要查看生成的 .config 文件以确保您需要的所有包都在那里。

如果您在 Buildroot 中构建工具链或 Linux 内核(通常这样做但通常不是很好的做法),那么您需要确保将新配置设置为构建旧版本的内核和编译器。这些可能太旧,无法在较新版本的 Buildroot 中构建一些包。

如果在升级 Buildroot 的同时升级内核,则需要将旧的内核配置文件移植到新的内核版本。由于内核配置选项经常更改,您可能需要从您的主板的 defconfig 开始,然后使用 make menuconfig 手动添加您需要的配置。

Busybox 的波动性较小,因此您的旧配置可能会起作用。

如果您的旧 Buildroot 配置使用 postbuild 或 postimage 脚本,您将需要查看它们,但我的猜测是它们不需要任何更改。

您应该为这项工作分配至少一周的时间,也许更多,这取决于配置的复杂性。请记住,如果您因特定 SoC 的补丁而被迫使用较旧的供应商内核,例如 BSC9131 的 Freescale 2.6.33.9 内核,那么如果不执行 6 到 12 个操作,您想要进行的升级可能无法实现几个月的工作将供应商的内核补丁移植到更新的内核版本。

干杯。

于 2015-08-22T22:55:00.147 回答