イメージごとに init システムを変更したいと考えています。ここで指摘されているように、サンプル画像を作成しました。これはうまく機能しますが、rootfs から未使用の init システム (この場合は SysVinit) も削除したいと考えています。
したがって、ディストリビューション構成内で次のようなことを試しました: (REQUIRED_DISTRO_FEATURES = "systemd" が 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"
そのため、違いと、私のソリューションが機能しない理由がよくわかりません。