我想根据每个图像更改初始化系统。正如此处指出的那样,我创建了一个示例图像。这很好用,但我还想从 rootfs 中删除未使用的初始化系统(在本例中为 SysVinit)。
因此我在我的发行版配置中尝试了这样的事情:(REQUIRED_DISTRO_FEATURES = "systemd" is set inside my image.bb)
DISTRO_FEATURES_BACKFILL_CONSIDERED = "${@bb.utils.contains('REQUIRED_DISTRO_FEATURES', 'systemd', 'sysvinit', '', d)}"
最终结果是这样,正是我所期望的:
$ bitbake sample-image-systemd -e | grep DISTRO_FEATURES_BACKFILL_CONSIDERED=
DISTRO_FEATURES_BACKFILL_CONSIDERED="sysvinit"
到目前为止,一切都很好。但最终的 rootfs 仍然包含 sysvinit 脚本(/etc/init.d/*)
如果我在我的发行版配置中执行以下操作,一切正常,并且 /etc/init.d 不会创建:
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
所以我真的不明白其中的区别以及为什么我的解决方案不起作用。